aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2017-06-27 14:53:23 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-06-27 15:07:02 +0200
commit6648268ad92f37bfb243c708cbd0937e2aa6eada (patch)
tree7dd340d1a52b468b7cab0e0dcae2edd540ca9515
parent9ef1521ca0def38156c39a25f6be29bdba0f4152 (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.py31
-rw-r--r--src/test/py/bazel/bazel_server_mode_test.py8
-rw-r--r--src/test/py/bazel/bazel_windows_test.py15
-rw-r--r--src/test/py/bazel/test_base.py11
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`.