1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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))
|