Merge branch 'jc/run-command-report-exec-failure-fix' into maint
authorJunio C Hamano <gitster@pobox.com>
Sat, 15 Dec 2018 03:24:34 +0000 (12:24 +0900)
committerJunio C Hamano <gitster@pobox.com>
Sat, 15 Dec 2018 03:24:34 +0000 (12:24 +0900)
A recent update accidentally squelched an error message when the
run_command API failed to run a missing command, which has been
corrected.

* jc/run-command-report-exec-failure-fix:
run-command: report exec failure

1  2 
run-command.c
t/t0061-run-command.sh
diff --combined run-command.c
index c11ff8067481f70c444198bcc7477ef744d99fd3,e2bc18a0833359b8a66a9aa8b06edb6e2759d734..3db26b7b0e2ab9b6b615387b36a2cd6b64800e9e
@@@ -728,6 -728,8 +728,8 @@@ fail_pipe
        if (prepare_cmd(&argv, cmd) < 0) {
                failed_errno = errno;
                cmd->pid = -1;
+               if (!cmd->silent_exec_failure)
+                       error_errno("cannot run %s", cmd->argv[0]);
                goto end_of_spawn;
        }
  
@@@ -1226,7 -1228,7 +1228,7 @@@ int start_async(struct async *async
        {
                int err = pthread_create(&async->tid, NULL, run_thread, async);
                if (err) {
 -                      error_errno("cannot create thread");
 +                      error(_("cannot create async thread: %s"), strerror(err));
                        goto error;
                }
        }
@@@ -1259,15 -1261,6 +1261,15 @@@ int finish_async(struct async *async
  #endif
  }
  
 +int async_with_fork(void)
 +{
 +#ifdef NO_PTHREADS
 +      return 1;
 +#else
 +      return 0;
 +#endif
 +}
 +
  const char *find_hook(const char *name)
  {
        static struct strbuf path = STRBUF_INIT;
diff --combined t/t0061-run-command.sh
index cf932c851411e5abd992005de474cc095abecead,8a484878ec8a95f2f72b768056663b971f19f1b5..96bf6d6a7d0145334666fcd15373bad6ac66fd67
@@@ -11,13 -11,16 +11,15 @@@ cat >hello-script <<-EO
        #!$SHELL_PATH
        cat hello-script
  EOF
 ->empty
  
  test_expect_success 'start_command reports ENOENT (slash)' '
-       test-tool run-command start-command-ENOENT ./does-not-exist
+       test-tool run-command start-command-ENOENT ./does-not-exist 2>err &&
+       test_i18ngrep "\./does-not-exist" err
  '
  
  test_expect_success 'start_command reports ENOENT (no slash)' '
-       test-tool run-command start-command-ENOENT does-not-exist
+       test-tool run-command start-command-ENOENT does-not-exist 2>err &&
+       test_i18ngrep "does-not-exist" err
  '
  
  test_expect_success 'run_command can run a command' '
        test-tool run-command run-command ./hello.sh >actual 2>err &&
  
        test_cmp hello-script actual &&
 -      test_cmp empty err
 +      test_must_be_empty err
  '
  
  test_expect_success 'run_command is restricted to PATH' '
        write_script should-not-run <<-\EOF &&
        echo yikes
        EOF
-       test_must_fail test-tool run-command run-command should-not-run
+       test_must_fail test-tool run-command run-command should-not-run 2>err &&
+       test_i18ngrep "should-not-run" err
  '
  
  test_expect_success !MINGW 'run_command can run a script without a #! line' '
@@@ -44,7 -48,7 +47,7 @@@
        test-tool run-command run-command ./hello >actual 2>err &&
  
        test_cmp hello-script actual &&
 -      test_cmp empty err
 +      test_must_be_empty err
  '
  
  test_expect_success 'run_command does not try to execute a directory' '
@@@ -57,7 -61,7 +60,7 @@@
        PATH=$PWD/bin1:$PWD/bin2:$PATH \
                test-tool run-command run-command greet >actual 2>err &&
        test_cmp bin2/greet actual &&
 -      test_cmp empty err
 +      test_must_be_empty err
  '
  
  test_expect_success POSIXPERM 'run_command passes over non-executable file' '
@@@ -74,7 -78,7 +77,7 @@@
        PATH=$PWD/bin1:$PWD/bin2:$PATH \
                test-tool run-command run-command greet >actual 2>err &&
        test_cmp bin2/greet actual &&
 -      test_cmp empty err
 +      test_must_be_empty err
  '
  
  test_expect_success POSIXPERM 'run_command reports EACCES' '