| package output_groups |
| |
| import ( |
| "os" |
| "path/filepath" |
| "runtime" |
| "sort" |
| "strings" |
| "testing" |
| |
| "github.com/bazelbuild/rules_go/go/tools/bazel" |
| ) |
| |
| func TestCompilationOutputs(t *testing.T) { |
| runfiles, err := bazel.ListRunfiles() |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| exe := "" |
| if runtime.GOOS == "windows" { |
| exe = ".exe" |
| } |
| expectedFiles := map[string]bool{ |
| "compilation_outputs_test" + exe: true, // test binary; not relevant |
| |
| "lib.a": false, // :lib archive |
| "lib_test.internal.a": false, // :lib_test archive |
| "bin.a": false, // :bin archive |
| } |
| for _, rf := range runfiles { |
| info, err := os.Stat(rf.Path) |
| if err != nil { |
| t.Error(err) |
| continue |
| } |
| if info.IsDir() { |
| continue |
| } |
| |
| base := filepath.Base(rf.Path) |
| if seen, ok := expectedFiles[base]; !ok { |
| t.Errorf("unexpected runfile: %s %s", rf.Path, base) |
| } else if !seen { |
| expectedFiles[base] = true |
| } |
| } |
| |
| missingFiles := make([]string, 0, len(expectedFiles)) |
| for path, seen := range expectedFiles { |
| if !seen { |
| missingFiles = append(missingFiles, path) |
| } |
| } |
| sort.Strings(missingFiles) |
| if len(missingFiles) > 0 { |
| t.Errorf("did not find expected files: %s", strings.Join(missingFiles, " ")) |
| } |
| } |