diff --git a/command/alias.go b/command/alias.go index e5cec0b0b..7f02b03d5 100644 --- a/command/alias.go +++ b/command/alias.go @@ -82,8 +82,10 @@ func aliasSet(cmd *cobra.Command, args []string) error { alias := args[0] expansion := args[1] - out := colorableOut(cmd) - fmt.Fprintf(out, "- Adding alias for %s: %s\n", utils.Bold(alias), utils.Bold(expansion)) + stderr := colorableErr(cmd) + if connectedToTerminal(cmd) { + fmt.Fprintf(stderr, "- Adding alias for %s: %s\n", utils.Bold(alias), utils.Bold(expansion)) + } shell, err := cmd.Flags().GetBool("shell") if err != nil { @@ -119,7 +121,9 @@ func aliasSet(cmd *cobra.Command, args []string) error { return fmt.Errorf("could not create alias: %s", err) } - fmt.Fprintln(out, successMsg) + if connectedToTerminal(cmd) { + fmt.Fprintln(stderr, successMsg) + } return nil } @@ -156,7 +160,9 @@ func aliasList(cmd *cobra.Command, args []string) error { stderr := colorableErr(cmd) if aliasCfg.Empty() { - fmt.Fprintf(stderr, "no aliases configured\n") + if connectedToTerminal(cmd) { + fmt.Fprintf(stderr, "no aliases configured\n") + } return nil } @@ -217,9 +223,11 @@ func aliasDelete(cmd *cobra.Command, args []string) error { return fmt.Errorf("failed to delete alias %s: %w", alias, err) } - out := colorableOut(cmd) - redCheck := utils.Red("✓") - fmt.Fprintf(out, "%s Deleted alias %s; was %s\n", redCheck, alias, expansion) + if connectedToTerminal(cmd) { + stderr := colorableErr(cmd) + redCheck := utils.Red("✓") + fmt.Fprintf(stderr, "%s Deleted alias %s; was %s\n", redCheck, alias, expansion) + } return nil } diff --git a/command/alias_test.go b/command/alias_test.go index 871a540a4..63646f7a6 100644 --- a/command/alias_test.go +++ b/command/alias_test.go @@ -42,6 +42,8 @@ editor: vim ` initBlankContext(cfg, "OWNER/REPO", "trunk") + defer stubTerminal(true)() + mainBuf := bytes.Buffer{} hostsBuf := bytes.Buffer{} defer config.StubWriteConfig(&mainBuf, &hostsBuf)() @@ -52,7 +54,8 @@ editor: vim t.Fatalf("unexpected error: %s", err) } - test.ExpectLines(t, output.String(), "Added alias") + test.ExpectLines(t, output.Stderr(), "Added alias") + test.ExpectLines(t, output.String(), "") expected := `aliases: co: pr checkout @@ -71,6 +74,7 @@ aliases: co: pr checkout ` initBlankContext(cfg, "OWNER/REPO", "trunk") + defer stubTerminal(true)() mainBuf := bytes.Buffer{} hostsBuf := bytes.Buffer{} @@ -82,11 +86,12 @@ aliases: t.Fatalf("unexpected error: %s", err) } - test.ExpectLines(t, output.String(), "Changed alias co from pr checkout to pr checkout -Rcool/repo") + test.ExpectLines(t, output.Stderr(), "Changed alias.*co.*from.*pr checkout.*to.*pr checkout -Rcool/repo") } func TestAliasSet_space_args(t *testing.T) { initBlankContext("", "OWNER/REPO", "trunk") + defer stubTerminal(true)() mainBuf := bytes.Buffer{} hostsBuf := bytes.Buffer{} @@ -98,28 +103,29 @@ func TestAliasSet_space_args(t *testing.T) { t.Fatalf("unexpected error: %s", err) } - test.ExpectLines(t, output.String(), `Adding alias for il: issue list -l "cool story"`) + test.ExpectLines(t, output.Stderr(), `Adding alias for.*il.*issue list -l "cool story"`) test.ExpectLines(t, mainBuf.String(), `il: issue list -l "cool story"`) } func TestAliasSet_arg_processing(t *testing.T) { initBlankContext("", "OWNER/REPO", "trunk") + defer stubTerminal(true)() cases := []struct { Cmd string ExpectedOutputLine string ExpectedConfigLine string }{ - {`alias set il "issue list"`, "- Adding alias for il: issue list", "il: issue list"}, + {`alias set il "issue list"`, "- Adding alias for.*il.*issue list", "il: issue list"}, - {`alias set iz 'issue list'`, "- Adding alias for iz: issue list", "iz: issue list"}, + {`alias set iz 'issue list'`, "- Adding alias for.*iz.*issue list", "iz: issue list"}, {`alias set ii 'issue list --author="$1" --label="$2"'`, - `- Adding alias for ii: issue list --author="\$1" --label="\$2"`, + `- Adding alias for.*ii.*issue list --author="\$1" --label="\$2"`, `ii: issue list --author="\$1" --label="\$2"`}, {`alias set ix "issue list --author='\$1' --label='\$2'"`, - `- Adding alias for ix: issue list --author='\$1' --label='\$2'`, + `- Adding alias for.*ix.*issue list --author='\$1' --label='\$2'`, `ix: issue list --author='\$1' --label='\$2'`}, } @@ -133,7 +139,7 @@ func TestAliasSet_arg_processing(t *testing.T) { t.Fatalf("got unexpected error running %s: %s", c.Cmd, err) } - test.ExpectLines(t, output.String(), c.ExpectedOutputLine) + test.ExpectLines(t, output.Stderr(), c.ExpectedOutputLine) test.ExpectLines(t, mainBuf.String(), c.ExpectedConfigLine) } } @@ -143,6 +149,7 @@ func TestAliasSet_init_alias_cfg(t *testing.T) { editor: vim ` initBlankContext(cfg, "OWNER/REPO", "trunk") + defer stubTerminal(true)() mainBuf := bytes.Buffer{} hostsBuf := bytes.Buffer{} @@ -157,7 +164,7 @@ aliases: diff: pr diff ` - test.ExpectLines(t, output.String(), "Adding alias for diff: pr diff", "Added alias.") + test.ExpectLines(t, output.Stderr(), "Adding alias for.*diff.*pr diff", "Added alias.") eq(t, mainBuf.String(), expected) } @@ -167,6 +174,7 @@ aliases: foo: bar ` initBlankContext(cfg, "OWNER/REPO", "trunk") + defer stubTerminal(true)() mainBuf := bytes.Buffer{} hostsBuf := bytes.Buffer{} @@ -181,7 +189,7 @@ aliases: view: pr view ` - test.ExpectLines(t, output.String(), "Adding alias for view: pr view", "Added alias.") + test.ExpectLines(t, output.Stderr(), "Adding alias for.*view.*pr view", "Added alias.") eq(t, mainBuf.String(), expected) } @@ -349,6 +357,7 @@ aliases: ia: issue list --author="$1" --assignee="$1" ` initBlankContext(cfg, "OWNER/REPO", "trunk") + defer stubTerminal(true)() mainBuf := bytes.Buffer{} hostsBuf := bytes.Buffer{} @@ -359,7 +368,7 @@ aliases: t.Fatalf("unexpected error: %s", err) } - test.ExpectLines(t, output.String(), "Deleted alias co; was pr checkout") + test.ExpectLines(t, output.Stderr(), "Deleted alias co; was pr checkout") expected := `aliases: il: issue list --author="$1" --label="$2" @@ -372,6 +381,8 @@ aliases: func TestShellAlias_flag(t *testing.T) { initBlankContext("", "OWNER/REPO", "trunk") + defer stubTerminal(true)() + mainBuf := bytes.Buffer{} hostsBuf := bytes.Buffer{} defer config.StubWriteConfig(&mainBuf, &hostsBuf)() @@ -381,7 +392,7 @@ func TestShellAlias_flag(t *testing.T) { t.Fatalf("unexpected error: %s", err) } - test.ExpectLines(t, output.String(), "Adding alias for igrep") + test.ExpectLines(t, output.Stderr(), "Adding alias for.*igrep") expected := `aliases: igrep: '!gh issue list | grep' ` @@ -392,6 +403,8 @@ func TestShellAlias_flag(t *testing.T) { func TestShellAlias_bang(t *testing.T) { initBlankContext("", "OWNER/REPO", "trunk") + defer stubTerminal(true)() + mainBuf := bytes.Buffer{} hostsBuf := bytes.Buffer{} defer config.StubWriteConfig(&mainBuf, &hostsBuf)() @@ -401,7 +414,7 @@ func TestShellAlias_bang(t *testing.T) { t.Fatalf("unexpected error: %s", err) } - test.ExpectLines(t, output.String(), "Adding alias for igrep") + test.ExpectLines(t, output.Stderr(), "Adding alias for.*igrep") expected := `aliases: igrep: '!gh issue list | grep' `