30 lines
1.5 KiB
Python
30 lines
1.5 KiB
Python
import pathlib
|
|
import tempfile
|
|
import unittest
|
|
import unittest.mock
|
|
|
|
import modulus.artifacts
|
|
import modulus.cli
|
|
import modulus.config
|
|
import modulus.python
|
|
|
|
class PackagePublishingTests(unittest.TestCase):
|
|
def test_configured_packager_matches_publisher(self):
|
|
root = pathlib.Path(__file__).resolve().parents[1]
|
|
with tempfile.TemporaryDirectory() as temporary:
|
|
directory = pathlib.Path(temporary)
|
|
context = modulus.cli.build_context(directory, modulus.config.load_repo_config(root))
|
|
def fake_build(context, command, **kwargs):
|
|
if command[:2] == ['cmake', '--install']:
|
|
stage = pathlib.Path(command[2]).parent / 'stage'
|
|
(stage / 'manifest.json').write_text('{}\n')
|
|
return 0
|
|
with unittest.mock.patch.object(modulus.cli, 'in_docker', return_value=True), \
|
|
unittest.mock.patch.object(modulus.cli, 'run', side_effect=fake_build), \
|
|
unittest.mock.patch.object(modulus.python, 'interpreter', return_value=pathlib.Path('/usr/bin/python3')), \
|
|
unittest.mock.patch.object(modulus.artifacts, 'main') as publish:
|
|
self.assertEqual(modulus.cli.package_artifacts(context, ['--no-remote']), 0)
|
|
publish.assert_not_called()
|
|
artifacts = modulus.artifacts.discover_artifacts(directory / 'build/packages', context.package['name'], context.artifact['targets'])
|
|
self.assertEqual([p.name for p in artifacts], ['product_vamp_arm_64_gcc12_release.tar.gz', 'product_vamp_arm_64_gcc12_release.tar.gz.sha256'])
|