P23-03: 生活の観察
This commit is contained in:
@@ -8,6 +8,7 @@ import contextlib
|
||||
import io
|
||||
import json
|
||||
import hashlib
|
||||
import gzip
|
||||
import struct
|
||||
import zlib
|
||||
import tempfile
|
||||
@@ -2294,14 +2295,29 @@ class FrameReviewTests(unittest.TestCase):
|
||||
|
||||
|
||||
class Repair36LabelTests(unittest.TestCase):
|
||||
inputs = check.ROOT.parent / '.runtime/P23-03/build/audit-support/badge-repair36-exact-inputs'
|
||||
inputs = check.ROOT / 'tests/fixtures/p23-03/recorded-badge-negative.json.gz'
|
||||
|
||||
def _recorded_payloads(self):
|
||||
bundle = json.loads(gzip.decompress(self.inputs.read_bytes()))
|
||||
expected = {
|
||||
'request': (655285, 'f9cd2d5ff9dd63d9cf7ae4a295ccef8eea16f75ac784696dc40906703731e1d8'),
|
||||
'state': (1867011, '724d8fe362ba3e05eddd83c4b7c54da101899df6cd91ae88250feea3d4feff82'),
|
||||
'manifest': (75726, 'a98782ec1263aba400d542862dd084d2f1dd4cf7a0851cf7f0679867e545a338'),
|
||||
}
|
||||
payloads = {}
|
||||
for name, (length, digest) in expected.items():
|
||||
payload = bundle['files'][name]['raw_utf8'].encode('utf-8')
|
||||
check.require(len(payload) == length and hashlib.sha256(payload).hexdigest() == digest,
|
||||
'recorded fixture payload mismatch: ' + name)
|
||||
payloads[name] = payload
|
||||
return payloads
|
||||
|
||||
def recorded(self):
|
||||
request = json.loads((self.inputs/'bad-native-request/request.json').read_bytes())
|
||||
stream = self.inputs.parent.parent/'p23-normal-os-26f-r17/os-pair/B/writer-stream'
|
||||
capture = next(json.loads(line) for line in (stream/'manifest.jsonl').read_text().splitlines()
|
||||
if json.loads(line).get('label') == 'writer-request-0021')
|
||||
return request, check.read_object(stream, capture['state']), check.decode(request['report'])
|
||||
payloads = self._recorded_payloads()
|
||||
request = json.loads(payloads['request'])
|
||||
typed_state = json.loads(payloads['state'])
|
||||
check.require(typed_state.get('type') == 'Dictionary', 'whole dictionary required')
|
||||
return request, check.decode(typed_state), check.decode(request['report'])
|
||||
|
||||
def resolved(self, report):
|
||||
result = copy.deepcopy(report)
|
||||
@@ -2321,7 +2337,7 @@ class Repair36LabelTests(unittest.TestCase):
|
||||
check.compare_badges(state, report)
|
||||
check.compare_actor_geometry(state, report)
|
||||
queue = next(b for b in report['landing_badges'] if b['visible_count'] == 0)
|
||||
manifest = json.loads((self.inputs/'bad-native-request/review-image-0/manifest.json').read_bytes())
|
||||
manifest = json.loads(self._recorded_payloads()['manifest'])
|
||||
original = manifest['rows'][5]
|
||||
self.assertEqual(queue['anchor'], original['local_rect'][:2])
|
||||
self.assertEqual(original['screenshot_rect'][:2], [642,469])
|
||||
|
||||
Reference in New Issue
Block a user