#!/usr/bin/env python3 # SPDX-License-Identifier: Apache-2.0 # Copyright (c) 2020 Intel Corporation # Check if full sanitycheck is needed. import os import sh import argparse import fnmatch if "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 sanitycheck") 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/sanitycheck_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()