- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / installer / setup / archive_patch_helper_unittest.cc
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/file_util.h"
6 #include "base/files/file_path.h"
7 #include "base/files/scoped_temp_dir.h"
8 #include "base/path_service.h"
9 #include "chrome/common/chrome_paths.h"
10 #include "chrome/installer/setup/archive_patch_helper.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace {
14
15 class ArchivePatchHelperTest : public testing::Test {
16  protected:
17   static void SetUpTestCase() {
18     ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &data_dir_));
19     data_dir_ = data_dir_.AppendASCII("installer");
20     ASSERT_TRUE(base::PathExists(data_dir_));
21   }
22
23   static void TearDownTestCase() {
24     data_dir_.clear();
25   }
26
27   virtual void SetUp() OVERRIDE {
28     // Create a temp directory for testing.
29     ASSERT_TRUE(test_dir_.CreateUniqueTempDir());
30   }
31
32   virtual void TearDown() OVERRIDE {
33     // Clean up test directory manually so we can fail if it leaks.
34     ASSERT_TRUE(test_dir_.Delete());
35   }
36
37   // The path to input data used in tests.
38   static base::FilePath data_dir_;
39
40   // The temporary directory used to contain the test operations.
41   base::ScopedTempDir test_dir_;
42 };
43
44 base::FilePath ArchivePatchHelperTest::data_dir_;
45
46 }  // namespace
47
48 // Test that patching works.
49 TEST_F(ArchivePatchHelperTest, Patching) {
50   base::FilePath src = data_dir_.AppendASCII("archive1.7z");
51   base::FilePath patch = data_dir_.AppendASCII("archive.diff");
52   base::FilePath dest = test_dir_.path().AppendASCII("archive2.7z");
53   installer::ArchivePatchHelper archive_helper(test_dir_.path(),
54                                                base::FilePath(),
55                                                src,
56                                                dest);
57   archive_helper.set_last_uncompressed_file(patch);
58   EXPECT_TRUE(archive_helper.EnsemblePatch() || archive_helper.BinaryPatch());
59   base::FilePath base = data_dir_.AppendASCII("archive2.7z");
60   EXPECT_TRUE(base::ContentsEqual(dest, base));
61 }