Skip to content

Commit

Permalink
Fix --nozip_undeclared_test_outputs on Windows
Browse files Browse the repository at this point in the history
Without this change, testing with `--nozip_undeclared_test_outputs`
always fails with this error:

```
FATAL: MappedOutputFile(): CreateFileW() failed: (error: 3): The system cannot find the path specified.
```
  • Loading branch information
fmeum committed Dec 9, 2022
1 parent 563b225 commit fd6897b
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 2 deletions.
40 changes: 40 additions & 0 deletions src/test/py/bazel/bazel_windows_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,46 @@ def testRunWithScriptPath(self):
self.AssertExitCode(exit_code, 0, stderr)
self.assertIn('Hello from test!', '\n'.join(stdout))

def testZipUndeclaredTestOutputs(self):
self.CreateWorkspaceWithDefaultRepos('WORKSPACE')
self.ScratchFile('BUILD', [
'sh_test(',
' name = "foo_test",',
' srcs = ["foo.sh"],',
')',
'',
])
self.ScratchFile('foo.sh', [
'touch "$TEST_UNDECLARED_OUTPUTS_DIR/foo.txt"',
])

exit_code, stdout, stderr = self.RunBazel(['info', 'bazel-testlogs'])
self.AssertExitCode(exit_code, 0, stderr)
bazel_testlogs = stdout[0]

output_file = os.path.join(bazel_testlogs, 'foo_test/test.outputs/foo.txt')
output_zip = os.path.join(bazel_testlogs,
'foo_test/test.outputs/outputs.zip')

# Run the test with undeclared outputs zipping.
exit_code, _, stderr = self.RunBazel([
'test',
'--zip_undeclared_test_outputs',
'//:foo_test',
], )
self.AssertExitCode(exit_code, 0, stderr)
self.assertFalse(os.path.exists(output_file))
self.assertTrue(os.path.exists(output_zip))

# Run the test without undeclared outputs zipping.
exit_code, _, stderr = self.RunBazel([
'test',
'--nozip_undeclared_test_outputs',
'//:foo_test',
], )
self.AssertExitCode(exit_code, 0, stderr)
self.assertTrue(os.path.exists(output_file))
self.assertFalse(os.path.exists(output_zip))

if __name__ == '__main__':
unittest.main()
6 changes: 4 additions & 2 deletions tools/test/windows/tw.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1298,8 +1298,10 @@ bool StartSubprocess(const Path& path, const std::wstring& args,
}

bool ArchiveUndeclaredOutputs(const UndeclaredOutputs& undecl) {
if (undecl.root.Get().empty()) {
// TEST_UNDECLARED_OUTPUTS_DIR was undefined, there's nothing to archive.
if (undecl.root.Get().empty() || undecl.zip.Get().empty()) {
// TEST_UNDECLARED_OUTPUTS_DIR was undefined, so there's nothing to archive,
// or TEST_UNDECLARED_OUTPUTS_ZIP was undefined as
// --nozip_undeclared_test_outputs was specified.
return true;
}

Expand Down

0 comments on commit fd6897b

Please sign in to comment.