aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/recipe/buildscript/testscript51
-rw-r--r--tests/test/script/runner/test-runner.testscript31
-rw-r--r--tests/test/simple/generated/testscript27
3 files changed, 107 insertions, 2 deletions
diff --git a/tests/recipe/buildscript/testscript b/tests/recipe/buildscript/testscript
index 2603f62..6bdbd32 100644
--- a/tests/recipe/buildscript/testscript
+++ b/tests/recipe/buildscript/testscript
@@ -406,7 +406,7 @@
}}
% [diag=test] test
{{
- cat <$path($<) >?$path($>)
+ cat <$path($>) >?$path($<)
}}
EOI
@@ -431,7 +431,7 @@
% [diag=test] test
{{
depdb clear
- cat <$path($<) >?$path($>)
+ cat <$path($>) >?$path($<)
}}
EOI
@@ -439,6 +439,53 @@
buildfile:7:3: error: 'depdb' builtin cannot be used to perform test
EOE
}
+
+ : runner
+ :
+ if ($cxx.target.class != 'windows')
+ {
+ echo 'bar' >=bar;
+
+ cat <<EOI >=run;
+ #!/bin/sh
+ if test "$1" = "--trace"; then
+ shift
+ echo "$*"
+ fi
+ "$@"
+ EOI
+
+ chmod u+x run;
+
+ cat <<EOI >=buildfile;
+ foo: bar
+ {{
+ cp $path($<) $path($>)
+ }}
+ % [diag=test] test
+ {{
+ if ($test.runner.path != [null])
+ $test.runner.path $test.runner.options cat <$path($>)
+ else
+ cat <$path($>)
+ end
+ }}
+ EOI
+
+ $* test 2>>EOE;
+ cp file{foo}
+ test file{foo}
+ bar
+ EOE
+
+ $* test config.test.runner="./run --trace" 2>>EOE;
+ test file{foo}
+ cat
+ bar
+ EOE
+
+ $* clean 2>-
+ }
}
: diff-label
diff --git a/tests/test/script/runner/test-runner.testscript b/tests/test/script/runner/test-runner.testscript
new file mode 100644
index 0000000..772fa1b
--- /dev/null
+++ b/tests/test/script/runner/test-runner.testscript
@@ -0,0 +1,31 @@
+# file : tests/test/script/runner/test-runner.testscript
+# license : MIT; see accompanying LICENSE file
+
+.include ../common.testscript
+
++if ($cxx.target.class == 'windows')
+ exit
+end
+
++cat <<EOI >=run
+ #!/bin/sh
+ if test "$1" = "--trace"; then
+ shift
+ echo "$*"
+ fi
+ "$@"
+ EOI
+
++chmod u+x run
+
+run=$~/run
+
+: basic
+:
+$c <<"EOI" && $b "config.test.runner=$run --trace"
+ cat <'text' >'text'; # Non-test program.
+ \$* -o 'text' >>~%EOO% # Test program.
+ %.+/driver -o text%
+ text
+ EOO
+ EOI
diff --git a/tests/test/simple/generated/testscript b/tests/test/simple/generated/testscript
index f6a89d8..9ce40ba 100644
--- a/tests/test/simple/generated/testscript
+++ b/tests/test/simple/generated/testscript
@@ -99,3 +99,30 @@ EOI
EOE
}
}
+
+: runner
+:
+if ($cxx.target.class != 'windows')
+{
+ cat <<EOI >=run;
+ #!/bin/sh
+ if test "$1" = "--trace"; then
+ shift
+ echo "tracing"
+ fi
+ "$@"
+ EOI
+
+ chmod u+x run;
+
+ echo 'tracing' >=output.in;
+ cat $src_base/output.in >+output.in;
+
+ $* config.test.runner="./run --trace" <<EOI
+ driver = $src_root/../exe{driver}
+ ./: test = $driver
+ ./: $driver
+ ./: file{output}: test.stdout = true
+ file{output}: in{output} $src_root/manifest #@@ in module
+ EOI
+}