From: Oto Šťáva Date: Wed, 1 Jun 2022 11:34:12 +0000 (+0200) Subject: tests/packaging: print build_log of failed commands X-Git-Tag: v5.5.1~5^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75efe791eebf8325d5a4f0fd82a1c5ea786d5f87;p=thirdparty%2Fknot-resolver.git tests/packaging: print build_log of failed commands --- diff --git a/tests/packaging/test_packaging.py b/tests/packaging/test_packaging.py index affa49406..1a9bc4139 100644 --- a/tests/packaging/test_packaging.py +++ b/tests/packaging/test_packaging.py @@ -150,15 +150,33 @@ class DockerImages(ABC): dockerf.close() + def build_printing_errors(self, path, dockerfile, network_mode, tag, rm): + try: + return client.images.build(path=path, dockerfile=dockerfile, + network_mode=network_mode, tag=tag, rm=rm) + except docker.errors.BuildError as e: + iterable = iter(e.build_log) + while True: + try: + item = next(iterable) + if item['stream']: + for l in item['stream'].splitlines(): + stripped = l.strip() + if stripped: + logging.error(stripped) + except StopIteration: + break + raise e + def build(self, tmpdir, tag="", from_image=None): self.__genDockerFile(tmpdir, from_image=from_image) logger.debug('tmpdir={}'.format(tmpdir)) logger.debug('datadir={}'.format(pytest.KR_ROOT_DIR)) logger.debug('tag={}'.format(tag)) - image = client.images.build(path=str(pytest.KR_ROOT_DIR), - dockerfile=os.path.join(tmpdir, 'Dockerfile-build'), - network_mode='host', tag=tag, rm=True) + image = self.build_printing_errors(path=str(pytest.KR_ROOT_DIR), + dockerfile=os.path.join(tmpdir, 'Dockerfile-build'), + network_mode='host', tag=tag, rm=True) logger.info('"Build image" ID={} created'.format(image[0].short_id)) self.build_id = image[0].short_id return self.build_id @@ -169,9 +187,9 @@ class DockerImages(ABC): logger.debug('tmpdir={}'.format(tmpdir)) logger.debug('datadir={}'.format(tmpdir)) logger.debug('tag={}'.format(tag)) - image = client.images.build(path=str(tmpdir), - dockerfile=os.path.join(tmpdir, 'Dockerfile-run'), - network_mode='host', tag=tag, rm=True) + image = self.build_printing_errors(path=str(tmpdir), + dockerfile=os.path.join(tmpdir, 'Dockerfile-run'), + network_mode='host', tag=tag, rm=True) logger.info('"Run image" ID={} created'.format(image[0].short_id)) self.run_id = image[0].short_id return self.run_id