diff --git a/blender/docker.py b/blender/docker.py index 3caa5d0..126461f 100644 --- a/blender/docker.py +++ b/blender/docker.py @@ -106,26 +106,40 @@ class BlenderDocker: print('\tSet Tags version and/or Latest') pass - def test(self): - """This method request an image (call the method build before) and try to execute the blender inside the container to check if the program can be correctly executed.""" + def test(self) -> bool: + """ + This method request an image (call the method build before) and try to execute the blender inside the container + to check if the program can be correctly executed. + Based on `docker run --rm stilobique/blender:5.1.2 ./blender --version` + :return: True if no issue are returned + """ logger = self._get_logger('test') try: - print('Testing your Blender Docker image') - logger.info('Testing your Blender Docker image') - + print(f'Testing your Blender Docker image {self._docker_image_name}') + logger.info(f'Testing your Blender Docker image {self._docker_image_name}.') + test = self._docker_client.containers.run( name=f"Blender-Docker-Testing-{self._blender_version.tag_name_slugify()}", image=self._docker_image_name, command=['./blender', '--version'], - auto_remove = True, + auto_remove=True, remove=True, detach=True, - stdout=True + stdout=True, + stderr=True, + stream=True, ) - - print(f'\tResult: {test.logs()}') - - return True + result = test.wait() + exit_code = result.get('StatusCode') + + logger.info(f'Exit code return: {exit_code}') + logger.info(test.logs(stdout=True, stderr=True).decode('utf-8', errors='replace').strip()) + + if exit_code == 0: + return True + + print(f'Testing your Blender Docker image {self._docker_image_name} failed.') + return False except ContainerError as e: print(f'Container error: {e}')