aboutsummaryrefslogtreecommitdiff
path: root/tests/core/output_groups
diff options
context:
space:
mode:
Diffstat (limited to 'tests/core/output_groups')
-rw-r--r--tests/core/output_groups/BUILD.bazel36
-rw-r--r--tests/core/output_groups/README.rst10
-rw-r--r--tests/core/output_groups/bin.go3
-rw-r--r--tests/core/output_groups/compilation_outputs_test.go59
-rw-r--r--tests/core/output_groups/lib.go1
-rw-r--r--tests/core/output_groups/lib_test.go1
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