55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
|
#!/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 = 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 = []
|
||
|
files = list(filter(lambda x: x, files))
|
||
|
|
||
|
for pattern in ignores:
|
||
|
if pattern:
|
||
|
found.extend(fnmatch.filter(files, pattern))
|
||
|
|
||
|
if sorted(files) != sorted(found):
|
||
|
print("full")
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|