Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4120)

Unified Diff: base/path_unittest.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/path.cc ('k') | base/pe_utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/path_unittest.cc
diff --git a/base/path_unittest.cc b/base/path_unittest.cc
deleted file mode 100644
index ea325a1246b7989d452ad9732b85f37c2e601ef6..0000000000000000000000000000000000000000
--- a/base/path_unittest.cc
+++ /dev/null
@@ -1,413 +0,0 @@
-// Copyright 2007-2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// ========================================================================
-//
-// Path-utility unit tests.
-
-#include <vector>
-#include "omaha/base/file.h"
-#include "omaha/base/path.h"
-#include "omaha/base/utils.h"
-#include "omaha/testing/unit_test.h"
-
-namespace omaha {
-
-TEST(PathTest, IsAbsolutePath) {
- ASSERT_TRUE(IsAbsolutePath(L"C:\\Foo.bar"));
- ASSERT_TRUE(IsAbsolutePath(L"\\\\user-laptop1\\path"));
- ASSERT_FALSE(IsAbsolutePath(L"windows\\system32"));
-}
-
-// EnclosePath is overzealous and quotes a path even though no spaces exists.
-TEST(PathTest, EnclosePath) {
- CString path;
- EnclosePath(&path);
- EXPECT_STREQ(_T(""), path);
-
- path = _T("");
- EnclosePath(&path);
- EXPECT_STREQ(_T(""), path);
-
- path = _T("a");
- EnclosePath(&path);
- EXPECT_STREQ(_T("\"a\""), path);
-
- path = _T("a b");
- EnclosePath(&path);
- EXPECT_STREQ(_T("\"a b\""), path);
-
- path = " a b ";
- EnclosePath(&path);
- EXPECT_STREQ(_T("\" a b \""), path);
-
- path = _T("\"a b\"");
- EnclosePath(&path);
- EXPECT_STREQ(_T("\"a b\""), path);
-
- path = _T("c:\\Windows\\notepad.exe");
- EnclosePath(&path);
- EXPECT_STREQ(_T("\"c:\\Windows\\notepad.exe\""), path);
-
- path = _T("c:\\Program Files\\Google\\Common\\Google Update");
- EnclosePath(&path);
- EXPECT_STREQ(_T("\"c:\\Program Files\\Google\\Common\\Google Update\""),
- path);
-}
-
-// EnclosePath encloses a string that has a quote only at the beginning or end.
-TEST(PathTest, EnclosePath_OnlyOneQuote) {
- ExpectAsserts expect_asserts;
- CString path = _T("\"a b");
- EnclosePath(&path);
- EXPECT_STREQ(_T("\"\"a b\""), path);
-
- path = _T("a b\"");
- EnclosePath(&path);
- EXPECT_STREQ(_T("\"a b\"\""), path);
-}
-
-// EnclosePath does not look at the middle of the string.
-TEST(PathTest, EnclosePath_QuoteInMiddle) {
- CString path = _T("a\" b");
- EnclosePath(&path);
- EXPECT_STREQ(_T("\"a\" b\""), path);
-}
-
-TEST(PathTest, EnclosePath_SingleQuotes) {
- CString path = _T("'foo'");
- EnclosePath(&path);
- EXPECT_STREQ(_T("\"'foo'\""), path);
-}
-
-TEST(PathTest, EnclosePathIfExe) {
- CString original_path;
- CString new_path;
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(original_path, new_path);
-
- original_path = _T("");
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(original_path, new_path);
-
- original_path = _T("a");
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(original_path, new_path);
-
- original_path = _T("a b");
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(original_path, new_path);
-
- original_path = " a b ";
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(original_path, new_path);
-
- original_path = _T("\"a b\"");
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(original_path, new_path);
-
- original_path = _T("c:\\Windows\\notepad.exe");
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(_T("\"c:\\Windows\\notepad.exe\""), new_path);
-
- original_path = _T("c:\\Program Files\\Google\\Update");
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(original_path, new_path);
-
- original_path = _T("c:\\Progra Files\\Google\\Update\\1.1.1.1\\goopdate.dll");
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(original_path, new_path);
-
- original_path = _T("c:\\Prog F\\Googl\\Update\\GoogleUpdate.exe");
- new_path = EnclosePathIfExe(original_path);
- EXPECT_STREQ(_T("\"c:\\Prog F\\Googl\\Update\\GoogleUpdate.exe\""), new_path);
-}
-
-TEST(PathTest, ConcatenatePath) {
- CString expected_path("C:\\first\\part\\second\\part");
-
- CString start("C:\\first\\part");
- CString start_slash("C:\\first\\part\\");
- CString end("second\\part");
- CString end_slash("\\second\\part");
-
- EXPECT_STREQ(expected_path, ConcatenatePath(start, end));
- EXPECT_STREQ(expected_path, ConcatenatePath(start_slash, end));
- EXPECT_STREQ(expected_path, ConcatenatePath(start, end_slash));
- EXPECT_STREQ(expected_path, ConcatenatePath(start_slash, end_slash));
-}
-
-TEST(PathTest, ConcatenatePath_PathTooLong) {
- CString two_hundred_char_root_path(_T("C:\\reallllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllly\\loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong")); // NOLINT
- CString two_hundred_char_path(_T("realllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllly\\loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong")); // NOLINT
- EXPECT_EQ(200, two_hundred_char_root_path.GetLength());
- CString fifty_eight_char_name(
- _T("filenaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaame"));
- EXPECT_EQ(58, fifty_eight_char_name.GetLength());
- CString fifty_nine_char_name(
- _T("filenaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaame"));
- EXPECT_EQ(59, fifty_nine_char_name.GetLength());
- CString sixty_char_name(
- _T("filenaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaame"));
- EXPECT_EQ(60, sixty_char_name.GetLength());
-
- // Adding the '\' makes it 259 chars.
- CString result = ConcatenatePath(two_hundred_char_root_path,
- fifty_eight_char_name);
- EXPECT_STREQ(_T("C:\\reallllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllly\\loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong\\filenaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaame"), // NOLINT
- result);
-
- // Adding the '\' makes it 260 chars.
- ExpectAsserts expect_asserts;
- result = ConcatenatePath(two_hundred_char_root_path,
- fifty_nine_char_name);
- EXPECT_TRUE(result.IsEmpty());
-
- // Adding the '\' makes it 261 chars.
- result = ConcatenatePath(two_hundred_char_root_path, sixty_char_name);
- EXPECT_TRUE(result.IsEmpty());
-
- // Test for buffer overflow on long strings.
-}
-
-TEST(PathTest, ConcatenatePath_EmptyString) {
- EXPECT_STREQ(_T("bar.exe"), ConcatenatePath(_T(""), _T("bar.exe")));
- EXPECT_STREQ(_T("foo"), ConcatenatePath(_T("foo"), _T("")));
- // This is not what I would expect, but it is what the API does.
- EXPECT_STREQ(_T("\\"), ConcatenatePath(_T(""), _T("")));
-}
-
-// TODO(omaha): The expected and actual values are reversed throughout.
-
-TEST(PathTest, ShortPathToLongPath) {
- CString expected_path("C:\\Program Files");
- CString short_path("C:\\Progra~1");
-
- CString long_path;
- ASSERT_SUCCEEDED(ShortPathToLongPath(short_path, &long_path));
- ASSERT_STREQ(expected_path, long_path);
-}
-
-TEST(PathTest, FindFilesTest) {
- GUID guid = GUID_NULL;
- ASSERT_SUCCEEDED(::CoCreateGuid(&guid));
-
- TCHAR path[MAX_PATH] = {0};
- ASSERT_NE(::GetTempPath(MAX_PATH, path), 0);
-
- CString dir = ConcatenatePath(path, GuidToString(guid));
- EXPECT_FALSE(dir.IsEmpty());
- EXPECT_FALSE(File::Exists(dir));
-
- // Test with non-existent dir.
- std::vector<CString> files;
- EXPECT_FAILED(FindFiles(dir, _T("*.txt"), &files));
- EXPECT_EQ(files.size(), 0);
-
- // Test with empty dir.
- EXPECT_NE(::CreateDirectory(dir, NULL), 0);
- files.clear();
- EXPECT_EQ(FindFiles(dir, _T("asdf.txt"), &files), 0x80070002);
- EXPECT_EQ(files.size(), 0);
-
- CString filename1 = _T("one.txt");
- CString filepath1 = ConcatenatePath(dir, filename1);
- CString filename2 = _T("two_en.txt");
- CString filepath2 = ConcatenatePath(dir, filename2);
-
- // Test with dir containing one file.
- scoped_hfile handle1(::CreateFile(filepath1, GENERIC_READ, FILE_SHARE_READ,
- NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
- NULL));
- EXPECT_TRUE(valid(handle1));
- files.clear();
- EXPECT_SUCCEEDED(FindFiles(dir, _T("*.txt"), &files));
- EXPECT_EQ(files.size(), 1);
- EXPECT_STREQ(files[0], filename1);
-
- files.clear();
- EXPECT_SUCCEEDED(FindFiles(dir, _T("o*.txt"), &files));
- EXPECT_EQ(files.size(), 1);
- EXPECT_STREQ(files[0], filename1);
-
- files.clear();
- EXPECT_SUCCEEDED(FindFiles(dir, filepath1, &files));
- EXPECT_EQ(files.size(), 1);
- EXPECT_STREQ(files[0], filename1);
-
- files.clear();
- EXPECT_EQ(FindFiles(dir, _T("t*.txt"), &files), 0x80070002);
- EXPECT_EQ(files.size(), 0);
-
- // Test with dir containing two files.
- scoped_hfile handle2(::CreateFile(filepath2, GENERIC_READ, FILE_SHARE_READ,
- NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
- NULL));
- EXPECT_TRUE(valid(handle2));
- files.clear();
- EXPECT_SUCCEEDED(FindFiles(dir, _T("*.txt"), &files));
- EXPECT_EQ(files.size(), 2);
- EXPECT_STREQ(files[0], filename1);
- EXPECT_STREQ(files[1], filename2);
-
- files.clear();
- EXPECT_SUCCEEDED(FindFiles(dir, _T("o*.txt"), &files));
- EXPECT_EQ(files.size(), 1);
- EXPECT_STREQ(files[0], filename1);
-
- files.clear();
- EXPECT_SUCCEEDED(FindFiles(dir, _T("t*.txt"), &files));
- EXPECT_EQ(files.size(), 1);
- EXPECT_STREQ(files[0], filename2);
-
- files.clear();
- EXPECT_EQ(FindFiles(dir, _T("asdf.txt"), &files), 0x80070002);
- EXPECT_EQ(files.size(), 0);
-
- reset(handle1);
- EXPECT_SUCCEEDED(File::Remove(filepath1));
- reset(handle2);
- EXPECT_SUCCEEDED(File::Remove(filepath2));
- EXPECT_NE(::RemoveDirectory(dir), 0);
-}
-
-namespace detail {
-
-struct Directory {
- Directory() {}
- explicit Directory(const CString& name) : dir_name(name) {}
-
- CString dir_name;
- std::vector<Directory> sub_dirs;
- std::vector<CString> files;
-};
-
-void ConvertDirectoryStructureToFiles(const Directory& directory,
- const CString& dir_path,
- std::vector<CString>* files) {
- ASSERT_TRUE(files != NULL);
- ASSERT_HRESULT_SUCCEEDED(CreateDir(dir_path, NULL));
-
- for (size_t i = 0; i < directory.files.size(); ++i) {
- const CString& file = ConcatenatePath(dir_path, directory.files[i]);
- scoped_hfile handle(::CreateFile(file, GENERIC_READ, FILE_SHARE_READ,
- NULL, CREATE_ALWAYS,
- FILE_ATTRIBUTE_NORMAL,
- NULL));
- EXPECT_TRUE(valid(handle));
- files->push_back(file);
- }
-
- for (size_t i = 0; i < directory.sub_dirs.size(); ++i) {
- ConvertDirectoryStructureToFiles(
- directory.sub_dirs[i],
- ConcatenatePath(dir_path, directory.sub_dirs[i].dir_name),
- files);
- }
-}
-
-void CreateTestDirectoryStructure(Directory* root_dir) {
- EXPECT_TRUE(root_dir != NULL);
- GUID guid = GUID_NULL;
- ASSERT_HRESULT_SUCCEEDED(::CoCreateGuid(&guid));
-
- TCHAR path[MAX_PATH] = {0};
- ASSERT_NE(0, ::GetTempPath(MAX_PATH, path));
-
- CString dir = ConcatenatePath(path, GuidToString(guid));
- EXPECT_FALSE(dir.IsEmpty());
- EXPECT_FALSE(File::Exists(dir));
-
- root_dir->dir_name = dir;
- root_dir->files.push_back(_T("test1.txt"));
- root_dir->files.push_back(_T("test2.txt"));
-
- Directory sub_dir1_level1(_T("sub_dir1_level1"));
- sub_dir1_level1.files.push_back(_T("sub_dir1_level1_test1.txt"));
- Directory sub_dir1_level2(_T("sub_dir1_level2"));
- sub_dir1_level2.files.push_back(_T("sub_dir1_level2_test1.txt"));
- sub_dir1_level1.sub_dirs.push_back(sub_dir1_level2);
- root_dir->sub_dirs.push_back(sub_dir1_level1);
-
- Directory sub_dir2_level1(_T("sub_dir2_level1"));
- sub_dir2_level1.files.push_back(_T("sub_dir2_level1_test1.txt"));
- root_dir->sub_dirs.push_back(sub_dir2_level1);
-}
-} // detail.
-
-TEST(PathTest, FindFileRecursiveTest) {
- detail::Directory dir;
- detail::CreateTestDirectoryStructure(&dir);
-
- std::vector<CString> expected_files;
- detail::ConvertDirectoryStructureToFiles(dir, dir.dir_name, &expected_files);
-
- // Call the test method.
- std::vector<CString> files;
- ASSERT_HRESULT_SUCCEEDED(FindFileRecursive(dir.dir_name,
- _T("*test*.txt"),
- &files));
-
- // Validate the results.
- ASSERT_EQ(expected_files.size(), files.size());
- for (size_t i = 0; i < expected_files.size(); ++i) {
- EXPECT_STREQ(expected_files[i], files[i]);
- }
-
- // Cleanup.
- ASSERT_HRESULT_SUCCEEDED(DeleteDirectory(dir.dir_name));
-}
-
-TEST(PathTest, FindFileRecursiveTest_Empty) {
- GUID guid = GUID_NULL;
- ASSERT_HRESULT_SUCCEEDED(::CoCreateGuid(&guid));
-
- TCHAR path[MAX_PATH] = {0};
- ASSERT_NE(0, ::GetTempPath(MAX_PATH, path));
-
- CString dir = ConcatenatePath(path, GuidToString(guid));
- EXPECT_FALSE(dir.IsEmpty());
- EXPECT_FALSE(File::Exists(dir));
-
- ASSERT_HRESULT_SUCCEEDED(CreateDir(dir, NULL));
-
- // Call the test method.
- std::vector<CString> files;
- ASSERT_HRESULT_SUCCEEDED(FindFileRecursive(dir, _T("*test*.txt"),
- &files));
-
- // Validate results.
- ASSERT_EQ(0, files.size());
-
- // Cleanup.
- ASSERT_HRESULT_SUCCEEDED(DeleteDirectory(dir));
-}
-
-TEST(PathTest, FindFileRecursiveTest_DirNotCreated) {
- GUID guid = GUID_NULL;
- ASSERT_HRESULT_SUCCEEDED(::CoCreateGuid(&guid));
-
- TCHAR path[MAX_PATH] = {0};
- ASSERT_NE(0, ::GetTempPath(MAX_PATH, path));
-
- CString dir = ConcatenatePath(path, GuidToString(guid));
- EXPECT_FALSE(dir.IsEmpty());
- EXPECT_FALSE(File::Exists(dir));
-
- // Call the test method.
- std::vector<CString> files;
- ASSERT_HRESULT_FAILED(FindFileRecursive(dir, _T("*test*.txt"), &files));
-}
-
-} // namespace omaha
-
« no previous file with comments | « base/path.cc ('k') | base/pe_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698