def test_build_build_volumes_several(tmpdir): s = Service() c = YamlConfig() foo1 = tmpdir.mkdir('foo1') foo2 = tmpdir.mkdir('foo2') foo3 = tmpdir.mkdir('foo3') c.process_volumes_build( s, {'volumes': { 'foo1': 'bar1', 'foo2': 'bar2', 'foo3': 'bar3', }}, str(tmpdir)) assert s.volumes == [{ 'local': str(foo1), 'remote': 'bar1' }, { 'local': str(foo2), 'remote': 'bar2' }, { 'local': str(foo3), 'remote': 'bar3' }]
def test_build_image_dockerfile(): s = Service() c = YamlConfig() c.process_image_build(s, {'build': 'foo/bar'}, '/base/path') assert isinstance(s.image_builder, DockerfileImageBuilder) assert s.image_builder.path == '/base/path/foo/bar'
def test_build_image_image(): s = Service() c = YamlConfig() c.process_image_build(s, {'image': 'foo/bar'}, '/base/path') assert isinstance(s.image_builder, PrebuiltImageBuilder) assert s.image_builder.image == 'foo/bar'
def test_build_inline_dockerfile(): s = Service() c = YamlConfig() c.process_image_build(s, {'dockerfile': 'FROM foo\nWORKDIR boo'}, '/base/path') assert isinstance(s.image_builder, InlineDockerfileImageBuilder) assert s.image_builder.files['Dockerfile'] == 'FROM foo\nWORKDIR boo'
def test_build_build_volumes_basepath(tmpdir): s = Service() c = YamlConfig() c.process_volumes_build(s, {'volumes': { '.': 'bar1', }}, str(tmpdir)) assert s.volumes == [ { 'local': str(tmpdir), 'remote': 'bar1' }, ]
def test_build_build_volumes_hackish_paths(path, result): s = Service() c = YamlConfig() c.process_volumes_build(s, {'volumes': { path: 'bar', }}, '/foo') assert s.volumes == [ { 'local': result, 'remote': 'bar' }, ]
def test_build_build_volumes_single_file(tmpdir): s = Service() c = YamlConfig() tmpdir.join('nginx.conf').write('foo') c.process_volumes_build(s, {'volumes': { 'nginx.conf': 'bar1', }}, str(tmpdir)) assert s.volumes == [ { 'local': str(tmpdir.join('nginx.conf')), 'remote': 'bar1' }, ]
def test_build_build_env_several(): s = Service() c = YamlConfig(env='prod') c.process_env_build( s, {'env': { 'foo1': 'bar1', 'foo2': 'bar2', 'foo3': 'bar3', }}, '/base/path') assert s.env == { 'env': 'prod', 'foo1': 'bar1', 'foo2': 'bar2', 'foo3': 'bar3', }
def test_build_build_env_none(): s = Service() c = YamlConfig(env='dev') c.process_env_build(s, {}, '/base/path') assert s.env == {'env': 'dev'}
def test_build_build_env_empty(): s = Service() c = YamlConfig() c.process_env_build(s, {'env': []}, '/base/path') assert s.env == {}
def test_build_command_empty_string(): s = Service() c = YamlConfig() c.process_command_build(s, {'cmd': ''}, '/base/path') assert s.command == None
def test_build_build_volumes_none(): s = Service() c = YamlConfig() c.process_volumes_build(s, {}, '/base/path') assert s.volumes == []
def test_build_build_volumes_empty(): s = Service() c = YamlConfig() c.process_volumes_build(s, {'volumes': []}, '/base/path') assert s.volumes == []
def test_build_command_ok(): s = Service() c = YamlConfig() c.process_command_build(s, {'cmd': 'ok --some args'}, '/base/path') assert s.command == 'ok --some args'
def test_build_image_dockerfile_no_path(): s = Service() c = YamlConfig() with pytest.raises(ConfigParseError): c.process_image_build(s, {'build': 'foo/bar'}, None)
def test_build_image_empty(): s = Service() c = YamlConfig() with pytest.raises(ValueError) as e: c.process_image_build(s, {}, '/base/path')
def test_build_command_none(): s = Service() c = YamlConfig() c.process_command_build(s, {'cmd': None}, '/base/path') assert s.command == None