summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Support/Path.cpp
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2018-10-01 12:17:05 +0000
committerSam McCall <sam.mccall@gmail.com>2018-10-01 12:17:05 +0000
commit79c995c0ccbdf086f765a183eed0da1df580138a (patch)
treec4aac42858457db9ab5d14ffed00beadbbc7e3f5 /llvm/unittests/Support/Path.cpp
parent06098849c6e60c78bca9fede296cc8bd0dd1e729 (diff)
downloadbcm5719-llvm-79c995c0ccbdf086f765a183eed0da1df580138a.tar.gz
bcm5719-llvm-79c995c0ccbdf086f765a183eed0da1df580138a.zip
[Support] Listing a directory containing dangling symlinks is not an error.
Summary: Reporting this as an error required stat()ing every file, as well as seeming semantically questionable. Reviewers: vsk, bkramer Subscribers: mgrang, kristina, llvm-commits, liaoyuke Differential Revision: https://reviews.llvm.org/D52648 llvm-svn: 343460
Diffstat (limited to 'llvm/unittests/Support/Path.cpp')
-rw-r--r--llvm/unittests/Support/Path.cpp67
1 files changed, 21 insertions, 46 deletions
diff --git a/llvm/unittests/Support/Path.cpp b/llvm/unittests/Support/Path.cpp
index cba6ce94c44..c18eb929e91 100644
--- a/llvm/unittests/Support/Path.cpp
+++ b/llvm/unittests/Support/Path.cpp
@@ -883,87 +883,62 @@ TEST_F(FileSystemTest, BrokenSymlinkDirectoryIteration) {
v_t VisitedNonBrokenSymlinks;
v_t VisitedBrokenSymlinks;
std::error_code ec;
+ using testing::UnorderedElementsAre;
+ using testing::UnorderedElementsAreArray;
// Broken symbol links are expected to throw an error.
for (fs::directory_iterator i(Twine(TestDirectory) + "/symlink", ec), e;
i != e; i.increment(ec)) {
- if (ec == std::make_error_code(std::errc::no_such_file_or_directory)) {
+ ASSERT_NO_ERROR(ec);
+ if (i->status().getError() ==
+ std::make_error_code(std::errc::no_such_file_or_directory)) {
VisitedBrokenSymlinks.push_back(path::filename(i->path()));
continue;
}
-
- ASSERT_NO_ERROR(ec);
VisitedNonBrokenSymlinks.push_back(path::filename(i->path()));
}
- llvm::sort(VisitedNonBrokenSymlinks);
- llvm::sort(VisitedBrokenSymlinks);
- v_t ExpectedNonBrokenSymlinks = {"b", "d"};
- ASSERT_EQ(ExpectedNonBrokenSymlinks.size(), VisitedNonBrokenSymlinks.size());
- ASSERT_TRUE(std::equal(VisitedNonBrokenSymlinks.begin(),
- VisitedNonBrokenSymlinks.end(),
- ExpectedNonBrokenSymlinks.begin()));
+ EXPECT_THAT(VisitedNonBrokenSymlinks, UnorderedElementsAre("b", "d"));
VisitedNonBrokenSymlinks.clear();
- v_t ExpectedBrokenSymlinks = {"a", "c", "e"};
- ASSERT_EQ(ExpectedBrokenSymlinks.size(), VisitedBrokenSymlinks.size());
- ASSERT_TRUE(std::equal(VisitedBrokenSymlinks.begin(),
- VisitedBrokenSymlinks.end(),
- ExpectedBrokenSymlinks.begin()));
+ EXPECT_THAT(VisitedBrokenSymlinks, UnorderedElementsAre("a", "c", "e"));
VisitedBrokenSymlinks.clear();
// Broken symbol links are expected to throw an error.
for (fs::recursive_directory_iterator i(
Twine(TestDirectory) + "/symlink", ec), e; i != e; i.increment(ec)) {
- if (ec == std::make_error_code(std::errc::no_such_file_or_directory)) {
+ ASSERT_NO_ERROR(ec);
+ if (i->status().getError() ==
+ std::make_error_code(std::errc::no_such_file_or_directory)) {
VisitedBrokenSymlinks.push_back(path::filename(i->path()));
continue;
}
-
- ASSERT_NO_ERROR(ec);
VisitedNonBrokenSymlinks.push_back(path::filename(i->path()));
}
- llvm::sort(VisitedNonBrokenSymlinks);
- llvm::sort(VisitedBrokenSymlinks);
- ExpectedNonBrokenSymlinks = {"b", "bb", "d", "da", "dd", "ddd", "ddd"};
- ASSERT_EQ(ExpectedNonBrokenSymlinks.size(), VisitedNonBrokenSymlinks.size());
- ASSERT_TRUE(std::equal(VisitedNonBrokenSymlinks.begin(),
- VisitedNonBrokenSymlinks.end(),
- ExpectedNonBrokenSymlinks.begin()));
+ EXPECT_THAT(VisitedNonBrokenSymlinks,
+ UnorderedElementsAre("b", "bb", "d", "da", "dd", "ddd", "ddd"));
VisitedNonBrokenSymlinks.clear();
- ExpectedBrokenSymlinks = {"a", "ba", "bc", "c", "e"};
- ASSERT_EQ(ExpectedBrokenSymlinks.size(), VisitedBrokenSymlinks.size());
- ASSERT_TRUE(std::equal(VisitedBrokenSymlinks.begin(),
- VisitedBrokenSymlinks.end(),
- ExpectedBrokenSymlinks.begin()));
+ EXPECT_THAT(VisitedBrokenSymlinks,
+ UnorderedElementsAre("a", "ba", "bc", "c", "e"));
VisitedBrokenSymlinks.clear();
for (fs::recursive_directory_iterator i(
Twine(TestDirectory) + "/symlink", ec, /*follow_symlinks=*/false), e;
i != e; i.increment(ec)) {
- if (ec == std::make_error_code(std::errc::no_such_file_or_directory)) {
+ ASSERT_NO_ERROR(ec);
+ if (i->status().getError() ==
+ std::make_error_code(std::errc::no_such_file_or_directory)) {
VisitedBrokenSymlinks.push_back(path::filename(i->path()));
continue;
}
-
- ASSERT_NO_ERROR(ec);
VisitedNonBrokenSymlinks.push_back(path::filename(i->path()));
}
- llvm::sort(VisitedNonBrokenSymlinks);
- llvm::sort(VisitedBrokenSymlinks);
- ExpectedNonBrokenSymlinks = {"a", "b", "ba", "bb", "bc", "c", "d", "da", "dd",
- "ddd", "e"};
- ASSERT_EQ(ExpectedNonBrokenSymlinks.size(), VisitedNonBrokenSymlinks.size());
- ASSERT_TRUE(std::equal(VisitedNonBrokenSymlinks.begin(),
- VisitedNonBrokenSymlinks.end(),
- ExpectedNonBrokenSymlinks.begin()));
+ EXPECT_THAT(VisitedNonBrokenSymlinks,
+ UnorderedElementsAreArray({"a", "b", "ba", "bb", "bc", "c", "d",
+ "da", "dd", "ddd", "e"}));
VisitedNonBrokenSymlinks.clear();
- ExpectedBrokenSymlinks = {};
- ASSERT_EQ(ExpectedBrokenSymlinks.size(), VisitedBrokenSymlinks.size());
- ASSERT_TRUE(std::equal(VisitedBrokenSymlinks.begin(),
- VisitedBrokenSymlinks.end(),
- ExpectedBrokenSymlinks.begin()));
+ EXPECT_THAT(VisitedBrokenSymlinks, UnorderedElementsAre());
VisitedBrokenSymlinks.clear();
ASSERT_NO_ERROR(fs::remove_directories(Twine(TestDirectory) + "/symlink"));
OpenPOWER on IntegriCloud