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))