summaryrefslogtreecommitdiff
path: root/tests/testutils/integration.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testutils/integration.py')
-rw-r--r--tests/testutils/integration.py40
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))