Write files in a temporary directory

Avoid writing test files in the build output directory which fails when
run with Bazel. This happens because Bazel's sandboxing environment
ensures that the test's working directory is unwritable.

See https://docs.bazel.build/versions/main/sandboxing.html for more
information.

Bug: 209687942
Test: atest --bazel-mode zipalign_tests
Test: atest zipalign_tests

Change-Id: Ie22f464830c1ffe4d38a94a16dbd39dafa7fe317
This commit is contained in:
weisu 2021-12-13 17:56:12 +00:00
parent 3aec887b7e
commit eae45315cd

View file

@ -3,6 +3,7 @@
#include "ZipAlign.h"
#include <filesystem>
#include <stdio.h>
#include <string>
@ -16,9 +17,15 @@ static std::string GetTestPath(const std::string& filename) {
return test_data_dir + filename;
}
static std::string GetTempPath(const std::string& filename) {
std::filesystem::path temp_path = std::filesystem::path(testing::TempDir());
temp_path += filename;
return temp_path.string();
}
TEST(Align, Unaligned) {
const std::string src = GetTestPath("unaligned.zip");
const std::string dst = GetTestPath("unaligned_out.zip");
const std::string dst = GetTempPath("unaligned_out.zip");
int processed = process(src.c_str(), dst.c_str(), 4, true, false, 4096);
ASSERT_EQ(0, processed);
@ -29,8 +36,8 @@ TEST(Align, Unaligned) {
TEST(Align, DoubleAligment) {
const std::string src = GetTestPath("unaligned.zip");
const std::string tmp = GetTestPath("da_aligned.zip");
const std::string dst = GetTestPath("da_d_aligner.zip");
const std::string tmp = GetTempPath("da_aligned.zip");
const std::string dst = GetTempPath("da_d_aligner.zip");
int processed = process(src.c_str(), tmp.c_str(), 4, true, false, 4096);
ASSERT_EQ(0, processed);
@ -60,7 +67,7 @@ TEST(Align, DoubleAligment) {
// Directory.
TEST(Align, Holes) {
const std::string src = GetTestPath("holes.zip");
const std::string dst = GetTestPath("holes_out.zip");
const std::string dst = GetTempPath("holes_out.zip");
int processed = process(src.c_str(), dst.c_str(), 4, true, false, 4096);
ASSERT_EQ(0, processed);
@ -72,7 +79,7 @@ TEST(Align, Holes) {
// Align a zip where LFH order and CD entries differ.
TEST(Align, DifferenteOrders) {
const std::string src = GetTestPath("diffOrders.zip");
const std::string dst = GetTestPath("diffOrders_out.zip");
const std::string dst = GetTempPath("diffOrders_out.zip");
int processed = process(src.c_str(), dst.c_str(), 4, true, false, 4096);
ASSERT_EQ(0, processed);