OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <windows.h> | 5 #include <windows.h> |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/process_util.h" | 9 #include "base/process_util.h" |
| 10 #include "base/memory/scoped_temp_dir.h" |
10 #include "chrome/common/chrome_paths.h" | 11 #include "chrome/common/chrome_paths.h" |
11 #include "chrome/installer/util/lzma_util.h" | 12 #include "chrome/installer/util/lzma_util.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
13 | 14 |
14 namespace { | 15 namespace { |
15 class LzmaUtilTest : public testing::Test { | 16 class LzmaUtilTest : public testing::Test { |
16 protected: | 17 protected: |
17 virtual void SetUp() { | 18 virtual void SetUp() { |
18 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &data_dir_)); | 19 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &data_dir_)); |
19 data_dir_ = data_dir_.AppendASCII("installer"); | 20 data_dir_ = data_dir_.AppendASCII("installer"); |
20 ASSERT_TRUE(file_util::PathExists(data_dir_)); | 21 ASSERT_TRUE(file_util::PathExists(data_dir_)); |
21 | 22 |
22 // Name a subdirectory of the user temp directory. | 23 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
23 ASSERT_TRUE(PathService::Get(base::DIR_TEMP, &test_dir_)); | |
24 test_dir_ = test_dir_.AppendASCII("LzmaUtilTest"); | |
25 | |
26 // Create a fresh, empty copy of this test directory. | |
27 file_util::Delete(test_dir_, true); | |
28 file_util::CreateDirectoryW(test_dir_); | |
29 ASSERT_TRUE(file_util::PathExists(test_dir_)); | |
30 } | 24 } |
31 | 25 |
32 virtual void TearDown() { | 26 ScopedTempDir temp_dir_; |
33 // Clean up test directory | |
34 ASSERT_TRUE(file_util::Delete(test_dir_, true)); | |
35 ASSERT_FALSE(file_util::PathExists(test_dir_)); | |
36 } | |
37 | |
38 // The path to temporary directory used to contain the test operations. | |
39 FilePath test_dir_; | |
40 | 27 |
41 // The path to input data used in tests. | 28 // The path to input data used in tests. |
42 FilePath data_dir_; | 29 FilePath data_dir_; |
43 }; | 30 }; |
44 }; | 31 }; |
45 | 32 |
46 // Test that we can open archives successfully. | 33 // Test that we can open archives successfully. |
47 TEST_F(LzmaUtilTest, OpenArchiveTest) { | 34 TEST_F(LzmaUtilTest, OpenArchiveTest) { |
48 FilePath archive = data_dir_.AppendASCII("archive1.7z"); | 35 FilePath archive = data_dir_.AppendASCII("archive1.7z"); |
49 LzmaUtil lzma_util; | 36 LzmaUtil lzma_util; |
50 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); | 37 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); |
51 | 38 |
52 // We allow opening another archive (which will automatically close the first | 39 // We allow opening another archive (which will automatically close the first |
53 // archive). | 40 // archive). |
54 archive = data_dir_.AppendASCII("archive2.7z"); | 41 archive = data_dir_.AppendASCII("archive2.7z"); |
55 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); | 42 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); |
56 | 43 |
57 // Explicitly close and open the first archive again. | 44 // Explicitly close and open the first archive again. |
58 lzma_util.CloseArchive(); | 45 lzma_util.CloseArchive(); |
59 archive = data_dir_.AppendASCII("archive1.7z"); | 46 archive = data_dir_.AppendASCII("archive1.7z"); |
60 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); | 47 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); |
61 | 48 |
62 // Make sure non-existent archive returns error. | 49 // Make sure non-existent archive returns error. |
63 archive = data_dir_.AppendASCII("archive.non_existent.7z"); | 50 archive = data_dir_.AppendASCII("archive.non_existent.7z"); |
64 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), ERROR_FILE_NOT_FOUND); | 51 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), ERROR_FILE_NOT_FOUND); |
65 } | 52 } |
66 | 53 |
67 // Test that we can extract archives successfully. | 54 // Test that we can extract archives successfully. |
68 TEST_F(LzmaUtilTest, UnPackTest) { | 55 TEST_F(LzmaUtilTest, UnPackTest) { |
69 FilePath extract_dir(test_dir_); | 56 FilePath extract_dir(temp_dir_.path()); |
70 extract_dir = extract_dir.AppendASCII("UnPackTest"); | 57 extract_dir = extract_dir.AppendASCII("UnPackTest"); |
71 ASSERT_FALSE(file_util::PathExists(extract_dir)); | 58 ASSERT_FALSE(file_util::PathExists(extract_dir)); |
72 EXPECT_TRUE(file_util::CreateDirectory(extract_dir)); | 59 EXPECT_TRUE(file_util::CreateDirectory(extract_dir)); |
73 ASSERT_TRUE(file_util::PathExists(extract_dir)); | 60 ASSERT_TRUE(file_util::PathExists(extract_dir)); |
74 | 61 |
75 FilePath archive = data_dir_.AppendASCII("archive1.7z"); | 62 FilePath archive = data_dir_.AppendASCII("archive1.7z"); |
76 LzmaUtil lzma_util; | 63 LzmaUtil lzma_util; |
77 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); | 64 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); |
78 std::wstring unpacked_file; | 65 std::wstring unpacked_file; |
79 EXPECT_EQ(lzma_util.UnPack(extract_dir.value(), &unpacked_file), | 66 EXPECT_EQ(lzma_util.UnPack(extract_dir.value(), &unpacked_file), |
(...skipping 20 matching lines...) Expand all Loading... |
100 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); | 87 EXPECT_EQ(lzma_util.OpenArchive(archive.value()), NO_ERROR); |
101 EXPECT_EQ(lzma_util.UnPack(extract_dir.value(), &unpacked_file), | 88 EXPECT_EQ(lzma_util.UnPack(extract_dir.value(), &unpacked_file), |
102 NO_ERROR); | 89 NO_ERROR); |
103 EXPECT_TRUE(file_util::PathExists(extract_dir.AppendASCII("archive\\a.exe"))); | 90 EXPECT_TRUE(file_util::PathExists(extract_dir.AppendASCII("archive\\a.exe"))); |
104 EXPECT_TRUE(file_util::PathExists( | 91 EXPECT_TRUE(file_util::PathExists( |
105 extract_dir.AppendASCII("archive\\sub_dir\\text.txt"))); | 92 extract_dir.AppendASCII("archive\\sub_dir\\text.txt"))); |
106 } | 93 } |
107 | 94 |
108 // Test the static method that can be used to unpack archives. | 95 // Test the static method that can be used to unpack archives. |
109 TEST_F(LzmaUtilTest, UnPackArchiveTest) { | 96 TEST_F(LzmaUtilTest, UnPackArchiveTest) { |
110 FilePath extract_dir(test_dir_); | 97 FilePath extract_dir(temp_dir_.path()); |
111 extract_dir = extract_dir.AppendASCII("UnPackArchiveTest"); | 98 extract_dir = extract_dir.AppendASCII("UnPackArchiveTest"); |
112 ASSERT_FALSE(file_util::PathExists(extract_dir)); | 99 ASSERT_FALSE(file_util::PathExists(extract_dir)); |
113 EXPECT_TRUE(file_util::CreateDirectory(extract_dir)); | 100 EXPECT_TRUE(file_util::CreateDirectory(extract_dir)); |
114 ASSERT_TRUE(file_util::PathExists(extract_dir)); | 101 ASSERT_TRUE(file_util::PathExists(extract_dir)); |
115 | 102 |
116 FilePath archive = data_dir_.AppendASCII("archive1.7z"); | 103 FilePath archive = data_dir_.AppendASCII("archive1.7z"); |
117 std::wstring unpacked_file; | 104 std::wstring unpacked_file; |
118 EXPECT_EQ(LzmaUtil::UnPackArchive(archive.value(), extract_dir.value(), | 105 EXPECT_EQ(LzmaUtil::UnPackArchive(archive.value(), extract_dir.value(), |
119 &unpacked_file), NO_ERROR); | 106 &unpacked_file), NO_ERROR); |
120 EXPECT_TRUE(file_util::PathExists(extract_dir.AppendASCII("a.exe"))); | 107 EXPECT_TRUE(file_util::PathExists(extract_dir.AppendASCII("a.exe"))); |
121 EXPECT_TRUE(unpacked_file == extract_dir.AppendASCII("a.exe").value()); | 108 EXPECT_TRUE(unpacked_file == extract_dir.AppendASCII("a.exe").value()); |
122 | 109 |
123 archive = data_dir_.AppendASCII("archive2.7z"); | 110 archive = data_dir_.AppendASCII("archive2.7z"); |
124 EXPECT_EQ(LzmaUtil::UnPackArchive(archive.value(), extract_dir.value(), | 111 EXPECT_EQ(LzmaUtil::UnPackArchive(archive.value(), extract_dir.value(), |
125 &unpacked_file), NO_ERROR); | 112 &unpacked_file), NO_ERROR); |
126 EXPECT_TRUE(file_util::PathExists(extract_dir.AppendASCII("b.exe"))); | 113 EXPECT_TRUE(file_util::PathExists(extract_dir.AppendASCII("b.exe"))); |
127 EXPECT_TRUE(unpacked_file == extract_dir.AppendASCII("b.exe").value()); | 114 EXPECT_TRUE(unpacked_file == extract_dir.AppendASCII("b.exe").value()); |
128 | 115 |
129 archive = data_dir_.AppendASCII("invalid_archive.7z"); | 116 archive = data_dir_.AppendASCII("invalid_archive.7z"); |
130 EXPECT_NE(LzmaUtil::UnPackArchive(archive.value(), extract_dir.value(), | 117 EXPECT_NE(LzmaUtil::UnPackArchive(archive.value(), extract_dir.value(), |
131 &unpacked_file), NO_ERROR); | 118 &unpacked_file), NO_ERROR); |
132 } | 119 } |
OLD | NEW |