From: Johannes Schindelin via GitGitGadget Date: Tue, 10 Nov 2020 23:42:19 GMT Subject: [PATCH 9/9] add -i: verify in the tests that colors can be overridden Message-ID: <38355ec98f04783367d74e38cda3ce5d6632c7ac.1605051739.git.gitgitgadget@gmail.com> In-Reply-To: From: Johannes Schindelin Now that the Perl version produces the same output as the built-in version (mostly fixing bugs in the latter), let's add a regression test to verify that it stays this way. Note that we only `grep` for the colored error message instead of verifying that the entire `stderr` consists of just this one line: when running the test script via `dash`, using the `-x` option to trace the commands, the sub-shell in `force_color` causes those commands to be traced into `err.raw` because we set, but do not export `BASH_XTRACEFD`). Signed-off-by: Johannes Schindelin --- t/t3701-add-interactive.sh | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh index ca04fac417..28549a41a2 100755 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@ -589,6 +589,59 @@ test_expect_success 'diffs can be colorized' ' grep "$(printf "\\033")" output ' +test_expect_success 'colors can be overridden' ' + test_config color.interactive.header red && + test_config color.interactive.help green && + test_config color.interactive.prompt yellow && + test_config color.interactive.error blue && + test_config color.diff.frag magenta && + test_config color.diff.context cyan && + test_config color.diff.old bold && + test_config color.diff.new "bold red" && + + git reset --hard && + test_when_finished "git rm -f color-test" && + test_write_lines context old more-context >color-test && + git add color-test && + test_write_lines context new more-context >color-test && + + echo trigger an error message >input && + force_color git add -i 2>err.raw err && + grep "Huh (trigger)?" err && + + test_write_lines patch color-test "" y quit >input && + force_color git add -i >actual.raw actual.decoded && + sed "/index [0-9a-f]*\\.\\.[0-9a-f]* 100644/d" actual && + cat >expect <<-\EOF && + staged unstaged path + 1: +3/-0 +1/-1 color-test + + *** Commands *** + 1: status 2: update 3: revert 4: add untracked + 5: patch 6: diff 7: quit 8: help + What now> staged unstaged path + 1: +3/-0 +1/-1 color-test + Patch update>> staged unstaged path + * 1: +3/-0 +1/-1 color-test + Patch update>> diff --git a/color-test b/color-test + --- a/color-test + +++ b/color-test + @@ -1,3 +1,3 @@ + context + -old + +new + more-context + (1/1) Stage this hunk [y,n,q,a,d,e,?]? + *** Commands *** + 1: status 2: update 3: revert 4: add untracked + 5: patch 6: diff 7: quit 8: help + What now> Bye. + EOF + test_cmp expect actual +' + test_expect_success 'colorized diffs respect diff.wsErrorHighlight' ' git reset --hard && -- gitgitgadget