| 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 |
| } |