+15
-10
@@ -1,3 +1,8 @@
|
||||
import modulus.conan
|
||||
import modulus.build_context
|
||||
import modulus.container
|
||||
import modulus.packaging
|
||||
import modulus.process
|
||||
import ast
|
||||
import json
|
||||
import os
|
||||
@@ -31,9 +36,9 @@ class BootstrapTests(unittest.TestCase):
|
||||
def test_read_environments_strip_all_credential_forms(self):
|
||||
credentials = dict.fromkeys(('CONAN_USER', 'CONAN_TOKEN', 'CONAN_LOGIN_USERNAME', 'CONAN_PASSWORD', 'CONAN_LOGIN_USERNAME_KHODO', 'CONAN_PASSWORD_KHODO'), 'secret')
|
||||
root = Path('/tmp/project')
|
||||
context = modulus.cli.build_context(root, modulus.config.normalize({'package': {'name': 'sample'}}))
|
||||
context = modulus.build_context.build_context(root, modulus.config.normalize({'package': {'name': 'sample'}}))
|
||||
with patch.dict(os.environ, credentials):
|
||||
for env in (modulus.bootstrap.fetch_env(root), modulus.cli.subprocess_environment(context, ['conan', 'install'])):
|
||||
for env in (modulus.bootstrap.fetch_env(root), modulus.process.subprocess_environment(context, ['conan', 'install'])):
|
||||
self.assertFalse(set(credentials) & env.keys())
|
||||
self.assertEqual(env['CONAN_NON_INTERACTIVE'], '1')
|
||||
self.assertEqual(env['CONAN_HOME'], str(root / 'build/build_common/conan_cache'))
|
||||
@@ -100,26 +105,26 @@ class BootstrapTests(unittest.TestCase):
|
||||
modulus.export.sync_project(root, package)
|
||||
self.assertEqual(runtime.read_text(), 'old runtime')
|
||||
def test_upload_exception_still_logs_out(self):
|
||||
context = modulus.cli.build_context(Path('/tmp/project'), modulus.config.normalize({'package': {'name': 'sample'}}))
|
||||
with patch.object(modulus.cli, 'configure_conan_remote', return_value=0), patch.object(modulus.cli, 'upload_all_packages', side_effect=RuntimeError('upload failed')), patch.object(modulus.cli, 'run', return_value=0) as run:
|
||||
context = modulus.build_context.build_context(Path('/tmp/project'), modulus.config.normalize({'package': {'name': 'sample'}}))
|
||||
with patch.object(modulus.conan, 'configure_conan_remote', return_value=0), patch.object(modulus.packaging, 'upload_all_packages', side_effect=RuntimeError('upload failed')), patch.object(modulus.process, 'run', return_value=0) as run:
|
||||
with self.assertRaisesRegex(RuntimeError, 'upload failed'):
|
||||
modulus.cli.upload_packages(context)
|
||||
modulus.packaging.upload_packages(context)
|
||||
run.assert_called_once_with(context, ['conan', 'remote', 'logout', 'khodo'])
|
||||
def test_socket_is_scoped_and_docker_inputs_change_fingerprint(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
config = modulus.config.normalize({'package': {'name': 'sample'}, 'tooling': {'docker': {'dockerfile': 'package/build/Dockerfile', 'inputs': ['requirements.txt'], 'socket_commands': ['build', 'package']}}})
|
||||
context = modulus.cli.build_context(root, config)
|
||||
context = modulus.build_context.build_context(root, config)
|
||||
context.dockerfile.parent.mkdir(parents=True)
|
||||
context.dockerfile.write_text('FROM scratch')
|
||||
context.docker_inputs[0].parent.mkdir(parents=True)
|
||||
for path in context.docker_inputs:
|
||||
path.write_text('old')
|
||||
before = modulus.clangd.recipe_digest(context)
|
||||
before = modulus.container.recipe_digest(context)
|
||||
context.docker_inputs[-1].write_text('new')
|
||||
self.assertNotEqual(before, modulus.clangd.recipe_digest(context))
|
||||
self.assertNotEqual(before, modulus.container.recipe_digest(context))
|
||||
with patch.object(Path, 'is_socket', return_value=True), patch.object(Path, 'stat') as stat:
|
||||
stat.return_value.st_gid = 123
|
||||
for command in ('configure', 'test', 'lsp', 'clangd', 'format'):
|
||||
self.assertEqual(modulus.cli.docker_socket_args(context, command), [])
|
||||
self.assertIn('/var/run/docker.sock:/var/run/docker.sock', modulus.cli.docker_socket_args(context, 'package'))
|
||||
self.assertEqual(modulus.container.docker_socket_args(context, command), [])
|
||||
self.assertIn('/var/run/docker.sock:/var/run/docker.sock', modulus.container.docker_socket_args(context, 'package'))
|
||||
|
||||
Reference in New Issue
Block a user