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

Side by Side Diff: base/app_util_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 unified diff | Download patch
« no previous file with comments | « base/app_util.cc ('k') | base/apply_tag.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2004-2010 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16 #include <atlpath.h>
17 #include "omaha/base/app_util.h"
18 #include "omaha/base/constants.h"
19 #include "omaha/base/file.h"
20 #include "omaha/base/string.h"
21 #include "omaha/base/utils.h"
22 #include "omaha/base/vistautil.h"
23 #include "omaha/testing/unit_test.h"
24
25 const TCHAR* const kKernel32Name = L"kernel32.dll";
26 const TCHAR* const kShell32Name = L"shell32.dll";
27 const TCHAR* const kComCtl32Name = L"comctl32.dll";
28
29 namespace omaha {
30
31 namespace app_util {
32
33 TEST(AppUtilTest, AppUtil) {
34 HMODULE module = NULL;
35 CString name;
36 struct Local {
37 static void Func() {}
38 };
39
40 // First test the functionality for EXE applications.
41
42 // Test the app name.
43 name = GetAppName();
44 EXPECT_STREQ(kUnittestName, name);
45
46 // Test the module name.
47 name = GetCurrentModuleName();
48 EXPECT_STREQ(kUnittestName, name);
49
50 // Test the app name w/o extension.
51 name = GetAppNameWithoutExtension() + L".exe";
52 EXPECT_STREQ(kUnittestName, name);
53
54 // Test the module name w/o extension.
55 name = GetCurrentModulePath();
56 EXPECT_STREQ(GetCurrentModuleDirectory() + L"\\" + kUnittestName, name);
57
58 // Test the module path and directory.
59 name = GetCurrentModuleName();
60 EXPECT_STREQ(kUnittestName, name);
61
62 // Test an address.
63 module = GetCurrentModuleHandle();
64 EXPECT_TRUE(IsAddressInCurrentModule(module + 0x1));
65 EXPECT_TRUE(IsAddressInCurrentModule(&Local::Func));
66 EXPECT_FALSE(IsAddressInCurrentModule(reinterpret_cast<void*>(0x1)));
67
68 // Test the functionality for DLL modules.
69 // Use kernel32.dll
70
71 // Get the loading address of kernel32.
72 HMODULE kernel32Module = ::LoadLibrary(kKernel32Name);
73 EXPECT_TRUE(kernel32Module != NULL);
74
75 // Test the dll module handle using an address.
76 module = GetModuleHandleFromAddress(::ReadFile);
77 EXPECT_EQ(kernel32Module, module);
78
79 CString system_path;
80 EXPECT_SUCCEEDED(GetFolderPath(CSIDL_SYSTEMX86, &system_path));
81
82 // Test the dll module directory.
83 name = GetModuleDirectory(module);
84 EXPECT_EQ(0, name.CompareNoCase(system_path));
85
86 // Test the dll module path.
87 name = GetModulePath(module);
88 EXPECT_EQ(0, name.CompareNoCase(system_path + L"\\" + kKernel32Name));
89
90 // Test the dll module name.
91 name = GetModuleName(module);
92 EXPECT_EQ(0, name.CompareNoCase(kKernel32Name));
93
94 // Other checks.
95 EXPECT_FALSE(GetWindowsDir().IsEmpty());
96 EXPECT_FALSE(GetHostName().IsEmpty());
97 EXPECT_FALSE(GetTempDir().IsEmpty());
98 EXPECT_TRUE(String_EndsWith(GetTempDir(), _T("\\"), false));
99
100 // DLL versioning.
101 // For the tests to succeed, shell32.dll must be loaded in memory.
102 HMODULE shell32Module = ::LoadLibrary(kShell32Name);
103 EXPECT_NE(0, DllGetVersion(GetSystemDir() + L"\\" + kShell32Name));
104 EXPECT_NE(0, DllGetVersion(kShell32Name));
105 EXPECT_NE(0, SystemDllGetVersion(kShell32Name));
106
107 // For the tests to succeed, comctl32.dll must be loaded in memory.
108 // ComCtl32 may be loaded from a side-by-side (WinSxS) directory, so it is not
109 // practical to do a full-path or SystemDllGetVersion test with it.
110 HMODULE comctl32_module = ::LoadLibrary(kComCtl32Name);
111 EXPECT_NE(0, DllGetVersion(kComCtl32Name));
112
113 // kernel32 does not export DllGetVersion.
114 EXPECT_EQ(0, SystemDllGetVersion(kKernel32Name));
115
116 // Module clean-up.
117 EXPECT_TRUE(::FreeLibrary(comctl32_module));
118 EXPECT_TRUE(::FreeLibrary(shell32Module));
119 EXPECT_TRUE(::FreeLibrary(kernel32Module));
120 }
121
122 TEST(AppUtilTest, GetVersionFromModule) {
123 EXPECT_EQ(OMAHA_BUILD_VERSION, GetVersionFromModule(NULL));
124 }
125
126 TEST(AppUtilTest, GetVersionFromFile) {
127 CPath goopdate_path(GetCurrentModuleDirectory());
128 ASSERT_TRUE(goopdate_path.Append(kUnittestName));
129 ASSERT_TRUE(File::Exists(goopdate_path));
130
131 EXPECT_EQ(OMAHA_BUILD_VERSION, GetVersionFromFile(goopdate_path));
132 }
133
134 TEST(AppUtilTest, GetTempDirForImpersonatedOrCurrentUser) {
135 // The behavior should be the same when the code is not running impersonated.
136 EXPECT_STREQ(GetTempDir(), GetTempDirForImpersonatedOrCurrentUser());
137
138 // The behavior should be the same when the code impersonates as self.
139 EXPECT_TRUE(::ImpersonateSelf(SecurityImpersonation));
140 EXPECT_STREQ(GetTempDir(), GetTempDirForImpersonatedOrCurrentUser());
141
142 EXPECT_TRUE(::RevertToSelf());
143 }
144
145 } // namespace app_util
146
147 } // namespace omaha
OLDNEW
« no previous file with comments | « base/app_util.cc ('k') | base/apply_tag.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698