Capture current mission, AI, map and administration development

Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
2026-10-13 22:52:53 +02:00
parent a951a96edc
commit 6a667d8deb
8104 changed files with 2124945 additions and 2061 deletions
+26
View File
@@ -76,6 +76,21 @@ class SourceBundleTests(unittest.TestCase):
self.assertNotEqual(first, second)
self.assertNotEqual(manifest['files'][name], updated['files'][name])
def test_atlas_model_requires_source_and_imported_resource(self):
bundle.build(self.root)
(self.root / bundle.ATLAS_ROOT / 'ERR_Atlas.fbx').unlink()
with self.assertRaisesRegex(ValueError, 'atlas model lacks source/runtime/metadata'):
bundle.build(self.root)
def test_atlas_binary_admission_does_not_allow_unrelated_models(self):
folder = self.root / bundle.ATLAS_ROOT
(folder / 'ERR_Atlas.xob').write_bytes(b'not a compiled mesh')
with self.assertRaisesRegex(ValueError, 'invalid atlas model signature'):
bundle.build(self.root)
(folder / 'Unreviewed.xob').write_bytes(b'FORMxxxxXOB9')
with self.assertRaisesRegex(ValueError, 'unreviewed addon source/resource format'):
bundle.build(self.root)
def test_identity_and_external_dependency_refused(self):
name = 'addons/core/addon.gproj'
self.edit(name, '2528466DE220D91C', '1111111111111111')
@@ -84,6 +99,17 @@ class SourceBundleTests(unittest.TestCase):
self.edit(name, '58D0FB3206B6F859', '5F16D7E4A1CBE075')
with self.assertRaisesRegex(ValueError, 'identity/dependency'): bundle.build(self.root)
def test_escaped_audio_graph_references_are_checked(self):
name = 'addons/core/Scripts/Game/ERR/10_AI/ERR_SoldierSpeechAudio.c'
bundle.build(self.root)
self.edit(name, 'D4A1555B02A77EDA', '1111111111111111')
with self.assertRaisesRegex(ValueError, 'unresolved or nonvanilla.*Vehicles_Occlusion'):
bundle.build(self.root)
self.edit(name, '1111111111111111', 'D4A1555B02A77EDA')
self.edit(name, 'Vehicles_Occlusion_OutsideVehicleSource.sig', 'Missing.sig')
with self.assertRaisesRegex(ValueError, 'unresolved or nonvanilla.*Missing.sig'):
bundle.build(self.root)
def test_missing_project_refused(self):
(self.root / 'addons/core/addon.gproj').unlink()
with self.assertRaisesRegex(ValueError, 'identity/dependency'): bundle.build(self.root)