From 11781b1e90f5bbdcac21baeb98e5236f8c109180 Mon Sep 17 00:00:00 2001 From: varunchennamadhava Date: Sat, 27 Jun 2026 19:12:25 -0400 Subject: [PATCH 1/8] initial commit Signed-off-by: varunchennamadhava --- CMakeLists.txt | 10 +- tests/CMakeLists.txt | 273 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 278 insertions(+), 5 deletions(-) create mode 100644 tests/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bd2eba..7573888 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -169,8 +169,8 @@ add_custom_target( # ============================================================================ # Test # ============================================================================ -add_custom_target( - test - COMMAND "./tests/test.sh" - DEPENDS libcbxp cbxp -) +include(CTest) + +if(BUILD_TESTING) + add_subdirectory(tests) +endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..ce99593 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,273 @@ +# ============================================================================= +# CTest suite — translated from tests/test.sh +# +# Conventions used: +# • Tests that expect exit code 0 → plain add_test (CTest default pass) +# • Tests that expect exit code 255 → add_test + WILL_FAIL TRUE +# • Tests that expect "null" on stdout → add_test + PASS_REGULAR_EXPRESSION "null" +# +# The cbxp executable is referenced via the generator expression +# $ so the path is always correct regardless of the +# build-output directory. +# ============================================================================= + +set(EXE $) +set(SAMPLES ${CMAKE_SOURCE_DIR}/tests/samples) + +# --------------------------------------------------------------------------- +# Helper macro – tests that MUST exit 0 +# --------------------------------------------------------------------------- +macro(cbxp_test name) + add_test(NAME ${name} COMMAND ${ARGN}) +endmacro() + +# Helper macro – tests that MUST exit non-zero (255) +macro(cbxp_test_fail name) + add_test(NAME ${name} COMMAND ${ARGN}) + set_property(TEST ${name} PROPERTY WILL_FAIL TRUE) +endmacro() + +# Helper macro – tests whose stdout must contain exactly "null" +macro(cbxp_test_null name) + add_test(NAME ${name} COMMAND ${ARGN}) + set_property(TEST ${name} PROPERTY PASS_REGULAR_EXPRESSION "null") +endmacro() + +# ============================================================================= +# General +# ============================================================================= + +cbxp_test(general.help_short ${EXE} -h) +cbxp_test(general.help_long ${EXE} --help) +cbxp_test(general.version_short ${EXE} -v) +cbxp_test(general.version_long ${EXE} --version) + +cbxp_test_fail(general.error.bad_arg_junk ${EXE} junk) +cbxp_test_fail(general.error.bad_flag_junk ${EXE} --junk) + +# ============================================================================= +# Extract – Show Usage +# ============================================================================= + +cbxp_test(extract.help_long ${EXE} extract --help) +cbxp_test(extract.help_short ${EXE} extract -h) + +# ============================================================================= +# Extract – Basic Usage +# ============================================================================= + +cbxp_test(extract.psa ${EXE} extract psa) +cbxp_test(extract.cvt ${EXE} extract cvt) +cbxp_test(extract.ecvt ${EXE} extract ecvt) +cbxp_test(extract.asvt ${EXE} extract asvt) +cbxp_test(extract.ascb ${EXE} extract ascb) +cbxp_test(extract.assb ${EXE} extract assb) +cbxp_test(extract.oucb ${EXE} extract oucb) +cbxp_test(extract.ldax ${EXE} extract ldax) + +# ============================================================================= +# Extract – Debug Mode +# ============================================================================= + +cbxp_test(extract.debug_short ${EXE} extract -d psa) +cbxp_test(extract.debug_long ${EXE} extract --debug psa) + +# ============================================================================= +# Extract – Include Patterns +# ============================================================================= + +cbxp_test(extract.include.cvt_psa ${EXE} extract -i cvt psa) +cbxp_test(extract.include.cvt_psa_long ${EXE} extract --include cvt psa) +cbxp_test(extract.include.ecvt_cvt ${EXE} extract -i ecvt cvt) +cbxp_test(extract.include.asvt_cvt ${EXE} extract -i asvt cvt) +cbxp_test(extract.include.ascb_asvt ${EXE} extract -i ascb asvt) +cbxp_test(extract.include.cvt.ecvt_psa ${EXE} extract -i cvt.ecvt psa) +cbxp_test(extract.include.cvt.asvt.ascb_psa ${EXE} extract -i cvt.asvt.ascb psa) +cbxp_test(extract.include.asvt.ascb_cvt ${EXE} extract -i asvt.ascb cvt) +cbxp_test(extract.include.multi_ecvt_asvt_cvt ${EXE} extract -i ecvt -i asvt cvt) +cbxp_test(extract.include.multi_cvt.ecvt_cvt.asvt.ascb_psa ${EXE} extract -i cvt.ecvt -i cvt.asvt.ascb psa) +cbxp_test(extract.include.glob_cvt.**_psa ${EXE} extract -i "cvt.**" psa) +cbxp_test(extract.include.glob_cvt.*_psa ${EXE} extract -i "cvt.*" psa) +cbxp_test(extract.include.glob_asvt.*_*_cvt ${EXE} extract -i "asvt.*" -i "*" cvt) +cbxp_test(extract.include.assb_ascb ${EXE} extract -i assb ascb) +cbxp_test(extract.include.oucb_ascb ${EXE} extract -i oucb ascb) +cbxp_test(extract.include.cvt.ecvt_cvt.asvt.ascb.assb_psa ${EXE} extract -i cvt.ecvt -i cvt.asvt.ascb.assb psa) +cbxp_test(extract.include.cvt.ecvt_cvt.asvt.ascb.oucb_psa ${EXE} extract -i cvt.ecvt -i cvt.asvt.ascb.oucb psa) +cbxp_test(extract.include.glob_*_assb ${EXE} extract -i "*" assb) +cbxp_test(extract.include.glob_**_assb ${EXE} extract -i "**" assb) +cbxp_test(extract.include.glob_assb.**_ascb ${EXE} extract -i "assb.**" ascb) +cbxp_test(extract.include.ldax_assb ${EXE} extract -i ldax assb) +cbxp_test(extract.include.assb.ldax_ascb ${EXE} extract -i assb.ldax ascb) +cbxp_test(extract.include.ascb.assb.ldax_asvt ${EXE} extract -i ascb.assb.ldax asvt) +cbxp_test(extract.include.cvt.asvt.ascb.assb.ldax_psa ${EXE} extract -i cvt.asvt.ascb.assb.ldax psa) + +# ============================================================================= +# Extract – Filters +# ============================================================================= + +cbxp_test(extract.filter.psapsa_eq_PSA ${EXE} extract -f psapsa=PSA psa) +cbxp_test(extract.filter.assbjbns_MASTER_glob_all_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -i "**" psa) +cbxp_test(extract.filter.assbjbns_MASTER_include_assb_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -i cvt.asvt.ascb.assb psa) +cbxp_test(extract.filter.assbjbns_MASTER_ascbasid_gt0_glob_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -f "cvt.asvt.ascb.ascbasid>0" -i "**" psa) +cbxp_test(extract.filter.assbjbns_?MAS?ER?_include_assb_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=?MAS?ER?" -i cvt.asvt.ascb.assb psa) +cbxp_test(extract.filter.ascbasid_eq_1 ${EXE} extract -f "cvt.asvt.ascb.ascbasid=1" -i "**" psa) +cbxp_test(extract.filter.ascbasid_gt_0 ${EXE} extract -f "cvt.asvt.ascb.ascbasid>0" -i "**" psa) +cbxp_test(extract.filter.ascbasid_lt_2 ${EXE} extract -f "cvt.asvt.ascb.ascbasid<2" -i "**" psa) +cbxp_test(extract.filter.ascbasid_ge_1 ${EXE} extract -f "cvt.asvt.ascb.ascbasid>=1" -i "**" psa) +cbxp_test(extract.filter.ascbasid_le_2 ${EXE} extract -f "cvt.asvt.ascb.ascbasid<=2" -i "**" psa) +cbxp_test(extract.filter.cvtasmvt_eq_decimal ${EXE} extract -f "cvtasmvt=2281701376" cvt) +cbxp_test(extract.filter.cvtasmvt_eq_hex ${EXE} extract -f "cvtasmvt=0x88000000" cvt) +cbxp_test(extract.filter.cvtasmvt_gt_hex ${EXE} extract -f "cvtasmvt>0x87FFFFFF" cvt) +cbxp_test(extract.filter.cvtasmvt_lt_hex ${EXE} extract -f "cvtasmvt<0x88000001" cvt) +cbxp_test(extract.filter.cvtasmvt_ge_hex ${EXE} extract -f "cvtasmvt>=0x87FFFFFF" cvt) +cbxp_test(extract.filter.cvtasmvt_le_hex ${EXE} extract -f "cvtasmvt<=0x88000000" cvt) +cbxp_test(extract.filter.oucbtrxn_eq_OMVS ${EXE} extract -f "oucbtrxn=OMVS" oucb) +cbxp_test(extract.filter.oucb.oucbtrxn_eq_OMVS_include_oucb_ascb ${EXE} extract -i oucb -f "oucb.oucbtrxn=OMVS" ascb) + +cbxp_test_null(extract.filter.null.psapsa_eq_PSB ${EXE} extract -f psapsa=PSB psa) +cbxp_test_null(extract.filter.null.assbjbns_MASTER_ascbasid_2_include_asvt ${EXE} extract -f "ascb.assb.assbjbns=*MASTER*" -f "ascb.ascbasid=2" -i ascb.assb asvt) + +cbxp_test(extract.filter.assbjbns_MASTER_assbjbni_empty_bare ${EXE} extract -f assbjbns=*MASTER* -f assbjbni= assb) +cbxp_test(extract.filter.assbjbns_MASTER_assbjbni_empty_dquote ${EXE} extract -f assbjbns=*MASTER* -f "assbjbni=" assb) +cbxp_test(extract.filter.assbjbns_MASTER_assbjbni_empty_squote ${EXE} extract -f assbjbns=*MASTER* -f "assbjbni=" assb) +cbxp_test(extract.filter.ldax_tcthwm_eq_0 ${EXE} extract -f "cvt.asvt.ascb.assb.ldax.ldax_tcthwm=0" -i cvt.asvt.ascb.assb.ldax psa) +cbxp_test(extract.filter.ldax_tcthwm_eq_0_ldax ${EXE} extract -f "ldax_tcthwm=0" ldax) + +cbxp_test_null(extract.filter.null.ldax_id_INVALID ${EXE} extract -f "cvt.asvt.ascb.assb.ldax.ldax_id=INVALID" -i cvt.asvt.ascb.assb.ldax psa) + +# ============================================================================= +# Extract – Errors: Bad Usage +# ============================================================================= + +cbxp_test_fail(extract.error.no_args ${EXE} extract) +cbxp_test_fail(extract.error.bad_flag_junk ${EXE} extract --junk) +cbxp_test_fail(extract.error.bad_flag_junk_junk ${EXE} extract --junk junk) +cbxp_test_fail(extract.error.unknown_flag_x ${EXE} extract -x "unknown flag" cvt) +cbxp_test_fail(extract.error.include_no_block ${EXE} extract -i cvt) +cbxp_test_fail(extract.error.include_repeat ${EXE} extract -i -i cvt psa) +cbxp_test_fail(extract.error.filter_no_block ${EXE} extract -f psa) +cbxp_test_fail(extract.error.filter_bad_field ${EXE} extract -f psapsa=psa psa) +cbxp_test_fail(extract.error.bad_flag_F ${EXE} extract -F ${SAMPLES}/ascb.bin psa) +cbxp_test_fail(extract.error.bad_flag_o ${EXE} extract -o 1 psa) + +# ============================================================================= +# Extract – Errors: Unknown Control Block +# ============================================================================= + +cbxp_test_fail(extract.error.unknown_block ${EXE} extract unknown) + +# ============================================================================= +# Extract – Errors: Bad Include Patterns +# ============================================================================= + +cbxp_test_fail(extract.error.include.comma_asvt_ascb_cvt ${EXE} extract -i asvt,ascb cvt) +cbxp_test_fail(extract.error.include.comma_asvt_as_cvt ${EXE} extract -i asvt,as cvt) +cbxp_test_fail(extract.error.include.asvt.ascb_psa ${EXE} extract -i asvt.ascb psa) +cbxp_test_fail(extract.error.include.ascb_psa ${EXE} extract -i ascb psa) +cbxp_test_fail(extract.error.include.ecvt_ascb ${EXE} extract -i ecvt ascb) +cbxp_test_fail(extract.error.include.cvt.ecvt_cvt.ascb_psa ${EXE} extract -i cvt.ecvt -i cvt.ascb psa) +cbxp_test_fail(extract.error.include.cvt.asvt.ascb_ecvt ${EXE} extract -i cvt.asvt.ascb -i ecvt psa) +cbxp_test_fail(extract.error.include.cvt_cvt ${EXE} extract -i cvt cvt) +cbxp_test_fail(extract.error.include.ldax_psa ${EXE} extract -i ldax psa) +cbxp_test_fail(extract.error.include.ldax_cvt ${EXE} extract -i ldax cvt) +cbxp_test_fail(extract.error.include.ldax_ascb ${EXE} extract -i ldax ascb) + +# ============================================================================= +# Extract – Errors: Bad Filters +# ============================================================================= + +cbxp_test_fail(extract.error.filter.assbjbns_lowercase_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*master*" psa) +cbxp_test_fail(extract.error.filter.assbjbns_lt_glob_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns<*master*" -i "**" psa) +cbxp_test_fail(extract.error.filter.psapsb_eq_PSA ${EXE} extract -f psapsb=PSA psa) +cbxp_test_fail(extract.error.filter.assbasid_empty ${EXE} extract -f assbasid= assb) +cbxp_test_fail(extract.error.filter.ascbasid_le_junk ${EXE} extract -f "ascbasid<=junk" ascb) +cbxp_test_fail(extract.error.filter.comma_multi_filter ${EXE} extract -f "psapsa=psa,cvt.asvt.ascb.ascbasid<2" cvt) +cbxp_test_fail(extract.error.filter.junk_psa ${EXE} extract -f junk psa) + +# ============================================================================= +# Format – Show Usage +# ============================================================================= + +cbxp_test(format.help_short ${EXE} format -h) +cbxp_test(format.help_long ${EXE} format --help) + +# ============================================================================= +# Format – Basic Usage +# ============================================================================= + +cbxp_test(format.ascb_file ${EXE} format -F ${SAMPLES}/ascb.bin ascb) +cbxp_test(format.oucb_file ${EXE} format -F ${SAMPLES}/oucb.bin oucb) + +# format.cvt_pipe: pipe via shell — CTest runs commands directly, so we use +# cmake -E env + sh to emulate "cat file | cmd" +cbxp_test(format.cvt_pipe + ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/cvt.bin | ${EXE} format cvt") + +# ============================================================================= +# Format – Debug Mode +# ============================================================================= + +cbxp_test(format.debug_short ${EXE} format -F ${SAMPLES}/ascb.bin -d ascb) +cbxp_test(format.debug_long ${EXE} format -F ${SAMPLES}/ascb.bin --debug ascb) + +# ============================================================================= +# Format – Offset +# ============================================================================= + +cbxp_test(format.offset_hex ${EXE} format -F ${SAMPLES}/ascb_offset_0x40.bin -o 0x40 ascb) +cbxp_test(format.offset_decimal ${EXE} format -F ${SAMPLES}/ascb_offset_0x40.bin -o 64 ascb) +cbxp_test(format.offset_oucb_pipe_hex + ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/oucb_offset_0x03a8.bin | ${EXE} format -o 0x03a8 oucb") +cbxp_test(format.offset_oucb_pipe_decimal + ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/oucb_offset_0x03a8.bin | ${EXE} format -o 936 oucb") + +# ============================================================================= +# Format – Errors: Bad Usage +# ============================================================================= + +cbxp_test_fail(format.error.no_args ${EXE} format) +cbxp_test_fail(format.error.bad_flag_junk ${EXE} format --junk) +cbxp_test_fail(format.error.bad_flag_junk_junk ${EXE} format --junk junk) +cbxp_test_fail(format.error.no_file_psa ${EXE} format psa) +cbxp_test_fail(format.error.flag_i_not_supported ${EXE} format -i cvt psa) +cbxp_test_fail(format.error.flag_f_not_supported ${EXE} format -f psapsa=PSA psa) + +# ============================================================================= +# Format – Errors: Unknown Control Block +# ============================================================================= + +cbxp_test_fail(format.error.unknown_block ${EXE} format -F ${SAMPLES}/ascb.bin -d unknown) + +# ============================================================================= +# Format – Errors: Bad Offset +# ============================================================================= + +cbxp_test_fail(format.error.offset_too_large ${EXE} format -F ${SAMPLES}/ascb.bin -o 999999 ascb) +cbxp_test_fail(format.error.offset_negative ${EXE} format -F ${SAMPLES}/ascb.bin -o -1 ascb) +cbxp_test_fail(format.error.offset_junk ${EXE} format -F ${SAMPLES}/ascb.bin -o JUNK ascb) +cbxp_test_fail(format.error.offset_float ${EXE} format -F ${SAMPLES}/ascb.bin -o 5.5 ascb) + +# ============================================================================= +# Format – Errors: Error Opening File +# ============================================================================= + +cbxp_test_fail(format.error.file_not_found ${EXE} format -F ${SAMPLES}/notreal.bin psa) + +# ============================================================================= +# Format – Errors: No File/Pipe provided +# ============================================================================= + +cbxp_test_fail(format.error.no_file_or_pipe ${EXE} format psa) + +# ============================================================================= +# Format – Errors: File and Pipe +# ============================================================================= + +cbxp_test_fail(format.error.file_and_pipe + ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/cvt.bin | ${EXE} format -F ${SAMPLES}/cvt.bin cvt") + +# ============================================================================= +# Format – Errors: Data Too Small +# ============================================================================= + +cbxp_test_fail(format.error.data_too_small ${EXE} format -F ${SAMPLES}/ascb.bin psa) From cc761dab469efb821326f2cef5514bf2b63896ca Mon Sep 17 00:00:00 2001 From: varunchennamadhava Date: Mon, 29 Jun 2026 08:40:17 -0400 Subject: [PATCH 2/8] removed all dashes Signed-off-by: varunchennamadhava --- tests/CMakeLists.txt | 56 ++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ce99593..536a2e8 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,10 +1,10 @@ # ============================================================================= -# CTest suite — translated from tests/test.sh +# CTest suite - translated from tests/test.sh # # Conventions used: -# • Tests that expect exit code 0 → plain add_test (CTest default pass) -# • Tests that expect exit code 255 → add_test + WILL_FAIL TRUE -# • Tests that expect "null" on stdout → add_test + PASS_REGULAR_EXPRESSION "null" +# * Tests that expect exit code 0 -> plain add_test (CTest default pass) +# * Tests that expect exit code 255 -> add_test + WILL_FAIL TRUE +# * Tests that expect "null" on stdout -> add_test + PASS_REGULAR_EXPRESSION "null" # # The cbxp executable is referenced via the generator expression # $ so the path is always correct regardless of the @@ -15,19 +15,19 @@ set(EXE $) set(SAMPLES ${CMAKE_SOURCE_DIR}/tests/samples) # --------------------------------------------------------------------------- -# Helper macro – tests that MUST exit 0 +# Helper macro - tests that MUST exit 0 # --------------------------------------------------------------------------- macro(cbxp_test name) add_test(NAME ${name} COMMAND ${ARGN}) endmacro() -# Helper macro – tests that MUST exit non-zero (255) +# Helper macro - tests that MUST exit non-zero (255) macro(cbxp_test_fail name) add_test(NAME ${name} COMMAND ${ARGN}) set_property(TEST ${name} PROPERTY WILL_FAIL TRUE) endmacro() -# Helper macro – tests whose stdout must contain exactly "null" +# Helper macro - tests whose stdout must contain exactly "null" macro(cbxp_test_null name) add_test(NAME ${name} COMMAND ${ARGN}) set_property(TEST ${name} PROPERTY PASS_REGULAR_EXPRESSION "null") @@ -46,14 +46,14 @@ cbxp_test_fail(general.error.bad_arg_junk ${EXE} junk) cbxp_test_fail(general.error.bad_flag_junk ${EXE} --junk) # ============================================================================= -# Extract – Show Usage +# Extract - Show Usage # ============================================================================= cbxp_test(extract.help_long ${EXE} extract --help) cbxp_test(extract.help_short ${EXE} extract -h) # ============================================================================= -# Extract – Basic Usage +# Extract - Basic Usage # ============================================================================= cbxp_test(extract.psa ${EXE} extract psa) @@ -66,14 +66,14 @@ cbxp_test(extract.oucb ${EXE} extract oucb) cbxp_test(extract.ldax ${EXE} extract ldax) # ============================================================================= -# Extract – Debug Mode +# Extract - Debug Mode # ============================================================================= cbxp_test(extract.debug_short ${EXE} extract -d psa) cbxp_test(extract.debug_long ${EXE} extract --debug psa) # ============================================================================= -# Extract – Include Patterns +# Extract - Include Patterns # ============================================================================= cbxp_test(extract.include.cvt_psa ${EXE} extract -i cvt psa) @@ -102,7 +102,7 @@ cbxp_test(extract.include.ascb.assb.ldax_asvt ${EXE} extract -i asc cbxp_test(extract.include.cvt.asvt.ascb.assb.ldax_psa ${EXE} extract -i cvt.asvt.ascb.assb.ldax psa) # ============================================================================= -# Extract – Filters +# Extract - Filters # ============================================================================= cbxp_test(extract.filter.psapsa_eq_PSA ${EXE} extract -f psapsa=PSA psa) @@ -136,7 +136,7 @@ cbxp_test(extract.filter.ldax_tcthwm_eq_0_ldax ${EXE} extract cbxp_test_null(extract.filter.null.ldax_id_INVALID ${EXE} extract -f "cvt.asvt.ascb.assb.ldax.ldax_id=INVALID" -i cvt.asvt.ascb.assb.ldax psa) # ============================================================================= -# Extract – Errors: Bad Usage +# Extract - Errors: Bad Usage # ============================================================================= cbxp_test_fail(extract.error.no_args ${EXE} extract) @@ -151,13 +151,13 @@ cbxp_test_fail(extract.error.bad_flag_F ${EXE} extract -F ${SAMPLES} cbxp_test_fail(extract.error.bad_flag_o ${EXE} extract -o 1 psa) # ============================================================================= -# Extract – Errors: Unknown Control Block +# Extract - Errors: Unknown Control Block # ============================================================================= cbxp_test_fail(extract.error.unknown_block ${EXE} extract unknown) # ============================================================================= -# Extract – Errors: Bad Include Patterns +# Extract - Errors: Bad Include Patterns # ============================================================================= cbxp_test_fail(extract.error.include.comma_asvt_ascb_cvt ${EXE} extract -i asvt,ascb cvt) @@ -173,7 +173,7 @@ cbxp_test_fail(extract.error.include.ldax_cvt ${EXE} extract -i lda cbxp_test_fail(extract.error.include.ldax_ascb ${EXE} extract -i ldax ascb) # ============================================================================= -# Extract – Errors: Bad Filters +# Extract - Errors: Bad Filters # ============================================================================= cbxp_test_fail(extract.error.filter.assbjbns_lowercase_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*master*" psa) @@ -185,33 +185,33 @@ cbxp_test_fail(extract.error.filter.comma_multi_filter ${EXE} extract - cbxp_test_fail(extract.error.filter.junk_psa ${EXE} extract -f junk psa) # ============================================================================= -# Format – Show Usage +# Format - Show Usage # ============================================================================= cbxp_test(format.help_short ${EXE} format -h) cbxp_test(format.help_long ${EXE} format --help) # ============================================================================= -# Format – Basic Usage +# Format - Basic Usage # ============================================================================= cbxp_test(format.ascb_file ${EXE} format -F ${SAMPLES}/ascb.bin ascb) cbxp_test(format.oucb_file ${EXE} format -F ${SAMPLES}/oucb.bin oucb) -# format.cvt_pipe: pipe via shell — CTest runs commands directly, so we use +# format.cvt_pipe: pipe via shell - CTest runs commands directly, so we use # cmake -E env + sh to emulate "cat file | cmd" cbxp_test(format.cvt_pipe ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/cvt.bin | ${EXE} format cvt") # ============================================================================= -# Format – Debug Mode +# Format - Debug Mode # ============================================================================= cbxp_test(format.debug_short ${EXE} format -F ${SAMPLES}/ascb.bin -d ascb) cbxp_test(format.debug_long ${EXE} format -F ${SAMPLES}/ascb.bin --debug ascb) # ============================================================================= -# Format – Offset +# Format - Offset # ============================================================================= cbxp_test(format.offset_hex ${EXE} format -F ${SAMPLES}/ascb_offset_0x40.bin -o 0x40 ascb) @@ -222,7 +222,7 @@ cbxp_test(format.offset_oucb_pipe_decimal ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/oucb_offset_0x03a8.bin | ${EXE} format -o 936 oucb") # ============================================================================= -# Format – Errors: Bad Usage +# Format - Errors: Bad Usage # ============================================================================= cbxp_test_fail(format.error.no_args ${EXE} format) @@ -233,13 +233,13 @@ cbxp_test_fail(format.error.flag_i_not_supported ${EXE} format -i cvt psa) cbxp_test_fail(format.error.flag_f_not_supported ${EXE} format -f psapsa=PSA psa) # ============================================================================= -# Format – Errors: Unknown Control Block +# Format - Errors: Unknown Control Block # ============================================================================= cbxp_test_fail(format.error.unknown_block ${EXE} format -F ${SAMPLES}/ascb.bin -d unknown) # ============================================================================= -# Format – Errors: Bad Offset +# Format - Errors: Bad Offset # ============================================================================= cbxp_test_fail(format.error.offset_too_large ${EXE} format -F ${SAMPLES}/ascb.bin -o 999999 ascb) @@ -248,26 +248,26 @@ cbxp_test_fail(format.error.offset_junk ${EXE} format -F ${SAMPLES}/as cbxp_test_fail(format.error.offset_float ${EXE} format -F ${SAMPLES}/ascb.bin -o 5.5 ascb) # ============================================================================= -# Format – Errors: Error Opening File +# Format - Errors: Error Opening File # ============================================================================= cbxp_test_fail(format.error.file_not_found ${EXE} format -F ${SAMPLES}/notreal.bin psa) # ============================================================================= -# Format – Errors: No File/Pipe provided +# Format - Errors: No File/Pipe provided # ============================================================================= cbxp_test_fail(format.error.no_file_or_pipe ${EXE} format psa) # ============================================================================= -# Format – Errors: File and Pipe +# Format - Errors: File and Pipe # ============================================================================= cbxp_test_fail(format.error.file_and_pipe ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/cvt.bin | ${EXE} format -F ${SAMPLES}/cvt.bin cvt") # ============================================================================= -# Format – Errors: Data Too Small +# Format - Errors: Data Too Small # ============================================================================= cbxp_test_fail(format.error.data_too_small ${EXE} format -F ${SAMPLES}/ascb.bin psa) From 5284d450ab946bb930259b6b3e2572944999227e Mon Sep 17 00:00:00 2001 From: varunchennamadhava Date: Tue, 30 Jun 2026 15:25:04 -0400 Subject: [PATCH 3/8] dco signoff forgetten Signed-off-by: varunchennamadhava --- tests/CMakeLists.txt | 293 ++++++++++++++++++++----------------------- 1 file changed, 134 insertions(+), 159 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 536a2e8..170f29f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# CTest suite - translated from tests/test.sh +# CTest suite # # Conventions used: # * Tests that expect exit code 0 -> plain add_test (CTest default pass) @@ -15,259 +15,234 @@ set(EXE $) set(SAMPLES ${CMAKE_SOURCE_DIR}/tests/samples) # --------------------------------------------------------------------------- -# Helper macro - tests that MUST exit 0 +# Helper macros - "cbxp.test" prefix is prepended to every test name +# # --------------------------------------------------------------------------- -macro(cbxp_test name) - add_test(NAME ${name} COMMAND ${ARGN}) +macro(cbxp_test_success name) + add_test(NAME cbxp.test${name} COMMAND ${ARGN}) endmacro() # Helper macro - tests that MUST exit non-zero (255) macro(cbxp_test_fail name) - add_test(NAME ${name} COMMAND ${ARGN}) - set_property(TEST ${name} PROPERTY WILL_FAIL TRUE) + add_test(NAME cbxp.test${name} COMMAND ${ARGN}) + set_property(TEST cbxp.test${name} PROPERTY WILL_FAIL TRUE) endmacro() -# Helper macro - tests whose stdout must contain exactly "null" +# Helper macro - tests whose stdout must contain "null" macro(cbxp_test_null name) - add_test(NAME ${name} COMMAND ${ARGN}) - set_property(TEST ${name} PROPERTY PASS_REGULAR_EXPRESSION "null") + add_test(NAME cbxp.test${name} COMMAND ${ARGN}) + set_property(TEST cbxp.test${name} PROPERTY PASS_REGULAR_EXPRESSION "null") endmacro() # ============================================================================= # General # ============================================================================= - -cbxp_test(general.help_short ${EXE} -h) -cbxp_test(general.help_long ${EXE} --help) -cbxp_test(general.version_short ${EXE} -v) -cbxp_test(general.version_long ${EXE} --version) - -cbxp_test_fail(general.error.bad_arg_junk ${EXE} junk) -cbxp_test_fail(general.error.bad_flag_junk ${EXE} --junk) +cbxp_test_success(GeneralHelpShort ${EXE} -h) +cbxp_test_success(GeneralHelpLong ${EXE} --help) +cbxp_test_success(GeneralVersionShort ${EXE} -v) +cbxp_test_success(GeneralVersionLong ${EXE} --version) +cbxp_test_fail(GeneralErrorBadArgJunk ${EXE} junk) +cbxp_test_fail(GeneralErrorBadFlagJunk ${EXE} --junk) # ============================================================================= # Extract - Show Usage # ============================================================================= - -cbxp_test(extract.help_long ${EXE} extract --help) -cbxp_test(extract.help_short ${EXE} extract -h) +cbxp_test_success(ExtractHelpLong ${EXE} extract --help) +cbxp_test_success(ExtractHelpShort ${EXE} extract -h) # ============================================================================= # Extract - Basic Usage # ============================================================================= - -cbxp_test(extract.psa ${EXE} extract psa) -cbxp_test(extract.cvt ${EXE} extract cvt) -cbxp_test(extract.ecvt ${EXE} extract ecvt) -cbxp_test(extract.asvt ${EXE} extract asvt) -cbxp_test(extract.ascb ${EXE} extract ascb) -cbxp_test(extract.assb ${EXE} extract assb) -cbxp_test(extract.oucb ${EXE} extract oucb) -cbxp_test(extract.ldax ${EXE} extract ldax) +cbxp_test_success(ExtractPsa ${EXE} extract psa) +cbxp_test_success(ExtractCvt ${EXE} extract cvt) +cbxp_test_success(ExtractEcvt ${EXE} extract ecvt) +cbxp_test_success(ExtractAsvt ${EXE} extract asvt) +cbxp_test_success(ExtractAscb ${EXE} extract ascb) +cbxp_test_success(ExtractAssb ${EXE} extract assb) +cbxp_test_success(ExtractOucb ${EXE} extract oucb) +cbxp_test_success(ExtractLdax ${EXE} extract ldax) # ============================================================================= # Extract - Debug Mode # ============================================================================= - -cbxp_test(extract.debug_short ${EXE} extract -d psa) -cbxp_test(extract.debug_long ${EXE} extract --debug psa) +cbxp_test_success(ExtractDebugShort ${EXE} extract -d psa) +cbxp_test_success(ExtractDebugLong ${EXE} extract --debug psa) # ============================================================================= # Extract - Include Patterns # ============================================================================= - -cbxp_test(extract.include.cvt_psa ${EXE} extract -i cvt psa) -cbxp_test(extract.include.cvt_psa_long ${EXE} extract --include cvt psa) -cbxp_test(extract.include.ecvt_cvt ${EXE} extract -i ecvt cvt) -cbxp_test(extract.include.asvt_cvt ${EXE} extract -i asvt cvt) -cbxp_test(extract.include.ascb_asvt ${EXE} extract -i ascb asvt) -cbxp_test(extract.include.cvt.ecvt_psa ${EXE} extract -i cvt.ecvt psa) -cbxp_test(extract.include.cvt.asvt.ascb_psa ${EXE} extract -i cvt.asvt.ascb psa) -cbxp_test(extract.include.asvt.ascb_cvt ${EXE} extract -i asvt.ascb cvt) -cbxp_test(extract.include.multi_ecvt_asvt_cvt ${EXE} extract -i ecvt -i asvt cvt) -cbxp_test(extract.include.multi_cvt.ecvt_cvt.asvt.ascb_psa ${EXE} extract -i cvt.ecvt -i cvt.asvt.ascb psa) -cbxp_test(extract.include.glob_cvt.**_psa ${EXE} extract -i "cvt.**" psa) -cbxp_test(extract.include.glob_cvt.*_psa ${EXE} extract -i "cvt.*" psa) -cbxp_test(extract.include.glob_asvt.*_*_cvt ${EXE} extract -i "asvt.*" -i "*" cvt) -cbxp_test(extract.include.assb_ascb ${EXE} extract -i assb ascb) -cbxp_test(extract.include.oucb_ascb ${EXE} extract -i oucb ascb) -cbxp_test(extract.include.cvt.ecvt_cvt.asvt.ascb.assb_psa ${EXE} extract -i cvt.ecvt -i cvt.asvt.ascb.assb psa) -cbxp_test(extract.include.cvt.ecvt_cvt.asvt.ascb.oucb_psa ${EXE} extract -i cvt.ecvt -i cvt.asvt.ascb.oucb psa) -cbxp_test(extract.include.glob_*_assb ${EXE} extract -i "*" assb) -cbxp_test(extract.include.glob_**_assb ${EXE} extract -i "**" assb) -cbxp_test(extract.include.glob_assb.**_ascb ${EXE} extract -i "assb.**" ascb) -cbxp_test(extract.include.ldax_assb ${EXE} extract -i ldax assb) -cbxp_test(extract.include.assb.ldax_ascb ${EXE} extract -i assb.ldax ascb) -cbxp_test(extract.include.ascb.assb.ldax_asvt ${EXE} extract -i ascb.assb.ldax asvt) -cbxp_test(extract.include.cvt.asvt.ascb.assb.ldax_psa ${EXE} extract -i cvt.asvt.ascb.assb.ldax psa) +cbxp_test_success(ExtractIncludeCvtPsa ${EXE} extract -i cvt psa) +cbxp_test_success(ExtractIncludeCvtPsaLong ${EXE} extract --include cvt psa) +cbxp_test_success(ExtractIncludeEcvtCvt ${EXE} extract -i ecvt cvt) +cbxp_test_success(ExtractIncludeAsvtCvt ${EXE} extract -i asvt cvt) +cbxp_test_success(ExtractIncludeAscbAsvt ${EXE} extract -i ascb asvt) +cbxp_test_success(ExtractIncludeCvtEcvtPsa ${EXE} extract -i cvt.ecvt psa) +cbxp_test_success(ExtractIncludeCvtAsvtAscbPsa ${EXE} extract -i cvt.asvt.ascb psa) +cbxp_test_success(ExtractIncludeAsvtAscbCvt ${EXE} extract -i asvt.ascb cvt) +cbxp_test_success(ExtractIncludeMultiEcvtAsvtCvt ${EXE} extract -i ecvt -i asvt cvt) +cbxp_test_success(ExtractIncludeMultiCvtEcvtCvtAsvtAscbPsa ${EXE} extract -i cvt.ecvt -i cvt.asvt.ascb psa) +cbxp_test_success(ExtractIncludeGlobCvtDeepPsa ${EXE} extract -i "cvt.**" psa) +cbxp_test_success(ExtractIncludeGlobCvtShallowPsa ${EXE} extract -i "cvt.*" psa) +cbxp_test_success(ExtractIncludeGlobAsvtShallowWildCvt ${EXE} extract -i "asvt.*" -i "*" cvt) +cbxp_test_success(ExtractIncludeAssbAscb ${EXE} extract -i assb ascb) +cbxp_test_success(ExtractIncludeOucbAscb ${EXE} extract -i oucb ascb) +cbxp_test_success(ExtractIncludeCvtEcvtCvtAsvtAscbAssbPsa ${EXE} extract -i cvt.ecvt -i cvt.asvt.ascb.assb psa) +cbxp_test_success(ExtractIncludeCvtEcvtCvtAsvtAscbOucbPsa ${EXE} extract -i cvt.ecvt -i cvt.asvt.ascb.oucb psa) +cbxp_test_success(ExtractIncludeGlobWildAssb ${EXE} extract -i "*" assb) +cbxp_test_success(ExtractIncludeGlobDeepWildAssb ${EXE} extract -i "**" assb) +cbxp_test_success(ExtractIncludeGlobAssbDeepAscb ${EXE} extract -i "assb.**" ascb) +cbxp_test_success(ExtractIncludeLdaxAssb ${EXE} extract -i ldax assb) +cbxp_test_success(ExtractIncludeAssbLdaxAscb ${EXE} extract -i assb.ldax ascb) +cbxp_test_success(ExtractIncludeAscbAssbLdaxAsvt ${EXE} extract -i ascb.assb.ldax asvt) +cbxp_test_success(ExtractIncludeCvtAsvtAscbAssbLdaxPsa ${EXE} extract -i cvt.asvt.ascb.assb.ldax psa) # ============================================================================= # Extract - Filters # ============================================================================= - -cbxp_test(extract.filter.psapsa_eq_PSA ${EXE} extract -f psapsa=PSA psa) -cbxp_test(extract.filter.assbjbns_MASTER_glob_all_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -i "**" psa) -cbxp_test(extract.filter.assbjbns_MASTER_include_assb_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -i cvt.asvt.ascb.assb psa) -cbxp_test(extract.filter.assbjbns_MASTER_ascbasid_gt0_glob_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -f "cvt.asvt.ascb.ascbasid>0" -i "**" psa) -cbxp_test(extract.filter.assbjbns_?MAS?ER?_include_assb_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=?MAS?ER?" -i cvt.asvt.ascb.assb psa) -cbxp_test(extract.filter.ascbasid_eq_1 ${EXE} extract -f "cvt.asvt.ascb.ascbasid=1" -i "**" psa) -cbxp_test(extract.filter.ascbasid_gt_0 ${EXE} extract -f "cvt.asvt.ascb.ascbasid>0" -i "**" psa) -cbxp_test(extract.filter.ascbasid_lt_2 ${EXE} extract -f "cvt.asvt.ascb.ascbasid<2" -i "**" psa) -cbxp_test(extract.filter.ascbasid_ge_1 ${EXE} extract -f "cvt.asvt.ascb.ascbasid>=1" -i "**" psa) -cbxp_test(extract.filter.ascbasid_le_2 ${EXE} extract -f "cvt.asvt.ascb.ascbasid<=2" -i "**" psa) -cbxp_test(extract.filter.cvtasmvt_eq_decimal ${EXE} extract -f "cvtasmvt=2281701376" cvt) -cbxp_test(extract.filter.cvtasmvt_eq_hex ${EXE} extract -f "cvtasmvt=0x88000000" cvt) -cbxp_test(extract.filter.cvtasmvt_gt_hex ${EXE} extract -f "cvtasmvt>0x87FFFFFF" cvt) -cbxp_test(extract.filter.cvtasmvt_lt_hex ${EXE} extract -f "cvtasmvt<0x88000001" cvt) -cbxp_test(extract.filter.cvtasmvt_ge_hex ${EXE} extract -f "cvtasmvt>=0x87FFFFFF" cvt) -cbxp_test(extract.filter.cvtasmvt_le_hex ${EXE} extract -f "cvtasmvt<=0x88000000" cvt) -cbxp_test(extract.filter.oucbtrxn_eq_OMVS ${EXE} extract -f "oucbtrxn=OMVS" oucb) -cbxp_test(extract.filter.oucb.oucbtrxn_eq_OMVS_include_oucb_ascb ${EXE} extract -i oucb -f "oucb.oucbtrxn=OMVS" ascb) - -cbxp_test_null(extract.filter.null.psapsa_eq_PSB ${EXE} extract -f psapsa=PSB psa) -cbxp_test_null(extract.filter.null.assbjbns_MASTER_ascbasid_2_include_asvt ${EXE} extract -f "ascb.assb.assbjbns=*MASTER*" -f "ascb.ascbasid=2" -i ascb.assb asvt) - -cbxp_test(extract.filter.assbjbns_MASTER_assbjbni_empty_bare ${EXE} extract -f assbjbns=*MASTER* -f assbjbni= assb) -cbxp_test(extract.filter.assbjbns_MASTER_assbjbni_empty_dquote ${EXE} extract -f assbjbns=*MASTER* -f "assbjbni=" assb) -cbxp_test(extract.filter.assbjbns_MASTER_assbjbni_empty_squote ${EXE} extract -f assbjbns=*MASTER* -f "assbjbni=" assb) -cbxp_test(extract.filter.ldax_tcthwm_eq_0 ${EXE} extract -f "cvt.asvt.ascb.assb.ldax.ldax_tcthwm=0" -i cvt.asvt.ascb.assb.ldax psa) -cbxp_test(extract.filter.ldax_tcthwm_eq_0_ldax ${EXE} extract -f "ldax_tcthwm=0" ldax) - -cbxp_test_null(extract.filter.null.ldax_id_INVALID ${EXE} extract -f "cvt.asvt.ascb.assb.ldax.ldax_id=INVALID" -i cvt.asvt.ascb.assb.ldax psa) +cbxp_test_success(ExtractFilterPsapsaEqPSA ${EXE} extract -f psapsa=PSA psa) +cbxp_test_success(ExtractFilterAssbjbnsMASTERGlobAllPsa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -i "**" psa) +cbxp_test_success(ExtractFilterAssbjbnsMASTERIncludeAssbPsa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -i cvt.asvt.ascb.assb psa) +cbxp_test_success(ExtractFilterAssbjbnsMASTERAscbasidGt0GlobPsa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -f "cvt.asvt.ascb.ascbasid>0" -i "**" psa) +cbxp_test_success(ExtractFilterAssbjbnsMASWildERIncludeAssbPsa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=?MAS?ER?" -i cvt.asvt.ascb.assb psa) +cbxp_test_success(ExtractFilterAscbasidEq1 ${EXE} extract -f "cvt.asvt.ascb.ascbasid=1" -i "**" psa) +cbxp_test_success(ExtractFilterAscbasidGt0 ${EXE} extract -f "cvt.asvt.ascb.ascbasid>0" -i "**" psa) +cbxp_test_success(ExtractFilterAscbasidLt2 ${EXE} extract -f "cvt.asvt.ascb.ascbasid<2" -i "**" psa) +cbxp_test_success(ExtractFilterAscbasidGe1 ${EXE} extract -f "cvt.asvt.ascb.ascbasid>=1" -i "**" psa) +cbxp_test_success(ExtractFilterAscbasidLe2 ${EXE} extract -f "cvt.asvt.ascb.ascbasid<=2" -i "**" psa) +cbxp_test_success(ExtractFilterCvtasmvtEqDecimal ${EXE} extract -f "cvtasmvt=2281701376" cvt) +cbxp_test_success(ExtractFilterCvtasmvtEqHex ${EXE} extract -f "cvtasmvt=0x88000000" cvt) +cbxp_test_success(ExtractFilterCvtasmvtGtHex ${EXE} extract -f "cvtasmvt>0x87FFFFFF" cvt) +cbxp_test_success(ExtractFilterCvtasmvtLtHex ${EXE} extract -f "cvtasmvt<0x88000001" cvt) +cbxp_test_success(ExtractFilterCvtasmvtGeHex ${EXE} extract -f "cvtasmvt>=0x87FFFFFF" cvt) +cbxp_test_success(ExtractFilterCvtasmvtLeHex ${EXE} extract -f "cvtasmvt<=0x88000000" cvt) +cbxp_test_success(ExtractFilterOucbtrxnEqOMVS ${EXE} extract -f "oucbtrxn=OMVS" oucb) +cbxp_test_success(ExtractFilterOucbOucbtrxnEqOMVSIncludeOucbAscb ${EXE} extract -i oucb -f "oucb.oucbtrxn=OMVS" ascb) +cbxp_test_null(ExtractFilterNullPsapsaEqPSB ${EXE} extract -f psapsa=PSB psa) +cbxp_test_null(ExtractFilterNullAssbjbnsMASTERAscbasid2IncludeAsvt ${EXE} extract -f "ascb.assb.assbjbns=*MASTER*" -f "ascb.ascbasid=2" -i ascb.assb asvt) +cbxp_test_success(ExtractFilterAssbjbnsMASTERAssbjbniEmptyBare ${EXE} extract -f assbjbns=*MASTER* -f assbjbni= assb) +cbxp_test_success(ExtractFilterAssbjbnsMASTERAssbjbniEmptyDquote ${EXE} extract -f assbjbns=*MASTER* -f "assbjbni=" assb) +cbxp_test_success(ExtractFilterAssbjbnsMASTERAssbjbniEmptySquote ${EXE} extract -f assbjbns=*MASTER* -f "assbjbni=" assb) +cbxp_test_success(ExtractFilterLdaxTcthwmEq0 ${EXE} extract -f "cvt.asvt.ascb.assb.ldax.ldax_tcthwm=0" -i cvt.asvt.ascb.assb.ldax psa) +cbxp_test_success(ExtractFilterLdaxTcthwmEq0Ldax ${EXE} extract -f "ldax_tcthwm=0" ldax) +cbxp_test_null(ExtractFilterNullLdaxIdInvalid ${EXE} extract -f "cvt.asvt.ascb.assb.ldax.ldax_id=INVALID" -i cvt.asvt.ascb.assb.ldax psa) # ============================================================================= # Extract - Errors: Bad Usage # ============================================================================= - -cbxp_test_fail(extract.error.no_args ${EXE} extract) -cbxp_test_fail(extract.error.bad_flag_junk ${EXE} extract --junk) -cbxp_test_fail(extract.error.bad_flag_junk_junk ${EXE} extract --junk junk) -cbxp_test_fail(extract.error.unknown_flag_x ${EXE} extract -x "unknown flag" cvt) -cbxp_test_fail(extract.error.include_no_block ${EXE} extract -i cvt) -cbxp_test_fail(extract.error.include_repeat ${EXE} extract -i -i cvt psa) -cbxp_test_fail(extract.error.filter_no_block ${EXE} extract -f psa) -cbxp_test_fail(extract.error.filter_bad_field ${EXE} extract -f psapsa=psa psa) -cbxp_test_fail(extract.error.bad_flag_F ${EXE} extract -F ${SAMPLES}/ascb.bin psa) -cbxp_test_fail(extract.error.bad_flag_o ${EXE} extract -o 1 psa) +cbxp_test_fail(ExtractErrorNoArgs ${EXE} extract) +cbxp_test_fail(ExtractErrorBadFlagJunk ${EXE} extract --junk) +cbxp_test_fail(ExtractErrorBadFlagJunkJunk ${EXE} extract --junk junk) +cbxp_test_fail(ExtractErrorUnknownFlagX ${EXE} extract -x "unknown flag" cvt) +cbxp_test_fail(ExtractErrorIncludeNoValue ${EXE} extract -i cvt) +cbxp_test_fail(ExtractErrorIncludeMissingValue ${EXE} extract -i -i cvt psa) +cbxp_test_fail(ExtractErrorFilterNoValue ${EXE} extract -f psa) +cbxp_test_fail(ExtractErrorFilterNoBlock ${EXE} extract -f psapsa=psa psa) +cbxp_test_fail(ExtractErrorBadFlagF ${EXE} extract -F ${SAMPLES}/ascb.bin psa) +cbxp_test_fail(ExtractErrorBadFlagO ${EXE} extract -o 1 psa) # ============================================================================= # Extract - Errors: Unknown Control Block # ============================================================================= - -cbxp_test_fail(extract.error.unknown_block ${EXE} extract unknown) +cbxp_test_fail(ExtractErrorUnknownBlock ${EXE} extract unknown) # ============================================================================= # Extract - Errors: Bad Include Patterns # ============================================================================= - -cbxp_test_fail(extract.error.include.comma_asvt_ascb_cvt ${EXE} extract -i asvt,ascb cvt) -cbxp_test_fail(extract.error.include.comma_asvt_as_cvt ${EXE} extract -i asvt,as cvt) -cbxp_test_fail(extract.error.include.asvt.ascb_psa ${EXE} extract -i asvt.ascb psa) -cbxp_test_fail(extract.error.include.ascb_psa ${EXE} extract -i ascb psa) -cbxp_test_fail(extract.error.include.ecvt_ascb ${EXE} extract -i ecvt ascb) -cbxp_test_fail(extract.error.include.cvt.ecvt_cvt.ascb_psa ${EXE} extract -i cvt.ecvt -i cvt.ascb psa) -cbxp_test_fail(extract.error.include.cvt.asvt.ascb_ecvt ${EXE} extract -i cvt.asvt.ascb -i ecvt psa) -cbxp_test_fail(extract.error.include.cvt_cvt ${EXE} extract -i cvt cvt) -cbxp_test_fail(extract.error.include.ldax_psa ${EXE} extract -i ldax psa) -cbxp_test_fail(extract.error.include.ldax_cvt ${EXE} extract -i ldax cvt) -cbxp_test_fail(extract.error.include.ldax_ascb ${EXE} extract -i ldax ascb) +cbxp_test_fail(ExtractErrorIncludeCommaAsvtAscbCvt ${EXE} extract -i asvt,ascb cvt) +cbxp_test_fail(ExtractErrorIncludeCommaAsvtAsCvt ${EXE} extract -i asvt,as cvt) +cbxp_test_fail(ExtractErrorIncludeAsvtAscbPsa ${EXE} extract -i asvt.ascb psa) +cbxp_test_fail(ExtractErrorIncludeAscbPsa ${EXE} extract -i ascb psa) +cbxp_test_fail(ExtractErrorIncludeEcvtAscb ${EXE} extract -i ecvt ascb) +cbxp_test_fail(ExtractErrorIncludeCvtEcvtCvtAscbPsa ${EXE} extract -i cvt.ecvt -i cvt.ascb psa) +cbxp_test_fail(ExtractErrorIncludeCvtAsvtAscbEcvtPsa ${EXE} extract -i cvt.asvt.ascb -i ecvt psa) +cbxp_test_fail(ExtractErrorIncludeCvtCvt ${EXE} extract -i cvt cvt) +cbxp_test_fail(ExtractErrorIncludeLdaxPsa ${EXE} extract -i ldax psa) +cbxp_test_fail(ExtractErrorIncludeLdaxCvt ${EXE} extract -i ldax cvt) +cbxp_test_fail(ExtractErrorIncludeLdaxAscb ${EXE} extract -i ldax ascb) # ============================================================================= # Extract - Errors: Bad Filters # ============================================================================= - -cbxp_test_fail(extract.error.filter.assbjbns_lowercase_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*master*" psa) -cbxp_test_fail(extract.error.filter.assbjbns_lt_glob_psa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns<*master*" -i "**" psa) -cbxp_test_fail(extract.error.filter.psapsb_eq_PSA ${EXE} extract -f psapsb=PSA psa) -cbxp_test_fail(extract.error.filter.assbasid_empty ${EXE} extract -f assbasid= assb) -cbxp_test_fail(extract.error.filter.ascbasid_le_junk ${EXE} extract -f "ascbasid<=junk" ascb) -cbxp_test_fail(extract.error.filter.comma_multi_filter ${EXE} extract -f "psapsa=psa,cvt.asvt.ascb.ascbasid<2" cvt) -cbxp_test_fail(extract.error.filter.junk_psa ${EXE} extract -f junk psa) +cbxp_test_fail(ExtractErrorFilterAssbjbnsLowercasePsa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns=*master*" psa) +cbxp_test_fail(ExtractErrorFilterAssbjbnsLtGlobPsa ${EXE} extract -f "cvt.asvt.ascb.assb.assbjbns<*master*" -i "**" psa) +cbxp_test_fail(ExtractErrorFilterPsapsbEqPSA ${EXE} extract -f psapsb=PSA psa) +cbxp_test_fail(ExtractErrorFilterAssbasidEmpty ${EXE} extract -f assbasid= assb) +cbxp_test_fail(ExtractErrorFilterAscbasidLeJunk ${EXE} extract -f "ascbasid<=junk" ascb) +cbxp_test_fail(ExtractErrorFilterCommaMultiFilter ${EXE} extract -f "psapsa=psa,cvt.asvt.ascb.ascbasid<2" cvt) +cbxp_test_fail(ExtractErrorFilterJunkPsa ${EXE} extract -f junk psa) # ============================================================================= # Format - Show Usage # ============================================================================= - -cbxp_test(format.help_short ${EXE} format -h) -cbxp_test(format.help_long ${EXE} format --help) +cbxp_test_success(FormatHelpShort ${EXE} format -h) +cbxp_test_success(FormatHelpLong ${EXE} format --help) # ============================================================================= # Format - Basic Usage # ============================================================================= - -cbxp_test(format.ascb_file ${EXE} format -F ${SAMPLES}/ascb.bin ascb) -cbxp_test(format.oucb_file ${EXE} format -F ${SAMPLES}/oucb.bin oucb) - -# format.cvt_pipe: pipe via shell - CTest runs commands directly, so we use +cbxp_test_success(FormatAscbFile ${EXE} format -F ${SAMPLES}/ascb.bin ascb) +cbxp_test_success(FormatOucbFile ${EXE} format -F ${SAMPLES}/oucb.bin oucb) +# pipe via shell - CTest runs commands directly, so we use # cmake -E env + sh to emulate "cat file | cmd" -cbxp_test(format.cvt_pipe +cbxp_test_success(FormatCvtPipe ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/cvt.bin | ${EXE} format cvt") # ============================================================================= # Format - Debug Mode # ============================================================================= - -cbxp_test(format.debug_short ${EXE} format -F ${SAMPLES}/ascb.bin -d ascb) -cbxp_test(format.debug_long ${EXE} format -F ${SAMPLES}/ascb.bin --debug ascb) +cbxp_test_success(FormatDebugShort ${EXE} format -F ${SAMPLES}/ascb.bin -d ascb) +cbxp_test_success(FormatDebugLong ${EXE} format -F ${SAMPLES}/ascb.bin --debug ascb) # ============================================================================= # Format - Offset # ============================================================================= - -cbxp_test(format.offset_hex ${EXE} format -F ${SAMPLES}/ascb_offset_0x40.bin -o 0x40 ascb) -cbxp_test(format.offset_decimal ${EXE} format -F ${SAMPLES}/ascb_offset_0x40.bin -o 64 ascb) -cbxp_test(format.offset_oucb_pipe_hex +cbxp_test_success(FormatOffsetHex ${EXE} format -F ${SAMPLES}/ascb_offset_0x40.bin -o 0x40 ascb) +cbxp_test_success(FormatOffsetDecimal ${EXE} format -F ${SAMPLES}/ascb_offset_0x40.bin -o 64 ascb) +cbxp_test_success(FormatOffsetOucbPipeHex ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/oucb_offset_0x03a8.bin | ${EXE} format -o 0x03a8 oucb") -cbxp_test(format.offset_oucb_pipe_decimal +cbxp_test_success(FormatOffsetOucbPipeDecimal ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/oucb_offset_0x03a8.bin | ${EXE} format -o 936 oucb") # ============================================================================= # Format - Errors: Bad Usage # ============================================================================= - -cbxp_test_fail(format.error.no_args ${EXE} format) -cbxp_test_fail(format.error.bad_flag_junk ${EXE} format --junk) -cbxp_test_fail(format.error.bad_flag_junk_junk ${EXE} format --junk junk) -cbxp_test_fail(format.error.no_file_psa ${EXE} format psa) -cbxp_test_fail(format.error.flag_i_not_supported ${EXE} format -i cvt psa) -cbxp_test_fail(format.error.flag_f_not_supported ${EXE} format -f psapsa=PSA psa) +cbxp_test_fail(FormatErrorNoArgs ${EXE} format) +cbxp_test_fail(FormatErrorBadFlagJunk ${EXE} format --junk) +cbxp_test_fail(FormatErrorBadFlagJunkJunk ${EXE} format --junk junk) +cbxp_test_fail(FormatErrorNoFilePsa ${EXE} format psa) +cbxp_test_fail(FormatErrorFlagINotSupported ${EXE} format -i cvt psa) +cbxp_test_fail(FormatErrorFlagFNotSupported ${EXE} format -f psapsa=PSA psa) # ============================================================================= # Format - Errors: Unknown Control Block # ============================================================================= - -cbxp_test_fail(format.error.unknown_block ${EXE} format -F ${SAMPLES}/ascb.bin -d unknown) +cbxp_test_fail(FormatErrorUnknownBlock ${EXE} format -F ${SAMPLES}/ascb.bin -d unknown) # ============================================================================= # Format - Errors: Bad Offset # ============================================================================= - -cbxp_test_fail(format.error.offset_too_large ${EXE} format -F ${SAMPLES}/ascb.bin -o 999999 ascb) -cbxp_test_fail(format.error.offset_negative ${EXE} format -F ${SAMPLES}/ascb.bin -o -1 ascb) -cbxp_test_fail(format.error.offset_junk ${EXE} format -F ${SAMPLES}/ascb.bin -o JUNK ascb) -cbxp_test_fail(format.error.offset_float ${EXE} format -F ${SAMPLES}/ascb.bin -o 5.5 ascb) +cbxp_test_fail(FormatErrorOffsetTooLarge ${EXE} format -F ${SAMPLES}/ascb.bin -o 999999 ascb) +cbxp_test_fail(FormatErrorOffsetNegative ${EXE} format -F ${SAMPLES}/ascb.bin -o -1 ascb) +cbxp_test_fail(FormatErrorOffsetJunk ${EXE} format -F ${SAMPLES}/ascb.bin -o JUNK ascb) +cbxp_test_fail(FormatErrorOffsetFloat ${EXE} format -F ${SAMPLES}/ascb.bin -o 5.5 ascb) # ============================================================================= # Format - Errors: Error Opening File # ============================================================================= - -cbxp_test_fail(format.error.file_not_found ${EXE} format -F ${SAMPLES}/notreal.bin psa) +cbxp_test_fail(FormatErrorFileNotFound ${EXE} format -F ${SAMPLES}/notreal.bin psa) # ============================================================================= # Format - Errors: No File/Pipe provided # ============================================================================= - -cbxp_test_fail(format.error.no_file_or_pipe ${EXE} format psa) +cbxp_test_fail(FormatErrorNoFileOrPipe ${EXE} format psa) # ============================================================================= # Format - Errors: File and Pipe # ============================================================================= - -cbxp_test_fail(format.error.file_and_pipe +cbxp_test_fail(FormatErrorFileAndPipe ${CMAKE_COMMAND} -E env sh -c "cat ${SAMPLES}/cvt.bin | ${EXE} format -F ${SAMPLES}/cvt.bin cvt") # ============================================================================= # Format - Errors: Data Too Small # ============================================================================= - -cbxp_test_fail(format.error.data_too_small ${EXE} format -F ${SAMPLES}/ascb.bin psa) +cbxp_test_fail(FormatErrorDataTooSmall ${EXE} format -F ${SAMPLES}/ascb.bin psa) From 7474f483c9b944071653a6b684fd5c400b564b88 Mon Sep 17 00:00:00 2001 From: varunchennamadhava Date: Tue, 30 Jun 2026 15:30:01 -0400 Subject: [PATCH 4/8] translation of test Signed-off-by: varunchennamadhava --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 170f29f..d8f5a12 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -136,7 +136,7 @@ cbxp_test_fail(ExtractErrorUnknownFlagX ${EXE} extract -x "unknown flag" cbxp_test_fail(ExtractErrorIncludeNoValue ${EXE} extract -i cvt) cbxp_test_fail(ExtractErrorIncludeMissingValue ${EXE} extract -i -i cvt psa) cbxp_test_fail(ExtractErrorFilterNoValue ${EXE} extract -f psa) -cbxp_test_fail(ExtractErrorFilterNoBlock ${EXE} extract -f psapsa=psa psa) +cbxp_test_fail(ExtractErrorFilterNoBlock ${EXE} extract -f psapsa=psa) cbxp_test_fail(ExtractErrorBadFlagF ${EXE} extract -F ${SAMPLES}/ascb.bin psa) cbxp_test_fail(ExtractErrorBadFlagO ${EXE} extract -o 1 psa) From cbce94410065b53df96eb6daca650aab2ebee7e8 Mon Sep 17 00:00:00 2001 From: varunchennamadhava Date: Tue, 30 Jun 2026 15:52:07 -0400 Subject: [PATCH 5/8] double checked test cases Signed-off-by: varunchennamadhava --- tests/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d8f5a12..24f676a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -119,9 +119,9 @@ cbxp_test_success(ExtractFilterOucbtrxnEqOMVS ${EXE} extra cbxp_test_success(ExtractFilterOucbOucbtrxnEqOMVSIncludeOucbAscb ${EXE} extract -i oucb -f "oucb.oucbtrxn=OMVS" ascb) cbxp_test_null(ExtractFilterNullPsapsaEqPSB ${EXE} extract -f psapsa=PSB psa) cbxp_test_null(ExtractFilterNullAssbjbnsMASTERAscbasid2IncludeAsvt ${EXE} extract -f "ascb.assb.assbjbns=*MASTER*" -f "ascb.ascbasid=2" -i ascb.assb asvt) -cbxp_test_success(ExtractFilterAssbjbnsMASTERAssbjbniEmptyBare ${EXE} extract -f assbjbns=*MASTER* -f assbjbni= assb) -cbxp_test_success(ExtractFilterAssbjbnsMASTERAssbjbniEmptyDquote ${EXE} extract -f assbjbns=*MASTER* -f "assbjbni=" assb) -cbxp_test_success(ExtractFilterAssbjbnsMASTERAssbjbniEmptySquote ${EXE} extract -f assbjbns=*MASTER* -f "assbjbni=" assb) +cbxp_test_success(ExtractFilterAssbjbnsMASTERAssbjbniEmptyBare ${EXE} extract -f assbjbns=*MASTER* -f assbjbni= assb) +cbxp_test_success(ExtractFilterAssbjbnsMASTERAssbjbniEmptyDquote ${EXE} extract -f assbjbns=*MASTER* -f assbjbni="" assb) +cbxp_test_success(ExtractFilterAssbjbnsMASTERAssbjbniEmptySquote ${EXE} extract -f assbjbns=*MASTER* -f assbjbni='' assb) cbxp_test_success(ExtractFilterLdaxTcthwmEq0 ${EXE} extract -f "cvt.asvt.ascb.assb.ldax.ldax_tcthwm=0" -i cvt.asvt.ascb.assb.ldax psa) cbxp_test_success(ExtractFilterLdaxTcthwmEq0Ldax ${EXE} extract -f "ldax_tcthwm=0" ldax) cbxp_test_null(ExtractFilterNullLdaxIdInvalid ${EXE} extract -f "cvt.asvt.ascb.assb.ldax.ldax_id=INVALID" -i cvt.asvt.ascb.assb.ldax psa) From 67d2425e9b8e3ea62dc08ff5f2b8f715c2b8a078 Mon Sep 17 00:00:00 2001 From: varunchennamadhava Date: Tue, 30 Jun 2026 15:57:29 -0400 Subject: [PATCH 6/8] added FIXTURES_REQUIRED Signed-off-by: varunchennamadhava --- tests/CMakeLists.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 24f676a..b2dca7d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,24 +14,35 @@ set(EXE $) set(SAMPLES ${CMAKE_SOURCE_DIR}/tests/samples) +# --------------------------------------------------------------------------- +# Build fixture — ensures cbxp (and its libcbxp dependency) are compiled +# before any test runs. Building cbxp is sufficient; libcbxp is already a +# link dependency of cbxp so CMake will build it automatically. +# --------------------------------------------------------------------------- +add_test(NAME cbxp.build + COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target cbxp) +set_property(TEST cbxp.build PROPERTY FIXTURES_SETUP cbxp.built) + # --------------------------------------------------------------------------- # Helper macros - "cbxp.test" prefix is prepended to every test name -# # --------------------------------------------------------------------------- macro(cbxp_test_success name) add_test(NAME cbxp.test${name} COMMAND ${ARGN}) + set_property(TEST cbxp.test${name} PROPERTY FIXTURES_REQUIRED cbxp.built) endmacro() # Helper macro - tests that MUST exit non-zero (255) macro(cbxp_test_fail name) add_test(NAME cbxp.test${name} COMMAND ${ARGN}) set_property(TEST cbxp.test${name} PROPERTY WILL_FAIL TRUE) + set_property(TEST cbxp.test${name} PROPERTY FIXTURES_REQUIRED cbxp.built) endmacro() # Helper macro - tests whose stdout must contain "null" macro(cbxp_test_null name) add_test(NAME cbxp.test${name} COMMAND ${ARGN}) set_property(TEST cbxp.test${name} PROPERTY PASS_REGULAR_EXPRESSION "null") + set_property(TEST cbxp.test${name} PROPERTY FIXTURES_REQUIRED cbxp.built) endmacro() # ============================================================================= From a5b64d070f407694d6d5231bfd881e4a22ba6ef6 Mon Sep 17 00:00:00 2001 From: varunchennamadhava Date: Tue, 30 Jun 2026 16:41:42 -0400 Subject: [PATCH 7/8] fixed uft 8 dash Signed-off-by: varunchennamadhava --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b2dca7d..0f2c299 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,7 +15,7 @@ set(EXE $) set(SAMPLES ${CMAKE_SOURCE_DIR}/tests/samples) # --------------------------------------------------------------------------- -# Build fixture — ensures cbxp (and its libcbxp dependency) are compiled +# Build fixture - ensures cbxp (and its libcbxp dependency) are compiled # before any test runs. Building cbxp is sufficient; libcbxp is already a # link dependency of cbxp so CMake will build it automatically. # --------------------------------------------------------------------------- From 65a018ba210755f05697d9557ac5dcf4187e7d39 Mon Sep 17 00:00:00 2001 From: varunchennamadhava Date: Tue, 30 Jun 2026 16:45:35 -0400 Subject: [PATCH 8/8] removed a file Signed-off-by: varunchennamadhava --- tests/test.sh | 191 -------------------------------------------------- 1 file changed, 191 deletions(-) delete mode 100755 tests/test.sh diff --git a/tests/test.sh b/tests/test.sh deleted file mode 100755 index 1d534c3..0000000 --- a/tests/test.sh +++ /dev/null @@ -1,191 +0,0 @@ -#!/bin/bash - -run_with_expected_exit_code() { - expected_code=$1 - shift - echo "Running: $* (expected exit code: $expected_code)" - - "$@" > /dev/null - return_code=$? - - if [ $return_code -eq $expected_code ]; then - echo "Command exited with $return_code as expected." - else - echo "Unexpected exit code: got $return_code, expected $expected_code" - exit 1 - fi - echo -} - -run_with_expected_null_response() { - echo "Running: $* (expecting null response)" - - if "$@" | grep -q -x "null"; then - echo "Command exited with null response as expected." - else - echo "Unexpected non-null response" - exit 1 - fi - echo -} - -## General Test Cases - -# General - Show Usage -run_with_expected_exit_code 0 ./dist/cbxp -h -run_with_expected_exit_code 0 ./dist/cbxp --help -# General - Show Version -run_with_expected_exit_code 0 ./dist/cbxp -v -run_with_expected_exit_code 0 ./dist/cbxp --version -# General - Errors: Bad Usage -run_with_expected_exit_code 255 ./dist/cbxp junk -run_with_expected_exit_code 255 ./dist/cbxp --junk - -## Extract Command - -# Extract - Show Usage -run_with_expected_exit_code 0 ./dist/cbxp extract --help -run_with_expected_exit_code 0 ./dist/cbxp extract -h -# Extract - Basic Usage -run_with_expected_exit_code 0 ./dist/cbxp extract psa -run_with_expected_exit_code 0 ./dist/cbxp extract cvt -run_with_expected_exit_code 0 ./dist/cbxp extract ecvt -run_with_expected_exit_code 0 ./dist/cbxp extract asvt -run_with_expected_exit_code 0 ./dist/cbxp extract ascb -run_with_expected_exit_code 0 ./dist/cbxp extract assb -run_with_expected_exit_code 0 ./dist/cbxp extract oucb -run_with_expected_exit_code 0 ./dist/cbxp extract ldax -# Extract - Debug Mode -run_with_expected_exit_code 0 ./dist/cbxp extract -d psa -run_with_expected_exit_code 0 ./dist/cbxp extract --debug psa -# Extract - Include Patterns -run_with_expected_exit_code 0 ./dist/cbxp extract -i cvt psa -run_with_expected_exit_code 0 ./dist/cbxp extract --include cvt psa -run_with_expected_exit_code 0 ./dist/cbxp extract -i ecvt cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -i asvt cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -i ascb asvt -run_with_expected_exit_code 0 ./dist/cbxp extract -i cvt.ecvt psa -run_with_expected_exit_code 0 ./dist/cbxp extract -i cvt.asvt.ascb psa -run_with_expected_exit_code 0 ./dist/cbxp extract -i asvt.ascb cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -i ecvt -i asvt cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -i cvt.ecvt -i cvt.asvt.ascb psa -run_with_expected_exit_code 0 ./dist/cbxp extract -i "cvt.**" psa -run_with_expected_exit_code 0 ./dist/cbxp extract -i "cvt.*" psa -run_with_expected_exit_code 0 ./dist/cbxp extract -i "asvt.*" -i "*" cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -i assb ascb -run_with_expected_exit_code 0 ./dist/cbxp extract -i oucb ascb -run_with_expected_exit_code 0 ./dist/cbxp extract -i cvt.ecvt -i cvt.asvt.ascb.assb psa -run_with_expected_exit_code 0 ./dist/cbxp extract -i cvt.ecvt -i cvt.asvt.ascb.oucb psa -run_with_expected_exit_code 0 ./dist/cbxp extract -i "*" assb -run_with_expected_exit_code 0 ./dist/cbxp extract -i "**" assb -run_with_expected_exit_code 0 ./dist/cbxp extract -i "assb.**" ascb -run_with_expected_exit_code 0 ./dist/cbxp extract -i ldax assb -run_with_expected_exit_code 0 ./dist/cbxp extract -i assb.ldax ascb -run_with_expected_exit_code 0 ./dist/cbxp extract -i ascb.assb.ldax asvt -run_with_expected_exit_code 0 ./dist/cbxp extract -i cvt.asvt.ascb.assb.ldax psa -# Extract - Filters -run_with_expected_exit_code 0 ./dist/cbxp extract -f psapsa=PSA psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -i "**" psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -i cvt.asvt.ascb.assb psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.assb.assbjbns=*MASTER*" -f "cvt.asvt.ascb.ascbasid>0" -i "**" psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.assb.assbjbns=?MAS?ER?" -i cvt.asvt.ascb.assb psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.ascbasid=1" -i "**" psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.ascbasid>0" -i "**" psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.ascbasid<2" -i "**" psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.ascbasid>=1" -i "**" psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.ascbasid<=2" -i "**" psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvtasmvt=2281701376" cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvtasmvt=0x88000000" cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvtasmvt>0x87FFFFFF" cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvtasmvt<0x88000001" cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvtasmvt>=0x87FFFFFF" cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvtasmvt<=0x88000000" cvt -run_with_expected_exit_code 0 ./dist/cbxp extract -f 'oucbtrxn=OMVS' oucb -run_with_expected_exit_code 0 ./dist/cbxp extract -i oucb -f 'oucb.oucbtrxn=OMVS' ascb -run_with_expected_null_response ./dist/cbxp extract -f psapsa=PSB psa -run_with_expected_null_response ./dist/cbxp extract -f "ascb.assb.assbjbns=*MASTER*" -f "ascb.ascbasid=2" -i ascb.assb asvt -run_with_expected_exit_code 0 ./dist/cbxp extract -f assbjbns="*MASTER*" -f assbjbni= assb -run_with_expected_exit_code 0 ./dist/cbxp extract -f assbjbns="*MASTER*" -f assbjbni="" assb -run_with_expected_exit_code 0 ./dist/cbxp extract -f assbjbns="*MASTER*" -f assbjbni='' assb -run_with_expected_exit_code 0 ./dist/cbxp extract -f "cvt.asvt.ascb.assb.ldax.ldax_tcthwm=0" -i cvt.asvt.ascb.assb.ldax psa -run_with_expected_exit_code 0 ./dist/cbxp extract -f "ldax_tcthwm=0" ldax -run_with_expected_null_response ./dist/cbxp extract -f "cvt.asvt.ascb.assb.ldax.ldax_id=INVALID" -i cvt.asvt.ascb.assb.ldax psa -# Extract - Errors: Bad Usage -run_with_expected_exit_code 255 ./dist/cbxp extract -run_with_expected_exit_code 255 ./dist/cbxp extract --junk -run_with_expected_exit_code 255 ./dist/cbxp extract --junk junk -run_with_expected_exit_code 255 ./dist/cbxp extract -x "unknown flag" cvt -run_with_expected_exit_code 255 ./dist/cbxp extract -i cvt -run_with_expected_exit_code 255 ./dist/cbxp extract -i -i cvt psa -run_with_expected_exit_code 255 ./dist/cbxp extract -f psa -run_with_expected_exit_code 255 ./dist/cbxp extract -f psapsa=psa -run_with_expected_exit_code 255 ./dist/cbxp extract -F tests/samples/ascb.bin psa -run_with_expected_exit_code 255 ./dist/cbxp extract -o 1 psa -# Extract - Errors: Unknown Control Block -run_with_expected_exit_code 255 ./dist/cbxp extract unknown -# Extract - Errors: Bad Include Patterns -run_with_expected_exit_code 255 ./dist/cbxp extract -i asvt,ascb cvt -run_with_expected_exit_code 255 ./dist/cbxp extract -i asvt,as cvt -run_with_expected_exit_code 255 ./dist/cbxp extract -i asvt.ascb psa -run_with_expected_exit_code 255 ./dist/cbxp extract -i ascb psa -run_with_expected_exit_code 255 ./dist/cbxp extract -i ecvt ascb -run_with_expected_exit_code 255 ./dist/cbxp extract -i cvt.ecvt -i cvt.ascb psa -run_with_expected_exit_code 255 ./dist/cbxp extract -i cvt.asvt.ascb -i ecvt psa -run_with_expected_exit_code 255 ./dist/cbxp extract -i cvt cvt -run_with_expected_exit_code 255 ./dist/cbxp extract -i ldax psa -run_with_expected_exit_code 255 ./dist/cbxp extract -i ldax cvt -run_with_expected_exit_code 255 ./dist/cbxp extract -i ldax ascb -# Extract - Errors: Bad Filters -run_with_expected_exit_code 255 ./dist/cbxp extract -f "cvt.asvt.ascb.assb.assbjbns=*master*" psa -run_with_expected_exit_code 255 ./dist/cbxp extract -f "cvt.asvt.ascb.assb.assbjbns<*master*" -i "**" psa -run_with_expected_exit_code 255 ./dist/cbxp extract -f psapsb=PSA psa -run_with_expected_exit_code 255 ./dist/cbxp extract -f assbasid= assb -run_with_expected_exit_code 255 ./dist/cbxp extract -f 'ascbasid<=junk' ascb -run_with_expected_exit_code 255 ./dist/cbxp extract -f "psapsa=psa,cvt.asvt.ascb.ascbasid<2" cvt -run_with_expected_exit_code 255 ./dist/cbxp extract -f junk psa - -## Format Command - -# Format - Show Usage -run_with_expected_exit_code 0 ./dist/cbxp format -h -run_with_expected_exit_code 0 ./dist/cbxp format --help -# Format - Basic Usage -run_with_expected_exit_code 0 ./dist/cbxp format -F tests/samples/ascb.bin ascb -run_with_expected_exit_code 0 cat tests/samples/cvt.bin | ./dist/cbxp format cvt -run_with_expected_exit_code 0 ./dist/cbxp format -F tests/samples/oucb.bin oucb -# Format - Debug Mode -run_with_expected_exit_code 0 ./dist/cbxp format -F tests/samples/ascb.bin -d ascb -run_with_expected_exit_code 0 ./dist/cbxp format -F tests/samples/ascb.bin --debug ascb -# Format - Offset -run_with_expected_exit_code 0 ./dist/cbxp format -F tests/samples/ascb_offset_0x40.bin -o 0x40 ascb -run_with_expected_exit_code 0 ./dist/cbxp format -F tests/samples/ascb_offset_0x40.bin -o 64 ascb -run_with_expected_exit_code 0 cat tests/samples/oucb_offset_0x03a8.bin | ./dist/cbxp format -o 0x03a8 oucb -run_with_expected_exit_code 0 cat tests/samples/oucb_offset_0x03a8.bin | ./dist/cbxp format -o 936 oucb -# Format - Errors: Bad Usage -run_with_expected_exit_code 255 ./dist/cbxp format -run_with_expected_exit_code 255 ./dist/cbxp format --junk -run_with_expected_exit_code 255 ./dist/cbxp format --junk junk -run_with_expected_exit_code 255 ./dist/cbxp format psa -run_with_expected_exit_code 255 ./dist/cbxp format -i cvt psa -run_with_expected_exit_code 255 ./dist/cbxp format -f psapsa=PSA psa -# Format - Errors: Unknown Control Block -run_with_expected_exit_code 255 ./dist/cbxp format -F tests/samples/ascb.bin -d unknown -# Format - Errors: Bad Offset -run_with_expected_exit_code 255 ./dist/cbxp format -F tests/samples/ascb.bin -o 999999 ascb -run_with_expected_exit_code 255 ./dist/cbxp format -F tests/samples/ascb.bin -o -1 ascb -run_with_expected_exit_code 255 ./dist/cbxp format -F tests/samples/ascb.bin -o JUNK ascb -run_with_expected_exit_code 255 ./dist/cbxp format -F tests/samples/ascb.bin -o 5.5 ascb -# Format - Errors: Error Opening File -run_with_expected_exit_code 255 ./dist/cbxp format -F tests/samples/notreal.bin psa -# Format - Errors: No File/Pipe provided -run_with_expected_exit_code 255 ./dist/cbxp format psa -# Format - Errors: File and Pipe -run_with_expected_exit_code 255 sh -c 'cat tests/samples/cvt.bin | ./dist/cbxp format -F tests/samples/cvt.bin cvt' -# Format - Errors: Data Too Small -run_with_expected_exit_code 255 ./dist/cbxp format -F tests/samples/ascb.bin psa - -echo " -------------------------------- " -echo " -------------------------------- " -echo " All tests completed successfully" -echo " -------------------------------- " -echo " -------------------------------- "