diff --git a/build/build.bat b/build/build.bat index e2e6f843b8..3f02e5b320 100644 --- a/build/build.bat +++ b/build/build.bat @@ -44,6 +44,9 @@ if %errorlevel% neq 0 exit /b %errorlevel% %PYTHON3% .\check_build.py ..\base\ if %errorlevel% neq 0 exit /b %errorlevel% +%PYTHON3% .\check_tests.py ..\base\ +if %errorlevel% neq 0 exit /b %errorlevel% + if "%BUILD_NUMBER%" == "" SET BUILD_NUMBER=SNAPSHOT set mvnErr= diff --git a/build/check_tests.py b/build/check_tests.py new file mode 100644 index 0000000000..22e5e844b8 --- /dev/null +++ b/build/check_tests.py @@ -0,0 +1,61 @@ +import os +import sys +import xml.etree.ElementTree as ET + +# Error level returned by script +SUCCESS = 0 +INCORRECT_ARGS = 1 +TESTS_NOT_IN_POM = 2 +FILE_TYPE = ".tests" + + +def check_tests_in_pom(ibex_gui_base): + pathsxml = ibex_gui_base + r"uk.ac.stfc.isis.ibex.client.tycho.parent\pom.xml" + + folderfiles = os.listdir(ibex_gui_base) + testfiles = [name for name in folderfiles if name.endswith(FILE_TYPE)] + + tree = ET.parse(pathsxml) + root = tree.getroot() + xmlmodulenames = [] + for module in root.iter(): + if module.tag.endswith("module"): + wholename = module.text + + if wholename: + name = wholename[3:] + else: + name = "" + + if name.endswith(FILE_TYPE): + xmlmodulenames.append(name) + missingtests = [file for file in testfiles if file not in xmlmodulenames] + + if missingtests: + print(".test files in base/ not found in pom.xml") + print(f"Missing files: {missingtests}") + print("To fix this: add missing files to the list in client.tycho.parent/pom.xml") + return False + else: + return True + + +def main(ibex_gui_base): + try: + os.chdir(ibex_gui_base) + except (FileNotFoundError, NotADirectoryError, PermissionError): + return INCORRECT_ARGS + if not check_tests_in_pom(ibex_gui_base): + return TESTS_NOT_IN_POM + print("check_tests: all test modules in pom.xml") + return SUCCESS + + +if __name__ == "__main__": + result = SUCCESS + if len(sys.argv) != 2: + print("Incorrect arguments, expected path to build base directory") + result = INCORRECT_ARGS + else: + result = main(sys.argv[1]) + sys.exit(result)