def test_dont_run_after_sync_local_commands(self): cb = CB( config='tests/minimal_config.yaml', data_dir=self.data_dir, ) cb.create_images(no_tests=True) cb.sync(create_remote_dirs=False)
def test_sign_override_key(self): with mock.patch('subprocess.call', call.Call()): cloud_build = CB( config='tests/minimal_config.yaml', data_dir=self.kwargs['data_dir'], config_override={'key': 0}, ) cloud_build.create_images(no_tests=True) cloud_build.sign()
def test_sign_requires_key(self): with mock.patch('subprocess.call', call.Call()): regex = 'key.*config' cloud_build = CB( config='tests/minimal_config.yaml', data_dir=self.kwargs['data_dir'], ) cloud_build.create_images(no_tests=True) self.assertRaisesRegex(Error, regex, cloud_build.sign)
def test_run_after_sync_local_commands(self): cb = CB( config='tests/test_run_after_sync_local_commands.yaml', data_dir=self.data_dir, ) cb.create_images(no_tests=True) regex = r'\[\'kick' self.assertRaisesRegex(Exception, regex, cb.sync, create_remote_dirs=True)
def test_do_force_rebuild(self): tarball = self.data_dir / 'out/docker_Sisyphus-x86_64.tar.xz' tarball.touch() del self.cb cb = CB( config='tests/test_rebuild.yaml', data_dir=self.data_dir, config_override={'rebuild_after': {'days': 0}}, ) msg = 'Do not try to rebuild when force_rebuild' with self.assertRaises(BuildError, msg=msg): cb.create_images(no_tests=True)
def setUpClass(cls): cls.work_dir = Path('/tmp/cloud-build') os.makedirs(cls.work_dir / 'external_files/p9/x86_64', exist_ok=True) (cls.work_dir / 'external_files/p9/x86_64/README').write_text('README') config = cls.work_dir / 'config.yaml' branch = cls.branch arch = cls.arch remote = Path('/tmp/cloud-build/images') if branch: remote = remote / '{branch}' if arch: remote = remote / '{arch}' remote = (remote / 'cloud').as_posix() change( 'tests/test_integration_images.yaml', config, 'remote', remote, ) with ExitStack() as stack: stack.enter_context(mock.patch('subprocess.call', Call())) cloud_build = CB( config=config, data_dir=(cls.work_dir / 'cloud_build').as_posix(), ) cloud_build.create_images(no_tests=True) cloud_build.copy_external_files() cloud_build.sign() cloud_build.sync(create_remote_dirs=True) images_dir = cls.work_dir / 'images' cls.images_dir = images_dir images = defaultdict(lambda: defaultdict(list)) if branch: for branch in os.listdir(images_dir): if arch: for arch in os.listdir(images_dir / branch): images[branch][arch] = os.listdir(images_dir / branch / arch / 'cloud') else: images[branch]['arch'] = os.listdir(images_dir / branch / 'cloud') elif arch: for arch in os.listdir(images_dir): images['branch'][arch] = os.listdir(images_dir / arch / 'cloud') else: images['branch']['arch'] = os.listdir(images_dir / 'cloud') cls._images = images
def test_no_delete_true(self): cb = CB( config='tests/test_no_delete_true.yaml', data_dir=self.data_dir, ) other_file = self.images_dir / 'other_file.txt' other_file.write_text('Some text') cb.create_images(no_tests=True) cb.sync(create_remote_dirs=True) del cb msg = 'Other files shoud not be deleted if no_delete' if not other_file.exists(): self.fail(msg)
def setUpClass(cls): cls.work_dir = Path('/tmp/cloud-build') os.makedirs(cls.work_dir, exist_ok=True) renamer(cls.work_dir) with ExitStack() as stack: stack.enter_context(mock.patch('subprocess.call', Call())) cloud_build = CB( config='tests/test_rename.yaml', data_dir=(cls.work_dir / 'cloud_build').as_posix(), ) cloud_build.create_images(no_tests=True) cloud_build.sync(create_remote_dirs=True) images_dir = cls.work_dir / 'images' cls.images = os.listdir(images_dir)
class TestRebuild(TestCase): def setUp(self): self.data_dir = Path(tempfile.mkdtemp(prefix='cloud_build')) self.cb = CB( config='tests/test_rebuild.yaml', data_dir=self.data_dir, ) def tearDown(self): shutil.rmtree(self.data_dir) @mock.patch('subprocess.call', call.Call(decorators=DS)) def test_do_rebuild(self): tarball = self.data_dir / 'out/docker_Sisyphus-x86_64.tar.xz' tarball.touch() two_hours_ago = time.time() - 2*60*60 os.utime(tarball, times=(two_hours_ago, two_hours_ago)) msg = 'Do not try to rebuild with outdated cache' with self.assertRaises(BuildError, msg=msg): self.cb.create_images(no_tests=True) @mock.patch('subprocess.call', call.Call(decorators=DS)) def test_do_force_rebuild(self): tarball = self.data_dir / 'out/docker_Sisyphus-x86_64.tar.xz' tarball.touch() del self.cb cb = CB( config='tests/test_rebuild.yaml', data_dir=self.data_dir, config_override={'rebuild_after': {'days': 0}}, ) msg = 'Do not try to rebuild when force_rebuild' with self.assertRaises(BuildError, msg=msg): cb.create_images(no_tests=True) @mock.patch('subprocess.call', call.Call(decorators=DS)) def test_dont_rebuild(self): tarball = self.data_dir / 'out/docker_Sisyphus-x86_64.tar.xz' tarball.touch() msg = 'Try to rebuild with valid cache' try: self.cb.create_images(no_tests=True) except BuildError: self.fail(msg) @mock.patch('subprocess.call', call.Call()) def test_dont_create_image_when_rebuild(self): tarball = self.data_dir / 'out/docker_Sisyphus-x86_64.tar.xz' tarball.touch() self.cb.create_images(no_tests=True) image = ( self.data_dir / 'images' / 'alt-sisyphus-rootfs-minimal-x86_64.tar.xz' ) msg = 'Do not create image when rebuild' if not image.exists(): self.fail(msg)