OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 <string> | |
6 #include <vector> | |
7 | |
8 #include "base/bind.h" | |
9 #include "base/files/file_path.h" | |
10 #include "chrome/test/chromedriver/chrome_finder.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 | |
13 namespace { | |
14 | |
15 bool PathIn(const std::vector<base::FilePath>& list, | |
16 const base::FilePath& path) { | |
17 for (size_t i = 0; i < list.size(); ++i) { | |
18 if (list[i] == path) | |
19 return true; | |
20 } | |
21 return false; | |
22 } | |
23 | |
24 void AssertFound(const base::FilePath& found, | |
25 const std::vector<base::FilePath>& existing_paths, | |
26 const std::vector<base::FilePath>& rel_paths, | |
27 const std::vector<base::FilePath>& locations) { | |
28 base::FilePath exe; | |
29 ASSERT_TRUE(internal::FindExe( | |
30 base::Bind(&PathIn, existing_paths), | |
31 rel_paths, | |
32 locations, | |
33 &exe)); | |
34 ASSERT_EQ(found, exe); | |
35 } | |
36 | |
37 } // namespace | |
38 | |
39 TEST(ChromeFinderTest, FindExeFound) { | |
40 base::FilePath found = | |
41 base::FilePath().AppendASCII("exists").AppendASCII("exists"); | |
42 std::vector<base::FilePath> existing_paths; | |
43 existing_paths.push_back(found); | |
44 std::vector<base::FilePath> rel_paths; | |
45 rel_paths.push_back(found.BaseName()); | |
46 std::vector<base::FilePath> locations; | |
47 locations.push_back(found.DirName()); | |
48 ASSERT_NO_FATAL_FAILURE( | |
49 AssertFound(found, existing_paths, rel_paths, locations)); | |
50 } | |
51 | |
52 TEST(ChromeFinderTest, FindExeShouldGoInOrder) { | |
53 base::FilePath dir(FILE_PATH_LITERAL("dir")); | |
54 base::FilePath first = dir.AppendASCII("first"); | |
55 base::FilePath second = dir.AppendASCII("second"); | |
56 std::vector<base::FilePath> existing_paths; | |
57 existing_paths.push_back(first); | |
58 existing_paths.push_back(second); | |
59 std::vector<base::FilePath> rel_paths; | |
60 rel_paths.push_back(first.BaseName()); | |
61 rel_paths.push_back(second.BaseName()); | |
62 std::vector<base::FilePath> locations; | |
63 locations.push_back(dir); | |
64 ASSERT_NO_FATAL_FAILURE( | |
65 AssertFound(first, existing_paths, rel_paths, locations)); | |
66 } | |
67 | |
68 TEST(ChromeFinderTest, FindExeShouldPreferExeNameOverDir) { | |
69 base::FilePath dir1(FILE_PATH_LITERAL("dir1")); | |
70 base::FilePath dir2(FILE_PATH_LITERAL("dir2")); | |
71 base::FilePath preferred(FILE_PATH_LITERAL("preferred")); | |
72 base::FilePath nonpreferred(FILE_PATH_LITERAL("nonpreferred")); | |
73 std::vector<base::FilePath> existing_paths; | |
74 existing_paths.push_back(dir2.Append(preferred)); | |
75 existing_paths.push_back(dir1.Append(nonpreferred)); | |
76 std::vector<base::FilePath> rel_paths; | |
77 rel_paths.push_back(preferred); | |
78 rel_paths.push_back(nonpreferred); | |
79 std::vector<base::FilePath> locations; | |
80 locations.push_back(dir1); | |
81 locations.push_back(dir2); | |
82 ASSERT_NO_FATAL_FAILURE(AssertFound( | |
83 dir2.Append(preferred), existing_paths, rel_paths, locations)); | |
84 } | |
85 | |
86 TEST(ChromeFinderTest, FindExeNotFound) { | |
87 base::FilePath found = | |
88 base::FilePath().AppendASCII("exists").AppendASCII("exists"); | |
89 std::vector<base::FilePath> existing_paths; | |
90 std::vector<base::FilePath> rel_paths; | |
91 rel_paths.push_back(found.BaseName()); | |
92 std::vector<base::FilePath> locations; | |
93 locations.push_back(found.DirName()); | |
94 base::FilePath exe; | |
95 ASSERT_FALSE(internal::FindExe( | |
96 base::Bind(&PathIn, existing_paths), | |
97 rel_paths, | |
98 locations, | |
99 &exe)); | |
100 } | |
101 | |
102 TEST(ChromeFinderTest, NoCrash) { | |
103 // It's not worthwhile to check the validity of the path, so just check | |
104 // for crashes. | |
105 base::FilePath exe; | |
106 FindChrome(&exe); | |
107 } | |
OLD | NEW |