[verified] Publish ReelBox source under GPLv3

This commit is contained in:
Hermes committed 2026-11-12 23:41:13 +00:00
commit db2b505ca3
445 files changed
+105274

No files matched your search

+86
View File
@@ -0,0 +1,86 @@
#!/usr/bin/env python3
"""Run all Flutter test files, including real-worker host registration.
The multipart file needs a Linux path-provider registrant in spawned isolates.
Run it in its own invocation, not by skipping its cases in the normal suite.
All Flutter tooling shares the project's existing lock. This is host evidence,
not Android hardware or process-kill/restart verification.
"""
from __future__ import annotations
import argparse
import fcntl
import json
from pathlib import Path
import re
import shutil
import subprocess
import sys
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--flutter', default=shutil.which('flutter'))
parser.add_argument('--output-dir', type=Path)
args = parser.parse_args()
if not args.flutter:
parser.error('Flutter was not found; provide --flutter /path/to/flutter')
root = Path(__file__).resolve().parents[1]
output = (args.output_dir or root / 'build' / 'host-verification').resolve()
output.mkdir(parents=True, exist_ok=True)
files = sorted(p.relative_to(root).as_posix() for p in (root / 'test').rglob('*_test.dart'))
multipart = 'test/download_multipart_http_test.dart'
if multipart not in files:
parser.error('Required real-worker multipart test file is missing')
ordinary = [p for p in files if p != multipart]
common = [args.flutter, 'test', '--no-pub', '--concurrency=1', '--reporter=expanded', '--timeout=90s']
stages = [
('analysis', [args.flutter, 'analyze'], []),
('ordinary', common + ordinary, ordinary),
('multipart', common + ['--dart-define=flutter.dart_plugin_registrant=' + (root / multipart).as_uri(), multipart], [multipart]),
]
report = {
'scope': 'all Flutter test files; real multipart HTTP/workers run separately with required host registration',
'android_hardware_verified': False,
'expected_test_files': files,
'covered_test_files': [],
'stages': [],
'passed': False,
}
result = 0
with (root / '.tooling.lock').open('a') as lock:
fcntl.flock(lock, fcntl.LOCK_EX)
for name, command, covered in stages:
log = output / (name + '.log')
print('Running ' + name + ' -> ' + str(log), flush=True)
try:
with log.open('w') as stream:
code = subprocess.run(command, cwd=root, stdout=stream, stderr=subprocess.STDOUT, timeout=1200, check=False).returncode
except subprocess.TimeoutExpired:
code = 124
text = log.read_text(errors='replace')
counts = re.findall(r'\+(\d+)(?: -\d+)?: All tests passed!', text)
stage = {'name': name, 'command': command, 'exit_code': code, 'log': str(log)}
if covered:
stage['passed_test_count'] = int(counts[-1]) if counts else None
if code == 0 and not counts:
code = 1
stage['exit_code'] = code
stage['verification_error'] = 'Missing successful nonempty test summary'
report['stages'].append(stage)
if code == 0:
report['covered_test_files'].extend(covered)
else:
result = code
break
report['passed'] = result == 0 and sorted(report['covered_test_files']) == files
if report['passed']:
report['passed_test_count'] = sum(stage.get('passed_test_count', 0) for stage in report['stages'])
(output / 'verification.json').write_text(json.dumps(report, indent=2) + '\n')
print(json.dumps({key: report[key] for key in ['passed', 'expected_test_files', 'covered_test_files']}), flush=True)
print('Verification report: ' + str(output / 'verification.json'), flush=True)
return 0 if report['passed'] else (result or 1)
if __name__ == '__main__':
sys.exit(main())