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