fix(installer): ship all app build contexts and refresh GitWorkshop dependencies
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Exercise release payload checks with complete, incomplete and escaping contexts."""
|
||||
import importlib.util
|
||||
import shutil
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
REPO = Path(__file__).resolve().parents[2]
|
||||
spec = importlib.util.spec_from_file_location('contexts', REPO / 'scripts/check-app-build-contexts.py')
|
||||
contexts = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(contexts)
|
||||
|
||||
|
||||
class BuildPayloadTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.temp = tempfile.TemporaryDirectory()
|
||||
self.addCleanup(self.temp.cleanup)
|
||||
self.root = Path(self.temp.name)
|
||||
shutil.copytree(REPO / 'apps', self.root / 'apps')
|
||||
shutil.copytree(REPO / 'docker', self.root / 'docker')
|
||||
|
||||
def test_complete_payload(self):
|
||||
self.assertGreaterEqual(contexts.check(self.root), 6)
|
||||
|
||||
def test_iso_old_allowlist_rejected(self):
|
||||
shutil.rmtree(self.root / 'docker/archipelago-source')
|
||||
with self.assertRaisesRegex(ValueError, 'archipelago-source.*missing'):
|
||||
contexts.check(self.root)
|
||||
|
||||
def test_missing_dockerfile_rejected(self):
|
||||
(self.root / 'docker/archipelago-source/Dockerfile').unlink()
|
||||
with self.assertRaisesRegex(ValueError, 'archipelago-source.*Dockerfile'):
|
||||
contexts.check(self.root)
|
||||
|
||||
def test_context_symlink_cannot_escape_payload(self):
|
||||
target = self.root / 'docker/archipelago-source'
|
||||
shutil.rmtree(target)
|
||||
target.symlink_to(REPO / 'docker/archipelago-source', target_is_directory=True)
|
||||
with self.assertRaisesRegex(ValueError, 'out-of-payload'):
|
||||
contexts.check(self.root)
|
||||
|
||||
def test_empty_payload_rejected(self):
|
||||
shutil.rmtree(self.root / 'apps')
|
||||
with self.assertRaisesRegex(ValueError, 'No app manifests'):
|
||||
contexts.check(self.root)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user