Toggle Solos
ci / checks (push) Failing after 24m18s

This commit is contained in:
khodowany
2026-10-08 22:11:34 -05:00
parent 1bacfd0f33
commit 150394d598
31 changed files with 8707 additions and 372 deletions
+27 -2
View File
@@ -284,8 +284,8 @@ BOOST_AUTO_TEST_CASE(catalog_reload_uses_cached_metadata_without_parsing_score_j
BOOST_REQUIRE(db.build());
// Complete cached metadata must not require parsing or retaining the score body.
db.query("INSERT INTO songs(id, title, composer, source_json, part, source_path, "
"key_signature, measure_count, total_pages, title_image) "
"VALUES('tune', 'Metadata Song', 'Composer', '{\"presentation\":{\"playback_pages\":[{},{},{}]}}', 'Lead', 'songs/tune.json', 'F', 3, 2, '0000000000000000000000000000000000000000000000000000000000000000')");
"key_signature, measure_count, total_pages, title_image, solos_enabled) "
"VALUES('tune', 'Metadata Song', 'Composer', '{\"presentation\":{\"playback_pages\":[{},{},{}]}}', 'Lead', 'songs/tune.json', 'F', 3, 2, '0000000000000000000000000000000000000000000000000000000000000000', 1)");
auto songs = db.rows("songs");
for (auto attempt = std::uint32_t{}; attempt < 2U; ++attempt) {
auto performance = db.performance();
@@ -303,6 +303,31 @@ BOOST_AUTO_TEST_CASE(catalog_reload_uses_cached_metadata_without_parsing_score_j
BOOST_TEST(song.error().code() == static_cast<std::int32_t>(vamp_zero::error_code::INVALID_ARGUMENT));
}
BOOST_AUTO_TEST_CASE(catalog_loads_solo_variants_and_rejects_incomplete_pairs) {
auto db = catalog_database{};
for (auto enabled : {true, false}) {
auto value = boost::json::parse(catalog_bundle("Variants", "C", "Acoustic"));
value.at("music").at("metadata").as_object()["solos_enabled"] = enabled;
value.at("music").at("staves").as_array().front().as_object()["arranged"] = true;
db.write(enabled ? "songs/acoustic.json" : "songs/acoustic_improv.json", boost::json::serialize(value));
}
BOOST_REQUIRE(db.build());
BOOST_REQUIRE(run_catalog_operation(vamp_zero::async_validate_database, db.config, true));
auto loaded = db.performance();
BOOST_REQUIRE(loaded);
BOOST_REQUIRE_EQUAL(loaded->parts.size(), 2U);
BOOST_TEST(loaded->parts[0].solos_enabled);
BOOST_TEST(!loaded->parts[1].solos_enabled);
auto score = db.score("acoustic_improv");
BOOST_REQUIRE(score);
BOOST_TEST(!boost::json::parse(score->source_json).at("music").at("metadata").at("solos_enabled").as_bool());
db.query("DELETE FROM songs WHERE solos_enabled = 0");
BOOST_TEST(!run_catalog_operation(vamp_zero::async_validate_database, db.config, true));
BOOST_REQUIRE(db.build());
db.query("ALTER TABLE songs DROP COLUMN solos_enabled");
BOOST_TEST(!run_catalog_operation(vamp_zero::async_validate_database, db.config, false));
}
BOOST_AUTO_TEST_CASE(catalog_validation_rejects_missing_incompatible_and_corrupt_files_without_repair) {
auto db = catalog_database{};
auto validate = [&] { return run_catalog_operation(vamp_zero::async_validate_database, db.config, true); };