On 2012-05-19 at 20:32 +0100, Jeremy Harris wrote:
> Really minor testsuite issue, but it's a new one:
>
> log/0369
> SHELL vs. /bin/sh
I fixed that because the output from the running test is changed when
SHELL=/bin/sh, which it does for my test suite account.
This has always been broken for me, but the code has been in place since
PH did the initial CVS import of the test suite, recorded in git as
151b83f8.
> I'm not sure why this particular use of a shell must
> be translated. It has a well-defined name, coded in the conf.
> Perhaps we could place our own symlink (in the test area)
> to /bin/sh and code the conf with that?
I believe it's because of 0137 which invokes the user's shell, instead
of /bin/sh, only using /bin/sh if SHELL is not in the environment.
> I've a patch with this; can push in fairly short order if it's agreeable.
Because of 0137, I suspect the correct fix is (since the test suite
already assumes '/' as directory separator):
* revert the change to log/0369
* in runtest, before setting $parm_shell:
# test 0137 testing really needs a different shell to /bin/sh to be
# meaningful
if ($ENV{'SHELL'} eq '/bin/sh') {
print "Finding alternate user-shell for testing ...\n";
my $new_shell;
VARIANT_LOOP:
foreach my $variant ('bash', 'zsh', 'ksh') {
foreach my $elem (split /:/, $ENV{'PATH'}) {
if (-x "$elem/$variant") {
$new_shell = "$elem/$variant";
last VARIANT_LOOP;
}
}
}
if (not defined $new_shell) {
die "Unable to find replacement user shell for /bin/sh\n"
}
$ENV{'SHELL'} = $new_shell;
}
-Phil