From 2fd9d3f177429b20797897360931badedbb0f0ef Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 26 Apr 2017 16:42:33 +0300 Subject: Print diff failure reason --- build2/test/script/runner.cxx | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'build2/test/script/runner.cxx') diff --git a/build2/test/script/runner.cxx b/build2/test/script/runner.cxx index 4136953..e01f621 100644 --- a/build2/test/script/runner.cxx +++ b/build2/test/script/runner.cxx @@ -334,6 +334,34 @@ namespace build2 if (p.wait ()) return true; + assert (p.exit); + const process_exit& pe (*p.exit); + + // Note that both POSIX and GNU diff utilities report error + // exiting with the code > 1. + // + if (!pe.normal () || pe.code () > 1) + { + diag_record d (fail (ll)); + + if (!pe.normal ()) + { + d << pp << " terminated abnormally: "; + print_process (d, args); + + d << info << pe.description (); + if (pe.core ()) + d << " (core dumped)"; + } + else + { + d << pp << " exit status " + << static_cast (pe.code ()) << ": "; + + print_process (d, args); + } + } + // Output doesn't match the expected result. // if (diag) -- cgit v1.1