# Copyright (c) 2026 Dominic Masters # # This software is released under the MIT License. # https://opensource.org/licenses/MIT include(dusktest) dusktest(test_duskscript.c) # Scripts are loaded through the asset system (see scriptLoadHandler in # src/dusk/script/script.c), not the real filesystem, so the fixtures are # packed into a small test.dsk with the same tools.asset.pack used for the # game's own dusk.dsk - this exercises the real compiler -> pack -> asset -> # runtime -> consolePrint pipeline rather than a shortcut around it. set(DUSKSCRIPT_TEST_ASSETS_DIR ${CMAKE_CURRENT_LIST_DIR}/assets) set(DUSKSCRIPT_TEST_DSK ${CMAKE_CURRENT_BINARY_DIR}/test.dsk) add_custom_command( OUTPUT ${DUSKSCRIPT_TEST_DSK} COMMAND ${Python3_EXECUTABLE} -m tools.asset.pack --input ${DUSKSCRIPT_TEST_ASSETS_DIR} --output ${DUSKSCRIPT_TEST_DSK} --duskscriptcc "$" WORKING_DIRECTORY ${DUSK_ROOT_DIR} DEPENDS duskscriptcc ${DUSKSCRIPT_TEST_ASSETS_DIR}/fixture.ds ${DUSKSCRIPT_TEST_ASSETS_DIR}/fixture_numbers.ds COMMENT "Packing duskscript test fixtures" ) add_custom_target(duskscript_test_fixture DEPENDS ${DUSKSCRIPT_TEST_DSK}) add_dependencies(test_duskscript duskscript_test_fixture) target_compile_definitions(test_duskscript PRIVATE DUSKSCRIPT_TEST_DSK="${DUSKSCRIPT_TEST_DSK}" DUSKSCRIPT_TEST_FIXTURE="fixture.dsb" DUSKSCRIPT_TEST_NUMBERS="fixture_numbers.dsb" )