Re: [BUG] t1800: Fails for error text comparison
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 7, 2022, 21:55 UTC
- Message-ID
- <xmqqh71isvc8.fsf@gitster.g>
- In-Reply-To
- <001201d8c2fb$3f1c51b0$bd54f510$@nexbridge.com>
<rsbecker@nexbridge.com> writes:
Show 7 quoted lines
> I am finding an issue with t1800.16 failing as a result of a text compare: > > -fatal: cannot run bad-hooks/test-hook: ... > +fatal: cannot exec 'bad-hooks/test-hook': Permission denied > > I don't think this is actually a failure condition but the message > text is platform and shell specific.
Isn't this coming from piece of code in start_command()?
/* * Attempt to exec using the command and arguments starting at * argv.argv[1]. argv.argv[0] contains SHELL_PATH which will * be used in the event exec failed with ENOEXEC at which point * we will try to interpret the command using 'sh'. */ execve(argv.v[1], (char *const *) argv.v + 1, (char *const *) childenv); if (errno == ENOEXEC) execve(argv.v[0], (char *const *) argv.v, (char *const *) childenv);
if (errno == ENOENT) {
if (cmd->silent_exec_failure)
child_die(CHILD_ERR_SILENT);
child_die(CHILD_ERR_ENOENT);
} else {
child_die(CHILD_ERR_ERRNO);
}The test apparently expects CHILD_ERR_NOENT, which comes from child_err_spew()
case CHILD_ERR_ENOENT:
error_errno("cannot run %s", cmd->args.v[0]);
break;
case CHILD_ERR_SILENT:
break;
case CHILD_ERR_ERRNO:
error_errno("cannot exec '%s'", cmd->args.v[0]);
break;
}but somehow your system fails the execve() with something other than ENOENT.