diff options
author | Laszlo Csomor <laszlocsomor@google.com> | 2017-06-27 14:53:23 +0200 |
---|---|---|
committer | Marcel Hlopko <hlopko@google.com> | 2017-06-27 15:07:02 +0200 |
commit | 6648268ad92f37bfb243c708cbd0937e2aa6eada (patch) | |
tree | 7dd340d1a52b468b7cab0e0dcae2edd540ca9515 | |
parent | 9ef1521ca0def38156c39a25f6be29bdba0f4152 (diff) |
Bazel, python tests: add more context to failures
The Python integration tests will now print the
stderr if the inner Bazel failed.
This should help diagnosing test failures on CI.
Change-Id: I138c1a6327cc263ba6a6e2c720c39ec5d4858d87
PiperOrigin-RevId: 160265298
-rw-r--r-- | src/test/py/bazel/bazel_clean_test.py | 31 | ||||
-rw-r--r-- | src/test/py/bazel/bazel_server_mode_test.py | 8 | ||||
-rw-r--r-- | src/test/py/bazel/bazel_windows_test.py | 15 | ||||
-rw-r--r-- | src/test/py/bazel/test_base.py | 11 |
4 files changed, 41 insertions, 24 deletions
diff --git a/src/test/py/bazel/bazel_clean_test.py b/src/test/py/bazel/bazel_clean_test.py index 51f085f10f..dc9f055e03 100644 --- a/src/test/py/bazel/bazel_clean_test.py +++ b/src/test/py/bazel/bazel_clean_test.py @@ -22,33 +22,36 @@ class BazelCleanTest(test_base.TestBase): def testBazelClean(self): self.ScratchFile('WORKSPACE') self.ScratchFile('foo/BUILD', [ - 'genrule(', ' name = "x",', ' outs = ["x.out"],', - ' cmd = "touch $@",', ')' + 'genrule(', + ' name = "x",', + ' outs = ["x.out"],', + ' cmd = "touch $@",', + ')', ]) - exit_code, stdout, _ = self.RunBazel(['info', 'bazel-genfiles']) - self.assertEqual(exit_code, 0) + exit_code, stdout, stderr = self.RunBazel(['info', 'bazel-genfiles']) + self.AssertExitCode(exit_code, 0, stderr) bazel_genfiles = stdout[0] - exit_code, stdout, _ = self.RunBazel(['info', 'output_base']) - self.assertEqual(exit_code, 0) + exit_code, stdout, stderr = self.RunBazel(['info', 'output_base']) + self.AssertExitCode(exit_code, 0, stderr) output_base = stdout[0] - exit_code, _, _ = self.RunBazel(['build', '//foo:x']) - self.assertEqual(exit_code, 0) + exit_code, _, stderr = self.RunBazel(['build', '//foo:x']) + self.AssertExitCode(exit_code, 0, stderr) self.assertTrue(os.path.exists(os.path.join(bazel_genfiles, 'foo/x.out'))) - exit_code, _, _ = self.RunBazel(['clean']) - self.assertEqual(exit_code, 0) + exit_code, _, stderr = self.RunBazel(['clean']) + self.AssertExitCode(exit_code, 0, stderr) self.assertFalse(os.path.exists(os.path.join(bazel_genfiles, 'foo/x.out'))) self.assertTrue(os.path.exists(output_base)) - exit_code, _, _ = self.RunBazel(['build', '//foo:x']) - self.assertEqual(exit_code, 0) + exit_code, _, stderr = self.RunBazel(['build', '//foo:x']) + self.AssertExitCode(exit_code, 0, stderr) self.assertTrue(os.path.exists(os.path.join(bazel_genfiles, 'foo/x.out'))) - exit_code, _, _ = self.RunBazel(['clean', '--expunge']) - self.assertEqual(exit_code, 0) + exit_code, _, stderr = self.RunBazel(['clean', '--expunge']) + self.AssertExitCode(exit_code, 0, stderr) self.assertFalse(os.path.exists(os.path.join(bazel_genfiles, 'foo/x.out'))) self.assertFalse(os.path.exists(output_base)) diff --git a/src/test/py/bazel/bazel_server_mode_test.py b/src/test/py/bazel/bazel_server_mode_test.py index b132b0e03d..dbe71fb848 100644 --- a/src/test/py/bazel/bazel_server_mode_test.py +++ b/src/test/py/bazel/bazel_server_mode_test.py @@ -22,12 +22,12 @@ class BazelServerModeTest(test_base.TestBase): def testBazelServerMode(self): self.ScratchFile('WORKSPACE') - exit_code, stdout, _ = self.RunBazel(['info', 'server_pid']) - self.assertEqual(exit_code, 0) + exit_code, stdout, stderr = self.RunBazel(['info', 'server_pid']) + self.AssertExitCode(exit_code, 0, stderr) pid1 = stdout[0] - exit_code, stdout, _ = self.RunBazel(['info', 'server_pid']) - self.assertEqual(exit_code, 0) + exit_code, stdout, stderr = self.RunBazel(['info', 'server_pid']) + self.AssertExitCode(exit_code, 0, stderr) pid2 = stdout[0] self.assertEqual(pid1, pid2) diff --git a/src/test/py/bazel/bazel_windows_test.py b/src/test/py/bazel/bazel_windows_test.py index 27bc37366c..163606b6c4 100644 --- a/src/test/py/bazel/bazel_windows_test.py +++ b/src/test/py/bazel/bazel_windows_test.py @@ -22,14 +22,17 @@ class BazelWindowsTest(test_base.TestBase): self.ScratchFile('WORKSPACE') self.ScratchFile('foo/BUILD', ['cc_binary(name="x", srcs=["x.cc"])']) self.ScratchFile('foo/x.cc', [ - '#include <stdio.h>', 'int main(int, char**) {' - ' printf("hello\\n");', ' return 0;', '}' + '#include <stdio.h>', + 'int main(int, char**) {' + ' printf("hello\\n");', + ' return 0;', + '}', ]) exit_code, _, stderr = self.RunBazel( ['--batch', 'build', '//foo:x', '--cpu=x64_windows_msys'], env_remove={'BAZEL_SH'}) - self.assertEqual(exit_code, 2) + self.AssertExitCode(exit_code, 2, stderr) self.assertIn('\'BAZEL_SH\' environment variable is not set', '\n'.join(stderr)) @@ -37,13 +40,13 @@ class BazelWindowsTest(test_base.TestBase): '--batch', '--host_jvm_args=-Dbazel.windows_unix_root=', 'build', '//foo:x', '--cpu=x64_windows_msys' ]) - self.assertEqual(exit_code, 37) + self.AssertExitCode(exit_code, 37, stderr) self.assertIn('"bazel.windows_unix_root" JVM flag is not set', '\n'.join(stderr)) - exit_code, _, _ = self.RunBazel( + exit_code, _, stderr = self.RunBazel( ['--batch', 'build', '//foo:x', '--cpu=x64_windows_msys']) - self.assertEqual(exit_code, 0) + self.AssertExitCode(exit_code, 0, stderr) if __name__ == '__main__': diff --git a/src/test/py/bazel/test_base.py b/src/test/py/bazel/test_base.py index 7d0bba7385..71e89dc9a2 100644 --- a/src/test/py/bazel/test_base.py +++ b/src/test/py/bazel/test_base.py @@ -55,6 +55,17 @@ class TestBase(unittest.TestCase): os.mkdir(self._tests_root) os.chdir(self._tests_root) + def AssertExitCode(self, actual_exit_code, expected_exit_code, stderr_lines): + """Assert that `actual_exit_code` == `expected_exit_code`.""" + if actual_exit_code != expected_exit_code: + self.fail('\n'.join([ + 'Bazel exited with %d (expected %d), stderr:' % (actual_exit_code, + expected_exit_code), + '(start stderr)----------------------------------------', + ] + (stderr_lines or []) + [ + '(end stderr)------------------------------------------', + ])) + @staticmethod def GetEnv(name, default=None): """Returns environment variable `name`. |