diff options
-rw-r--r-- | src/buildtool/common/artifact.hpp | 4 | ||||
-rw-r--r-- | test/buildtool/common/TARGETS | 12 | ||||
-rw-r--r-- | test/buildtool/common/artifact_object_info.test.cpp | 32 |
3 files changed, 46 insertions, 2 deletions
diff --git a/src/buildtool/common/artifact.hpp b/src/buildtool/common/artifact.hpp index 3a593f5b..76bb1c9f 100644 --- a/src/buildtool/common/artifact.hpp +++ b/src/buildtool/common/artifact.hpp @@ -98,9 +98,9 @@ class Artifact { [[nodiscard]] static auto FromJson(nlohmann::json const& j) -> std::optional<ObjectInfo> { if (j.is_object() and j["id"].is_string() and - j["size"].is_number() and j["type"].is_string()) { + j["size"].is_number() and j["file_type"].is_string()) { auto const& object_type = - FromChar(*(j["type"].get<std::string>().c_str())); + FromChar(*(j["file_type"].get<std::string>().c_str())); return ObjectInfo{ .digest = ArtifactDigest{j["id"].get<std::string>(), j["size"].get<std::size_t>(), diff --git a/test/buildtool/common/TARGETS b/test/buildtool/common/TARGETS index e26ff319..71cddce1 100644 --- a/test/buildtool/common/TARGETS +++ b/test/buildtool/common/TARGETS @@ -46,6 +46,17 @@ ] , "stage": ["test", "buildtool", "common"] } +, "artifact_object_info": + { "type": ["@", "rules", "CC/test", "test"] + , "name": ["artifact_object_info"] + , "srcs": ["artifact_object_info.test.cpp"] + , "private-deps": + [ ["@", "catch2", "", "catch2"] + , ["", "catch-main"] + , ["@", "src", "src/buildtool/common", "common"] + ] + , "stage": ["test", "buildtool", "common"] + } , "TESTS": { "type": "install" , "tainted": ["test"] @@ -54,6 +65,7 @@ , "artifact_description" , "artifact_factory" , "repository_config" + , "artifact_object_info" ] } } diff --git a/test/buildtool/common/artifact_object_info.test.cpp b/test/buildtool/common/artifact_object_info.test.cpp new file mode 100644 index 00000000..fde2e506 --- /dev/null +++ b/test/buildtool/common/artifact_object_info.test.cpp @@ -0,0 +1,32 @@ +// Copyright 2022 Huawei Cloud Computing Technology Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "catch2/catch_test_macros.hpp" +#include "src/buildtool/common/artifact.hpp" + +TEST_CASE("Consistency check for serialization and de-serialization", + "[object_info]") { + + auto empty_blob = Artifact::ObjectInfo{ + .digest = + ArtifactDigest{ + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", 0, false}, + .type = ObjectType::File}; + + auto x = empty_blob.ToJson().dump(); + + auto read = Artifact::ObjectInfo::FromJson(nlohmann::json::parse(x)); + REQUIRE(read.has_value()); + CHECK(*read == empty_blob); +} |