diff options
author | 2017-01-10 16:41:23 +0000 | |
---|---|---|
committer | 2017-01-10 19:42:18 +0000 | |
commit | e1f8bbc1fe1d0a22736597dbd029155b01718b94 (patch) | |
tree | 3203fe21a2f164fd74914f3333b60e9c9ee5d8f6 /src/test/cpp | |
parent | 19948b036eb70dd768321082f31cd9f6563da522 (diff) |
Rollback of commit 9a13899b1492738f8d1a9118cebc9ef9d90c6b34.
*** Reason for rollback ***
Fixed the problem with the CL.
*** Original change description ***
Bazel client, Windows: implement UnlinkPath
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144087552
MOS_MIGRATED_REVID=144087552
Diffstat (limited to 'src/test/cpp')
-rw-r--r-- | src/test/cpp/util/file_windows_test.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/test/cpp/util/file_windows_test.cc b/src/test/cpp/util/file_windows_test.cc index 5c2f68ee27..1d73d65e53 100644 --- a/src/test/cpp/util/file_windows_test.cc +++ b/src/test/cpp/util/file_windows_test.cc @@ -290,6 +290,37 @@ TEST(FileTest, TestPathExistsWindows) { ASSERT_FALSE(PathExists(JoinPath(tmpdir, "junc2"))); } +TEST(FileTest, TestUnlinkPath) { + string tmpdir(GetTestTmpDir()); + ASSERT_LT(0, tmpdir.size()); + ASSERT_TRUE(PathExists(tmpdir)); + + // Create a directory under `tempdir`, a file inside it, and a junction + // pointing to it. + string dir1(JoinPath(tmpdir, "dir1")); + ASSERT_EQ(0, mkdir(dir1.c_str())); + FILE* fh = fopen(JoinPath(dir1, "foo.txt").c_str(), "wt"); + ASSERT_NE(nullptr, fh); + ASSERT_LT(0, fprintf(fh, "hello\n")); + fclose(fh); + string junc1(JoinPath(tmpdir, "junc1")); + RunCommand(string("cmd.exe /C mklink /J \"") + junc1 + "\" \"" + dir1 + + "\" >NUL 2>NUL"); + ASSERT_TRUE(PathExists(junc1)); + ASSERT_TRUE(PathExists(JoinPath(junc1, "foo.txt"))); + + // Non-existent files cannot be unlinked. + ASSERT_FALSE(UnlinkPath("does.not.exist")); + // Directories cannot be unlinked. + ASSERT_FALSE(UnlinkPath(dir1)); + // Junctions can be unlinked, even if the pointed directory is not empty. + ASSERT_TRUE(UnlinkPath(JoinPath(junc1, "foo.txt"))); + // Files can be unlinked. + ASSERT_TRUE(UnlinkPath(junc1)); + // Clean up the now empty directory. + ASSERT_EQ(0, rmdir(dir1.c_str())); +} + TEST(FileTest, TestIsDirectory) { ASSERT_FALSE(IsDirectory("")); |