- my ($cmd,$arg) = ($1,$2);
- $arg =~ s/\r//g;
-
- # handle the commands
- if ($cmd =~ /^#/) { #comment
- } elsif ($cmd eq '> '){ #expected result line
- print "[TESH/debug] push expected result\n" if $opts{'debug'};
- $arg=trim($arg);
- if($arg ne ""){
- push @{$cmd{'out'}}, $arg;
+ my ($cmd,$arg) = ($1,$2);
+ $arg =~ s/\r//g;
+ $arg =~ s/\\\\/\\/g;
+ # handle the commands
+ if ($cmd =~ /^#/) { #comment
+ } elsif ($cmd eq '>'){ #expected result line
+ print "[TESH/debug] push expected result\n" if $opts{'debug'};
+ $arg=trim($arg);
+ if($arg ne ""){
+ push @{$cmd{'out'}}, $arg;
+ }
+
+ } elsif ($cmd eq '<') { # provided input
+ print "[TESH/debug] push provided input\n" if $opts{'debug'};
+ push @{$cmd{'in'}}, $arg;
+
+ } elsif ($cmd eq 'p') { # comment
+ print "[$tesh_name:$line_num] $arg\n";
+
+ } elsif ($cmd eq '$') { # Command
+ # if we have something buffered, run it now
+ if (defined($cmd{'cmd'})) {
+ exec_cmd(\%cmd);
+ %cmd = ();
+ }
+ if ($arg =~ /^\s*mkfile /){ # "mkfile" command line
+ die "[TESH/CRITICAL] Output expected from mkfile command!\n" if scalar @{cmd{'out'}};
+
+ $cmd{'arg'} = $arg;
+ $cmd{'arg'} =~ s/\s*mkfile //;
+ mkfile_cmd(\%cmd);
+ %cmd = ();
+
+ } elsif ($arg =~ /^\s*cd /) {
+ die "[TESH/CRITICAL] Input provided to cd command!\n" if scalar @{cmd{'in'}};
+ die "[TESH/CRITICAL] Output expected from cd command!\n" if scalar @{cmd{'out'}};
+
+ $arg =~ s/^ *cd //;
+ cd_cmd("",$arg);
+ %cmd = ();
+
+ } else { # regular command
+ $cmd{'cmd'} = $arg;
+ $cmd{'file'} = $tesh_file;
+ $cmd{'line'} = $line_num;