archive_patch_helper_unittest.cc revision ca12bfac764ba476d6cd062bf1dde12cc64c3f40
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 13namespace { 14 15class 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 44base::FilePath ArchivePatchHelperTest::data_dir_; 45 46} // namespace 47 48// Test that patching works. 49TEST_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} 62