diff options
Diffstat (limited to 'tests/testutils/integration.py')
-rw-r--r-- | tests/testutils/integration.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/testutils/integration.py b/tests/testutils/integration.py new file mode 100644 index 000000000..a8c54e574 --- /dev/null +++ b/tests/testutils/integration.py @@ -0,0 +1,40 @@ +import os + +from buildstream import _yaml + + +# Recursively call .format() on all files in the given directory. +# +# This modifies the original files. +# +def format_files(directory, *args, **kwargs): + for dirname, _, filenames in os.walk(directory): + for filename in filenames: + with open(os.path.join(dirname, filename), 'r') as f: + template = f.read() + + element = template.format(*args, **kwargs) + + with open(os.path.join(dirname, filename), 'w') as f: + f.write(element) + + +# Return a list of files relative to the given directory +def walk_dir(root): + for dirname, dirnames, filenames in os.walk(root): + # print path to all subdirectories first. + for subdirname in dirnames: + yield os.path.join(dirname, subdirname)[len(root):] + + # print path to all filenames. + for filename in filenames: + yield os.path.join(dirname, filename)[len(root):] + + +# Ensure that a directory contains the given filenames. +def assert_contains(directory, expected): + missing = set(expected) + missing.difference_update(walk_dir(directory)) + if len(missing) > 0: + raise AssertionError("Missing {} expected elements from list: {}" + .format(len(missing), missing)) |