Enable MSVC warning for unused locals.
[chromium-blink-merge.git] / chrome / installer / util / logging_installer_unittest.cc
blob910f35d1c1bd45819f5d1300d5ff1527c22cc54f
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
3 // found in the LICENSE file.
5 #include <string>
7 #include "base/files/file.h"
8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h"
10 #include "base/files/scoped_temp_dir.h"
11 #include "base/win/scoped_handle.h"
12 #include "chrome/installer/util/logging_installer.h"
13 #include "testing/gtest/include/gtest/gtest.h"
15 TEST(LoggingInstallerTest, TestTruncate) {
16 const std::string test_data(installer::kMaxInstallerLogFileSize + 1, 'a');
18 base::ScopedTempDir temp_dir;
19 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
21 base::FilePath temp_file = temp_dir.path().Append(L"temp");
22 EXPECT_EQ(test_data.size(),
23 base::WriteFile(temp_file, &test_data[0], test_data.size()));
24 ASSERT_TRUE(base::PathExists(temp_file));
26 int64 file_size = 0;
27 EXPECT_TRUE(base::GetFileSize(temp_file, &file_size));
28 EXPECT_EQ(test_data.size(), file_size);
30 EXPECT_EQ(installer::LOGFILE_TRUNCATED,
31 installer::TruncateLogFileIfNeeded(temp_file));
33 EXPECT_TRUE(base::GetFileSize(temp_file, &file_size));
34 EXPECT_EQ(installer::kTruncatedInstallerLogFileSize , file_size);
36 // Check that the temporary file was deleted.
37 EXPECT_FALSE(base::PathExists(temp_file.Append(L".tmp")));
40 TEST(LoggingInstallerTest, TestTruncationNotNeeded) {
41 const std::string test_data(installer::kMaxInstallerLogFileSize, 'a');
43 base::ScopedTempDir temp_dir;
44 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
46 base::FilePath temp_file = temp_dir.path().Append(L"temp");
47 EXPECT_EQ(test_data.size(),
48 base::WriteFile(temp_file, &test_data[0], test_data.size()));
49 ASSERT_TRUE(base::PathExists(temp_file));
51 int64 file_size = 0;
52 EXPECT_TRUE(base::GetFileSize(temp_file, &file_size));
53 EXPECT_EQ(test_data.size(), file_size);
55 EXPECT_EQ(installer::LOGFILE_UNTOUCHED,
56 installer::TruncateLogFileIfNeeded(temp_file));
57 EXPECT_TRUE(base::PathExists(temp_file));
58 EXPECT_TRUE(base::GetFileSize(temp_file, &file_size));
59 EXPECT_EQ(test_data.size(), file_size);
62 TEST(LoggingInstallerTest, TestInUseNeedsTruncation) {
63 const std::string test_data(installer::kMaxInstallerLogFileSize + 1, 'a');
65 base::ScopedTempDir temp_dir;
66 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
68 base::FilePath temp_file = temp_dir.path().Append(L"temp");
69 EXPECT_EQ(test_data.size(),
70 base::WriteFile(temp_file, &test_data[0], test_data.size()));
71 ASSERT_TRUE(base::PathExists(temp_file));
72 int64 file_size = 0;
73 EXPECT_TRUE(base::GetFileSize(temp_file, &file_size));
74 EXPECT_EQ(test_data.size(), file_size);
76 // Prevent the log file from being moved or deleted.
77 uint32 file_flags = base::File::FLAG_OPEN |
78 base::File::FLAG_READ |
79 base::File::FLAG_EXCLUSIVE_READ;
80 base::File temp_platform_file(temp_file, file_flags);
81 ASSERT_TRUE(temp_platform_file.IsValid());
83 EXPECT_EQ(installer::LOGFILE_UNTOUCHED,
84 installer::TruncateLogFileIfNeeded(temp_file));
85 EXPECT_TRUE(base::PathExists(temp_file));
86 EXPECT_TRUE(base::GetFileSize(temp_file, &file_size));
87 EXPECT_EQ(test_data.size(), file_size);
90 TEST(LoggingInstallerTest, TestMoveFailsNeedsTruncation) {
91 const std::string test_data(installer::kMaxInstallerLogFileSize + 1, 'a');
93 base::ScopedTempDir temp_dir;
94 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
96 base::FilePath temp_file = temp_dir.path().Append(L"temp");
97 EXPECT_EQ(test_data.size(),
98 base::WriteFile(temp_file, &test_data[0], test_data.size()));
99 ASSERT_TRUE(base::PathExists(temp_file));
100 int64 file_size = 0;
101 EXPECT_TRUE(base::GetFileSize(temp_file, &file_size));
102 EXPECT_EQ(test_data.size(), file_size);
104 // Create an inconvenient, non-deletable file in the location that
105 // TruncateLogFileIfNeeded would like to move the log file to.
106 uint32 file_flags = base::File::FLAG_CREATE |
107 base::File::FLAG_READ |
108 base::File::FLAG_EXCLUSIVE_READ;
109 base::FilePath temp_file_move_dest(
110 temp_file.value() + FILE_PATH_LITERAL(".tmp"));
111 base::File temp_move_destination_file(temp_file_move_dest, file_flags);
112 ASSERT_TRUE(temp_move_destination_file.IsValid());
114 EXPECT_EQ(installer::LOGFILE_DELETED,
115 installer::TruncateLogFileIfNeeded(temp_file));
116 EXPECT_FALSE(base::PathExists(temp_file));