diff --git a/src/test/py/bazel/bazel_windows_test.py b/src/test/py/bazel/bazel_windows_test.py index 92f986ffd9b11f..f1f90ed807db20 100644 --- a/src/test/py/bazel/bazel_windows_test.py +++ b/src/test/py/bazel/bazel_windows_test.py @@ -449,6 +449,31 @@ def testZipUndeclaredTestOutputs(self): self.assertTrue(os.path.exists(output_file)) self.assertFalse(os.path.exists(output_zip)) + def testTestShardStatusFile(self): + self.CreateWorkspaceWithDefaultRepos('WORKSPACE') + self.ScratchFile( + 'BUILD', + [ + 'sh_test(', + ' name = "foo_test",', + ' srcs = ["foo.sh"],', + ' shard_count = 2,', + ')', + ], + ) + self.ScratchFile('foo.sh') + + exit_code, _, stderr = self.RunBazel(['test', '//:foo_test']) + # Check for "tests failed" exit code + self.AssertExitCode(exit_code, 3, stderr) + self.assertIn("Sharding requested, but the test runner did not advertise " + "support for it by touching TEST_SHARD_STATUS_FILE.", stderr) + + self.ScratchFile('foo.sh', ['touch "$TEST_SHARD_STATUS_FILE"']) + + exit_code, _, stderr = self.RunBazel(['test', '//:foo_test']) + self.AssertExitCode(exit_code, 0, stderr) + if __name__ == '__main__': unittest.main() diff --git a/src/test/shell/bazel/bazel_test_test.sh b/src/test/shell/bazel/bazel_test_test.sh index 709530a3ae0a84..c801663fd3e57a 100755 --- a/src/test/shell/bazel/bazel_test_test.sh +++ b/src/test/shell/bazel/bazel_test_test.sh @@ -997,4 +997,24 @@ EOF expect_log " BUILD +sh_test( + name = 'x', + srcs = ['x.sh'], + shard_count = 2, +) +EOF + touch x.sh + chmod +x x.sh + + bazel test //:x --test_output=errors &> $TEST_log \ + && fail "expected failure" + expect_log "Sharding requested, but the test runner did not advertise support for it by touching TEST_SHARD_STATUS_FILE." + + echo 'touch "$TEST_SHARD_STATUS_FILE"' > x.sh + bazel test //:x --test_output=errors &> $TEST_log \ + || fail "expected success" +} + run_suite "bazel test tests"