On Sat, Dec 16, 2017 at 7:58 AM, SZEDER Gábor <[email protected]> wrote:
> When a build job running the test suite fails, our
> 'ci/print-test-failures.sh' script scans all 't/test-results/*.exit'
> files to find failed tests and prints their verbose output. However,
> if a build job were to fail before it ever gets to run the test suite,
> then there will be no files to match the above pattern and the shell
> will take the pattern literally, resulting in errors like this in the
> trace log:
>
> cat: t/test-results/*.exit: No such file or directory
> ------------------------------------------------------------------------
> t/test-results/*.out...
> ------------------------------------------------------------------------
> cat: t/test-results/*.out: No such file or directory
>
> Check upfront and proceed only if there are any such files present.
>
> Signed-off-by: SZEDER Gábor <[email protected]>
> ---
> diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh
> @@ -8,6 +8,12 @@
> +if test t/test-results/*.exit = "t/test-results/*.exit"
Isn't the above going to cause 'test' to error out?
$ mkdir -p t/test-results
$ >t/test-results/a.exit
$ >t/test-results/b.exit
$ test t/test-results/*.exit = 't/test-results/*.exit'
-bash: test: too many arguments
I'd think you'd want to capture the result of the expansion of
t/test-result/*.exit as a string and compare that instead.
> +then
> + echo "Build job failed before the tests could have been run"
> + exit
> +fi