From d74e4fc2e5e1b0fd93c705c7e856e4abfbda9b7f Mon Sep 17 00:00:00 2001 From: Amit Rout Date: Fri, 4 May 2018 11:39:13 +0530 Subject: [PATCH] Issue #2322 Add integration test step to test experimental feature --- .../features/experimental-flags.feature | 62 +++++++++++++++++++ test/integration/testsuite/testsuite.go | 14 +++++ 2 files changed, 76 insertions(+) create mode 100644 test/integration/features/experimental-flags.feature diff --git a/test/integration/features/experimental-flags.feature b/test/integration/features/experimental-flags.feature new file mode 100644 index 0000000000..037356c7b6 --- /dev/null +++ b/test/integration/features/experimental-flags.feature @@ -0,0 +1,62 @@ +@experimental-flags +Feature: Experimental Flags + Experimental flag --extra-clusterup-flags will be enabled by setting MINISHIFT_ENABLE_EXPERIMENTAL environment variable, + this flag will provide access to some of upcoming feature and experiments. + + Scenario: User cannot start minishift experimental feature directly + Given Minishift has state "Does Not Exist" + Then executing "minishift start --service-catalog" fails + And stderr should contain + """ + Error: unknown flag: --service-catalog + """ + + Scenario: User cannot use minishift flag --extra-clusterup-flag directly + Given Minishift has state "Does Not Exist" + Then executing "minishift start --extra-clusterup-flags" fails + And stderr should contain + """ + Error: unknown flag: --extra-clusterup-flags + """ + + Scenario: User can enable and disable minishift experimental flag --extra-clusterup-flags + Given Minishift has state "Does Not Exist" + When setting up environment variable "MINISHIFT_ENABLE_EXPERIMENTAL" with value "y" succeeds + Then executing "minishift start -h" succeeds + And stdout should contain + """ + --extra-clusterup-flags string + """ + When unset environment variable "MINISHIFT_ENABLE_EXPERIMENTAL" succeeds + Then executing "minishift start -h" succeeds + And stdout should not contain + """ + --extra-clusterup-flags string + """ + + Scenario: User cannot use minishift experimental flag --extra-clusterup-flag without experimental feature name + Given Minishift has state "Does Not Exist" + When setting up environment variable "MINISHIFT_ENABLE_EXPERIMENTAL" with value "y" succeeds + Then executing "minishift start --extra-clusterup-flags" fails + And stderr should contain + """ + Error: flag needs an argument: --extra-clusterup-flags + """ + And unset environment variable "MINISHIFT_ENABLE_EXPERIMENTAL" succeeds + + Scenario: User can start minishift experimental feature + Given Minishift has state "Does Not Exist" + And image caching is disabled + And setting up environment variable "MINISHIFT_ENABLE_EXPERIMENTAL" with value "y" succeeds + Then executing "minishift start --extra-clusterup-flags --service-catalog" succeeds + And stdout should contain + """ + -- Extra 'oc' cluster up flags (experimental) ... + '--service-catalog' + """ + And unset environment variable "MINISHIFT_ENABLE_EXPERIMENTAL" succeeds + + Scenario: Deleting Minishift + Given Minishift has state "Running" + When executing "minishift delete --force" succeeds + Then Minishift has state "Does Not Exist" diff --git a/test/integration/testsuite/testsuite.go b/test/integration/testsuite/testsuite.go index bb48408d9d..50dc200eb4 100644 --- a/test/integration/testsuite/testsuite.go +++ b/test/integration/testsuite/testsuite.go @@ -109,6 +109,12 @@ func FeatureContext(s *godog.Suite) { s.Step(`^scenario variable "(.*)" should not be empty$`, variableShouldNotBeEmpty) + // steps for set and unset environment variable + s.Step(`^setting up environment variable "(.*)" with value "(.*)" succeeds$`, + setEnvironmentVariable) + s.Step(`^unset environment variable "(.*)" succeeds$`, + unSetEnvironmentVariable) + // steps for rollout check s.Step(`^services? "([^"]*)" rollout successfully$`, MinishiftInstance.rolloutServicesSuccessfully) @@ -778,3 +784,11 @@ func directoryShouldntExist(dir string) error { return fmt.Errorf("Directory %s exists", dir) } + +func setEnvironmentVariable(key string, value string) error { + return os.Setenv(key, value) +} + +func unSetEnvironmentVariable(key string) error { + return os.Unsetenv(key) +}