56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
|
from contextlib import ExitStack
|
||
|
from pathlib import Path
|
||
|
from unittest import TestCase
|
||
|
from unittest import mock
|
||
|
|
||
|
import os
|
||
|
import shutil
|
||
|
|
||
|
from cloud_build import CB
|
||
|
from tests.call import Call
|
||
|
|
||
|
|
||
|
def renamer(directory):
|
||
|
renamer = directory / 'renamer.py'
|
||
|
renamer.touch()
|
||
|
renamer.write_text('''\
|
||
|
#!/usr/bin/python3
|
||
|
|
||
|
print("lxd.tar.xz")
|
||
|
''')
|
||
|
renamer.chmod(0o700)
|
||
|
|
||
|
|
||
|
class TestRename(TestCase):
|
||
|
def setUp(self):
|
||
|
self.images = self.__class__.images
|
||
|
|
||
|
@classmethod
|
||
|
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)
|
||
|
|
||
|
@classmethod
|
||
|
def tearDownClass(cls):
|
||
|
shutil.rmtree(cls.work_dir, ignore_errors=True)
|
||
|
|
||
|
def test_simple_rename(self):
|
||
|
self.assertIn('docker.tar.xz', self.images)
|
||
|
|
||
|
def test_prog_rename(self):
|
||
|
self.assertIn('lxd.tar.xz', self.images)
|