do_for_each_reflog(): return early on error
[gitweb.git] / t / t0061-run-command.sh
index 10b26e4d8ef3ea7b6b9b2ae7aeebbbae1ee46703..17e969df609f71b0b4562cff8fda112632d27442 100755 (executable)
@@ -7,8 +7,44 @@ test_description='Test run command'
 
 . ./test-lib.sh
 
+cat >hello-script <<-EOF
+       #!$SHELL_PATH
+       cat hello-script
+EOF
+>empty
+
 test_expect_success 'start_command reports ENOENT' '
        test-run-command start-command-ENOENT ./does-not-exist
 '
 
+test_expect_success 'run_command can run a command' '
+       cat hello-script >hello.sh &&
+       chmod +x hello.sh &&
+       test-run-command run-command ./hello.sh >actual 2>err &&
+
+       test_cmp hello-script actual &&
+       test_cmp empty err
+'
+
+test_expect_success POSIXPERM 'run_command reports EACCES' '
+       cat hello-script >hello.sh &&
+       chmod -x hello.sh &&
+       test_must_fail test-run-command run-command ./hello.sh 2>err &&
+
+       grep "fatal: cannot exec.*hello.sh" err
+'
+
+test_expect_success POSIXPERM 'unreadable directory in PATH' '
+       mkdir local-command &&
+       test_when_finished "chmod u+rwx local-command && rm -fr local-command" &&
+       git config alias.nitfol "!echo frotz" &&
+       chmod a-rx local-command &&
+       (
+               PATH=./local-command:$PATH &&
+               git nitfol >actual
+       ) &&
+       echo frotz >expect &&
+       test_cmp expect actual
+'
+
 test_done