From 932d0337b82d351014588736bc9f40aa945fdc6a Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Mon, 19 Jun 2023 12:46:21 +0200 Subject: [PATCH] e2e: detect unexpected command line arguments Invalid flags are detected by flag parsing, but optional arguments are just passed through to the E2E suites. None of them support any, so rejecting them with an error message is useful because it helps catch typos (like a missing hyphen before a flag). --- test/e2e/e2e_test.go | 5 +++++ test/e2e_kubeadm/e2e_kubeadm_suite_test.go | 5 +++++ test/e2e_node/e2e_node_suite_test.go | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index 25307d7f5d7..af333af5e66 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -92,6 +92,11 @@ func TestMain(m *testing.M) { os.Exit(0) } + if flag.CommandLine.NArg() > 0 { + fmt.Fprintf(os.Stderr, "unknown additional command line arguments: %s", flag.CommandLine.Args()) + os.Exit(1) + } + // Enable embedded FS file lookup as fallback testfiles.AddFileSource(e2etestingmanifests.GetE2ETestingManifestsFS()) testfiles.AddFileSource(testfixtures.GetTestFixturesFS()) diff --git a/test/e2e_kubeadm/e2e_kubeadm_suite_test.go b/test/e2e_kubeadm/e2e_kubeadm_suite_test.go index 08e54318dc1..3ea5b56c87a 100644 --- a/test/e2e_kubeadm/e2e_kubeadm_suite_test.go +++ b/test/e2e_kubeadm/e2e_kubeadm_suite_test.go @@ -18,6 +18,7 @@ package kubeadm import ( "flag" + "fmt" "os" "testing" @@ -42,6 +43,10 @@ func TestMain(m *testing.M) { framework.RegisterClusterFlags(flag.CommandLine) pflag.CommandLine.AddGoFlagSet(flag.CommandLine) pflag.Parse() + if pflag.CommandLine.NArg() > 0 { + fmt.Fprintf(os.Stderr, "unknown additional command line arguments: %s", pflag.CommandLine.Args()) + os.Exit(1) + } framework.AfterReadingAllFlags(&framework.TestContext) os.Exit(m.Run()) } diff --git a/test/e2e_node/e2e_node_suite_test.go b/test/e2e_node/e2e_node_suite_test.go index 104d428b802..5d7f54af18d 100644 --- a/test/e2e_node/e2e_node_suite_test.go +++ b/test/e2e_node/e2e_node_suite_test.go @@ -130,6 +130,10 @@ func TestMain(m *testing.M) { rand.Seed(time.Now().UnixNano()) pflag.Parse() + if pflag.CommandLine.NArg() > 0 { + fmt.Fprintf(os.Stderr, "unknown additional command line arguments: %s", pflag.CommandLine.Args()) + os.Exit(1) + } framework.AfterReadingAllFlags(&framework.TestContext) if err := e2eskipper.InitFeatureGates(utilfeature.DefaultFeatureGate, featureGates); err != nil { fmt.Fprintf(os.Stderr, "ERROR: initialize feature gates: %v", err)