spaceship/tests/test_definitions_intact.gd.uid

1 line
20 B
Text
Raw Normal View History

Guard the definition catalog against silent .tres property loss Opening the project in the Godot editor re-saves .tres files, and its writer DROPS properties it considers default-valued. An empty-looking PackedStringArray is the usual casualty, and it has now cost this project twice - both times silently, and both times the damage surfaced somewhere else entirely: GasBurnerBuildingDefinition lost `capabilities` and `collected_outputs`, which took the burner's whole conversion with it. InterceptorVesselDefinition lost `capabilities`, `hull_points`, `build_time`, `icon` and `glow_color` - so the starting vessel had no cargo hold, and a full suite came back with ten unrelated tests broken because nothing anywhere could mine. Neither raised an error. The resource still loaded; it was just quietly less than it had been. test_definitions_intact asserts the SHAPE of the catalog rather than any one value: every vessel has a name, stats, a hull and its components; a hold and a "cargo" capability imply each other; every building has a description, a price, hit points, its build-menu wiring and at least one capability; and a converter keeps the fields its conversion needs. Whatever the editor eats now fails here, next to the thing that was eaten. Verified against both real incidents by reproducing them: deleting the interceptor's capabilities line fails with "cargo_capacity 20.0 but capabilities []", and deleting the burner's collected_outputs fails with "converts but lists no collected outputs". The first draft of that last check looked for the conversion fields on the DEFINITION, where they are not - they live on its logistics sub-resource - so it answered null and never fired. It passed while the burner sat there broken, which is the same class of quiet as the bug it is guarding. Also restores what the editor took from the gas burner this time round.
2026-08-29 14:38:51 +02:00
uid://d3ury2lcjwer7