diff --git a/hack/generate-bindata.sh b/hack/generate-bindata.sh index 120542135d7..c12da77e54b 100755 --- a/hack/generate-bindata.sh +++ b/hack/generate-bindata.sh @@ -44,6 +44,7 @@ BINDATA_OUTPUT="test/e2e/generated/bindata.go" # test/e2e/generated/BUILD and/or build/bindata.bzl. go-bindata -nometadata -o "${BINDATA_OUTPUT}.tmp" -pkg generated \ -ignore .jpg -ignore .png -ignore .md -ignore 'BUILD(\.bazel)?' \ + "test/conformance/testdata/..." \ "test/e2e/testing-manifests/..." \ "test/e2e_node/testing-manifests/..." \ "test/images/..." \ diff --git a/test/conformance/BUILD b/test/conformance/BUILD index 6716bbe7d40..b8ec7993333 100644 --- a/test/conformance/BUILD +++ b/test/conformance/BUILD @@ -34,6 +34,7 @@ filegroup( ":package-srcs", "//test/conformance/behaviors:all-srcs", "//test/conformance/kubeconform:all-srcs", + "//test/conformance/testdata:all-srcs", ], tags = ["automanaged"], visibility = ["//visibility:public"], @@ -68,8 +69,8 @@ sh_test( name = "conformance_test", srcs = ["conformance_test.sh"], data = [ - "testdata/conformance.yaml", ":list_conformance_tests", + ":testdata", ], ) diff --git a/test/conformance/testdata/BUILD b/test/conformance/testdata/BUILD new file mode 100644 index 00000000000..7e76248ad95 --- /dev/null +++ b/test/conformance/testdata/BUILD @@ -0,0 +1,14 @@ +package(default_visibility = ["//visibility:public"]) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/test/e2e/BUILD b/test/e2e/BUILD index 228e12dd5df..03721137852 100644 --- a/test/e2e/BUILD +++ b/test/e2e/BUILD @@ -43,6 +43,7 @@ go_test( "//test/e2e/windows:go_default_library", "//test/utils/image:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", + "//vendor/gopkg.in/yaml.v2:go_default_library", ], ) diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index 89004652a22..e3bea9e5507 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -24,6 +24,8 @@ import ( "testing" "time" + "gopkg.in/yaml.v2" + // Never, ever remove the line with "/ginkgo". Without it, // the ginkgo test runner will not detect that this // directory contains a Ginkgo test suite. @@ -94,6 +96,32 @@ func TestMain(m *testing.M) { os.Exit(0) } + // Enable bindata file lookup as fallback. + testfiles.AddFileSource(testfiles.BindataFileSource{ + Asset: generated.Asset, + AssetNames: generated.AssetNames, + }) + if framework.TestContext.ListConformanceTests { + var tests []struct { + Testname string `yaml:"testname"` + Codename string `yaml:"codename"` + Description string `yaml:"description"` + Release string `yaml:"release"` + File string `yaml:"file"` + } + + data := testfiles.ReadOrDie("test/conformance/testdata/conformance.yaml") + if err := yaml.Unmarshal(data, &tests); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := yaml.NewEncoder(os.Stdout).Encode(tests); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + os.Exit(0) + } + framework.AfterReadingAllFlags(&framework.TestContext) // TODO: Deprecating repo-root over time... instead just use gobindata_util.go , see #23987. @@ -105,12 +133,6 @@ func TestMain(m *testing.M) { testfiles.AddFileSource(testfiles.RootFileSource{Root: framework.TestContext.RepoRoot}) } - // Enable bindata file lookup as fallback. - testfiles.AddFileSource(testfiles.BindataFileSource{ - Asset: generated.Asset, - AssetNames: generated.AssetNames, - }) - rand.Seed(time.Now().UnixNano()) os.Exit(m.Run()) } diff --git a/test/e2e/framework/test_context.go b/test/e2e/framework/test_context.go index 496821f83c3..9e3e1b332aa 100644 --- a/test/e2e/framework/test_context.go +++ b/test/e2e/framework/test_context.go @@ -83,6 +83,9 @@ type TestContextType struct { // ListImages will list off all images that are used then quit ListImages bool + // ListConformanceTests will list off all conformance tests that are available then quit + ListConformanceTests bool + // Provider identifies the infrastructure provider (gce, gke, aws) Provider string @@ -301,6 +304,7 @@ func RegisterCommonFlags(flags *flag.FlagSet) { flags.StringVar(&TestContext.NonblockingTaints, "non-blocking-taints", `node-role.kubernetes.io/master`, "Nodes with taints in this comma-delimited list will not block the test framework from starting tests.") flags.BoolVar(&TestContext.ListImages, "list-images", false, "If true, will show list of images used for runnning tests.") + flags.BoolVar(&TestContext.ListConformanceTests, "list-conformance-tests", false, "If true, will show list of conformance tests.") flags.StringVar(&TestContext.KubectlPath, "kubectl-path", "kubectl", "The kubectl binary to use. For development, you might use 'cluster/kubectl.sh' here.") flags.StringVar(&TestContext.ProgressReportURL, "progress-report-url", "", "The URL to POST progress updates to as the suite runs to assist in aiding integrations. If empty, no messages sent.") diff --git a/test/e2e/generated/BUILD b/test/e2e/generated/BUILD index de04cfe7b5e..2bcd6c0a1f1 100644 --- a/test/e2e/generated/BUILD +++ b/test/e2e/generated/BUILD @@ -23,6 +23,7 @@ go_library( go_bindata( name = "bindata", srcs = [ + "//test/conformance/testdata:all-srcs", "//test/e2e/testing-manifests:all-srcs", "//test/e2e_node/testing-manifests:all-srcs", "//test/fixtures:all-srcs",