Re: [BUG] t1800: Fails for error text comparison
From: Junio C Hamano <hidden>
Date: 2022-09-07 21:55:56
[off-list ref] writes:
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.