On Sat, Dec 16, 2017 at 7:58 AM, SZEDER Gábor <szeder....@gmail.com> 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 <szeder....@gmail.com>
> ---
> 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

Reply via email to