package main import ( "bytes" "context" "io" "strings" "testing" commandkit "gitea.maximumdirect.net/eric/CommandKit" ) func TestAliasesReachCoreExampleCommand(t *testing.T) { app, err := newApp() if err != nil { t.Fatal(err) } for _, test := range []struct { name string args []string entered string canonical string greeting string }{ {name: "command shortcut and scoped flag", args: []string{"hello", "--times=0", "--tag", "one"}, entered: "hello", canonical: "workspace greet", greeting: "count=explicit 0; tags=explicit [one]"}, {name: "group shortcut", args: []string{"ws", "greet", "--count=2"}, entered: "ws greet", canonical: "workspace greet", greeting: "count=explicit 2"}, {name: "canonical command", args: []string{"workspace", "greet"}, entered: "workspace greet", canonical: "workspace greet", greeting: "count=default 1 (not supplied)"}, } { t.Run(test.name, func(t *testing.T) { var output bytes.Buffer outcome := app.Execute(context.Background(), test.args, commandkit.Streams{Out: &output, Err: io.Discard}) if outcome.Kind != commandkit.OutcomeSuccess { t.Fatalf("Execute(%q) = %#v; output %q", test.args, outcome, output.String()) } for _, fragment := range []string{ test.greeting, "entered=\"" + test.entered + "\"", "canonical=\"" + test.canonical + "\"", } { if !strings.Contains(output.String(), fragment) { t.Errorf("output %q does not contain %q", output.String(), fragment) } } }) } } func TestGlobalHelpAliasDoesNotRunCoreExampleCommand(t *testing.T) { app, err := newApp() if err != nil { t.Fatal(err) } var output bytes.Buffer outcome := app.Execute(context.Background(), []string{"hello", "--hlep"}, commandkit.Streams{Out: &output, Err: io.Discard}) if outcome.Kind != commandkit.OutcomeSuccess || !strings.Contains(output.String(), "--hlep → --help") || strings.Contains(output.String(), "Hello;") { t.Fatalf("help alias outcome/output = (%#v, %q)", outcome, output.String()) } output.Reset() outcome = app.Execute(context.Background(), []string{"ws", "--help"}, commandkit.Streams{Out: &output, Err: io.Discard}) if outcome.Kind != commandkit.OutcomeSuccess || !strings.Contains(output.String(), "greet") || strings.Contains(output.String(), "Hello;") { t.Fatalf("group shortcut help outcome/output = (%#v, %q)", outcome, output.String()) } }