diff options
| author | kraibse <33869366+kraibse@users.noreply.github.com> | 2026-11-02 17:23:47 +0100 |
|---|---|---|
| committer | kraibse <33869366+kraibse@users.noreply.github.com> | 2026-11-02 17:23:47 +0100 |
| commit | 8185d45d5d9d16bca860542f98d8a026e286dbf6 (patch) | |
| tree | 124af4061f67e71796518e5355425919968bf80a /src/tests/core/nup_writer.cpp | |
| parent | 4267169006fc4ed43f6d810e08426fb8058de9c0 (diff) | |
loader: read the display version from GameDataList.Product.NNN too
Donkey Kong Bananza names its resource size table without a version, so
no version was found for a loose dump. Its GameData/GameDataList.Product
.320.* files carry it (3.2.0), so read them as well and use the newest
tag from either source.
Assisted-by: Claude Sonnet 5.5 (wrote the GameDataList version lookup and its test)
Diffstat (limited to 'src/tests/core/nup_writer.cpp')
| -rw-r--r-- | src/tests/core/nup_writer.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/tests/core/nup_writer.cpp b/src/tests/core/nup_writer.cpp index bb0148139b..c0230d8694 100644 --- a/src/tests/core/nup_writer.cpp +++ b/src/tests/core/nup_writer.cpp @@ -421,3 +421,25 @@ TEST_CASE("NUP writes metadata overrides to the base and the newest update", "[n REQUIRE(packages[2].display_version == "9.8.7"); REQUIRE(packages[1].display_version == "1.1.0"); } + +TEST_CASE("NUP probes the version from the game data list tag", "[nup]") { + TempDir t; + const auto root = t.path / "Game"; + Put(root / "base/exefs/main", "main"); + Put(root / "base/exefs/main.npdm", Npdm(TitleId)); + Put(root / "base/romfs/GameData/GameDataList.Product.100.byml.zs", "x"); + Put(root / "base/romfs/System/Resource/ResourceSizeTable.Product.rsizetable.zs", "x"); + Put(root / "updates/458752/exefs/main", "main"); + Put(root / "updates/458752/exefs/main.npdm", Npdm(TitleId)); + Put(root / "updates/458752/romfs/GameData/GameDataList.Product.320.byml.zs", "x"); + Put(root / "updates/458752/romfs/GameData/GameDataList.Product.320.revision.txt", "1"); + + auto probed = FileSys::Nup::ProbeMetadata(root); + REQUIRE(probed.display_version == "3.2.0"); + REQUIRE(probed.version_source == "update 458752"); + + fs::remove_all(root / "updates"); + probed = FileSys::Nup::ProbeMetadata(root); + REQUIRE(probed.display_version == "1.0.0"); + REQUIRE(probed.version_source == "base"); +} |
