SupportTests.LockFileManagerTest: Add assertions for Win32.
authorNAKAMURA Takumi <geek4civic@gmail.com>
Sun, 23 Mar 2014 23:55:57 +0000 (23:55 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Sun, 23 Mar 2014 23:55:57 +0000 (23:55 +0000)
  - create_link doesn't work for nonexistent file.
  - remove cannot remove working directory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204579 91177308-0d34-0410-b5e6-96231b3b80d8

unittests/Support/LockFileManagerTest.cpp

index 79f4519614e87e89a20841d38b22c8517d215398..b80cdf9b66f6e9d5829a1f1d8111c24464ebafeb 100644 (file)
@@ -44,7 +44,6 @@ TEST(LockFileManagerTest, Basic) {
   ASSERT_FALSE(EC);
 }
 
-#if !defined(_WIN32)
 TEST(LockFileManagerTest, LinkLockExists) {
   SmallString<64> TmpDir;
   error_code EC;
@@ -61,7 +60,13 @@ TEST(LockFileManagerTest, LinkLockExists) {
   sys::path::append(TmpFileLock, "file.lock-000");
 
   EC = sys::fs::create_link(TmpFileLock.str(), FileLocK.str());
+#if defined(_WIN32)
+  // Win32 cannot create link with nonexistent file, since create_link is
+  // implemented as hard link.
+  ASSERT_EQ(EC, errc::no_such_file_or_directory);
+#else
   ASSERT_FALSE(EC);
+#endif
 
   {
     // The lock file doesn't point to a real file, so we should successfully
@@ -109,10 +114,19 @@ TEST(LockFileManagerTest, RelativePath) {
   EC = sys::fs::remove("inner");
   ASSERT_FALSE(EC);
   EC = sys::fs::remove(StringRef(TmpDir));
+#if defined(_WIN32)
+  // Win32 cannot remove working directory.
+  ASSERT_EQ(EC, errc::permission_denied);
+#else
   ASSERT_FALSE(EC);
+#endif
 
   chdir(OrigPath);
-}
+
+#if defined(_WIN32)
+  EC = sys::fs::remove(StringRef(TmpDir));
+  ASSERT_FALSE(EC);
 #endif
+}
 
 } // end anonymous namespace