Skip to content

Commit 4e18cd5

Browse files
committed
Merge branch 'rj/pager-die-upon-exec-failure'
When GIT_PAGER failed to spawn, depending on the code path taken, we failed immediately (correct) or just spew the payload to the standard output (incorrect). The code now always fail immediately when GIT_PAGER fails. * rj/pager-die-upon-exec-failure: pager: die when paging to non-existing command
2 parents 2fa5ae3 + 78f0a5d commit 4e18cd5

File tree

2 files changed

+6
-13
lines changed

2 files changed

+6
-13
lines changed

pager.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ void setup_pager(void)
137137
pager_process.in = -1;
138138
strvec_push(&pager_process.env, "GIT_PAGER_IN_USE");
139139
if (start_command(&pager_process))
140-
return;
140+
die("unable to execute pager '%s'", pager);
141141

142142
/* original process continues, but writes to the pipe */
143143
dup2(pager_process.in, 1);

t/t7006-pager.sh

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -725,18 +725,11 @@ test_expect_success TTY 'git discards pager non-zero exit without SIGPIPE' '
725725
test_path_is_file pager-used
726726
'
727727

728-
test_expect_success TTY 'git skips paging nonexisting command' '
729-
test_when_finished "rm trace.normal" &&
728+
test_expect_success TTY 'git errors when asked to execute nonexisting pager' '
729+
test_when_finished "rm -f err" &&
730730
test_config core.pager "does-not-exist" &&
731-
GIT_TRACE2="$(pwd)/trace.normal" &&
732-
export GIT_TRACE2 &&
733-
test_when_finished "unset GIT_TRACE2" &&
734-
735-
test_terminal git log &&
736-
737-
grep child_exit trace.normal >child-exits &&
738-
test_line_count = 1 child-exits &&
739-
grep " code:-1 " child-exits
731+
test_must_fail test_terminal git log 2>err &&
732+
test_grep "unable to execute pager" err
740733
'
741734

742735
test_expect_success TTY 'git returns SIGPIPE on propagated signals from pager' '
@@ -762,7 +755,7 @@ test_expect_success TTY 'git returns SIGPIPE on propagated signals from pager' '
762755

763756
test_expect_success TTY 'non-existent pager doesnt cause crash' '
764757
test_config pager.show invalid-pager &&
765-
test_terminal git show
758+
test_must_fail test_terminal git show
766759
'
767760

768761
test_done

0 commit comments

Comments
 (0)