File: integration.py

package info (click to toggle)
buildstream 1.6.8-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 7,412 kB
  • sloc: python: 27,865; sh: 1,339; makefile: 137; ansic: 48
file content (29 lines) | stat: -rw-r--r-- 950 bytes parent folder | download | duplicates (5)
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
import os

from buildstream import _yaml


# Return a list of files relative to the given directory
def walk_dir(root):
    for dirname, dirnames, filenames in os.walk(root):
        # ensure consistent traversal order, needed for consistent
        # handling of symlinks.
        dirnames.sort()
        filenames.sort()

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