diff --git a/cmake/CreateRegression.cmake b/cmake/CreateRegression.cmake index a266b68db6..e3ec46b475 100644 --- a/cmake/CreateRegression.cmake +++ b/cmake/CreateRegression.cmake @@ -5,12 +5,12 @@ # # create_regression(file1 ...) # -macro(create_regression) +macro(create_regression SCRIPT_FOLDER) set(REGRESSION_SOURCE_FILES ${ARGN}) foreach(REGRESSION_SOURCE_FILE IN LISTS REGRESSION_SOURCE_FILES) string(REPLACE "${CMAKE_SOURCE_DIR}/regression/" "" REGRESSION_SOURCE_FILE_NAME "${REGRESSION_SOURCE_FILE}") - string(CONCAT REGRESSION_BINARY_FILE "${CMAKE_BINARY_DIR}/ai/" "${REGRESSION_SOURCE_FILE_NAME}") + string(CONCAT REGRESSION_BINARY_FILE "${CMAKE_BINARY_DIR}/${SCRIPT_FOLDER}/" "${REGRESSION_SOURCE_FILE_NAME}") add_custom_command(OUTPUT ${REGRESSION_BINARY_FILE} COMMAND ${CMAKE_COMMAND} -E copy @@ -38,6 +38,7 @@ macro(create_regression) -DOPENTTD_EXECUTABLE=$ -DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE} -DREGRESSION_TEST=${REGRESSION_TEST_NAME} + -DSCRIPT_FOLDER=${SCRIPT_FOLDER} -P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake" DEPENDS openttd regression_${REGRESSION_TEST_NAME}_files WORKING_DIRECTORY ${CMAKE_BINARY_DIR} @@ -50,6 +51,7 @@ macro(create_regression) -DOPENTTD_EXECUTABLE=$ -DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE} -DREGRESSION_TEST=${REGRESSION_TEST_NAME} + -DSCRIPT_FOLDER=${SCRIPT_FOLDER} -P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake" WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) diff --git a/cmake/scripts/Regression.cmake b/cmake/scripts/Regression.cmake index d6204db45e..ce31781304 100644 --- a/cmake/scripts/Regression.cmake +++ b/cmake/scripts/Regression.cmake @@ -7,11 +7,14 @@ cmake_minimum_required(VERSION 3.17) if(NOT REGRESSION_TEST) message(FATAL_ERROR "Script needs REGRESSION_TEST defined (tip: use -DREGRESSION_TEST=..)") endif() +if(NOT SCRIPT_FOLDER) + message(FATAL_ERROR "Script needs SCRIPT_FOLDER defined (tip: use -DSCRIPT_FOLDER=..)") +endif() if(NOT OPENTTD_EXECUTABLE) message(FATAL_ERROR "Script needs OPENTTD_EXECUTABLE defined (tip: use -DOPENTTD_EXECUTABLE=..)") endif() -if(NOT EXISTS ai/${REGRESSION_TEST}/test.sav) +if(NOT EXISTS ${SCRIPT_FOLDER}/${REGRESSION_TEST}/test.sav) message(FATAL_ERROR "Regression test ${REGRESSION_TEST} does not exist (tip: check regression folder for the correct spelling)") endif() @@ -35,7 +38,7 @@ endif() execute_process(COMMAND ${OPENTTD_EXECUTABLE} -x -c regression/regression.cfg - -g ai/${REGRESSION_TEST}/test.sav + -g ${SCRIPT_FOLDER}/${REGRESSION_TEST}/test.sav -snull -mnull -vnull:ticks=30000 @@ -77,7 +80,7 @@ string(REGEX REPLACE "\\\[script:[0-9]\\\]" "" REGRESSION_RESULT "${REGRESSION_R # Convert the output to a format that is expected (and more readable) by result.txt string(REPLACE "dbg: " "ERROR: " REGRESSION_RESULT "${REGRESSION_RESULT}") -string(REPLACE "ERROR: [1] " "" REGRESSION_RESULT "${REGRESSION_RESULT}") +string(REGEX REPLACE "ERROR: \\\[18?\\\] " "" REGRESSION_RESULT "${REGRESSION_RESULT}") string(REPLACE "[P] " "" REGRESSION_RESULT "${REGRESSION_RESULT}") string(REPLACE "[S] " "" REGRESSION_RESULT "${REGRESSION_RESULT}") string(REGEX REPLACE "dbg: ([^\n]*)\n?" "" REGRESSION_RESULT "${REGRESSION_RESULT}") @@ -88,7 +91,7 @@ string(REGEX REPLACE "ERROR: [12]([^\n]*)\n?" "" REGRESSION_RESULT "${REGRESSI string(REGEX REPLACE "ERROR: The first([^\n]*)\n?" "" REGRESSION_RESULT "${REGRESSION_RESULT}") # Read the expected result -file(READ ai/${REGRESSION_TEST}/result.txt REGRESSION_EXPECTED) +file(READ ${SCRIPT_FOLDER}/${REGRESSION_TEST}/result.txt REGRESSION_EXPECTED) # Convert the string to a list string(REPLACE "\n" ";" REGRESSION_RESULT "${REGRESSION_RESULT}") diff --git a/regression/regression/CMakeLists.txt b/regression/regression/CMakeLists.txt index 9aab44efe4..86656ab47f 100644 --- a/regression/regression/CMakeLists.txt +++ b/regression/regression/CMakeLists.txt @@ -1,5 +1,5 @@ include(CreateRegression) -create_regression( +create_regression("ai" ${CMAKE_CURRENT_SOURCE_DIR}/info.nut ${CMAKE_CURRENT_SOURCE_DIR}/main.nut ${CMAKE_CURRENT_SOURCE_DIR}/require.nut diff --git a/regression/stationlist/CMakeLists.txt b/regression/stationlist/CMakeLists.txt index cfbc2cde56..499759e2ed 100644 --- a/regression/stationlist/CMakeLists.txt +++ b/regression/stationlist/CMakeLists.txt @@ -1,5 +1,5 @@ include(CreateRegression) -create_regression( +create_regression("ai" ${CMAKE_CURRENT_SOURCE_DIR}/info.nut ${CMAKE_CURRENT_SOURCE_DIR}/main.nut ${CMAKE_CURRENT_SOURCE_DIR}/result.txt