diff options
author | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-04-04 12:13:15 +0200 |
---|---|---|
committer | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-04-10 14:06:21 +0200 |
commit | 8f938b159a992796d56485ee57f72b856d447a4e (patch) | |
tree | d4ca64af5b7432fe808ccdc82f76f2a0db61cf61 /test | |
parent | 350b462340293508260ddb901df3a8a825a13f2d (diff) | |
download | justbuild-8f938b159a992796d56485ee57f72b856d447a4e.tar.gz |
test: Extend GitRepo methods checks
Diffstat (limited to 'test')
-rw-r--r-- | test/buildtool/file_system/git_repo.test.cpp | 93 |
1 files changed, 90 insertions, 3 deletions
diff --git a/test/buildtool/file_system/git_repo.test.cpp b/test/buildtool/file_system/git_repo.test.cpp index e84e7242..de8d0786 100644 --- a/test/buildtool/file_system/git_repo.test.cpp +++ b/test/buildtool/file_system/git_repo.test.cpp @@ -326,6 +326,50 @@ TEST_CASE("Single-threaded fake repository operations", "[git_repo]") { } } + SECTION("Check tree exists") { + auto res = repo->CheckTreeExists(kRootId, logger); + REQUIRE(res); + CHECK(*res); + + res = repo->CheckTreeExists(kBazId, logger); + REQUIRE(res); + CHECK(*res); + + res = repo->CheckTreeExists(kFooId, logger); + REQUIRE(res); + CHECK_FALSE(*res); + } + + SECTION("Check blob exists") { + auto res = repo->CheckBlobExists(kFooId, logger); + REQUIRE(res); + CHECK(*res); + + res = repo->CheckBlobExists(kBarId, logger); + REQUIRE(res); + CHECK(*res); + + res = repo->CheckBlobExists(kBazId, logger); + REQUIRE(res); + CHECK_FALSE(*res); + } + + SECTION("Try read blob") { + auto res = repo->TryReadBlob(kFooId, logger); + REQUIRE(res.first); + REQUIRE(res.second); + CHECK(res.second == "foo"); + + res = repo->TryReadBlob(kBarId, logger); + REQUIRE(res.first); + REQUIRE(res.second); + CHECK(res.second == "bar"); + + res = repo->TryReadBlob(kBazId, logger); + REQUIRE(res.first); // search succeeded... + CHECK_FALSE(res.second); // ...but blob not found + } + SECTION("Get subtree entry id from path") { SECTION("Get base tree id") { auto entry_root_p = @@ -472,7 +516,7 @@ TEST_CASE("Multi-threaded fake repository operations", "[git_repo]") { threads.reserve(kNumThreads); SECTION("Lookups in the same ODB") { - constexpr int NUM_CASES = 6; + constexpr int NUM_CASES = 9; for (int id{}; id < kNumThreads; ++id) { threads.emplace_back( [&remote_cas, &remote_repo_path, &logger, &starting_signal]( @@ -517,6 +561,48 @@ TEST_CASE("Multi-threaded fake repository operations", "[git_repo]") { auto remote_repo = GitRepo::Open(remote_cas); REQUIRE(remote_repo); REQUIRE(remote_repo->IsRepoFake()); + // Lookup trees + auto res = + remote_repo->CheckTreeExists(kRootId, logger); + REQUIRE(res); + CHECK(*res); + res = remote_repo->CheckTreeExists(kBazId, logger); + REQUIRE(res); + CHECK(*res); + } break; + case 4: { + auto remote_repo = GitRepo::Open(remote_cas); + REQUIRE(remote_repo); + REQUIRE(remote_repo->IsRepoFake()); + // Lookup blobs + auto res = + remote_repo->CheckBlobExists(kFooId, logger); + REQUIRE(res); + CHECK(*res); + res = remote_repo->CheckBlobExists(kBarId, logger); + REQUIRE(res); + CHECK(*res); + } break; + // NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers) + case 5: { + auto remote_repo = GitRepo::Open(remote_cas); + REQUIRE(remote_repo); + REQUIRE(remote_repo->IsRepoFake()); + // Read blobs + auto res = remote_repo->TryReadBlob(kFooId, logger); + REQUIRE(res.first); + REQUIRE(res.second); + CHECK(res.second == "foo"); + res = remote_repo->TryReadBlob(kBarId, logger); + REQUIRE(res.first); + REQUIRE(res.second); + CHECK(res.second == "bar"); + } break; + // NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers) + case 6: { + auto remote_repo = GitRepo::Open(remote_cas); + REQUIRE(remote_repo); + REQUIRE(remote_repo->IsRepoFake()); // Get subtree entry id from path auto path_baz = *remote_repo_path / "baz"; auto entry_baz_p = remote_repo->GetSubtreeFromPath( @@ -524,7 +610,8 @@ TEST_CASE("Multi-threaded fake repository operations", "[git_repo]") { REQUIRE(entry_baz_p); CHECK(*entry_baz_p == kBazId); } break; - case 4: { + // NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers) + case 7: { auto remote_repo = GitRepo::Open(remote_cas); REQUIRE(remote_repo); REQUIRE(remote_repo->IsRepoFake()); @@ -534,7 +621,7 @@ TEST_CASE("Multi-threaded fake repository operations", "[git_repo]") { CHECK(*result_containing); } break; // NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers) - case 5: { + case 8: { auto remote_repo = GitRepo::Open(remote_cas); REQUIRE(remote_repo); REQUIRE(remote_repo->IsRepoFake()); |