summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildtool/common/artifact_factory.hpp9
-rw-r--r--test/buildtool/common/TARGETS2
-rw-r--r--test/buildtool/common/artifact_description.test.cpp30
-rw-r--r--test/buildtool/common/artifact_factory.test.cpp20
-rw-r--r--test/buildtool/execution_api/bazel/TARGETS2
-rw-r--r--test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp32
-rw-r--r--test/buildtool/execution_api/common/TARGETS2
-rw-r--r--test/buildtool/execution_api/common/api_test.hpp9
-rw-r--r--test/buildtool/execution_api/local/TARGETS2
-rw-r--r--test/buildtool/execution_api/local/local_execution.test.cpp9
10 files changed, 44 insertions, 73 deletions
diff --git a/src/buildtool/common/artifact_factory.hpp b/src/buildtool/common/artifact_factory.hpp
index dccbe221..b109171c 100644
--- a/src/buildtool/common/artifact_factory.hpp
+++ b/src/buildtool/common/artifact_factory.hpp
@@ -34,15 +34,6 @@
class ArtifactFactory {
public:
- [[nodiscard]] static auto FromDescription(nlohmann::json const& description)
- -> std::optional<Artifact> {
- auto desc = ArtifactDescription::FromJson(description);
- if (desc) {
- return desc->ToArtifact();
- }
- return std::nullopt;
- }
-
[[nodiscard]] static auto DescribeLocalArtifact(
std::filesystem::path const& src_path,
std::string repository) noexcept -> nlohmann::json {
diff --git a/test/buildtool/common/TARGETS b/test/buildtool/common/TARGETS
index d174de5b..986dea0c 100644
--- a/test/buildtool/common/TARGETS
+++ b/test/buildtool/common/TARGETS
@@ -6,7 +6,7 @@
[ ["@", "catch2", "", "catch2"]
, ["", "catch-main"]
, ["@", "json", "", "json"]
- , ["@", "src", "src/buildtool/common", "artifact_factory"]
+ , ["@", "src", "src/buildtool/common", "artifact_description"]
, ["@", "src", "src/buildtool/file_system", "object_type"]
]
, "stage": ["test", "buildtool", "common"]
diff --git a/test/buildtool/common/artifact_description.test.cpp b/test/buildtool/common/artifact_description.test.cpp
index d07efa93..c8fffc46 100644
--- a/test/buildtool/common/artifact_description.test.cpp
+++ b/test/buildtool/common/artifact_description.test.cpp
@@ -30,10 +30,8 @@
TEST_CASE("Local artifact", "[artifact_description]") {
auto local_desc = ArtifactDescription::CreateLocal(
std::filesystem::path{"local_path"}, "repo");
- auto local = local_desc.ToArtifact();
- auto local_from_factory =
- ArtifactFactory::FromDescription(local_desc.ToJson());
- CHECK(local == *local_from_factory);
+ auto from_json = ArtifactDescription::FromJson(local_desc.ToJson());
+ CHECK(local_desc == *from_json);
}
TEST_CASE("Known artifact", "[artifact_description]") {
@@ -41,38 +39,30 @@ TEST_CASE("Known artifact", "[artifact_description]") {
auto known_desc = ArtifactDescription::CreateKnown(
ArtifactDigest{std::string{"f_fake_hash"}, 0, /*is_tree=*/false},
ObjectType::File);
- auto known = known_desc.ToArtifact();
- auto known_from_factory =
- ArtifactFactory::FromDescription(known_desc.ToJson());
- CHECK(known == *known_from_factory);
+ auto from_json = ArtifactDescription::FromJson(known_desc.ToJson());
+ CHECK(known_desc == *from_json);
}
SECTION("Executable object") {
auto known_desc = ArtifactDescription::CreateKnown(
ArtifactDigest{std::string{"x_fake_hash"}, 1, /*is_tree=*/false},
ObjectType::Executable);
- auto known = known_desc.ToArtifact();
- auto known_from_factory =
- ArtifactFactory::FromDescription(known_desc.ToJson());
- CHECK(known == *known_from_factory);
+ auto from_json = ArtifactDescription::FromJson(known_desc.ToJson());
+ CHECK(known_desc == *from_json);
}
SECTION("Symlink object") {
auto known_desc = ArtifactDescription::CreateKnown(
ArtifactDigest{std::string{"l_fake_hash"}, 2, /*is_tree=*/false},
ObjectType::Symlink);
- auto known = known_desc.ToArtifact();
- auto known_from_factory =
- ArtifactFactory::FromDescription(known_desc.ToJson());
- CHECK(known == *known_from_factory);
+ auto from_json = ArtifactDescription::FromJson(known_desc.ToJson());
+ CHECK(known_desc == *from_json);
}
}
TEST_CASE("Action artifact", "[artifact_description]") {
auto action_desc = ArtifactDescription::CreateAction(
"action_id", std::filesystem::path{"out_path"});
- auto action = action_desc.ToArtifact();
- auto action_from_factory =
- ArtifactFactory::FromDescription(action_desc.ToJson());
- CHECK(action == *action_from_factory);
+ auto from_json = ArtifactDescription::FromJson(action_desc.ToJson());
+ CHECK(action_desc == *from_json);
}
TEST_CASE("From JSON", "[artifact_description]") {
diff --git a/test/buildtool/common/artifact_factory.test.cpp b/test/buildtool/common/artifact_factory.test.cpp
index 64a6c782..222ffd2b 100644
--- a/test/buildtool/common/artifact_factory.test.cpp
+++ b/test/buildtool/common/artifact_factory.test.cpp
@@ -16,23 +16,22 @@
#include "catch2/catch_test_macros.hpp"
#include "nlohmann/json.hpp"
-#include "src/buildtool/common/artifact_factory.hpp"
+#include "src/buildtool/common/artifact_description.hpp"
#include "src/buildtool/file_system/object_type.hpp"
TEST_CASE("Description missing mandatory key/value pair",
"[artifact_factory]") {
-
nlohmann::json const missing_type = {{"data", {{"path", "some/path"}}}};
- CHECK(not ArtifactFactory::FromDescription(missing_type));
+ CHECK(not ArtifactDescription::FromJson(missing_type));
nlohmann::json const missing_data = {{"type", "LOCAL"}};
- CHECK(not ArtifactFactory::FromDescription(missing_data));
+ CHECK(not ArtifactDescription::FromJson(missing_data));
}
TEST_CASE("Local artifact description contains incorrect value for \"data\"",
"[artifact_factory]") {
nlohmann::json const local_art_missing_path = {
{"type", "LOCAL"}, {"data", nlohmann::json::object()}};
- CHECK(not ArtifactFactory::FromDescription(local_art_missing_path));
+ CHECK(not ArtifactDescription::FromJson(local_art_missing_path));
}
TEST_CASE("Known artifact description contains incorrect value for \"data\"",
@@ -43,20 +42,19 @@ TEST_CASE("Known artifact description contains incorrect value for \"data\"",
nlohmann::json const known_art_missing_id = {
{"type", "KNOWN"},
{"data", {{"size", 15}, {"file_type", file_type}}}};
- CHECK(not ArtifactFactory::FromDescription(known_art_missing_id));
+ CHECK(not ArtifactDescription::FromJson(known_art_missing_id));
}
SECTION("missing \"size\"") {
nlohmann::json const known_art_missing_size = {
{"type", "KNOWN"},
{"data", {{"id", "known_input"}, {"file_type", file_type}}}};
- CHECK(not ArtifactFactory::FromDescription(known_art_missing_size));
+ CHECK(not ArtifactDescription::FromJson(known_art_missing_size));
}
SECTION("missing \"file_type\"") {
nlohmann::json const known_art_missing_file_type = {
{"type", "KNOWN"}, {"data", {{"id", "known_input"}, {"size", 15}}}};
- CHECK(
- not ArtifactFactory::FromDescription(known_art_missing_file_type));
+ CHECK(not ArtifactDescription::FromJson(known_art_missing_file_type));
}
}
@@ -64,9 +62,9 @@ TEST_CASE("Action artifact description contains incorrect value for \"data\"",
"[artifact_factory]") {
nlohmann::json const action_art_missing_id = {
{"type", "ACTION"}, {"data", {{"path", "output/path"}}}};
- CHECK(not ArtifactFactory::FromDescription(action_art_missing_id));
+ CHECK(not ArtifactDescription::FromJson(action_art_missing_id));
nlohmann::json const action_art_missing_path = {
{"type", "ACTION"}, {"data", {{"id", "action_id"}}}};
- CHECK(not ArtifactFactory::FromDescription(action_art_missing_path));
+ CHECK(not ArtifactDescription::FromJson(action_art_missing_path));
}
diff --git a/test/buildtool/execution_api/bazel/TARGETS b/test/buildtool/execution_api/bazel/TARGETS
index d3e42c6d..f9caa7ee 100644
--- a/test/buildtool/execution_api/bazel/TARGETS
+++ b/test/buildtool/execution_api/bazel/TARGETS
@@ -74,7 +74,7 @@
, "private-deps":
[ ["@", "catch2", "", "catch2"]
, ["", "catch-main"]
- , ["@", "src", "src/buildtool/common", "artifact_factory"]
+ , ["@", "src", "src/buildtool/common", "artifact_description"]
, [ "@"
, "src"
, "src/buildtool/execution_api/bazel_msg"
diff --git a/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp b/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp
index 71dd67e3..b56021c8 100644
--- a/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp
+++ b/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp
@@ -16,7 +16,7 @@
#include <unordered_map>
#include "catch2/catch_test_macros.hpp"
-#include "src/buildtool/common/artifact_factory.hpp"
+#include "src/buildtool/common/artifact_description.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
@@ -51,28 +51,22 @@ TEST_CASE("Bazel internals: MessageFactory", "[execution_api]") {
// create known artifacts
auto artifact1_opt =
- ArtifactFactory::FromDescription(ArtifactFactory::DescribeKnownArtifact(
- NativeSupport::Unprefix(file1_blob->digest.hash()),
- static_cast<std::size_t>(file1_blob->digest.size_bytes()),
- ObjectType::File));
- CHECK(artifact1_opt.has_value());
- auto artifact1 = DependencyGraph::ArtifactNode{std::move(*artifact1_opt)};
+ ArtifactDescription::CreateKnown(ArtifactDigest{file1_blob->digest},
+ ObjectType::File)
+ .ToArtifact();
+ auto artifact1 = DependencyGraph::ArtifactNode{std::move(artifact1_opt)};
auto artifact2_opt =
- ArtifactFactory::FromDescription(ArtifactFactory::DescribeKnownArtifact(
- NativeSupport::Unprefix(file2_blob->digest.hash()),
- static_cast<std::size_t>(file2_blob->digest.size_bytes()),
- ObjectType::File));
- CHECK(artifact2_opt.has_value());
- auto artifact2 = DependencyGraph::ArtifactNode{std::move(*artifact2_opt)};
+ ArtifactDescription::CreateKnown(ArtifactDigest{file2_blob->digest},
+ ObjectType::File)
+ .ToArtifact();
+ auto artifact2 = DependencyGraph::ArtifactNode{std::move(artifact2_opt)};
auto artifact3_opt =
- ArtifactFactory::FromDescription(ArtifactFactory::DescribeKnownArtifact(
- NativeSupport::Unprefix(link_blob->digest.hash()),
- static_cast<std::size_t>(link_blob->digest.size_bytes()),
- ObjectType::Symlink));
- CHECK(artifact3_opt.has_value());
- auto artifact3 = DependencyGraph::ArtifactNode{std::move(*artifact3_opt)};
+ ArtifactDescription::CreateKnown(ArtifactDigest{link_blob->digest},
+ ObjectType::Symlink)
+ .ToArtifact();
+ auto artifact3 = DependencyGraph::ArtifactNode{std::move(artifact3_opt)};
// create directory tree
auto tree =
diff --git a/test/buildtool/execution_api/common/TARGETS b/test/buildtool/execution_api/common/TARGETS
index f49f65fc..b4e2c4a9 100644
--- a/test/buildtool/execution_api/common/TARGETS
+++ b/test/buildtool/execution_api/common/TARGETS
@@ -4,7 +4,7 @@
, "hdrs": ["api_test.hpp"]
, "deps":
[ ["@", "catch2", "", "catch2"]
- , ["@", "src", "src/buildtool/common", "artifact_factory"]
+ , ["@", "src", "src/buildtool/common", "artifact_description"]
, ["@", "src", "src/buildtool/execution_api/common", "common"]
, ["@", "src", "src/buildtool/execution_api/local", "config"]
, ["@", "src", "src/buildtool/file_system", "file_system_manager"]
diff --git a/test/buildtool/execution_api/common/api_test.hpp b/test/buildtool/execution_api/common/api_test.hpp
index 413ed7fd..d43c850d 100644
--- a/test/buildtool/execution_api/common/api_test.hpp
+++ b/test/buildtool/execution_api/common/api_test.hpp
@@ -20,7 +20,7 @@
#include <vector>
#include "catch2/catch_test_macros.hpp"
-#include "src/buildtool/common/artifact_factory.hpp"
+#include "src/buildtool/common/artifact_description.hpp"
#include "src/buildtool/execution_api/common/execution_action.hpp"
#include "src/buildtool/execution_api/common/execution_api.hpp"
#include "src/buildtool/execution_api/common/execution_response.hpp"
@@ -207,11 +207,10 @@ inline void SetLauncher() {
auto test_digest = ArtifactDigest::Create<ObjectType::File>(test_content);
auto input_artifact_opt =
- ArtifactFactory::FromDescription(ArtifactFactory::DescribeKnownArtifact(
- test_digest.hash(), test_digest.size(), ObjectType::File));
- CHECK(input_artifact_opt.has_value());
+ ArtifactDescription::CreateKnown(test_digest, ObjectType::File)
+ .ToArtifact();
auto input_artifact =
- DependencyGraph::ArtifactNode{std::move(*input_artifact_opt)};
+ DependencyGraph::ArtifactNode{std::move(input_artifact_opt)};
std::string input_path{"dir/subdir/input"};
std::string output_path{"output_file"};
diff --git a/test/buildtool/execution_api/local/TARGETS b/test/buildtool/execution_api/local/TARGETS
index eb23c99a..09b88419 100644
--- a/test/buildtool/execution_api/local/TARGETS
+++ b/test/buildtool/execution_api/local/TARGETS
@@ -5,7 +5,7 @@
, "private-deps":
[ ["@", "catch2", "", "catch2"]
, ["", "catch-main"]
- , ["@", "src", "src/buildtool/common", "artifact_factory"]
+ , ["@", "src", "src/buildtool/common", "artifact_description"]
, ["@", "src", "src/buildtool/common", "config"]
, ["@", "src", "src/buildtool/execution_api/local", "config"]
, ["@", "src", "src/buildtool/execution_api/local", "local"]
diff --git a/test/buildtool/execution_api/local/local_execution.test.cpp b/test/buildtool/execution_api/local/local_execution.test.cpp
index bbd48ddc..4c2e309c 100644
--- a/test/buildtool/execution_api/local/local_execution.test.cpp
+++ b/test/buildtool/execution_api/local/local_execution.test.cpp
@@ -19,7 +19,7 @@
#include <vector>
#include "catch2/catch_test_macros.hpp"
-#include "src/buildtool/common/artifact_factory.hpp"
+#include "src/buildtool/common/artifact_description.hpp"
#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/execution_api/local/config.hpp"
#include "src/buildtool/execution_api/local/local_api.hpp"
@@ -233,11 +233,10 @@ TEST_CASE("LocalExecution: One input copied to output", "[execution_api]") {
std::vector<std::string> const cmdline = {"cp", input_path, output_path};
auto local_artifact_opt =
- ArtifactFactory::FromDescription(ArtifactFactory::DescribeKnownArtifact(
- test_digest.hash(), test_digest.size(), ObjectType::File));
- REQUIRE(local_artifact_opt);
+ ArtifactDescription::CreateKnown(test_digest, ObjectType::File)
+ .ToArtifact();
auto local_artifact =
- DependencyGraph::ArtifactNode{std::move(*local_artifact_opt)};
+ DependencyGraph::ArtifactNode{std::move(local_artifact_opt)};
auto action =
api.CreateAction(*api.UploadTree({{input_path, &local_artifact}}),