refactor self-test engine to match Ceedling's tool format

This commit is contained in:
Mark VanderVoord
2026-05-28 16:11:35 -04:00
parent 324d0624f3
commit 444fbda72a
18 changed files with 56 additions and 56 deletions
+8 -1
View File
@@ -91,7 +91,14 @@ def build_command_string(tool_hash, values, defines = nil)
args = [] args = []
tool_hash[:arguments].each do |arg| tool_hash[:arguments].each do |arg|
if arg.include?('$') 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', '') pattern = arg.gsub(': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE', '')
($cfg[:paths][:support] || []).each { |f| args << pattern.gsub(/\$/, f) } ($cfg[:paths][:support] || []).each { |f| args << pattern.gsub(/\$/, f) }
+16 -7
View File
@@ -16,13 +16,15 @@ module RakefileHelpers
def load_configuration(config_file) def load_configuration(config_file)
return if $configured return if $configured
unless config_file =~ /[\\|\/]/ if config_file =~ /[\\|\/]/
$cfg_file = config_file
else
$cfg_file_base = config_file $cfg_file_base = config_file
$cfg_file = "targets/#{config_file}" $cfg_file = "targets/#{config_file}"
end end
$cfg = YamlHelper.load_file($cfg_file) $cfg = YamlHelper.load_file($cfg_file)
$cfg[:paths] ||= {} $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'] $colour_output = false unless $cfg['colour']
$configured = true if config_file != DEFAULT_CONFIG_FILE $configured = true if config_file != DEFAULT_CONFIG_FILE
end end
@@ -101,7 +103,14 @@ module RakefileHelpers
args = [] args = []
hash[:arguments].each do |arg| hash[:arguments].each do |arg|
if arg.include? '$' 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','') pattern = arg.gsub(': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE','')
[ File.join('..','src') ].each do |f| [ File.join('..','src') ].each do |f|
args << pattern.gsub(/\$/,f) args << pattern.gsub(/\$/,f)
@@ -115,7 +124,7 @@ module RakefileHelpers
elsif arg.include? ': COLLECTION_DEFINES_TEST_AND_VENDOR' elsif arg.include? ': COLLECTION_DEFINES_TEST_AND_VENDOR'
pattern = arg.gsub(': 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) args << pattern.gsub(/\$/,f)
end end
@@ -141,7 +150,7 @@ module RakefileHelpers
end end
def compile(file, defines = []) 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 ) cmd_str = build_command_string( $cfg[:tools][:test_compiler], [ file, out_file ], defines )
execute(cmd_str) execute(cmd_str)
out_file out_file
@@ -170,7 +179,7 @@ module RakefileHelpers
"--style=allman --indent=spaces=4 --indent-switches --indent-preproc-define --indent-preproc-block " \ "--style=allman --indent=spaces=4 --indent-switches --indent-preproc-define --indent-preproc-block " \
"--pad-oper --pad-comma --unpad-paren --pad-header " \ "--pad-oper --pad-comma --unpad-paren --pad-header " \
"--align-pointer=type --align-reference=name " \ "--align-pointer=type --align-reference=name " \
"--add-brackets --mode=c --suffix=none " \ "--mode=c --suffix=none " \
"#{style_what}" "#{style_what}"
execute(command, false) execute(command, false)
report "Styling C:PASS" report "Styling C:PASS"
+2 -3
View File
@@ -47,9 +47,8 @@
- "-std=gnu99" - "-std=gnu99"
- "-pedantic" - "-pedantic"
- "-O0" - "-O0"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -46,9 +46,8 @@
- "-std=gnu99" - "-std=gnu99"
- "-pedantic" - "-pedantic"
- "-O0" - "-O0"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -17,9 +17,8 @@
- "-Wno-address" - "-Wno-address"
- "-std=c99" - "-std=c99"
- "-pedantic" - "-pedantic"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -17,9 +17,8 @@
- "-Wno-address" - "-Wno-address"
- "-std=c99" - "-std=c99"
- "-pedantic" - "-pedantic"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -18,9 +18,8 @@
- "-Wall" - "-Wall"
- "-Wno-address" - "-Wno-address"
- "-ansi" - "-ansi"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -17,9 +17,8 @@
- "-Wno-address" - "-Wno-address"
- "-std=c99" - "-std=c99"
- "-pedantic" - "-pedantic"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -30,9 +30,8 @@
- "-Wstrict-prototypes" - "-Wstrict-prototypes"
- "-Wundef" - "-Wundef"
- "-Wold-style-definition" - "-Wold-style-definition"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -17,9 +17,8 @@
- "-Wno-address" - "-Wno-address"
- "-std=c99" - "-std=c99"
- "-pedantic" - "-pedantic"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -38,9 +38,8 @@
- "--opt=none" - "--opt=none"
- "-c" - "-c"
- "-M" - "-M"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- " ${2}" - " ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -32,9 +32,8 @@
- "--warnings_are_errors" - "--warnings_are_errors"
- "--fpu None" - "--fpu None"
- "--diag_suppress Pa050" - "--diag_suppress Pa050"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -31,9 +31,8 @@
- "--diag_suppress=Pe111" - "--diag_suppress=Pe111"
- "-e" - "-e"
- "-On" - "-On"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -31,9 +31,8 @@
- "--diag_suppress=Pe111" - "--diag_suppress=Pe111"
- "-e" - "-e"
- "-On" - "-On"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -23,9 +23,8 @@
- "--interwork" - "--interwork"
- "--warnings_are_errors" - "--warnings_are_errors"
- "-Oh" - "-Oh"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -31,9 +31,8 @@
- "--diag_suppress=Pe111" - "--diag_suppress=Pe111"
- "-e" - "-e"
- "-On" - "-On"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -25,9 +25,8 @@
- "--double=32" - "--double=32"
- "--diag_suppress Pa050" - "--diag_suppress Pa050"
- "--diag_suppress Pe111" - "--diag_suppress Pe111"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker:
+2 -3
View File
@@ -33,9 +33,8 @@
- "--mfc" - "--mfc"
- "--use_unix_directory_separators" - "--use_unix_directory_separators"
- "--diag_suppress=Pe161" - "--diag_suppress=Pe161"
- '-I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE' - '-I"${5}"'
- '-I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR' - "-D${6}"
- "-D$: COLLECTION_DEFINES_TEST_AND_VENDOR"
- "${1}" - "${1}"
- "-o ${2}" - "-o ${2}"
:test_linker: :test_linker: