|
- # if the script ends with exit code 0, then no tests are run further, else all tests are run
- import os
- import re
- import shlex
- import subprocess
- import sys
-
-
- def get_output(command, shell=True):
- print(command)
- command = shlex.split(command)
- return subprocess.check_output(command, shell=shell, encoding="utf8").strip()
-
- def is_py(file):
- return file.endswith("py")
-
- def is_js(file):
- return file.endswith("js")
-
- def is_docs(file):
- regex = re.compile('\.(md|png|jpg|jpeg)$|^.github|LICENSE')
- return bool(regex.search(file))
-
-
- if __name__ == "__main__":
- build_type = os.environ.get("TYPE")
- commit_range = os.environ.get("TRAVIS_COMMIT_RANGE")
- print("Build Type: {}".format(build_type))
- print("Commit Range: {}".format(commit_range))
-
- try:
- files_changed = get_output("git diff --name-only {}".format(commit_range), shell=False)
- except Exception:
- sys.exit(2)
-
- if "fatal" not in files_changed:
- files_list = files_changed.split()
- only_docs_changed = len(list(filter(is_docs, files_list))) == len(files_list)
- only_js_changed = len(list(filter(is_js, files_list))) == len(files_list)
- only_py_changed = len(list(filter(is_py, files_list))) == len(files_list)
-
- if only_docs_changed:
- print("Only docs were updated, stopping build process.")
- sys.exit(0)
-
- if only_js_changed and build_type == "server":
- print("Only JavaScript code was updated; Stopping Python build process.")
- sys.exit(0)
-
- if only_py_changed and build_type == "ui":
- print("Only Python code was updated, stopping Cypress build process.")
- sys.exit(0)
-
- sys.exit(2)
|