blob: cd52ab467a3109186cfbda272385f5bb7f3918ff [file] [log] [blame]
package dkms
import (
"context"
"cos.googlesource.com/cos/tools.git/src/pkg/utils"
"fmt"
"os"
"path"
"testing"
)
func TestInstallCompilerToolchain(t *testing.T) {
downloader := fakeDownloader{}
ctx := context.Background()
targetDir := t.TempDir()
defer os.RemoveAll(targetDir)
err := InstallCompilerToolchain(ctx, &downloader, targetDir)
if err != nil {
t.Errorf("failed to install compiler toolchain: %v", err)
}
if !CompilerToolchainInstalled(targetDir) {
t.Errorf("expected toolchain to be installed")
}
}
func TestInstallKernelHeaders(t *testing.T) {
downloader := fakeDownloader{}
ctx := context.Background()
targetDir := t.TempDir()
defer os.RemoveAll(targetDir)
err := InstallKernelHeaders(ctx, &downloader, targetDir)
if err != nil {
t.Errorf("failed to install kernel headers: %v", err)
}
if !KernelHeadersInstalled(targetDir) {
t.Errorf("expected headers to be installed")
}
}
type fakeDownloader struct {
}
func (*fakeDownloader) DownloadKernelSrc(ctx context.Context, destDir string) error {
var archive = map[string][]byte{
"kernel-source": []byte("foo"),
}
if err := utils.CreateTarFile(path.Join(destDir, "kernel-src.tar.gz"), archive); err != nil {
return fmt.Errorf("Failed to download kernel source: %v", err)
}
return nil
}
func (*fakeDownloader) DownloadToolchainEnv(ctx context.Context, destDir string) error {
toolchainEnvStr := `
CC=x86_64-cros-linux-gnu-clang
CXX=x86_64-cros-linux-gnu-clang++
`
if err := os.WriteFile(path.Join(destDir, "toolchain_env"), []byte(toolchainEnvStr), 0644); err != nil {
return fmt.Errorf("Failed to download toolchain env file: %v", err)
}
return nil
}
func (*fakeDownloader) DownloadToolchain(ctx context.Context, destDir string) error {
var archive = map[string][]byte{
"x86_64-cros-linux-gnu-clang": []byte("foo"),
}
if err := utils.CreateTarFile(path.Join(destDir, "toolchain.tar.xz"), archive); err != nil {
return fmt.Errorf("Failed to download toolchain archive: %v", err)
}
return nil
}
func (*fakeDownloader) DownloadKernelHeaders(ctx context.Context, destDir string) error {
var archive = map[string][]byte{
"kernel-header": []byte("bar"),
}
if err := utils.CreateTarFile(path.Join(destDir, "kernel-headers.tgz"), archive); err != nil {
return fmt.Errorf("Failed to download kernel headers: %v", err)
}
return nil
}
func (*fakeDownloader) DownloadArtifact(context.Context, string, string) error { return nil }
func (*fakeDownloader) GetArtifact(context.Context, string) ([]byte, error) { return nil, nil }
func (*fakeDownloader) ArtifactExists(context.Context, string) (bool, error) { return false, nil }
func (*fakeDownloader) ListArtifacts(ctx context.Context, prefix string) ([]string, error) {
return nil, nil
}
func (*fakeDownloader) DownloadGenericNvidiaDriver(context.Context, string, string) (string, error) {
return "", nil
}