]> granicus.if.org Git - curl/commitdiff
allows simple custom modifications for single test cases
authorDaniel Stenberg <daniel@haxx.se>
Mon, 27 Nov 2000 12:53:32 +0000 (12:53 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 27 Nov 2000 12:53:32 +0000 (12:53 +0000)
tests/ftpserver.pl

index e603f8275b8b7f0bc938a90802e8993ebb112754..918df0ca7b76bc19a900107b3ceb02099d2fd353 100644 (file)
@@ -298,6 +298,24 @@ sub PORT_command {
 
 $SIG{CHLD} = \&REAPER;
 
+my %customreply;
+sub customize {
+    open(CUSTOM, "<log/ftpserver.cmd") ||
+        return 1;
+
+    if($verbose) {
+        print STDERR "FTPD: Getting commands from log/ftpserver.cmd\n";
+    }
+
+    undef %customreply;
+    while(<CUSTOM>) {
+        if($_ =~ /REPLY ([A-Z]+) (.*)/) {
+            $customreply{$1}=$2;
+        }
+    }
+    close(CUSTOM);
+}
+
 my @welcome=(
             '220-        _   _ ____  _     '."\r\n",
             '220-    ___| | | |  _ \| |    '."\r\n",
@@ -327,6 +345,8 @@ for ( $waitedpid = 0;
     FTPLOG->autoflush(1);
     INPUT->autoflush(1);
 
+    &customize(); # read test control instructions
+
     print @welcome;
     my $state="fresh";
 
@@ -367,16 +387,24 @@ for ( $waitedpid = 0;
             $state = $newstate;
         }
 
-        my $text = $displaytext{$FTPCMD};
+        my $text;
+        $text = $customreply{$FTPCMD};
+        my $fake = $text;
+        if($text eq "") {
+            $text = $displaytext{$FTPCMD};
+        }
         if($text) {
             print "$text\r\n";
         }
 
-        # see if the new state is a function caller.
-        my $func = $commandfunc{$FTPCMD};
-        if($func) {
-            # it is!
-            \&$func($FTPARG);
+        if($fake eq "") {
+            # only perform this if we're not faking a reply
+            # see if the new state is a function caller.
+            my $func = $commandfunc{$FTPCMD};
+            if($func) {
+                # it is!
+                \&$func($FTPARG);
+            }
         }
 
         logmsg "set to state $state\n";