diff options
author | 2017-01-10 10:41:26 +0000 | |
---|---|---|
committer | 2017-01-10 11:51:20 +0000 | |
commit | 44ecf9a0c7c25496a43f59f1c8f20df9527e12cb (patch) | |
tree | c7580369cd3b0e7426b569d9638addaec4c00b0d /src/test/cpp/util/file_windows_test.cc | |
parent | 12bf5ba34f70200eccc9e5f9b2f27d91d4514d77 (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.cc | 19 |
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; |