From 96589920d5c2080a4c22a518ed4ad82cfc6839f6 Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Tue, 23 Dec 2014 12:20:44 -0800 Subject: [PATCH] Allow running specific high-level tests by passing the name to test.fish Example: tests/test.fish expansion This will run the tests in expansion.in only --- tests/test.fish | 15 +++++++++++++-- tests/test_util.fish | 8 +++++++- 2 files changed, 20 insertions(+), 3 deletions(-) mode change 100644 => 100755 tests/test.fish diff --git a/tests/test.fish b/tests/test.fish old mode 100644 new mode 100755 index 7a48ddbf8..994e7a764 --- a/tests/test.fish +++ b/tests/test.fish @@ -2,7 +2,18 @@ # # Fishscript tests -source test_util.fish (status -f); or exit +# Change to directory containing this script +cd (dirname (status -f)) + +# Test files specified on commandline, or all *.in files +set -q argv[1] +if set -q argv[1] + set files_to_test $argv.in +else + set files_to_test *.in +end + +source test_util.fish (status -f) $argv; or exit say -o cyan "Testing high level script functionality" @@ -46,7 +57,7 @@ function test_file end set -l failed -for i in *.in +for i in $files_to_test if not test_file $i set failed $failed $i end diff --git a/tests/test_util.fish b/tests/test_util.fish index 2c64d3661..22744b340 100644 --- a/tests/test_util.fish +++ b/tests/test_util.fish @@ -8,6 +8,12 @@ if test "$argv[1]" = (status -f) exit 1 end +# Any remaining arguments are passed back to test.fish +set -l args_for_test_script +if set -q argv[2] + set args_for_test_script $argv[2..-1] +end + function die set -q argv[1]; and echo $argv[1] >&2 exit 1 @@ -51,7 +57,7 @@ if not set -q __fish_is_running_tests set -lx LC_$var '' end set -lx LC_CTYPE en_US.UTF-8 - exec ../fish $script + exec ../fish $script $args_for_test_script die 'exec failed' else if test "$__fish_is_running_tests" != "$XDG_CONFIG_HOME" echo 'Something went wrong with the test runner.' >&2