diff options
author | Oliver Reiche <oliver.reiche@huawei.com> | 2022-07-11 12:18:29 +0200 |
---|---|---|
committer | Sascha Roloff <sascha.roloff@huawei.com> | 2022-08-05 14:41:31 +0200 |
commit | c99e8ebc4dc12544ad55cd55e13b0bbe49b6cb4c (patch) | |
tree | c11e43ee6c9b2a2bce5e0dfcaaa3b0a3e19de07a /test/buildtool/file_system/git_tree.test.cpp | |
parent | a3064e549eb666c162c5bd333a17598355620d63 (diff) | |
download | justbuild-c99e8ebc4dc12544ad55cd55e13b0bbe49b6cb4c.tar.gz |
GitCAS: Support reading/creating trees without filesystem IO
Diffstat (limited to 'test/buildtool/file_system/git_tree.test.cpp')
-rw-r--r-- | test/buildtool/file_system/git_tree.test.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/buildtool/file_system/git_tree.test.cpp b/test/buildtool/file_system/git_tree.test.cpp index b6757c4e..3956d669 100644 --- a/test/buildtool/file_system/git_tree.test.cpp +++ b/test/buildtool/file_system/git_tree.test.cpp @@ -203,6 +203,58 @@ TEST_CASE("Create Git Trees", "[git_cas]") { } } +TEST_CASE("Read Git Tree Data", "[git_cas]") { + auto repo_path = CreateTestRepo(true); + REQUIRE(repo_path); + auto cas = GitCAS::Open(*repo_path); + REQUIRE(cas); + + SECTION("empty tree") { + auto entries = GitCAS::ReadTreeData( + "", "4b825dc642cb6eb9a060e54bf8d69288fbee4904", /*is_hex_id=*/true); + REQUIRE(entries); + CHECK(entries->empty()); + } + + SECTION("existing tree") { + auto entries = cas->ReadTree(kTreeId, /*is_hex_id=*/true); + REQUIRE(entries); + + auto data = cas->ReadObject(kTreeId, /*is_hex_id=*/true); + REQUIRE(data); + + auto from_data = + GitCAS::ReadTreeData(*data, kTreeId, /*is_hex_id=*/true); + REQUIRE(from_data); + CHECK(*from_data == *entries); + } +} + +TEST_CASE("Create Shallow Git Trees", "[git_cas]") { + auto repo_path = CreateTestRepo(true); + REQUIRE(repo_path); + auto cas = GitCAS::Open(*repo_path); + REQUIRE(cas); + + SECTION("empty tree") { + auto tree = GitCAS::CreateShallowTree({}); + REQUIRE(tree); + CHECK(ToHexString(tree->first) == + "4b825dc642cb6eb9a060e54bf8d69288fbee4904"); + CHECK(tree->second.empty()); + } + + SECTION("existing tree from other CAS") { + auto entries = cas->ReadTree(kTreeId, /*is_hex_id=*/true); + REQUIRE(entries); + + auto tree = GitCAS::CreateShallowTree(*entries); + REQUIRE(tree); + CHECK(ToHexString(tree->first) == kTreeId); + CHECK_FALSE(tree->second.empty()); + } +} + TEST_CASE("Read Git Tree", "[git_tree]") { SECTION("Bare repository") { auto repo_path = CreateTestRepo(true); |