47 lines
2.0 KiB
Python
47 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
from __future__ import annotations
|
|
import argparse, json, unittest
|
|
from pathlib import Path
|
|
|
|
P = argparse.ArgumentParser()
|
|
P.add_argument("--root", type=Path, required=True)
|
|
ROOT = P.parse_args().root
|
|
|
|
|
|
class Phase10DZ(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.data = json.loads(
|
|
(ROOT / "manifests/retroarch/phase-1.0dz-direct-launcher-decision.json").read_text()
|
|
)
|
|
|
|
def test_observation_is_not_overpromoted(self):
|
|
evidence = self.data["consumed_evidence"]
|
|
self.assertTrue(evidence["fake00000_appinfo_present"])
|
|
self.assertTrue(evidence["operator_observed_launcher_browser_reached"])
|
|
self.assertFalse(evidence["port_8080_refusal_proves_general_listener_absence"])
|
|
self.assertFalse(evidence["videoout_ownership_proven"])
|
|
|
|
def test_minimal_route_excludes_websrv_surface(self):
|
|
route = self.data["route_decision"]
|
|
self.assertFalse(route["loopback_web_server_required"])
|
|
self.assertFalse(route["official_websrv_acceptable"])
|
|
self.assertTrue(route["direct_embedded_hash_bound_retroarch_route_selected"])
|
|
self.assertFalse(route["generic_endpoints_allowed"] or route["persistent_fake_app_setup_allowed"])
|
|
self.assertFalse(route["implicit_bigapp_termination_allowed"] or route["retry_allowed"] or route["unbounded_wait_allowed"])
|
|
|
|
def test_missing_abi_and_cleanup_block_target(self):
|
|
self.assertFalse(any(self.data["remaining_blockers"].values()))
|
|
self.assertFalse(self.data["decision"]["target_source_allowed"])
|
|
self.assertFalse(self.data["decision"]["target_build_allowed"])
|
|
|
|
def test_no_artifact_or_device_authority(self):
|
|
self.assertFalse(any(self.data["artifact"].values()))
|
|
self.assertFalse(any(self.data["authorization"].values()))
|
|
self.assertFalse(self.data["decision"]["device_action_allowed"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main(argv=[__file__])
|