40 lines
1.1 KiB
CMake
40 lines
1.1 KiB
CMake
# run_golden.cmake — tek bir golden test çalıştırır ve çıktıyı karşılaştırır.
|
||
#
|
||
# Parametreler (cmake -D ile geçilir):
|
||
# BINARY — saqut binary yolu
|
||
# SOURCE — test .sqt dosyası (tam yol)
|
||
# EXPECTED — beklenen çıktı dosyası (tam yol)
|
||
# COMMAND — "run" (varsayılan) veya "ir"
|
||
# OPTIMIZED — 1 ise --optimized bayrağı eklenir
|
||
|
||
if(NOT DEFINED COMMAND)
|
||
set(COMMAND "run")
|
||
endif()
|
||
|
||
set(EXTRA_FLAGS "")
|
||
if(OPTIMIZED)
|
||
list(APPEND EXTRA_FLAGS "--optimized")
|
||
endif()
|
||
|
||
execute_process(
|
||
COMMAND "${BINARY}" "${COMMAND}" ${EXTRA_FLAGS} "file:${SOURCE}"
|
||
OUTPUT_VARIABLE ACTUAL
|
||
ERROR_VARIABLE STDERR_OUT
|
||
RESULT_VARIABLE EXIT_CODE
|
||
)
|
||
|
||
if(NOT EXIT_CODE EQUAL 0)
|
||
message(FATAL_ERROR
|
||
"saqut ${COMMAND} başarısız (exit ${EXIT_CODE}):\n${STDERR_OUT}")
|
||
endif()
|
||
|
||
file(READ "${EXPECTED}" EXPECTED_CONTENT)
|
||
|
||
if(NOT ACTUAL STREQUAL EXPECTED_CONTENT)
|
||
message(FATAL_ERROR
|
||
"Çıktı uyuşmuyor: ${SOURCE}\n"
|
||
"--- BEKLENEN ---\n${EXPECTED_CONTENT}"
|
||
"--- GERÇEK ---\n${ACTUAL}"
|
||
)
|
||
endif()
|