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:
+14
@@ -0,0 +1,14 @@
|
||||
PASS: shared config transaction rejects client writes, preserves first-save/prior/fallback state across open, write, backup, partial-copy, readback and mismatch failures
|
||||
PASS: actual Save/Commit preserves semantically valid backup across unrelated menu edits and repairs; unknown fields/default sections retained; actual terrain parser; other parsers, catalog and disk doubled
|
||||
Traceback (most recent call last):
|
||||
File "/tmp/erri-crash-root-1852/run-frozen-suite.py", line 33, in <module>
|
||||
try:module.check()
|
||||
~~~~~~~~~~~~^^
|
||||
File "/tmp/erri-crash-root-1852/frozen-source/tools/check.py", line 11, in check
|
||||
subprocess.run([sys.executable,str(ROOT/'tests/test_profile_config.py')],check=True)
|
||||
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/tmp/erri-crash-root-1852/run-frozen-suite.py", line 28, in track
|
||||
for name in json.loads((B/"historical-fixture-inputs.json").read_text()): result[name]=sha(R/name)
|
||||
~~~~~~^^^^^^
|
||||
TypeError: 'CompletedProcess' object does not support item assignment
|
||||
Suite exit 1 programs 1 unchanged True
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
from pathlib import Path
|
||||
import sys,hashlib,json,subprocess,importlib.util,time,traceback,os
|
||||
R=Path('/tmp/erri-crash-root-1852/frozen-source');B=Path('/tmp/erri-crash-root-1852');sys.path.insert(0,str(R/'tools'))
|
||||
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest()
|
||||
from source_manifest import addon_manifest
|
||||
def capture_inputs():
|
||||
result=addon_manifest(R)
|
||||
for folder in ['tests','tools','terrain-profiles','terrain-adapters','terrain-integrations']:
|
||||
result.update({str(p.relative_to(R)):sha(p) for p in (R/folder).rglob('*') if p.is_file() and '__pycache__' not in p.parts and p.suffix != '.pyc'})
|
||||
result.update({str(p.relative_to(R)):sha(p) for p in (R/'docs').iterdir() if p.is_file()})
|
||||
for name in ['README.md','.gitignore']: result[name]=sha(R/name)
|
||||
for name in json.loads((B/"historical-fixture-inputs.json").read_text()): result[name]=sha(R/name)
|
||||
return result
|
||||
inputs=capture_inputs()
|
||||
(B/'suite-inputs.json').write_text(json.dumps(inputs,indent=2)+'\n')
|
||||
removed_overrides={key:os.environ.pop(key) for key in list(os.environ) if key.startswith('ERR_')}
|
||||
os.environ['ERR_REPO']=str(R) # Pin legacy test roots to this exact frozen tree.
|
||||
original=subprocess.run;programs=[]
|
||||
def track(args,*a,**kw):
|
||||
entry=None
|
||||
if isinstance(args,list) and len(args)>1 and str(args[1]).startswith(str(R/'tests')+'/'):
|
||||
entry={'path':str(Path(args[1]).relative_to(R)),'exit':None};programs.append(entry)
|
||||
try:result=original(args,*a,**kw)
|
||||
except subprocess.CalledProcessError as error:
|
||||
if entry is not None:entry['exit']=error.returncode
|
||||
raise
|
||||
if entry is not None:entry['exit']=result.returncode
|
||||
for name in json.loads((B/"historical-fixture-inputs.json").read_text()): result[name]=sha(R/name)
|
||||
return result
|
||||
subprocess.run=track
|
||||
spec=importlib.util.spec_from_file_location('repository_check',R/'tools/check.py');module=importlib.util.module_from_spec(spec);spec.loader.exec_module(module)
|
||||
code=0;started=time.monotonic()
|
||||
try:module.check()
|
||||
except Exception:traceback.print_exc();code=1
|
||||
unchanged=capture_inputs()==inputs;code=code or int(not unchanged)
|
||||
(B/'suite-result.json').write_text(json.dumps({'exit':code,'seconds':round(time.monotonic()-started,2),'inputs_unchanged':unchanged,'removed_override_names':sorted(removed_overrides),'canonical_test_root':str(R),'explicit_ERR_REPO':str(R),'regression_programs':len(programs),'programs':programs},indent=2)+'\n')
|
||||
print('Suite exit',code,'programs',len(programs),'unchanged',unchanged)
|
||||
raise SystemExit(code)
|
||||
+1018
File diff suppressed because it is too large
Load Diff
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"exit": 1,
|
||||
"seconds": 1.26,
|
||||
"inputs_unchanged": true,
|
||||
"removed_override_names": [],
|
||||
"canonical_test_root": "/tmp/erri-crash-root-1852/frozen-source",
|
||||
"explicit_ERR_REPO": "/tmp/erri-crash-root-1852/frozen-source",
|
||||
"regression_programs": 1,
|
||||
"programs": [
|
||||
{
|
||||
"path": "tests/test_profile_config.py",
|
||||
"exit": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user