Skip to content
3 changes: 3 additions & 0 deletions build/build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand Down
61 changes: 61 additions & 0 deletions build/check_tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import os
import sys
import xml.etree.ElementTree as ET

Comment thread
jackbdoughty marked this conversation as resolved.
# 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)
Loading