diff options
Diffstat (limited to 'test/buildtool/file_system/directory_entries.test.cpp')
-rw-r--r-- | test/buildtool/file_system/directory_entries.test.cpp | 91 |
1 files changed, 72 insertions, 19 deletions
diff --git a/test/buildtool/file_system/directory_entries.test.cpp b/test/buildtool/file_system/directory_entries.test.cpp index 8109db61..278f79d6 100644 --- a/test/buildtool/file_system/directory_entries.test.cpp +++ b/test/buildtool/file_system/directory_entries.test.cpp @@ -84,10 +84,10 @@ TEST_CASE("Get entries of a directory", "[directory_entries]") { auto fs_root = FileRoot(); auto dir_entries = fs_root.ReadDirectory(dir); - CHECK(dir_entries.ContainsFile("test_repo.bundle")); - CHECK(dir_entries.ContainsFile("test_repo_symlinks.bundle")); - CHECK(dir_entries.ContainsFile("empty_executable")); - CHECK(dir_entries.ContainsFile("example_file")); + CHECK(dir_entries.ContainsBlob("test_repo.bundle")); + CHECK(dir_entries.ContainsBlob("test_repo_symlinks.bundle")); + CHECK(dir_entries.ContainsBlob("empty_executable")); + CHECK(dir_entries.ContainsBlob("example_file")); { // all the entries returned by FilesIterator are files, // are contained in reference_entries, @@ -95,7 +95,7 @@ TEST_CASE("Get entries of a directory", "[directory_entries]") { auto counter = 0; for (const auto& x : dir_entries.FilesIterator()) { REQUIRE(reference_entries.contains(x)); - CHECK(dir_entries.ContainsFile(x)); + CHECK(dir_entries.ContainsBlob(x)); ++counter; } @@ -110,7 +110,7 @@ TEST_CASE("Get entries of a directory", "[directory_entries]") { auto counter = 0; for (const auto& x : dir_entries.DirectoriesIterator()) { REQUIRE(reference_entries.contains(x)); - CHECK_FALSE(dir_entries.ContainsFile(x)); + CHECK_FALSE(dir_entries.ContainsBlob(x)); ++counter; } @@ -124,9 +124,9 @@ TEST_CASE("Get entries of a git tree", "[directory_entries]") { auto repo = *CreateTestRepo(true); auto fs_root = FileRoot(); auto dir_entries = fs_root.ReadDirectory(repo); - CHECK(dir_entries.ContainsFile("bar")); - CHECK(dir_entries.ContainsFile("foo")); - CHECK_FALSE(dir_entries.ContainsFile("baz")); + CHECK(dir_entries.ContainsBlob("bar")); + CHECK(dir_entries.ContainsBlob("foo")); + CHECK_FALSE(dir_entries.ContainsBlob("baz")); { // all the entries returned by FilesIterator are files, // are contained in reference_entries, @@ -134,7 +134,7 @@ TEST_CASE("Get entries of a git tree", "[directory_entries]") { auto counter = 0; for (const auto& x : dir_entries.FilesIterator()) { REQUIRE(reference_entries.contains(x)); - CHECK(dir_entries.ContainsFile(x)); + CHECK(dir_entries.ContainsBlob(x)); ++counter; } @@ -148,7 +148,7 @@ TEST_CASE("Get entries of a git tree", "[directory_entries]") { auto counter = 0; for (const auto& x : dir_entries.DirectoriesIterator()) { REQUIRE(reference_entries.contains(x)); - CHECK_FALSE(dir_entries.ContainsFile(x)); + CHECK_FALSE(dir_entries.ContainsBlob(x)); ++counter; } @@ -164,12 +164,12 @@ TEST_CASE("Get entries of an empty directory", "[directory_entries]") { auto dir_entries = FileRoot::DirectoryEntries{FileRoot::DirectoryEntries::pairs_t{}}; // of course, no files should be there - CHECK_FALSE(dir_entries.ContainsFile("test_repo.bundle")); + CHECK_FALSE(dir_entries.ContainsBlob("test_repo.bundle")); { // FilesIterator should be an empty range auto counter = 0; for (const auto& x : dir_entries.FilesIterator()) { - CHECK_FALSE(dir_entries.ContainsFile(x)); // should never be called + CHECK_FALSE(dir_entries.ContainsBlob(x)); // should never be called ++counter; } @@ -179,7 +179,7 @@ TEST_CASE("Get entries of an empty directory", "[directory_entries]") { // DirectoriesIterator should be an empty range auto counter = 0; for (const auto& x : dir_entries.DirectoriesIterator()) { - CHECK(dir_entries.ContainsFile(x)); // should never be called + CHECK(dir_entries.ContainsBlob(x)); // should never be called ++counter; } @@ -194,9 +194,9 @@ TEST_CASE("Get ignore-special entries of a git tree with symlinks", auto repo = *CreateTestRepoSymlinks(true); auto fs_root = FileRoot(/*ignore_special=*/true); auto dir_entries = fs_root.ReadDirectory(repo); - CHECK(dir_entries.ContainsFile("bar")); - CHECK(dir_entries.ContainsFile("foo")); - CHECK_FALSE(dir_entries.ContainsFile("baz")); + CHECK(dir_entries.ContainsBlob("bar")); + CHECK(dir_entries.ContainsBlob("foo")); + CHECK_FALSE(dir_entries.ContainsBlob("baz")); { // all the entries returned by FilesIterator are files, // are contained in reference_entries, @@ -204,7 +204,7 @@ TEST_CASE("Get ignore-special entries of a git tree with symlinks", auto counter = 0; for (const auto& x : dir_entries.FilesIterator()) { REQUIRE(reference_entries.contains(x)); - CHECK(dir_entries.ContainsFile(x)); + CHECK(dir_entries.ContainsBlob(x)); ++counter; } @@ -218,7 +218,60 @@ TEST_CASE("Get ignore-special entries of a git tree with symlinks", auto counter = 0; for (const auto& x : dir_entries.DirectoriesIterator()) { REQUIRE(reference_entries.contains(x)); - CHECK_FALSE(dir_entries.ContainsFile(x)); + CHECK_FALSE(dir_entries.ContainsBlob(x)); + ++counter; + } + + CHECK(counter == 2); + } +} + +TEST_CASE("Get entries of a git tree with symlinks", "[directory_entries]") { + auto reference_entries = std::unordered_set<std::string>{ + "foo", "bar", "baz", "foo_l", "baz_l", ".git"}; + auto repo = *CreateTestRepoSymlinks(true); + auto fs_root = FileRoot(/*ignore_special=*/false); + auto dir_entries = fs_root.ReadDirectory(repo); + CHECK(dir_entries.ContainsBlob("bar")); + CHECK(dir_entries.ContainsBlob("foo")); + CHECK_FALSE(dir_entries.ContainsBlob("baz")); + CHECK(dir_entries.ContainsBlob("foo_l")); + CHECK(dir_entries.ContainsBlob("baz_l")); + { + // all the entries returned by FilesIterator are files, + // are contained in reference_entries, + // and are 2 (foo, and bar) + auto counter = 0; + for (const auto& x : dir_entries.FilesIterator()) { + REQUIRE(reference_entries.contains(x)); + CHECK(dir_entries.ContainsBlob(x)); + ++counter; + } + + CHECK(counter == 2); + } + { + // all the entries returned by SymlinksIterator are symlinks, + // are contained in reference_entries, + // and are 2 (foo_l, and baz_l) + auto counter = 0; + for (const auto& x : dir_entries.SymlinksIterator()) { + REQUIRE(reference_entries.contains(x)); + CHECK(dir_entries.ContainsBlob(x)); + ++counter; + } + + CHECK(counter == 2); + } + { + // all the entries returned by DirectoriesIterator are not files (e.g., + // trees), + // are contained in reference_entries, + // and are 2 (baz, and .git) + auto counter = 0; + for (const auto& x : dir_entries.DirectoriesIterator()) { + REQUIRE(reference_entries.contains(x)); + CHECK_FALSE(dir_entries.ContainsBlob(x)); ++counter; } |