mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-28 00:53:45 +08:00
Declare logger metadata test build output
This commit is contained in:
+1
-1
@@ -1 +1 @@
|
||||
{"protected_inventory_sha256": "434ce73a81cd90850d90ab823a722d421bdb4c070e8d32beaaef0d7bf48c2d76", "schema_version": 1}
|
||||
{"protected_inventory_sha256": "cfaabf7b3685cfb3b93666605271972ef753096ae8c1c787a7ae5a42c627fbe2", "schema_version": 1}
|
||||
|
||||
@@ -167,6 +167,10 @@
|
||||
"recipe": "openpilot/system/loggerd/SConscript",
|
||||
"required_tracked": true
|
||||
},
|
||||
"openpilot/system/loggerd/tests/test_model_metadata": {
|
||||
"recipe": "openpilot/system/loggerd/SConscript",
|
||||
"required_tracked": false
|
||||
},
|
||||
"openpilot/tools/replay/libmedia_mux.so": {
|
||||
"recipe": "openpilot/tools/replay/SConscript",
|
||||
"required_tracked": true
|
||||
|
||||
@@ -59,6 +59,44 @@ class BuildIdentityTests(unittest.TestCase):
|
||||
path.write_bytes(b'unregistered artifact')
|
||||
self.assertFalse(helper.same_build_inputs(first, helper.build_identity(self.root)))
|
||||
|
||||
def test_logger_metadata_test_is_an_exact_optional_build_output(self):
|
||||
name = 'openpilot/system/loggerd/tests/test_model_metadata'
|
||||
recipe = 'openpilot/system/loggerd/SConscript'
|
||||
self.assertEqual(self.inventory.get(name), {'recipe': recipe, 'required_tracked': False})
|
||||
output = self.root / name
|
||||
source = self.root / (name + '.cc')
|
||||
source.write_text('native test source\n')
|
||||
subprocess.run([*GIT, 'rm', '--cached', name], cwd=self.root, check=True, capture_output=True)
|
||||
subprocess.run([*GIT, 'add', str(source.relative_to(self.root))], cwd=self.root, check=True)
|
||||
subprocess.run([*GIT, '-c', 'user.name=Test', '-c', 'user.email=test@example.com', 'commit', '-qm', 'Untracked native test output'],
|
||||
cwd=self.root, check=True)
|
||||
output.chmod(0o755)
|
||||
built = helper.build_identity(self.root)
|
||||
self.assertNotIn(name, built['inputs']['untracked'])
|
||||
self.assertEqual(built['declared_outputs'][name], helper.file_record(output))
|
||||
self.assertIn(name + '.cc', built['inputs']['tracked_inputs'])
|
||||
self.assertIn(recipe, built['inputs']['recipes'])
|
||||
output.unlink()
|
||||
checkout = helper.build_identity(self.root)
|
||||
self.assertIsNone(checkout['declared_outputs'][name])
|
||||
self.assertTrue(helper.same_build_inputs(built, checkout))
|
||||
output.write_bytes(b'independently rebuilt native test')
|
||||
rebuilt = helper.build_identity(self.root)
|
||||
self.assertTrue(helper.same_build_inputs(built, rebuilt))
|
||||
self.assertNotEqual(built['declared_outputs'][name]['sha256'], rebuilt['declared_outputs'][name]['sha256'])
|
||||
self.assertNotEqual(built, rebuilt) # Per-job before/after still fails closed.
|
||||
for path in (source, self.root / recipe):
|
||||
original = path.read_bytes()
|
||||
path.write_bytes(b'changed input')
|
||||
self.assertFalse(helper.same_build_inputs(built, helper.build_identity(self.root)))
|
||||
path.write_bytes(original)
|
||||
output.with_name(output.name + '_other').write_bytes(b'undeclared neighboring output')
|
||||
self.assertFalse(helper.same_build_inputs(built, helper.build_identity(self.root)))
|
||||
forged = copy.deepcopy(built)
|
||||
del forged['declared_outputs'][name]
|
||||
with self.assertRaises(ValueError):
|
||||
helper.same_build_inputs(built, forged)
|
||||
|
||||
def test_missing_declared_artifact_is_denied(self):
|
||||
(self.root / 'msgq_repo/msgq/ipc_pyx.so').unlink()
|
||||
with self.assertRaises(ValueError):
|
||||
|
||||
Reference in New Issue
Block a user