Two clarifications.
[exim.git] / test / runtest
index 324049fc06e971e0772afab3827666e8940ccceb..2a8dd160c809117ee965089539a9fdc8a3e25f38 100755 (executable)
@@ -1,7 +1,5 @@
 #! /usr/bin/perl -w
 
 #! /usr/bin/perl -w
 
-# $Cambridge: exim/test/runtest,v 1.37 2010/06/14 20:30:12 jetmore Exp $
-
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
 # be possible to export this suite for running on a wide variety of hosts, in #
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
 # be possible to export this suite for running on a wide variety of hosts, in #
@@ -313,7 +311,8 @@ RESET_AFTER_EXTRA_LINE_READ:
   s?\Q$parm_cwd\E?TESTSUITE?g;
 
   # Replace the Exim version number (may appear in various places)
   s?\Q$parm_cwd\E?TESTSUITE?g;
 
   # Replace the Exim version number (may appear in various places)
-  s/Exim \d+\.\d+[\w-]*/Exim x.yz/i;
+  # patchexim should have fixed this for us
+  #s/(Exim) \d+\.\d+[\w_-]*/$1 x.yz/i;
 
   # Replace Exim message ids by a unique series
   s/((?:[^\W_]{6}-){2}[^\W_]{2})
 
   # Replace Exim message ids by a unique series
   s/((?:[^\W_]{6}-){2}[^\W_]{2})
@@ -594,7 +593,12 @@ RESET_AFTER_EXTRA_LINE_READ:
 
   # ======== Output from ls ========
   # Different operating systems use different spacing on long output
 
   # ======== Output from ls ========
   # Different operating systems use different spacing on long output
-  s/ +/ /g if /^[-rwd]{10} /;
+  #s/ +/ /g if /^[-rwd]{10} /;
+  # (Bug 1226) SUSv3 allows a trailing printable char for modified access method control.
+  # Handle only the Gnu and MacOS space, dot, plus and at-sign.  A full [[:graph:]]
+  # unfortunately matches a non-ls linefull of dashes.
+  # Allow the case where we've already picked out the file protection bits.
+  s/^([-d](?:[-r][-w][-SsTtx]){3})[.+@]?( +|$)/\1 /;
 
 
   # ======== Message sizes =========
 
 
   # ======== Message sizes =========
@@ -740,8 +744,13 @@ RESET_AFTER_EXTRA_LINE_READ:
 
     # drop lookups
     next if /^Lookups \(built-in\):/;
 
     # drop lookups
     next if /^Lookups \(built-in\):/;
+    next if /^Loading lookup modules from/;
+    next if /^Loaded \d+ lookup modules/;
     next if /^Total \d+ lookups/;
 
     next if /^Total \d+ lookups/;
 
+    # drop compiler information
+    next if /^Compiler:/;
+
     # and the ugly bit
     # different libraries will have different numbers (possibly 0) of follow-up
     # lines, indenting with more data
     # and the ugly bit
     # different libraries will have different numbers (possibly 0) of follow-up
     # lines, indenting with more data
@@ -763,7 +772,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /^changing group to \d+ failed: Operation not permitted/;
 
     # We invoke Exim with -D, so we hit this new messag as of Exim 4.73:
     next if /^changing group to \d+ failed: Operation not permitted/;
 
     # We invoke Exim with -D, so we hit this new messag as of Exim 4.73:
-    next if /^macros_trusted overriden to true by whitelisting/;
+    next if /^macros_trusted overridden to true by whitelisting/;
 
     # We have to omit the localhost ::1 address so that all is well in
     # the IPv4-only case.
 
     # We have to omit the localhost ::1 address so that all is well in
     # the IPv4-only case.
@@ -1860,6 +1869,13 @@ autoflush STDOUT 1;
 print "Exim tester $testversion\n";
 
 
 print "Exim tester $testversion\n";
 
 
+##################################################
+#      Some tests check created file modes       #
+##################################################
+
+umask 022;
+
+
 ##################################################
 #       Check for the "less" command             #
 ##################################################
 ##################################################
 #       Check for the "less" command             #
 ##################################################
@@ -2031,7 +2047,13 @@ if ($parm_exim eq "")
 #          Find what is in the binary            #
 ##################################################
 
 #          Find what is in the binary            #
 ##################################################
 
-open(EXIMINFO, "$parm_exim -C $parm_cwd/confs/0000 -DDIR=$parm_cwd " .
+# deal with TRUSTED_CONFIG_LIST restrictions
+unlink("$parm_cwd/test-config") if -e "$parm_cwd/test-config";
+symlink("$parm_cwd/confs/0000", "$parm_cwd/test-config")
+  or die "Unable to link initial config into place: $!\n";
+
+print("Probing with config file: $parm_cwd/test-config\n");
+open(EXIMINFO, "$parm_exim -d -C $parm_cwd/test-config -DDIR=$parm_cwd " .
                "-bP exim_user exim_group|") ||
   die "** Cannot run $parm_exim: $!\n";
 while(<EXIMINFO>)
                "-bP exim_user exim_group|") ||
   die "** Cannot run $parm_exim: $!\n";
 while(<EXIMINFO>)
@@ -2046,6 +2068,13 @@ if (defined $parm_eximuser)
   if ($parm_eximuser =~ /^\d+$/) { $parm_exim_uid = $parm_eximuser; }
     else { $parm_exim_uid = getpwnam($parm_eximuser); }
   }
   if ($parm_eximuser =~ /^\d+$/) { $parm_exim_uid = $parm_eximuser; }
     else { $parm_exim_uid = getpwnam($parm_eximuser); }
   }
+else
+  {
+  print "Unable to extract exim_user from binary.\n";
+  print "Check if Exim refused to run; if so, consider:\n";
+  print "  TRUSTED_CONFIG_LIST ALT_CONFIG_PREFIX WHITELIST_D_MACROS\n";
+  die "Failing to get information from binary.\n";
+  }
 
 if (defined $parm_eximgroup)
   {
 
 if (defined $parm_eximgroup)
   {
@@ -2053,7 +2082,7 @@ if (defined $parm_eximgroup)
     else { $parm_exim_gid = getgrnam($parm_eximgroup); }
   }
 
     else { $parm_exim_gid = getgrnam($parm_eximgroup); }
   }
 
-open(EXIMINFO, "$parm_exim -bV -C $parm_cwd/confs/0000 -DDIR=$parm_cwd |") ||
+open(EXIMINFO, "$parm_exim -bV -C $parm_cwd/test-config -DDIR=$parm_cwd |") ||
   die "** Cannot run $parm_exim: $!\n";
 
 print "-" x 78, "\n";
   die "** Cannot run $parm_exim: $!\n";
 
 print "-" x 78, "\n";
@@ -2130,6 +2159,7 @@ while (<EXIMINFO>)
 close(EXIMINFO);
 print "-" x 78, "\n";
 
 close(EXIMINFO);
 print "-" x 78, "\n";
 
+unlink("$parm_cwd/test-config");
 
 ##################################################
 #    Check for SpamAssassin and ClamAV           #
 
 ##################################################
 #    Check for SpamAssassin and ClamAV           #
@@ -2411,6 +2441,12 @@ $parm_caller_group = getgrgid($parm_caller_gid);
 print "Program caller is $parm_caller, whose group is $parm_caller_group\n";
 print "Home directory is $parm_caller_home\n";
 
 print "Program caller is $parm_caller, whose group is $parm_caller_group\n";
 print "Home directory is $parm_caller_home\n";
 
+unless (defined $parm_eximgroup)
+  {
+  print "Unable to derive \$parm_eximgroup.\n";
+  die "** ABANDONING.\n";
+  }
+
 print "You need to be in the Exim group to run these tests. Checking ...";
 
 if (`groups` =~ /\b\Q$parm_eximgroup\E\b/)
 print "You need to be in the Exim group to run these tests. Checking ...";
 
 if (`groups` =~ /\b\Q$parm_eximgroup\E\b/)
@@ -3228,4 +3264,4 @@ tests_exit(-1, "No runnable tests selected") if @test_list == 0;
 tests_exit(0);
 
 # End of runtest script
 tests_exit(0);
 
 # End of runtest script
-
+# vim: set sw=2 :