diff options
Diffstat (limited to 'adb/adb_utils_test.cpp')
-rw-r--r-- | adb/adb_utils_test.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/adb/adb_utils_test.cpp b/adb/adb_utils_test.cpp index 309ac02c98..9c9f85c7da 100644 --- a/adb/adb_utils_test.cpp +++ b/adb/adb_utils_test.cpp @@ -16,6 +16,13 @@ #include "adb_utils.h" +#ifdef _WIN32 +#include <windows.h> +#include <userenv.h> +#endif + +#include <string> + #include <gtest/gtest.h> #include <stdlib.h> @@ -23,12 +30,46 @@ #include "sysdeps.h" +#include <base/macros.h> #include <base/test_utils.h> +#ifdef _WIN32 +static std::string subdir(const char* parent, const char* child) { + std::string str(parent); + str += OS_PATH_SEPARATOR; + str += child; + return str; +} +#endif + TEST(adb_utils, directory_exists) { +#ifdef _WIN32 + char profiles_dir[MAX_PATH]; + DWORD cch = arraysize(profiles_dir); + + // On typical Windows 7, returns C:\Users + ASSERT_TRUE(GetProfilesDirectory(profiles_dir, &cch)); + + ASSERT_TRUE(directory_exists(profiles_dir)); + + // On modern (English?) Windows, this is a directory symbolic link to + // C:\ProgramData. Symbolic links are rare on Windows and the user requires + // a special permission (by default granted to Administrative users) to + // create symbolic links. + ASSERT_FALSE(directory_exists(subdir(profiles_dir, "All Users"))); + + // On modern (English?) Windows, this is a directory junction to + // C:\Users\Default. Junctions are used throughout user profile directories + // for backwards compatibility and they don't require any special permissions + // to create. + ASSERT_FALSE(directory_exists(subdir(profiles_dir, "Default User"))); + + ASSERT_FALSE(directory_exists(subdir(profiles_dir, "does-not-exist"))); +#else ASSERT_TRUE(directory_exists("/proc")); ASSERT_FALSE(directory_exists("/proc/self")); // Symbolic link. ASSERT_FALSE(directory_exists("/proc/does-not-exist")); +#endif } TEST(adb_utils, escape_arg) { |