Index: src/platform/update_engine/delta_diff_generator_unittest.cc |
diff --git a/src/platform/update_engine/delta_diff_generator_unittest.cc b/src/platform/update_engine/delta_diff_generator_unittest.cc |
index b549041f8f42da12da3fc921af784206fcff2cc6..f86f0e21211f3da10e60fe78d051a802ed6e44b7 100644 |
--- a/src/platform/update_engine/delta_diff_generator_unittest.cc |
+++ b/src/platform/update_engine/delta_diff_generator_unittest.cc |
@@ -6,6 +6,7 @@ |
#include <sys/stat.h> |
#include <fcntl.h> |
#include <unistd.h> |
+#include <set> |
#include <string> |
#include <vector> |
#include "base/string_util.h" |
@@ -22,10 +23,17 @@ |
namespace chromeos_update_engine { |
+using std::set; |
using std::string; |
using std::vector; |
-class DeltaDiffGeneratorTest : public ::testing::Test {}; |
+class DeltaDiffGeneratorTest : public ::testing::Test { |
+ virtual void TearDown() { |
+ EXPECT_EQ(0, system("rm -rf diff-gen-test")); |
+ } |
+protected: |
+ void FakerootEncodeDataToDeltaFileTest(bool test_diff_exclusion); |
+}; |
namespace { |
void DumpProto(const DeltaArchiveManifest* archive) { |
@@ -350,6 +358,14 @@ TEST_F(DeltaDiffGeneratorTest, FakerootEncodeMetadataToProtoBufferTest) { |
} |
TEST_F(DeltaDiffGeneratorTest, FakerootEncodeDataToDeltaFileTest) { |
+ FakerootEncodeDataToDeltaFileTest(false); |
+} |
+TEST_F(DeltaDiffGeneratorTest, FakerootDiffExclusionsTest) { |
+ FakerootEncodeDataToDeltaFileTest(true); |
+} |
+ |
+void DeltaDiffGeneratorTest::FakerootEncodeDataToDeltaFileTest( |
+ bool test_diff_exclusion) { |
char cwd[1000]; |
ASSERT_EQ(cwd, getcwd(cwd, sizeof(cwd))) << "cwd buf possibly too small"; |
ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test")); |
@@ -359,6 +375,13 @@ TEST_F(DeltaDiffGeneratorTest, FakerootEncodeDataToDeltaFileTest) { |
GenerateFilesAtPath(string(cwd) + "/diff-gen-test/new"); |
EditFilesAtPath(string(cwd) + "/diff-gen-test/new"); |
+ set<string> diff_exclusions; |
+ if (test_diff_exclusion) { |
+ diff_exclusions.insert("/encoding/long_small_change"); |
+ } else { |
+ diff_exclusions.insert("/hi"); |
+ } |
+ |
DeltaArchiveManifest* archive = |
DeltaDiffGenerator::EncodeMetadataToProtoBuffer( |
(string(cwd) + "/diff-gen-test/new").c_str()); |
@@ -369,7 +392,7 @@ TEST_F(DeltaDiffGeneratorTest, FakerootEncodeDataToDeltaFileTest) { |
string(cwd) + "/diff-gen-test/old", |
string(cwd) + "/diff-gen-test/new", |
string(cwd) + "/diff-gen-test/out.dat", |
- "")); |
+ diff_exclusions, "")); |
EXPECT_EQ(18, archive->files_size()); |
@@ -476,8 +499,11 @@ TEST_F(DeltaDiffGeneratorTest, FakerootEncodeDataToDeltaFileTest) { |
EXPECT_EQ(0, long_small_change.uid()); |
EXPECT_EQ(0, long_small_change.gid()); |
EXPECT_TRUE(long_small_change.has_data_format()); |
- EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_BSDIFF, |
- long_small_change.data_format()); |
+ DeltaArchiveManifest_File_DataFormat expected_format = |
+ DeltaArchiveManifest_File_DataFormat_BSDIFF; |
+ if (test_diff_exclusion) |
+ expected_format = DeltaArchiveManifest_File_DataFormat_FULL; |
+ EXPECT_EQ(expected_format, long_small_change.data_format()); |
EXPECT_TRUE(long_small_change.has_data_offset()); |
EXPECT_TRUE(long_small_change.has_data_length()); |
EXPECT_FALSE(long_small_change.has_hardlink_path()); |
@@ -488,10 +514,9 @@ TEST_F(DeltaDiffGeneratorTest, FakerootEncodeDataToDeltaFileTest) { |
EXPECT_TRUE(S_ISREG(nochange.mode())); |
EXPECT_EQ(0, nochange.uid()); |
EXPECT_EQ(0, nochange.gid()); |
- EXPECT_TRUE(nochange.has_data_format()); |
- EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, nochange.data_format()); |
- EXPECT_TRUE(nochange.has_data_offset()); |
- EXPECT_TRUE(nochange.has_data_length()); |
+ EXPECT_FALSE(nochange.has_data_format()); |
+ EXPECT_FALSE(nochange.has_data_offset()); |
+ EXPECT_FALSE(nochange.has_data_length()); |
EXPECT_FALSE(nochange.has_hardlink_path()); |
const DeltaArchiveManifest_File& onebyte = |
@@ -566,9 +591,10 @@ TEST_F(DeltaDiffGeneratorTest, FakerootEncodeDataToDeltaFileTest) { |
EXPECT_TRUE(S_ISREG(newempty.mode())); |
EXPECT_EQ(0, newempty.uid()); |
EXPECT_EQ(0, newempty.gid()); |
- EXPECT_FALSE(newempty.has_data_format()); |
- EXPECT_FALSE(newempty.has_data_offset()); |
- EXPECT_FALSE(newempty.has_data_length()); |
+ EXPECT_TRUE(newempty.has_data_format()); |
+ EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, newempty.data_format()); |
+ EXPECT_TRUE(newempty.has_data_offset()); |
+ EXPECT_TRUE(newempty.has_data_length()); |
EXPECT_FALSE(newempty.has_hardlink_path()); |
const DeltaArchiveManifest_File& subdir = |
@@ -667,7 +693,7 @@ TEST_F(DeltaDiffParserTest, FakerootDecodeDataFromDeltaFileTest) { |
string(cwd) + "/diff-gen-test/old", |
string(cwd) + "/diff-gen-test/new", |
string(cwd) + "/diff-gen-test/out.dat", |
- "")); |
+ set<string>(), "")); |
// parse the file |
DeltaDiffParser parser(string(cwd) + "/diff-gen-test/out.dat"); |
@@ -789,7 +815,8 @@ TEST_F(DeltaDiffParserTest, FakerootDecodeDataFromDeltaFileTest) { |
// newempty |
file = parser.GetFileAtPath("/dir/newempty"); |
EXPECT_TRUE(S_ISREG(file.mode())); |
- EXPECT_FALSE(file.has_data_format()); |
+ EXPECT_TRUE(file.has_data_format()); |
+ EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, file.data_format()); |
// subdir |
file = parser.GetFileAtPath("/dir/subdir"); |
@@ -845,7 +872,7 @@ TEST_F(DeltaDiffParserTest, FakerootDecodeDataFromDeltaFileTest) { |
cmd.push_back(string(cwd) + "/diff-gen-test/patch_result"); |
cmd.push_back(string(cwd) + "/diff-gen-test/patch"); |
Subprocess::SynchronousExec(cmd, &rc); |
- EXPECT_EQ(0, rc); |
+ ASSERT_EQ(0, rc); |
vector<char> patch_result; |
EXPECT_TRUE(utils::ReadFile(string(cwd) + "/diff-gen-test/patch_result", |
&patch_result)); |
@@ -857,12 +884,9 @@ TEST_F(DeltaDiffParserTest, FakerootDecodeDataFromDeltaFileTest) { |
// nochange |
file = parser.GetFileAtPath("/encoding/nochange"); |
EXPECT_TRUE(S_ISREG(file.mode())); |
- EXPECT_TRUE(file.has_data_format()); |
- EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, file.data_format()); |
- EXPECT_EQ("nochange\n", ReadFilePartToString(string(cwd) + |
- "/diff-gen-test/out.dat", |
- file.data_offset(), |
- file.data_length())); |
+ EXPECT_FALSE(file.has_data_format()); |
+ EXPECT_FALSE(file.has_data_offset()); |
+ EXPECT_FALSE(file.has_data_length()); |
// onebyte |
file = parser.GetFileAtPath("/encoding/onebyte"); |