summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rwxr-xr-xtest/run16
-rw-r--r--test/tester.test25
2 files changed, 36 insertions, 5 deletions
diff --git a/test/run b/test/run
index 2d1fe9a..64279ec 100755
--- a/test/run
+++ b/test/run
@@ -81,18 +81,24 @@ if (defined $ARGV[0]) {
*SOURCE = *STDIN;
}
+# Substitute %{VAR} with environment variables
+sub substitute_vars($)
+{
+ my ($line) = @_;
+ $line =~ s[%{(\w+)}][defined $ENV{$1} ? $ENV{$1} : ""]eg;
+ return $line;
+}
+
while (defined(my $line = <SOURCE>)) {
$lineno++;
- # Substitute %{VAR} with environment variables
- $line =~ s[%{(\w+)}][$ENV{$1}]eg;
# Collect input and output for the previous command
if ($line =~ s/^\s*< ?//) {
- push @$in, $line;
+ push @$in, substitute_vars($line);
next;
}
if ($line =~ s/^\s*> ?//) {
- push @$out, $line;
+ push @$out, substitute_vars($line);
next;
}
@@ -108,7 +114,7 @@ while (defined(my $line = <SOURCE>)) {
# Substitute %{?} with the last command's status
$line =~ s[%{\?}][$last_status]eg;
- $prog = [ map { s/\\(.)/$1/g; $_ } split /(?<!\\)\s+/, $line ];
+ $prog = [ map { s/\\(.)/$1/g; $_ } split /(?<!\\)\s+/, substitute_vars($line) ];
$prog_line = $lineno;
$in = [];
$out = [];
diff --git a/test/tester.test b/test/tester.test
new file mode 100644
index 0000000..bc32e32
--- /dev/null
+++ b/test/tester.test
@@ -0,0 +1,25 @@
+# Test the testing code itself
+
+# Exported variables should be available immediately after being set
+$ echo %{VAR}
+>
+$ export VAR=foo
+$ echo %{VAR}
+> foo
+$ export VAR=bar
+$ echo %{VAR}
+> bar
+
+# Exported variables should survive accross commands and comments
+$ true
+$ echo %{VAR}
+> bar
+
+# Test multiple use cases
+$ echo "A %{VAR}%{VAR}ian walks into a %{VAR}"
+> A barbarian walks into a bar
+
+# Test combined use and set
+$ export PLACE=%{VAR}racks
+$ echo %{PLACE}
+> barracks