aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/cpp/util/file_windows_test.cc
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2017-01-10 10:41:26 +0000
committerGravatar Marcel Hlopko <hlopko@google.com>2017-01-10 11:51:20 +0000
commit44ecf9a0c7c25496a43f59f1c8f20df9527e12cb (patch)
treec7580369cd3b0e7426b569d9638addaec4c00b0d /src/test/cpp/util/file_windows_test.cc
parent12bf5ba34f70200eccc9e5f9b2f27d91d4514d77 (diff)
Windows: implement and use AsShortWindowsPath
Because CreateProcessW doesn't support long paths, not even with the "\\?\" prefix [1], we need to convert long paths to short ones to spawn processes. This change implements the corresponding function and uses it in blaze_util_windows. [1] https://github.com/bazelbuild/bazel/issues/2181#issuecomment-270696173 See https://github.com/bazelbuild/bazel/issues/2107 See https://github.com/bazelbuild/bazel/issues/2181 -- PiperOrigin-RevId: 144062404 MOS_MIGRATED_REVID=144062404
Diffstat (limited to 'src/test/cpp/util/file_windows_test.cc')
-rw-r--r--src/test/cpp/util/file_windows_test.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/test/cpp/util/file_windows_test.cc b/src/test/cpp/util/file_windows_test.cc
index 983763aeaf..1cf49d88c5 100644
--- a/src/test/cpp/util/file_windows_test.cc
+++ b/src/test/cpp/util/file_windows_test.cc
@@ -178,6 +178,25 @@ TEST(FileTest, TestAsWindowsPath) {
ASSERT_EQ(wlongpath, actual);
}
+TEST(FileTest, TestAsShortWindowsPath) {
+ string tmpdir(GetTestTmpDir());
+ ASSERT_LT(0, tmpdir.size());
+
+ string short_tmpdir;
+ ASSERT_TRUE(AsShortWindowsPath(tmpdir, &short_tmpdir));
+ ASSERT_LT(0, short_tmpdir.size());
+ ASSERT_TRUE(PathExists(short_tmpdir));
+
+ string dirname(JoinPath(short_tmpdir, "LONGpathNAME"));
+ ASSERT_EQ(0, mkdir(dirname.c_str()));
+ ASSERT_TRUE(PathExists(dirname));
+
+ string actual;
+ ASSERT_TRUE(AsShortWindowsPath(dirname, &actual));
+ ASSERT_EQ(short_tmpdir + "\\longpa~1", actual);
+ ASSERT_EQ(0, rmdir(dirname.c_str()));
+}
+
TEST(FileTest, TestMsysRootRetrieval) {
wstring actual;