mirror of https://github.com/containers/podman.git
79 lines
2.6 KiB
Python
Executable File
79 lines
2.6 KiB
Python
Executable File
#!/bin/env python3
|
|
|
|
import sys
|
|
import os
|
|
import os.path
|
|
import unittest
|
|
import warnings
|
|
import yaml
|
|
|
|
class TestCaseBase(unittest.TestCase):
|
|
|
|
SCRIPT_PATH = os.path.realpath((os.path.dirname(sys.argv[0])))
|
|
CIRRUS_WORKING_DIR = os.environ.get('CIRRUS_WORKING_DIR',
|
|
'{0}/../../../'.format(SCRIPT_PATH))
|
|
|
|
def setUp(self):
|
|
os.chdir(self.CIRRUS_WORKING_DIR)
|
|
|
|
|
|
class TestCirrusYAML(TestCaseBase):
|
|
|
|
IMAGE_NAME_SUFFIX = '_CACHE_IMAGE_NAME'
|
|
ACTIVE_IMAGES_NAME = 'ACTIVE_CACHE_IMAGE_NAMES'
|
|
|
|
def setUp(self):
|
|
TestCirrusYAML._cirrus = None
|
|
super().setUp()
|
|
|
|
@property
|
|
def cirrus(self):
|
|
if TestCirrusYAML._cirrus is None:
|
|
with warnings.catch_warnings():
|
|
warnings.filterwarnings("ignore",category=DeprecationWarning)
|
|
with open('.cirrus.yml', "r") as dot_cirrus_dot_yaml:
|
|
TestCirrusYAML._cirrus = yaml.load(dot_cirrus_dot_yaml)
|
|
return TestCirrusYAML._cirrus
|
|
|
|
def _assert_get_cache_image_names(self, env):
|
|
inames = set([key for key in env.keys()
|
|
if key.endswith(self.IMAGE_NAME_SUFFIX)])
|
|
self.assertNotEqual(inames, set())
|
|
|
|
ivalues = set([value for key, value in env.items()
|
|
if key in inames])
|
|
self.assertNotEqual(ivalues, set())
|
|
return ivalues
|
|
|
|
def _assert_get_subdct(self, key, dct):
|
|
self.assertIn(key, dct)
|
|
return dct[key]
|
|
|
|
def test_parse_yaml(self):
|
|
self.assertIsInstance(self.cirrus, dict)
|
|
|
|
def test_active_cache_image_names(self):
|
|
env = self._assert_get_subdct('env', self.cirrus)
|
|
acin = self._assert_get_subdct(self.ACTIVE_IMAGES_NAME, env)
|
|
|
|
for ivalue in self._assert_get_cache_image_names(env):
|
|
self.assertIn(ivalue, acin,
|
|
"The '{}' sub-key of 'env' should contain this among"
|
|
" its space-separated values."
|
|
"".format(self.ACTIVE_IMAGES_NAME))
|
|
|
|
|
|
def test_cache_image_names_active(self):
|
|
env = self._assert_get_subdct('env', self.cirrus)
|
|
ivalues = self._assert_get_cache_image_names(env)
|
|
|
|
for avalue in set(self._assert_get_subdct(self.ACTIVE_IMAGES_NAME, env).split()):
|
|
self.assertIn(avalue, ivalues,
|
|
"All space-separated values in the '{}' sub-key"
|
|
" of 'env' must also be used in a key with a '{}' suffix."
|
|
"".format(self.ACTIVE_IMAGES_NAME, self.IMAGE_NAME_SUFFIX))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(failfast=True, catchbreak=True, verbosity=0)
|