From 328a793dd204a1dc4b9426e16123225ffe53b035 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Mon, 15 Jun 2026 19:37:06 +0200 Subject: [PATCH] Add PPBR compatibility fixtures --- docs/modernization/debt.md | 5 +++++ tests/assets/brush_package_tests.cpp | 21 ++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/docs/modernization/debt.md b/docs/modernization/debt.md index 8433cf10..4cbcc405 100644 --- a/docs/modernization/debt.md +++ b/docs/modernization/debt.md @@ -18,6 +18,11 @@ agent or engineer to remove them without reconstructing context from chat. ## Recent Reductions +- 2026-06-15: `DEBT-0049` was narrowed again. `pp_assets_brush_package_tests` + now names the currently accepted legacy PPBR version matrix explicitly: + canonical `0.1`, tolerated `0.2`, tolerated `1.1`, and rejected `1.2`. The + live parser still preserves the legacy tolerance until broader compatibility + fixtures prove strict canonical enforcement is safe. - 2026-06-15: `DEBT-0063` was narrowed again. Sidebar stroke/color/layer/grid popups, file/about/layer menu popups in `src/app_layout.cpp`, quick brush/color popup+ticker overlays in `src/legacy_quick_ui_services.cpp`, diff --git a/tests/assets/brush_package_tests.cpp b/tests/assets/brush_package_tests.cpp index 4bd1b280..9401e592 100644 --- a/tests/assets/brush_package_tests.cpp +++ b/tests/assets/brush_package_tests.cpp @@ -31,15 +31,18 @@ void parses_ppbr_header_and_legacy_version_tolerance(pp::tests::Harness& harness PP_EXPECT(harness, canonical.value().major == 0U); PP_EXPECT(harness, canonical.value().minor == 1U); - const auto minor_tolerated_bytes = ppbr_header(0, 2); - const auto major_tolerated_bytes = ppbr_header(1, 1); - const auto rejected_bytes = ppbr_header(1, 2); - const auto legacy_minor_tolerated = pp::assets::parse_ppbr_header(minor_tolerated_bytes); - const auto legacy_major_tolerated = pp::assets::parse_ppbr_header(major_tolerated_bytes); - const auto rejected = pp::assets::parse_ppbr_header(rejected_bytes); - PP_EXPECT(harness, legacy_minor_tolerated); - PP_EXPECT(harness, legacy_major_tolerated); - PP_EXPECT(harness, !rejected); + const auto tolerated_minor = pp::assets::parse_ppbr_header(ppbr_header(0, 2)); + const auto tolerated_major = pp::assets::parse_ppbr_header(ppbr_header(1, 1)); + const auto rejected_both = pp::assets::parse_ppbr_header(ppbr_header(1, 2)); + + PP_EXPECT(harness, tolerated_minor); + PP_EXPECT(harness, tolerated_minor.value().major == 0U); + PP_EXPECT(harness, tolerated_minor.value().minor == 2U); + PP_EXPECT(harness, tolerated_major); + PP_EXPECT(harness, tolerated_major.value().major == 1U); + PP_EXPECT(harness, tolerated_major.value().minor == 1U); + PP_EXPECT(harness, !rejected_both); + PP_EXPECT(harness, rejected_both.status().code == pp::foundation::StatusCode::invalid_argument); } void rejects_truncated_and_bad_magic_headers(pp::tests::Harness& harness)