From 6d7858d445e0c24a534ec733d8f4b36217031dd6 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Tue, 22 Oct 2024 17:51:21 -0700 Subject: [PATCH] parameterize tester with test data root folder; wrap tester run in top-levels cript --- run_tests.bat | 21 +++++++++++++++++++++ src/tester/tester_main.c | 23 +++++++++++++++++++---- 2 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 run_tests.bat diff --git a/run_tests.bat b/run_tests.bat new file mode 100644 index 00000000..e8bc4c1a --- /dev/null +++ b/run_tests.bat @@ -0,0 +1,21 @@ +@echo off +setlocal +cd /D "%~dp0" + +echo --- getting test data folder path --------------------------------------------- +if not exist .\local\test_data_path.txt ( + echo error: You must first store the full path of your test data folder inside of `local/test_data_path.txt`. + goto :EOF +) +set /p test_data_folder=<.\local\test_data_path.txt +echo test data path: %test_data_folder% +echo: + +echo --- building all testing executables ------------------------------------------ +call build rdi_from_pdb rdi_dump raddbg radlink tester +echo: + +echo --- running tests ------------------------------------------------------------- +pushd build +call tester.exe --test_data:%test_data_folder% +popd diff --git a/src/tester/tester_main.c b/src/tester/tester_main.c index b698705a..5fd291e2 100644 --- a/src/tester/tester_main.c +++ b/src/tester/tester_main.c @@ -37,6 +37,22 @@ entry_point(CmdLine *cmdline) { Arena *arena = arena_alloc(); + ////////////////////////////// + //- rjf: unpack command line + // + String8 test_data_folder_path = cmd_line_string(cmdline, str8_lit("test_data")); + if(test_data_folder_path.size == 0) + { + fprintf(stderr, "error(input): The test data folder path was not specified. Specify the path when running the program, like: %.*s --test_data:C:/foo/bar/baz\n", str8_varg(cmdline->exe_name)); + os_abort(1); + } + + ////////////////////////////// + //- rjf: make artifacts directory + // + String8 artifacts_path = path_normalized_from_string(arena, str8_lit("./tester_artifacts")); + os_make_directory(artifacts_path); + ////////////////////////////// //- rjf: PDB -> RDI determinism // @@ -48,15 +64,14 @@ entry_point(CmdLine *cmdline) U64 num_repeats_per_pdb = 32; String8 pdb_paths[] = { - // str8_lit_comp("odintest/test.pdb"), - str8_lit_comp("mule_main.pdb"), + push_str8f(arena, "%S/mule_main/mule_main.pdb", test_data_folder_path), + push_str8f(arena, "%S/mule_main/mule_module.pdb", test_data_folder_path), }; for EachElement(pdb_idx, pdb_paths) { // rjf: unpack paths, make output directory String8 pdb_path = path_normalized_from_string(arena, pdb_paths[pdb_idx]); - String8 pdb_folder = str8_chop_last_slash(pdb_path); - String8 repeat_folder = push_str8f(arena, "%S/%S", pdb_folder, name); + String8 repeat_folder = push_str8f(arena, "%S/%S", artifacts_path, name); os_make_directory(repeat_folder); // rjf: generate all RDIs