def test_packager_image_without_matches(self, PackagerContext): context = PackagerContext.return_value packager = Packager(context, {}) packager.client = MagicMock() packager.client.images.return_value = [] with self.assertRaises(PackagerException): packager.image
def test_packager_build_image(self, PackagerContext): context = PackagerContext.return_value context.__str__.return_value = 'foo' context.path = '/tmp' packager = Packager(context, {}) packager.client.build = MagicMock() packager.build_image() packager.client.build.assert_called_with('/tmp', tag='rpmbuild_foo', stream=True)
def test_packager_build_package(self, PackagerContext): context = PackagerContext.return_value packager = Packager(context, {}) packager.client = MagicMock() packager.client.images.return_value = [{'Id': 0}] result_container, result_logs = packager.build_package() container = packager.client.create_container.return_value packager.client.create_container.assert_called_with(0) packager.client.logs.assert_called_with(container, stream=True) packager.client.start.assert_called_with(container) self.assertEqual(result_container, container)
def main(): args = docopt(__doc__, version='Docker Packager 0.0.1') if args['build']: context = PackagerContext( args['<image>'], defines=args['--define'], sources=args['--source'], sources_dir=args['--sources-dir'], spec=args['--spec'], macrofiles=args['--macrofile'], retrieve=args['--retrieve'], ) if args['rebuild']: context = PackagerContext(args['<image>'], srpm=args['--srpm']) try: with Packager(context, get_docker_config(args)) as p: for line in p.build_image(): if is_py26: parsed = json.loads(line.decode('UTF-8')) else: parsed = json.loads(line.decode(encoding='UTF-8')) if 'stream' not in parsed: print(parsed) else: print(parsed['stream'].strip()) container, logs = p.build_package() for line in logs: if is_py26: print(line.decode('UTF-8').strip()) else: print(line.decode(encoding='UTF-8').strip()) for path in p.export_package(args['--output']): print('Wrote: %s' % path) except PackagerException: print('Container build failed!', file=sys.stderr) sys.exit(1)
def test_packager_export_package(self, PackagerContext): context = PackagerContext.return_value packager = Packager(context, {}) packager.container = {'Id': 0} packager.client = MagicMock() packager.client.copy.return_value = self.docker_file packager.client.diff.return_value = [ {'Path': '/foo'}, {'Path': '/rpmbuild/SOURCES/foo.tar.gz'}, {'Path': '/rpmbuild/SPECS/foo.spec'}, {'Path': '/rpmbuild/foo.rpm'}, {'Path': '/rpmbuild/foo.src.rpm'}, ] with patch('rpmbuild.open', self.open, create=True): packager.export_package('/tmp') packager.client.copy.assert_any_call(0, '/rpmbuild/foo.rpm') packager.client.copy.assert_any_call(0, '/rpmbuild/foo.src.rpm') self.open.assert_any_call('/tmp/foo.rpm', 'wb') self.open.assert_any_call('/tmp/foo.src.rpm', 'wb') exported = self.open() exported.write.assert_called_with(self.docker_file_content)
def test_packager_with_statement(self, PackagerContext): context = PackagerContext.return_value with Packager(context, {}): context.setup.assert_called_with() context.teardown.assert_called_with()
def test_packager_string(self, PackagerContext): context = PackagerContext.return_value context.image = 'foo' packager = Packager(context, {}) self.assertEqual(str(packager), 'foo')
def test_packager_image_without_matches(self, PackagerContext): context = PackagerContext.return_value packager = Packager(context, {}) packager.client = MagicMock() packager.client.images.return_value = [] self.assertRaises(PackagerException, lambda: packager.image)
def test_packager_image_with_matches(self, PackagerContext): context = PackagerContext.return_value packager = Packager(context, {}) packager.client = MagicMock() packager.client.images.return_value = ['foo', 'bar'] self.assertEqual(packager.image, 'foo')
def test_packager_image_name(self, PackagerContext): context = PackagerContext.return_value context.__str__.return_value = 'foo' packager = Packager(context, {}) self.assertEqual(packager.image_name, 'rpmbuild_foo')
def test_packager_init(self, PackagerContext): context = PackagerContext.return_value Packager(context, {'foo': 'bar'}) self.docker_client.assert_called_with(**{'foo': 'bar'})