+20
-3
@@ -38,6 +38,7 @@
|
||||
#include <vamp_zero/parse.hpp>
|
||||
#include <vamp_zero/page_control.hpp>
|
||||
#include <vamp_zero/portal.hpp>
|
||||
#include <vamp_zero/app.hpp>
|
||||
#include <vamp_zero/score.hpp>
|
||||
#include <vamp_zero/types.hpp>
|
||||
|
||||
@@ -94,7 +95,6 @@ auto has_value(noto::query_result const &result, std::size_t column, std::string
|
||||
|
||||
auto score_asset_json(std::string title, std::string key = "C", std::string part = "Lead") -> std::string {
|
||||
auto value = boost::json::parse(R"json({
|
||||
"schema_version":3,
|
||||
"music":{"metadata":{"title":"Fixture","composer":"Composer","key_signature":"C","time_signature":"4/4"},
|
||||
"staves":[{"id":"staff-lead","name":"Lead","measures":[{"id":"measure-1","voices":[]}]}]},
|
||||
"presentation":{"width":976,"height":484,"pages":[{"path":"fixture.pages/0001.png",
|
||||
@@ -152,6 +152,23 @@ void write_text(std::filesystem::path const &path, std::string const &text) {
|
||||
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(build_identification_uses_git_without_an_application_release_label) {
|
||||
auto program = std::string{"vamp-zero"};
|
||||
auto option = std::string{"--build-info"};
|
||||
auto args = std::vector<std::char_t *>{program.data(), option.data()};
|
||||
auto command = vamp_zero::parse_command_line(2, args.data());
|
||||
BOOST_REQUIRE(command);
|
||||
BOOST_TEST(command->print_build_info);
|
||||
command->config_path = "/nonexistent/product-vamp.json";
|
||||
BOOST_TEST(vamp_zero::run(*command).has_value());
|
||||
auto once = std::string{"--once"};
|
||||
args.push_back(once.data());
|
||||
BOOST_TEST(!vamp_zero::parse_command_line(3, args.data()));
|
||||
auto status = vamp_zero::portal_status_json({}, {}).as_object();
|
||||
BOOST_TEST(status.at("git_sha").as_string() == VAMP_GIT_SHA);
|
||||
BOOST_TEST(!status.contains("version"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(runtime_config_uses_headless_and_ignores_unknown_fields) {
|
||||
auto parsed = vamp_zero::parse_config(boost::json::parse(R"json({"runtime":{"headless":true,"obsolete_setting":"ignored"},"audio":{"enabled":false}})json"));
|
||||
BOOST_REQUIRE(parsed);
|
||||
@@ -521,8 +538,8 @@ BOOST_AUTO_TEST_CASE(score_bundle_preserves_complete_music_without_runtime_flatt
|
||||
BOOST_TEST(vamp_zero::score_page_count(*parsed) == 1U);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(score_bundle_rejects_legacy_schema_malformed_manifest_and_unsafe_paths) {
|
||||
for (auto text : {"", "null", "[]", "{}", "{", R"({"schema_version":2})"}) {
|
||||
BOOST_AUTO_TEST_CASE(score_bundle_rejects_malformed_structure_manifest_and_unsafe_paths) {
|
||||
for (auto text : {"", "null", "[]", "{}", "{", R"({"music":{}})", R"({"presentation":{}})"}) {
|
||||
BOOST_CHECK_NO_THROW(BOOST_TEST(!vamp_zero::parse_score_document(text)));
|
||||
}
|
||||
for (auto path : {"../page.png", "/page.png", "pages/../../page.png", "pages/./page.png", "page.jpg", ""}) {
|
||||
|
||||
Reference in New Issue
Block a user