diff --git a/tests/checks/check-all-fish-files.fish b/tests/checks/check-all-fish-files.fish index 5d4beb423..018c3d43c 100644 --- a/tests/checks/check-all-fish-files.fish +++ b/tests/checks/check-all-fish-files.fish @@ -2,7 +2,19 @@ # Test ALL THE FISH FILES # in share/, that is - the tests are exempt because they contain syntax errors, on purpose -for file in $__fish_data_dir/**.fish - $fish -n $file +set timestamp_file ./last_check_all_files +set -l find_args +if test -f $timestamp_file + set find_args -newer $timestamp_file end +set -l fail_count 0 +for file in (find $__fish_data_dir/ -name "*.fish" $find_args 2>/dev/null; or find $__fish_data_dir/ -name "*.fish") + $fish -n $file; or set fail_count (math $fail_count + 1) +end + +# Prevent setting timestamp if any errors were encountered +if test "$fail_count" -eq 0 + touch $timestamp_file +end + # No output is good output