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'])