diff --git a/cmd/cloud.go b/cmd/cloud.go index 9f529bd7064..bfb79015563 100644 --- a/cmd/cloud.go +++ b/cmd/cloud.go @@ -366,16 +366,15 @@ func getCmdCloud(gs *state.GlobalState) *cobra.Command { cloudCmd := &cobra.Command{ Use: "cloud", Short: "Run a test on the cloud", - Long: `Run a test in the Grafana Cloud k6. + Long: `The original behavior of the "k6 cloud" command described below is deprecated. +In future versions, the "cloud" command will only display a help text and will no longer run tests +in Grafana Cloud k6. To continue running tests in the cloud, please transition to using the "k6 cloud run" command. + +Run a test in the Grafana Cloud k6. This will archive test script(s), including all necessary resources, and execute the test in the Grafana Cloud k6 service. Be sure to run the "k6 cloud login" command prior to authenticate with Grafana Cloud k6.`, - Args: exactCloudArgs(), - Deprecated: `the k6 team is in the process of modifying and deprecating the "k6 cloud" command behavior. -In the future, the "cloud" command will only display a help text, instead of running tests in the Grafana Cloud k6. - -To run tests in the cloud, users are now invited to migrate to the "k6 cloud run" command instead. -`, + Args: exactCloudArgs(), PreRunE: c.preRun, RunE: c.run, Example: exampleText, diff --git a/cmd/root_test.go b/cmd/root_test.go new file mode 100644 index 00000000000..44e52790d41 --- /dev/null +++ b/cmd/root_test.go @@ -0,0 +1,90 @@ +package cmd + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "go.k6.io/k6/cmd/tests" + "go.k6.io/k6/errext/exitcodes" +) + +func TestRootCommandHelpDisplayCommands(t *testing.T) { + t.Parallel() + + testCases := []struct { + name string + extraArgs []string + wantExitCode exitcodes.ExitCode + wantStdoutContains string + wantStdoutNotContains string + }{ + { + name: "should have archive command", + wantStdoutContains: " archive Create an archive", + }, + { + name: "should have cloud command", + wantStdoutContains: " cloud Run a test on the cloud", + }, + { + name: "should have completion command", + wantStdoutContains: " completion Generate the autocompletion script for the specified shell", + }, + { + name: "should have help command", + wantStdoutContains: " help Help about any command", + }, + { + name: "should have inspect command", + wantStdoutContains: " inspect Inspect a script or archive", + }, + { + name: "should have new command", + wantStdoutContains: " new Create and initialize a new k6 script", + }, + { + name: "should have pause command", + wantStdoutContains: " pause Pause a running test", + }, + { + name: "should have resume command", + wantStdoutContains: " resume Resume a paused test", + }, + { + name: "should have run command", + wantStdoutContains: " run Start a test", + }, + { + name: "should have scale command", + wantStdoutContains: " scale Scale a running test", + }, + { + name: "should have stats command", + wantStdoutContains: " stats Show test metrics", + }, + { + name: "should have status command", + wantStdoutContains: " status Show test status", + }, + { + name: "should have version command", + wantStdoutContains: " version Show application version", + }, + } + + for _, tc := range testCases { + tc := tc + + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + ts := tests.NewGlobalTestState(t) + ts.CmdArgs = []string{"k6", "help"} + newRootCommand(ts.GlobalState).execute() + + if tc.wantStdoutContains != "" { + assert.Contains(t, ts.Stdout.String(), tc.wantStdoutContains) + } + }) + } +}