Title: [277178] trunk/Tools
Revision
277178
Author
[email protected]
Date
2021-05-07 09:49:54 -0700 (Fri, 07 May 2021)

Log Message

Add API test for FileSystem::fileExists() and FileSystem::fileMetadata() when dealing with symlinks to symlinks
https://bugs.webkit.org/show_bug.cgi?id=225491

Reviewed by Sam Weinig.

Update FileSystemTest::SetUp() to use a valid path when constructing the test symlink
(tempFileSymlinkPath). Add API test for FileSystem::fileExists() and FileSystem::fileMetadata()
when dealing with symlinks to symlinks.

* TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (277177 => 277178)


--- trunk/Tools/ChangeLog	2021-05-07 16:42:35 UTC (rev 277177)
+++ trunk/Tools/ChangeLog	2021-05-07 16:49:54 UTC (rev 277178)
@@ -1,3 +1,17 @@
+2021-05-07  Chris Dumez  <[email protected]>
+
+        Add API test for FileSystem::fileExists() and FileSystem::fileMetadata() when dealing with symlinks to symlinks
+        https://bugs.webkit.org/show_bug.cgi?id=225491
+
+        Reviewed by Sam Weinig.
+
+        Update FileSystemTest::SetUp() to use a valid path when constructing the test symlink
+        (tempFileSymlinkPath). Add API test for FileSystem::fileExists() and FileSystem::fileMetadata()
+        when dealing with symlinks to symlinks.
+
+        * TestWebKitAPI/Tests/WTF/FileSystem.cpp:
+        (TestWebKitAPI::TEST_F):
+
 2021-05-07  Philippe Normand  <[email protected]>
 
         Unreviewed, WPE gardening

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/FileSystem.cpp (277177 => 277178)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/FileSystem.cpp	2021-05-07 16:42:35 UTC (rev 277177)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/FileSystem.cpp	2021-05-07 16:49:54 UTC (rev 277178)
@@ -50,7 +50,9 @@
         FileSystem::writeToFile(handle, FileSystemTestData, strlen(FileSystemTestData));
         FileSystem::closeFile(handle);
 
-        m_tempFileSymlinkPath = "tempTestFile-symlink";
+        m_tempFileSymlinkPath = FileSystem::openTemporaryFile("tempTestFile-symlink", handle);
+        FileSystem::closeFile(handle);
+        FileSystem::deleteFile(m_tempFileSymlinkPath);
         FileSystem::createSymbolicLink(m_tempFilePath, m_tempFileSymlinkPath);
 
         // Create temp directory.
@@ -292,6 +294,45 @@
     EXPECT_TRUE(FileSystem::deleteFile(symlinkPath));
 }
 
+TEST_F(FileSystemTest, fileExistsSymlinkToSymlink)
+{
+    // Create a valid symlink to a symlink to a regular file.
+    auto symlinkPath = FileSystem::pathByAppendingComponent(tempEmptyFolderPath(), "symlink"_s);
+    EXPECT_TRUE(FileSystem::createSymbolicLink(tempFileSymlinkPath(), symlinkPath));
+    EXPECT_TRUE(FileSystem::fileExists(symlinkPath));
+
+    auto metadata = FileSystem::fileMetadata(symlinkPath);
+    ASSERT_TRUE(!!metadata);
+    EXPECT_EQ(metadata->type, FileMetadata::Type::SymbolicLink);
+
+    auto targetMetadata = FileSystem::fileMetadataFollowingSymlinks(symlinkPath);
+    ASSERT_TRUE(!!targetMetadata);
+    EXPECT_EQ(targetMetadata->type, FileMetadata::Type::File);
+
+    // Break the symlink by deleting the target.
+    EXPECT_TRUE(FileSystem::deleteFile(tempFilePath()));
+
+    EXPECT_FALSE(FileSystem::fileExists(tempFilePath()));
+    EXPECT_FALSE(FileSystem::fileExists(tempFileSymlinkPath())); // fileExists() follows symlinks.
+    EXPECT_FALSE(FileSystem::fileExists(symlinkPath)); // fileExists() follows symlinks.
+
+    metadata = FileSystem::fileMetadata(symlinkPath);
+    ASSERT_TRUE(!!metadata);
+    EXPECT_EQ(metadata->type, FileMetadata::Type::SymbolicLink);
+
+    metadata = FileSystem::fileMetadata(tempFileSymlinkPath());
+    ASSERT_TRUE(!!metadata);
+    EXPECT_EQ(metadata->type, FileMetadata::Type::SymbolicLink);
+
+    targetMetadata = FileSystem::fileMetadataFollowingSymlinks(tempFileSymlinkPath());
+    EXPECT_TRUE(!targetMetadata);
+
+    targetMetadata = FileSystem::fileMetadataFollowingSymlinks(symlinkPath);
+    EXPECT_TRUE(!targetMetadata);
+
+    EXPECT_TRUE(FileSystem::deleteFile(symlinkPath));
+}
+
 TEST_F(FileSystemTest, deleteSymlink)
 {
     EXPECT_TRUE(FileSystem::fileExists(tempFilePath()));
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to