From 444fbda72a77932c3c96aed6c203d96963c1b7bf Mon Sep 17 00:00:00 2001 From: Mark VanderVoord Date: Thu, 28 May 2026 16:11:35 -0400 Subject: [PATCH] refactor self-test engine to match Ceedling's tool format --- examples/example_3/rakefile_helper.rb | 9 +++++++- test/rakefile_helper.rb | 23 ++++++++++++++------ test/targets/clang_file.yml | 5 ++--- test/targets/clang_strict.yml | 5 ++--- test/targets/gcc_32.yml | 5 ++--- test/targets/gcc_64.yml | 5 ++--- test/targets/gcc_64_ansi.yml | 5 ++--- test/targets/gcc_64_auto_limits.yml | 5 ++--- test/targets/gcc_64_auto_stdint.yml | 5 ++--- test/targets/gcc_64_manual_math.yml | 5 ++--- test/targets/hitech_picc18.yml | 5 ++--- test/targets/iar_arm_v4.yml | 5 ++--- test/targets/iar_arm_v5.yml | 5 ++--- test/targets/iar_arm_v5_3.yml | 5 ++--- test/targets/iar_armcortex_LM3S9B92_v5_4.yml | 5 ++--- test/targets/iar_cortexm3_v5.yml | 5 ++--- test/targets/iar_msp430.yml | 5 ++--- test/targets/iar_sh2a_v6.yml | 5 ++--- 18 files changed, 56 insertions(+), 56 deletions(-) diff --git a/examples/example_3/rakefile_helper.rb b/examples/example_3/rakefile_helper.rb index 2e70ddc..0bc932c 100644 --- a/examples/example_3/rakefile_helper.rb +++ b/examples/example_3/rakefile_helper.rb @@ -91,7 +91,14 @@ def build_command_string(tool_hash, values, defines = nil) args = [] tool_hash[:arguments].each do |arg| if arg.include?('$') - if arg.include?(': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE') + if arg.include?('${5}') + all_paths = (($cfg[:paths][:support] || []) + ($cfg[:paths][:source] || []) + ($cfg[:paths][:test] || [])).uniq + all_paths.each { |f| args << arg.gsub('${5}', f) } + + elsif arg.include?('${6}') + (($cfg.dig(:defines, :test) || []) + Array(defines)).uniq.compact.each { |f| args << arg.gsub('${6}', f) } + + elsif arg.include?(': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE') pattern = arg.gsub(': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE', '') ($cfg[:paths][:support] || []).each { |f| args << pattern.gsub(/\$/, f) } diff --git a/test/rakefile_helper.rb b/test/rakefile_helper.rb index 439e593..a28a182 100644 --- a/test/rakefile_helper.rb +++ b/test/rakefile_helper.rb @@ -16,13 +16,15 @@ module RakefileHelpers def load_configuration(config_file) return if $configured - unless config_file =~ /[\\|\/]/ + if config_file =~ /[\\|\/]/ + $cfg_file = config_file + else $cfg_file_base = config_file - $cfg_file = "targets/#{config_file}" + $cfg_file = "targets/#{config_file}" end $cfg = YamlHelper.load_file($cfg_file) $cfg[:paths] ||= {} - $cfg[:paths][:test] ||= ['src/', '../src/', 'testdata/', 'tests/'] + $cfg[:paths][:test] = (Array($cfg[:paths][:test]) + ['src/', '../src/', 'testdata/', 'tests/']).uniq $colour_output = false unless $cfg['colour'] $configured = true if config_file != DEFAULT_CONFIG_FILE end @@ -101,7 +103,14 @@ module RakefileHelpers args = [] hash[:arguments].each do |arg| if arg.include? '$' - if arg.include? ': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' + if arg.include? '${5}' + all_paths = [ File.join('..','src'), $extra_paths, 'src', File.join('tests'), File.join('testdata'), $cfg[:paths][:support] ].flatten.uniq.compact + all_paths.each { |f| args << arg.gsub('${5}', f) } + + elsif arg.include? '${6}' + [ $cfg[:defines][:test], $cfg.dig(:unity, :defines), defines ].flatten.uniq.compact.each { |f| args << arg.gsub('${6}', f) } + + elsif arg.include? ': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' pattern = arg.gsub(': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE','') [ File.join('..','src') ].each do |f| args << pattern.gsub(/\$/,f) @@ -115,7 +124,7 @@ module RakefileHelpers elsif arg.include? ': COLLECTION_DEFINES_TEST_AND_VENDOR' pattern = arg.gsub(': COLLECTION_DEFINES_TEST_AND_VENDOR','') - [ $cfg[:defines][:test], defines ].flatten.uniq.compact.each do |f| + [ $cfg[:defines][:test], $cfg.dig(:unity, :defines), defines ].flatten.uniq.compact.each do |f| args << pattern.gsub(/\$/,f) end @@ -141,7 +150,7 @@ module RakefileHelpers end def compile(file, defines = []) - out_file = File.join('build', File.basename(file, C_EXTENSION)) + $cfg[:extension][:object] + out_file = File.join('build', File.basename(file, C_EXTENSION)) + ($cfg[:extension][:object] || '.o') cmd_str = build_command_string( $cfg[:tools][:test_compiler], [ file, out_file ], defines ) execute(cmd_str) out_file @@ -170,7 +179,7 @@ module RakefileHelpers "--style=allman --indent=spaces=4 --indent-switches --indent-preproc-define --indent-preproc-block " \ "--pad-oper --pad-comma --unpad-paren --pad-header " \ "--align-pointer=type --align-reference=name " \ - "--add-brackets --mode=c --suffix=none " \ + "--mode=c --suffix=none " \ "#{style_what}" execute(command, false) report "Styling C:PASS" diff --git a/test/targets/clang_file.yml b/test/targets/clang_file.yml index d4c5943..886bb8c 100644 --- a/test/targets/clang_file.yml +++ b/test/targets/clang_file.yml @@ -47,9 +47,8 @@ - "-std=gnu99" - "-pedantic" - "-O0" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/clang_strict.yml b/test/targets/clang_strict.yml index bfff265..777c712 100644 --- a/test/targets/clang_strict.yml +++ b/test/targets/clang_strict.yml @@ -46,9 +46,8 @@ - "-std=gnu99" - "-pedantic" - "-O0" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/gcc_32.yml b/test/targets/gcc_32.yml index 679499d..fc763c1 100644 --- a/test/targets/gcc_32.yml +++ b/test/targets/gcc_32.yml @@ -17,9 +17,8 @@ - "-Wno-address" - "-std=c99" - "-pedantic" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/gcc_64.yml b/test/targets/gcc_64.yml index 1c3f42b..2991bdd 100644 --- a/test/targets/gcc_64.yml +++ b/test/targets/gcc_64.yml @@ -17,9 +17,8 @@ - "-Wno-address" - "-std=c99" - "-pedantic" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/gcc_64_ansi.yml b/test/targets/gcc_64_ansi.yml index b5decea..fb4b4ce 100644 --- a/test/targets/gcc_64_ansi.yml +++ b/test/targets/gcc_64_ansi.yml @@ -18,9 +18,8 @@ - "-Wall" - "-Wno-address" - "-ansi" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/gcc_64_auto_limits.yml b/test/targets/gcc_64_auto_limits.yml index bbd6a86..609a785 100644 --- a/test/targets/gcc_64_auto_limits.yml +++ b/test/targets/gcc_64_auto_limits.yml @@ -17,9 +17,8 @@ - "-Wno-address" - "-std=c99" - "-pedantic" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/gcc_64_auto_stdint.yml b/test/targets/gcc_64_auto_stdint.yml index 9193de7..34e08d6 100644 --- a/test/targets/gcc_64_auto_stdint.yml +++ b/test/targets/gcc_64_auto_stdint.yml @@ -30,9 +30,8 @@ - "-Wstrict-prototypes" - "-Wundef" - "-Wold-style-definition" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/gcc_64_manual_math.yml b/test/targets/gcc_64_manual_math.yml index 4524f9b..8558f1e 100644 --- a/test/targets/gcc_64_manual_math.yml +++ b/test/targets/gcc_64_manual_math.yml @@ -17,9 +17,8 @@ - "-Wno-address" - "-std=c99" - "-pedantic" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/hitech_picc18.yml b/test/targets/hitech_picc18.yml index 3921a96..c0a51f6 100644 --- a/test/targets/hitech_picc18.yml +++ b/test/targets/hitech_picc18.yml @@ -38,9 +38,8 @@ - "--opt=none" - "-c" - "-M" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - " ${2}" :test_linker: diff --git a/test/targets/iar_arm_v4.yml b/test/targets/iar_arm_v4.yml index e6a034d..8c0a28f 100644 --- a/test/targets/iar_arm_v4.yml +++ b/test/targets/iar_arm_v4.yml @@ -32,9 +32,8 @@ - "--warnings_are_errors" - "--fpu None" - "--diag_suppress Pa050" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/iar_arm_v5.yml b/test/targets/iar_arm_v5.yml index 6930df0..4ac5d9b 100644 --- a/test/targets/iar_arm_v5.yml +++ b/test/targets/iar_arm_v5.yml @@ -31,9 +31,8 @@ - "--diag_suppress=Pe111" - "-e" - "-On" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/iar_arm_v5_3.yml b/test/targets/iar_arm_v5_3.yml index 6930df0..4ac5d9b 100644 --- a/test/targets/iar_arm_v5_3.yml +++ b/test/targets/iar_arm_v5_3.yml @@ -31,9 +31,8 @@ - "--diag_suppress=Pe111" - "-e" - "-On" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/iar_armcortex_LM3S9B92_v5_4.yml b/test/targets/iar_armcortex_LM3S9B92_v5_4.yml index fec13b7..8bf938f 100644 --- a/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +++ b/test/targets/iar_armcortex_LM3S9B92_v5_4.yml @@ -23,9 +23,8 @@ - "--interwork" - "--warnings_are_errors" - "-Oh" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/iar_cortexm3_v5.yml b/test/targets/iar_cortexm3_v5.yml index de04705..4f3912c 100644 --- a/test/targets/iar_cortexm3_v5.yml +++ b/test/targets/iar_cortexm3_v5.yml @@ -31,9 +31,8 @@ - "--diag_suppress=Pe111" - "-e" - "-On" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/iar_msp430.yml b/test/targets/iar_msp430.yml index 57948db..70e76e0 100644 --- a/test/targets/iar_msp430.yml +++ b/test/targets/iar_msp430.yml @@ -25,9 +25,8 @@ - "--double=32" - "--diag_suppress Pa050" - "--diag_suppress Pe111" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: diff --git a/test/targets/iar_sh2a_v6.yml b/test/targets/iar_sh2a_v6.yml index 4de1c7c..ae4a123 100644 --- a/test/targets/iar_sh2a_v6.yml +++ b/test/targets/iar_sh2a_v6.yml @@ -33,9 +33,8 @@ - "--mfc" - "--use_unix_directory_separators" - "--diag_suppress=Pe161" - - '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - - '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - - "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR" + - '-I"${5}"' + - "-D${6}" - "${1}" - "-o ${2}" :test_linker: