| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | #!/usr/bin/env python3# SPDX-License-Identifier: Apache-2.0# Copyright (c) 2020 Intel Corporation# Check if full twister is needed.import osimport shimport argparseimport fnmatchif "ZEPHYR_BASE" not in os.environ:    exit("$ZEPHYR_BASE environment variable undefined.")repository_path = os.environ['ZEPHYR_BASE']sh_special_args = {    '_tty_out': False,    '_cwd': repository_path}def parse_args():    parser = argparse.ArgumentParser(                description="Check if change requires full twister")    parser.add_argument('-c', '--commits', default=None,            help="Commit range in the form: a..b")    return parser.parse_args()def main():    args = parse_args()    if not args.commits:        exit(1)    # pylint does not like the 'sh' library    # pylint: disable=too-many-function-args,unexpected-keyword-arg    commit = sh.git("diff", "--name-only", args.commits, **sh_special_args)    files = set()    files.update(commit.split("\n"))    with open("scripts/ci/twister_ignore.txt", "r") as sc_ignore:        ignores = sc_ignore.read().splitlines()        ignores = filter(lambda x: not x.startswith("#"), ignores)    found = set()    files = list(filter(lambda x: x, files))    for pattern in ignores:        if pattern:            found.update(fnmatch.filter(files, pattern))    if sorted(files) != sorted(found):        print("full")if __name__ == "__main__":    main()
 |