diff options
author | Ben Langmuir <blangmuir@apple.com> | 2014-06-24 21:08:13 +0000 |
---|---|---|
committer | Ben Langmuir <blangmuir@apple.com> | 2014-06-24 21:08:13 +0000 |
commit | efb8b6019e27efd55dd955d3d373d749fbd768d3 (patch) | |
tree | c625ace4814153c65b0c006d5a303f03c3bee008 /clang/unittests/Basic/VirtualFileSystemTest.cpp | |
parent | 0e928859430c7e15f3f9a3ceee9bf40a74b7e512 (diff) | |
download | bcm5719-llvm-efb8b6019e27efd55dd955d3d373d749fbd768d3.tar.gz bcm5719-llvm-efb8b6019e27efd55dd955d3d373d749fbd768d3.zip |
Fix test issues from r211623 and remove test-only API
1) missing iterator bits needed by libstdc++4.7
Using find_if was convenient, but since operator++ wasn't a good
interface anyway, I just replaced with a range-based for loop and
removed operator++ from the directory_iterator class.
2) stop relying on order of iterating real files
llvm-svn: 211633
Diffstat (limited to 'clang/unittests/Basic/VirtualFileSystemTest.cpp')
-rw-r--r-- | clang/unittests/Basic/VirtualFileSystemTest.cpp | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/clang/unittests/Basic/VirtualFileSystemTest.cpp b/clang/unittests/Basic/VirtualFileSystemTest.cpp index 63e9c42047f..b0b3f87660e 100644 --- a/clang/unittests/Basic/VirtualFileSystemTest.cpp +++ b/clang/unittests/Basic/VirtualFileSystemTest.cpp @@ -296,11 +296,12 @@ TEST(VirtualFileSystemTest, BasicRealFSIteration) { I = FS->dir_begin(Twine(TestDirectory), EC); ASSERT_FALSE(EC); ASSERT_NE(vfs::directory_iterator(), I); - EXPECT_TRUE(I->getName().endswith("a")); + // Check either a or c, since we can't rely on the iteration order. + EXPECT_TRUE(I->getName().endswith("a") || I->getName().endswith("c")); I.increment(EC); ASSERT_FALSE(EC); ASSERT_NE(vfs::directory_iterator(), I); - EXPECT_TRUE(I->getName().endswith("c")); + EXPECT_TRUE(I->getName().endswith("a") || I->getName().endswith("c")); I.increment(EC); EXPECT_EQ(vfs::directory_iterator(), I); } @@ -395,23 +396,25 @@ TEST(VirtualFileSystemTest, HiddenInIteration) { checkContents(O->dir_begin("/", EC), Contents); } - // FIXME: broke gcc build // Make sure we get the top-most entry - // vfs::directory_iterator E; - // { - // auto I = std::find_if(O->dir_begin("/", EC), E, [](vfs::Status S){ - // return S.getName() == "/hiddenByUp"; - // }); - // ASSERT_NE(E, I); - // EXPECT_EQ(sys::fs::owner_all, I->getPermissions()); - // } - // { - // auto I = std::find_if(O->dir_begin("/", EC), E, [](vfs::Status S){ - // return S.getName() == "/hiddenByMid"; - // }); - // ASSERT_NE(E, I); - // EXPECT_EQ(sys::fs::owner_write, I->getPermissions()); - // } + { + std::error_code EC; + vfs::directory_iterator I = O->dir_begin("/", EC), E; + for ( ; !EC && I != E; I.increment(EC)) + if (I->getName() == "/hiddenByUp") + break; + ASSERT_NE(E, I); + EXPECT_EQ(sys::fs::owner_all, I->getPermissions()); + } + { + std::error_code EC; + vfs::directory_iterator I = O->dir_begin("/", EC), E; + for ( ; !EC && I != E; I.increment(EC)) + if (I->getName() == "/hiddenByMid") + break; + ASSERT_NE(E, I); + EXPECT_EQ(sys::fs::owner_write, I->getPermissions()); + } } // NOTE: in the tests below, we use '//root/' as our root directory, since it is |