diff options
Diffstat (limited to 'tests/core/output_groups')
-rw-r--r-- | tests/core/output_groups/BUILD.bazel | 36 | ||||
-rw-r--r-- | tests/core/output_groups/README.rst | 10 | ||||
-rw-r--r-- | tests/core/output_groups/bin.go | 3 | ||||
-rw-r--r-- | tests/core/output_groups/compilation_outputs_test.go | 59 | ||||
-rw-r--r-- | tests/core/output_groups/lib.go | 1 | ||||
-rw-r--r-- | tests/core/output_groups/lib_test.go | 1 |
6 files changed, 110 insertions, 0 deletions
diff --git a/tests/core/output_groups/BUILD.bazel b/tests/core/output_groups/BUILD.bazel new file mode 100644 index 00000000..ec8b86c9 --- /dev/null +++ b/tests/core/output_groups/BUILD.bazel @@ -0,0 +1,36 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") + +go_library( + name = "lib", + srcs = ["lib.go"], + importpath = "lib", +) + +go_test( + name = "lib_test", + srcs = ["lib_test.go"], + embed = [":lib"], +) + +go_binary( + name = "bin", + srcs = ["bin.go"], +) + +filegroup( + name = "compilation_outputs", + testonly = True, + srcs = [ + ":bin", + ":lib", + ":lib_test", + ], + output_group = "compilation_outputs", +) + +go_test( + name = "compilation_outputs_test", + srcs = ["compilation_outputs_test.go"], + data = [":compilation_outputs"], + deps = ["//go/tools/bazel:go_default_library"], +) diff --git a/tests/core/output_groups/README.rst b/tests/core/output_groups/README.rst new file mode 100644 index 00000000..5d3d4e41 --- /dev/null +++ b/tests/core/output_groups/README.rst @@ -0,0 +1,10 @@ +output_groups functionality +=========================== + +Tests to ensure the supported `output_groups` are working as expected. + +compilation_outputs_test +------------------------ + +Checks that the `compilation_outputs` output group is populated with the +compiled archives from `go_library`, `go_test`, and `go_binary` targets. diff --git a/tests/core/output_groups/bin.go b/tests/core/output_groups/bin.go new file mode 100644 index 00000000..38dd16da --- /dev/null +++ b/tests/core/output_groups/bin.go @@ -0,0 +1,3 @@ +package main + +func main() {} diff --git a/tests/core/output_groups/compilation_outputs_test.go b/tests/core/output_groups/compilation_outputs_test.go new file mode 100644 index 00000000..25daced7 --- /dev/null +++ b/tests/core/output_groups/compilation_outputs_test.go @@ -0,0 +1,59 @@ +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, " ")) + } +} diff --git a/tests/core/output_groups/lib.go b/tests/core/output_groups/lib.go new file mode 100644 index 00000000..55c21f80 --- /dev/null +++ b/tests/core/output_groups/lib.go @@ -0,0 +1 @@ +package lib diff --git a/tests/core/output_groups/lib_test.go b/tests/core/output_groups/lib_test.go new file mode 100644 index 00000000..55c21f80 --- /dev/null +++ b/tests/core/output_groups/lib_test.go @@ -0,0 +1 @@ +package lib |