19 lines
1.6 KiB
Python
19 lines
1.6 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 Phase10DL(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):cls.data=json.loads((ROOT/"manifests/retroarch/phase-1.0dl-official-shsrv-artifact-audit.json").read_text())
|
|
def test_exact_artifact(self):
|
|
a=self.data["artifact"];self.assertEqual((a["size"],a["sha256"]),(981872,"797827b50a93dbf327abdca45063d76ea24b17e561d927f397a0b73cadb2e2bd"));self.assertFalse(a["executed_on_host"] or a["sent_to_device"])
|
|
def test_rwe_blocker(self):self.assertTrue(self.data["static_elf"]["writable_executable_segment_present"]);self.assertIn("WRITABLE_EXECUTABLE_LOAD_SEGMENT",self.data["hard_blockers"])
|
|
def test_unbounded_blocker(self):
|
|
e=self.data["source_effects"];self.assertTrue(e["accept_loop_is_unbounded"]);self.assertFalse(e["automatic_self_termination_deadline"]);self.assertIn("UNBOUNDED_PROCESS_LIFETIME",self.data["hard_blockers"])
|
|
def test_no_authority(self):self.assertFalse(any(self.data["authorizations"].values()))
|
|
def test_rejected_and_pivoted(self):
|
|
d=self.data["decision"];self.assertTrue(d["official_artifact_provenance_bound"] and d["direct_bounded_raw_elfldr_snapshot_reader_design_allowed"]);self.assertFalse(d["official_artifact_execution_eligible"] or d["official_artifact_transfer_eligible"] or d["shsrv_route_selected"] or d["device_action_allowed"])
|
|
if __name__=="__main__":unittest.main(argv=[__file__])
|