From be84e168642760265fc54e1a09386d5926bcf06f Mon Sep 17 00:00:00 2001 From: Benjamin Lee Date: Thu, 31 Mar 2022 13:16:28 -0700 Subject: [PATCH] Fix ManifestMergerAction test case on windows `manifest.toString().replaceFirst("^/", "")` silently fails on windows machines causing `removePermissions` to write to the original test file. This pull request creates a new temp file that `removePermissions` can write the modified manifest to. Pulling this change out of another PR so that it's easier to merge. Original PR here https://github.com/bazelbuild/bazel/pull/13445/files#r631575251 Closes #13760. PiperOrigin-RevId: 438643774 --- .../google/devtools/build/android/ManifestMergerAction.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java b/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java index 3d7d273405cf41..51d2ad40d2f847 100644 --- a/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java +++ b/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java @@ -173,9 +173,8 @@ private static Path removePermissions(Path manifest, Path outputDir) } } } - // Write resulting manifest to the output directory, maintaining full path to prevent collisions - Path output = outputDir.resolve(manifest.toString().replaceFirst("^/", "")); - Files.createDirectories(output.getParent()); + // Write resulting manifest to a tmp file to prevent collisions + Path output = Files.createTempFile(outputDir, "AndroidManifest", ".xml"); TransformerFactory.newInstance() .newTransformer() .transform(new DOMSource(doc), new StreamResult(output.toFile()));