- build_case 完整编译管线(parse→load→link(cfg)→check(cfg)→codegen(cfg)) - disasm_lines 按 instr_len 迭代生成指令文本 - 7 用例断言:头字段(version=2/STATOR2/max_stack/n_slots/values_size)、 常量表 8B 无 tag、CAL.TON/STORE_OFF 字段访问、CALL+max_stack、 line1 全链路(n_slots=5:4 全局+1 实例)、跳转回填、全局初值 - CMake 恢复 codegen_test(链 compiler 去 isa);ctest 12/14
124 lines
4.3 KiB
CMake
124 lines
4.3 KiB
CMake
# 自动化用例
|
||
add_test(NAME stcompiler_version
|
||
COMMAND STCompiler)
|
||
add_test(NAME bytecode_executor_version
|
||
COMMAND BytecodeExecutor)
|
||
|
||
# CLI 级:编译需 --machine;缺参必须失败(WILL_FAIL)
|
||
add_test(NAME cli_compile
|
||
COMMAND STCompiler ${CMAKE_SOURCE_DIR}/tests/cases/01_empty_main/project.toml
|
||
-o ${CMAKE_CURRENT_BINARY_DIR}/cli_case01.stb
|
||
--machine ${CMAKE_SOURCE_DIR}/compiler/machine.toml)
|
||
add_test(NAME cli_missing_machine
|
||
COMMAND STCompiler ${CMAKE_SOURCE_DIR}/tests/cases/01_empty_main/project.toml
|
||
-o ${CMAKE_CURRENT_BINARY_DIR}/cli_nope.stb)
|
||
set_tests_properties(cli_missing_machine PROPERTIES WILL_FAIL TRUE)
|
||
|
||
# isa 合同测试:链接 isa 库,断言覆盖饱和/编解码/disasm/哈希/映像/sidecar
|
||
add_executable(isa_test
|
||
./src/isa_test.cpp)
|
||
|
||
target_link_libraries(isa_test PRIVATE isa)
|
||
|
||
add_test(NAME isa_roundtrip
|
||
COMMAND isa_test)
|
||
|
||
# compiler 库测试:toml schema、文件集合、工程哈希(REPO_ROOT 注入源目录绝对路径)
|
||
add_executable(compiler_test
|
||
./src/compiler_test.cpp)
|
||
|
||
target_link_libraries(compiler_test PRIVATE compiler)
|
||
target_compile_definitions(compiler_test PRIVATE
|
||
REPO_ROOT="${CMAKE_SOURCE_DIR}")
|
||
|
||
add_test(NAME compiler_toml
|
||
COMMAND compiler_test)
|
||
|
||
# 词法测试:token 流 + 负例(REPO_ROOT 注入源目录绝对路径)
|
||
add_executable(lexer_test
|
||
./src/lexer_test.cpp)
|
||
|
||
target_link_libraries(lexer_test PRIVATE compiler)
|
||
target_compile_definitions(lexer_test PRIVATE
|
||
REPO_ROOT="${CMAKE_SOURCE_DIR}")
|
||
|
||
add_test(NAME lexer_tokens
|
||
COMMAND lexer_test)
|
||
|
||
# 语法测试:line1 AST 结构 + 负例(REPO_ROOT 注入源目录绝对路径)
|
||
add_executable(parser_test
|
||
./src/parser_test.cpp)
|
||
|
||
target_link_libraries(parser_test PRIVATE compiler)
|
||
target_compile_definitions(parser_test PRIVATE
|
||
REPO_ROOT="${CMAKE_SOURCE_DIR}")
|
||
|
||
add_test(NAME parser_syntax
|
||
COMMAND parser_test)
|
||
|
||
# 链接测试:用例 09/10/11/12/16/19 + line1 正例(REPO_ROOT 注入源目录绝对路径)
|
||
add_executable(linker_test
|
||
./src/linker_test.cpp)
|
||
|
||
target_link_libraries(linker_test PRIVATE compiler)
|
||
target_compile_definitions(linker_test PRIVATE
|
||
REPO_ROOT="${CMAKE_SOURCE_DIR}")
|
||
|
||
add_test(NAME linker_links
|
||
COMMAND linker_test)
|
||
|
||
# 类型检查测试:用例 14 + 负例 + 正例(REPO_ROOT 注入源目录绝对路径)
|
||
add_executable(typecheck_test
|
||
./src/typecheck_test.cpp)
|
||
|
||
target_link_libraries(typecheck_test PRIVATE compiler)
|
||
target_compile_definitions(typecheck_test PRIVATE
|
||
REPO_ROOT="${CMAKE_SOURCE_DIR}")
|
||
|
||
add_test(NAME typecheck_types
|
||
COMMAND typecheck_test)
|
||
|
||
# 寄存器码测试(V2):用例产物结构断言(用 compiler::Codec,去 isa 依赖)
|
||
add_executable(codegen_test
|
||
./src/codegen_test.cpp)
|
||
|
||
target_link_libraries(codegen_test PRIVATE compiler)
|
||
target_compile_definitions(codegen_test PRIVATE
|
||
REPO_ROOT="${CMAKE_SOURCE_DIR}")
|
||
|
||
add_test(NAME codegen_slice1
|
||
COMMAND codegen_test)
|
||
|
||
# VM 测试:手工映像 + 编译器产物 + 定时器 + 确定性(REPO_ROOT 注入源目录绝对路径)
|
||
add_executable(vm_test
|
||
./src/vm_test.cpp)
|
||
|
||
target_link_libraries(vm_test PRIVATE compiler vm)
|
||
target_compile_definitions(vm_test PRIVATE
|
||
REPO_ROOT="${CMAKE_SOURCE_DIR}")
|
||
|
||
add_test(NAME vm_cycles
|
||
COMMAND vm_test)
|
||
|
||
# 12.2 二十用例点亮(12.11):按 EXPECTED.md 期望跑完整管线(REPO_ROOT 注入源目录绝对路径)
|
||
add_executable(cases_test
|
||
./src/cases_test.cpp)
|
||
|
||
target_link_libraries(cases_test PRIVATE compiler vm)
|
||
target_compile_definitions(cases_test PRIVATE
|
||
REPO_ROOT="${CMAKE_SOURCE_DIR}")
|
||
|
||
add_test(NAME cases_all
|
||
COMMAND cases_test)
|
||
|
||
# machine.toml 加载与强校验(阶段 A 步骤 3;REPO_ROOT 注入源目录绝对路径)
|
||
add_executable(machine_test
|
||
./src/machine_test.cpp)
|
||
|
||
target_link_libraries(machine_test PRIVATE compiler)
|
||
target_compile_definitions(machine_test PRIVATE
|
||
REPO_ROOT="${CMAKE_SOURCE_DIR}")
|
||
|
||
add_test(NAME machine_config
|
||
COMMAND machine_test)
|