Refactor cmock tests to identify the closest matching cmock overlay

This commit is contained in:
Mark VanderVoord
2026-05-16 23:02:07 -04:00
parent 5c6f42ae45
commit d83c7017e0
3 changed files with 55 additions and 9 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ REQUIRED_DIRS.each do |v|
end
# Load default configuration, for now
DEFAULT_CONFIG_FILE = 'gcc.yml'.freeze
DEFAULT_CONFIG_FILE = 'gcc_64.yml'.freeze
configure_toolchain(DEFAULT_CONFIG_FILE)
task :unit do
+27 -4
View File
@@ -22,18 +22,41 @@ module RakefileHelpers
YAML.load(yaml_string)
end
def find_cmock_target(targets_dir, config_file)
return config_file if File.exist?("#{targets_dir}/#{config_file}")
basename = File.basename(config_file, '.yml')
while basename.include?('_')
basename = basename.rpartition('_').first
candidate = "#{basename}.yml"
return candidate if File.exist?("#{targets_dir}/#{candidate}")
end
nil
end
def load_configuration(config_file)
$cfg_file = config_file
$proj = load_yaml(File.read('./project.yml'))
unity_target = "../../vendor/unity/test/targets/#{$cfg_file}"
cmock_target = "../../test/targets/#{$cfg_file}"
unity_target = "../../vendor/unity/test/targets/#{$cfg_file}"
cmock_targets_dir = '../../test/targets'
if File.exist?(unity_target)
puts "Loading Unity target: #{unity_target}"
$unity_cfg = load_yaml(File.read(unity_target))
$cmock_cfg = File.exist?(cmock_target) ? load_yaml(File.read(cmock_target)) : {}
cmock_file = find_cmock_target(cmock_targets_dir, $cfg_file)
if cmock_file
puts "Loading CMock overlay: #{cmock_targets_dir}/#{cmock_file}"
$cmock_cfg = load_yaml(File.read("#{cmock_targets_dir}/#{cmock_file}"))
else
puts "No CMock overlay found for #{$cfg_file}"
$cmock_cfg = {}
end
else
$unity_cfg = load_yaml(File.read(cmock_target))
puts "Loading CMock-only target: #{cmock_targets_dir}/#{$cfg_file}"
$unity_cfg = load_yaml(File.read("#{cmock_targets_dir}/#{$cfg_file}"))
$cmock_cfg = {}
end
+27 -4
View File
@@ -29,20 +29,43 @@ module RakefileHelpers
end
end
def find_cmock_target(targets_dir, config_file)
return config_file if File.exist?("#{targets_dir}/#{config_file}")
basename = File.basename(config_file, '.yml')
while basename.include?('_')
basename = basename.rpartition('_').first
candidate = "#{basename}.yml"
return candidate if File.exist?("#{targets_dir}/#{candidate}")
end
nil
end
def load_configuration(config_file)
$cfg_file = config_file
$proj = load_yaml('./project.yml')
unity_target = "../vendor/unity/test/targets/#{$cfg_file}"
cmock_target = "./targets/#{$cfg_file}"
unity_target = "../vendor/unity/test/targets/#{$cfg_file}"
cmock_targets_dir = './targets'
if File.exist?(unity_target)
# Load Unity base target, then CMock overlay (unsupported list, extra defines)
puts "Loading Unity target: #{unity_target}"
$unity_cfg = load_yaml(unity_target)
$cmock_cfg = File.exist?(cmock_target) ? load_yaml(cmock_target) : {}
cmock_file = find_cmock_target(cmock_targets_dir, $cfg_file)
if cmock_file
puts "Loading CMock overlay: #{cmock_targets_dir}/#{cmock_file}"
$cmock_cfg = load_yaml("#{cmock_targets_dir}/#{cmock_file}")
else
puts "No CMock overlay found for #{$cfg_file}"
$cmock_cfg = {}
end
else
# CMock-only target (no Unity equivalent); it uses Unity format directly
$unity_cfg = load_yaml(cmock_target)
puts "Loading CMock-only target: #{cmock_targets_dir}/#{$cfg_file}"
$unity_cfg = load_yaml("#{cmock_targets_dir}/#{$cfg_file}")
$cmock_cfg = {}
end