aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/test_util.fish
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_util.fish')
-rw-r--r--tests/test_util.fish41
1 files changed, 25 insertions, 16 deletions
diff --git a/tests/test_util.fish b/tests/test_util.fish
index 7e8f1fd6..22c47852 100644
--- a/tests/test_util.fish
+++ b/tests/test_util.fish
@@ -1,4 +1,4 @@
-# vim: set ts=4 sw=4 et:
+# vim: set ts=4 sw=4 tw=100 et:
# Utilities for the test runners
if test "$argv[1]" = (status -f)
@@ -19,14 +19,12 @@ function die
exit 1
end
-# Check if we're running in the test environment.
-# If not, set it up and rerun fish with exec.
-# The test is whether the special var __fish_is_running_tests
-# exists and contains the same value as XDG_CONFIG_HOME. It checks
-# the value and not just the presence because we're going to delete
-# the config directory later if we're exiting successfully.
+# Check if we're running in the test environment. If not, set it up and rerun fish with exec. The
+# test is whether the special var __fish_is_running_tests exists and contains the same value as
+# XDG_CONFIG_HOME. It checks the value and not just the presence because we're going to delete the
+# config directory later if we're exiting successfully.
if not set -q __fish_is_running_tests
- # set up our test environment and re-run the original script
+ # Set up our test environment and re-run the original script.
set -l script $argv[1]
switch $script
case '/*'
@@ -35,8 +33,11 @@ if not set -q __fish_is_running_tests
# path is relative, make it absolute
set script $PWD/$script
end
- set -l IFS # clear IFS so cmd substitution doesn't split
- cd (dirname $script); or die
+
+ begin
+ set -l IFS # clear IFS so cmd substitution doesn't split
+ cd (dirname $script); or die
+ end
set -lx XDG_DATA_HOME ../test/data
rm -rf $XDG_DATA_HOME/fish
@@ -52,13 +53,21 @@ if not set -q __fish_is_running_tests
printf 'set fish_function_path \'%s/functions\' \'%s/share/functions\'\n' $escaped_config $escaped_parent > $XDG_CONFIG_HOME/fish/config.fish; or die
set -xl __fish_is_running_tests $XDG_CONFIG_HOME
- # set locale information to be consistent
- set -lx LANG C
- set -lx LC_ALL ''
- for var in ALL COLLATE MESSAGES MONETARY NUMERIC TIME
- set -lx LC_$var ''
+ # Set locale information for consistent tests. Fish should work with a lot of locales but the
+ # tests assume an english UTF-8 locale unless they explicitly override this default. We do not
+ # want the users locale to affect the tests since they might, for example, change the wording of
+ # logged messages.
+ #
+ # TODO: set LANG to en_US.UTF-8 so we test the locale message conversions (i.e., gettext).
+ set -e LANGUAGE
+ set -x LANG C
+ # Remove "LC_" env vars from the test environment.
+ for var in (set -xn)
+ string match -q 'LC_*' $var
+ and set -e $var
end
- set -lx LC_CTYPE en_US.UTF-8
+ set -x LC_CTYPE en_US.UTF-8
+
exec ../test/root/bin/fish $script $args_for_test_script
die 'exec failed'
else if test "$__fish_is_running_tests" != "$XDG_CONFIG_HOME"