Re: [exim] Exim 4.80 RC2 uploaded

Top Page
Delete this message
Reply to this message
Author: Phil Pennock
Date:  
To: Jeremy Harris
CC: exim-users
Subject: Re: [exim] Exim 4.80 RC2 uploaded
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