MH's patch for allowing control characters as list separators.
[users/heiko/exim.git] / test / runtest
index ac56a1c9552b5a9e13ffb66b85acee00e8cce591..4e511dc36410cd5eef19ece2ee2921f222c5c23c 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/bin/perl -w
 
 #! /usr/bin/perl -w
 
-# $Cambridge: exim/test/runtest,v 1.21 2007/01/15 15:59:22 ph10 Exp $
+# $Cambridge: exim/test/runtest,v 1.24 2007/02/08 15:16:19 ph10 Exp $
 
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
 
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
@@ -429,6 +429,13 @@ while(<IN>)
   # Date/time in exim -bV output
   s/\d\d-[A-Z][a-z]{2}-\d{4}\s\d\d:\d\d:\d\d/07-Mar-2000 12:21:52/g;
 
   # Date/time in exim -bV output
   s/\d\d-[A-Z][a-z]{2}-\d{4}\s\d\d:\d\d:\d\d/07-Mar-2000 12:21:52/g;
 
+  # Time on queue tolerance
+  s/QT=1s/QT=0s/;
+
+  # Eximstats heading
+  s/Exim\sstatistics\sfrom\s\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d\sto\s
+    \d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d/Exim statistics from <time> to <time>/x;
+
 
   # ======== Caller's login, uid, gid, home ========
 
 
   # ======== Caller's login, uid, gid, home ========
 
@@ -494,6 +501,10 @@ while(<IN>)
   # Pid in temp file in appendfile transport
   s"test-mail/temp\.\d+\."test-mail/temp.pppp.";
 
   # Pid in temp file in appendfile transport
   s"test-mail/temp\.\d+\."test-mail/temp.pppp.";
 
+  # Optional pid in log lines
+  s/^(\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d)(\s[+-]\d\d\d\d|)(\s\[\d+\])/
+    "$1$2 [" . new_value($3, "%s", \$next_pid) . "]"/gxe;
+
   # Detect a daemon stderr line with a pid and save the pid for subsequent
   # removal from following lines.
   $spid = $1 if /^(\s*\d+) (?:listening|LOG: MAIN|(?:daemon_smtp_port|local_interfaces) overridden by)/;
   # Detect a daemon stderr line with a pid and save the pid for subsequent
   # removal from following lines.
   $spid = $1 if /^(\s*\d+) (?:listening|LOG: MAIN|(?:daemon_smtp_port|local_interfaces) overridden by)/;
@@ -510,8 +521,8 @@ while(<IN>)
   s/\(port=(\d+)/"(port=" . new_value($1, "%s", \$next_port)/e;
 
   # This handles "connection from" and the like, when the port is given
   s/\(port=(\d+)/"(port=" . new_value($1, "%s", \$next_port)/e;
 
   # This handles "connection from" and the like, when the port is given
-  if (!/listening for SMTP on/ && !/Connecting to/ && !/=>/ && !/\*>/ &&
-      !/Connection refused/)
+  if (!/listening for SMTP on/ && !/Connecting to/ && !/=>/ && !/->/
+      && !/\*>/ && !/Connection refused/)
     {
     s/\[([a-z\d:]+|\d+(?:\.\d+){3})\]:(\d+)/"[".$1."]:".new_value($2,"%s",\$next_port)/ie;
     }
     {
     s/\[([a-z\d:]+|\d+(?:\.\d+){3})\]:(\d+)/"[".$1."]:".new_value($2,"%s",\$next_port)/ie;
     }
@@ -587,6 +598,8 @@ while(<IN>)
   s/\+0100,\d+;/+0100,ddd;/;
   s/\(\d+ bytes written\)/(ddd bytes written)/;
   s/added '\d+ 1'/added 'ddd 1'/;
   s/\+0100,\d+;/+0100,ddd;/;
   s/\(\d+ bytes written\)/(ddd bytes written)/;
   s/added '\d+ 1'/added 'ddd 1'/;
+  s/Received\s+\d+/Received               nnn/;
+  s/Delivered\s+\d+/Delivered              nnn/;
 
 
   # ======== Values in spool space failure message ========
 
 
   # ======== Values in spool space failure message ========
@@ -1410,6 +1423,30 @@ if (/^exinext\s+(.*)/)
   }
 
 
   }
 
 
+# The "exigrep" command runs exigrep on the current mainlog
+
+if (/^exigrep\s+(.*)/)
+  {
+  run_system("(./eximdir/exigrep " .
+    "$1 $parm_cwd/spool/log/mainlog;" .
+    "echo exigrep exit code = \$?)" .
+    ">>test-stdout");
+  return 1;
+  }
+
+
+# The "eximstats" command runs eximstats on the current mainlog
+
+if (/^eximstats\s+(.*)/)
+  {
+  run_system("(./eximdir/eximstats " .
+    "$1 $parm_cwd/spool/log/mainlog;" .
+    "echo eximstats exit code = \$?)" .
+    ">>test-stdout");
+  return 1;
+  }
+
+
 # The "gnutls" command makes a copy of saved GnuTLS parameter data in the
 # spool directory, to save Exim from re-creating it each time.
 
 # The "gnutls" command makes a copy of saved GnuTLS parameter data in the
 # spool directory, to save Exim from re-creating it each time.
 
@@ -2532,6 +2569,16 @@ if (system("cp $parm_exim_dir/exinext eximdir") != 0)
   tests_exit(-1, "Failed to make a copy of exinext: $!");
   }
 
   tests_exit(-1, "Failed to make a copy of exinext: $!");
   }
 
+if (system("cp $parm_exim_dir/exigrep eximdir") != 0)
+  {
+  tests_exit(-1, "Failed to make a copy of exigrep: $!");
+  }
+
+if (system("cp $parm_exim_dir/eximstats eximdir") != 0)
+  {
+  tests_exit(-1, "Failed to make a copy of eximstats: $!");
+  }
+
 
 ##################################################
 #    Check that the Exim user can access stuff   #
 
 ##################################################
 #    Check that the Exim user can access stuff   #
@@ -2901,6 +2948,7 @@ foreach $test (@test_list)
 
   undef %cache;
   $next_msgid = "aX";
 
   undef %cache;
   $next_msgid = "aX";
+  $next_pid = 1234;
   $next_port = 1111;
   $message_skip = 0;
   $msglog_skip = 0;
   $next_port = 1111;
   $message_skip = 0;
   $msglog_skip = 0;