This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
from __future__ import annotations
|
||||
import argparse,json,sys,tempfile,unittest
|
||||
from pathlib import Path
|
||||
P=argparse.ArgumentParser();P.add_argument("--root",type=Path,required=True);R=P.parse_args().root;sys.path.insert(0,str(R/"tools"))
|
||||
import phase10do_one_shot_snapshot_runner as runner # noqa:E402
|
||||
|
||||
def record(base:Path):
|
||||
return {"active":True,"run_id":"DM_TEST","target":"192.0.2.1","port":9021,"artifact_size":runner.ARTIFACT_SIZE,"artifact_sha256":runner.ARTIFACT_SHA256,"snapshot_path":str((base/"snapshot.db").resolve()),"receipt_path":str((base/"consumed.json").resolve()),"not_before":99.0,"not_after":101.0,"one_connection":True,"one_transfer":True,"one_execution":True,"result_receive":True,"target_file_read":True,"device_write":False,"installation":False,"autoload":False,"retry":False,"reconnect":False}
|
||||
class Tests(unittest.TestCase):
|
||||
def test_inactive_tracked_manifest_rejected(self):
|
||||
manifest=json.loads((R/"manifests/retroarch/phase-1.0do-inactive-snapshot-runner.json").read_text())
|
||||
with self.assertRaises(runner.RunnerError):runner.validate_records(manifest,manifest,100.0)
|
||||
def test_exact_active_pair_validates(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
value=record(Path(d));self.assertEqual(runner.validate_records(value,dict(value),100.0)["run_id"],"DM_TEST")
|
||||
def test_mismatch_and_forbidden_authority_rejected(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
value=record(Path(d));other=dict(value);other["run_id"]="OTHER"
|
||||
with self.assertRaises(runner.RunnerError):runner.validate_records(value,other,100.0)
|
||||
value["device_write"]=True
|
||||
with self.assertRaises(runner.RunnerError):runner.validate_records(value,value,100.0)
|
||||
def test_receipt_is_exclusive(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
value=record(Path(d));runner._consume(value)
|
||||
with self.assertRaises(FileExistsError):runner._consume(value)
|
||||
if __name__=="__main__":unittest.main(argv=[__file__])
|
||||
Reference in New Issue
Block a user