mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2026-01-23 00:15:58 +01:00
Add support for alternate forms of header and source files to test runner generator. This borrows heavily from #477 (Thanks @Tuc-an) but maintains the ability to sort files that don't need to be relinked.
This commit is contained in:
@@ -42,7 +42,9 @@ class UnityTestRunnerGenerator
|
|||||||
main_export_decl: '',
|
main_export_decl: '',
|
||||||
cmdline_args: false,
|
cmdline_args: false,
|
||||||
omit_begin_end: false,
|
omit_begin_end: false,
|
||||||
use_param_tests: false
|
use_param_tests: false,
|
||||||
|
include_extensions: '(?:hpp|hh|H|h)',
|
||||||
|
source_extensions: '(?:cpp|cc|ino|C|c)'
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -141,18 +143,17 @@ class UnityTestRunnerGenerator
|
|||||||
arguments.scan(/\s*TEST_CASE\s*\((.*)\)\s*$/) { |a| args << a[0] }
|
arguments.scan(/\s*TEST_CASE\s*\((.*)\)\s*$/) { |a| args << a[0] }
|
||||||
|
|
||||||
arguments.scan(/\s*TEST_RANGE\s*\((.*)\)\s*$/).flatten.each do |range_str|
|
arguments.scan(/\s*TEST_RANGE\s*\((.*)\)\s*$/).flatten.each do |range_str|
|
||||||
args += range_str.scan(/\[(-?\d+.?\d*), *(-?\d+.?\d*), *(-?\d+.?\d*)\]/)
|
args += range_str.scan(/\[(-?\d+.?\d*), *(-?\d+.?\d*), *(-?\d+.?\d*)\]/).map do |arg_values_str|
|
||||||
.map { |arg_values_str|
|
arg_values_str.map do |arg_value_str|
|
||||||
arg_values_str.map { |arg_value_str|
|
arg_value_str.include?('.') ? arg_value_str.to_f : arg_value_str.to_i
|
||||||
(arg_value_str.include? ".") ? arg_value_str.to_f : arg_value_str.to_i
|
end
|
||||||
}
|
end.map do |arg_values|
|
||||||
}.map { |arg_values|
|
(arg_values[0]..arg_values[1]).step(arg_values[2]).to_a
|
||||||
(arg_values[0]..arg_values[1]).step(arg_values[2]).to_a
|
end.reduce do |result, arg_range_expanded|
|
||||||
}.reduce { |result, arg_range_expanded|
|
result.product(arg_range_expanded)
|
||||||
result.product(arg_range_expanded)
|
end.map do |arg_combinations|
|
||||||
}.map { |arg_combinations|
|
arg_combinations.flatten.join(', ')
|
||||||
arg_combinations.flatten.join(", ")
|
end
|
||||||
}
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -185,9 +186,9 @@ class UnityTestRunnerGenerator
|
|||||||
|
|
||||||
# parse out includes
|
# parse out includes
|
||||||
includes = {
|
includes = {
|
||||||
local: source.scan(/^\s*#include\s+\"\s*(.+)\.[hH]\s*\"/).flatten,
|
local: source.scan(/^\s*#include\s+\"\s*(.+\.#{@options[:include_extensions]})\s*\"/).flatten,
|
||||||
system: source.scan(/^\s*#include\s+<\s*(.+)\s*>/).flatten.map { |inc| "<#{inc}>" },
|
system: source.scan(/^\s*#include\s+<\s*(.+)\s*>/).flatten.map { |inc| "<#{inc}>" },
|
||||||
linkonly: source.scan(/^TEST_FILE\(\s*\"\s*(.+)\.[cC]\w*\s*\"/).flatten
|
linkonly: source.scan(/^TEST_FILE\(\s*\"\s*(.+\.#{@options[:source_extensions]})\s*\"/).flatten
|
||||||
}
|
}
|
||||||
includes
|
includes
|
||||||
end
|
end
|
||||||
@@ -220,14 +221,14 @@ class UnityTestRunnerGenerator
|
|||||||
output.puts("#include \"#{File.basename(@options[:header_file])}\"")
|
output.puts("#include \"#{File.basename(@options[:header_file])}\"")
|
||||||
else
|
else
|
||||||
@options[:includes].flatten.uniq.compact.each do |inc|
|
@options[:includes].flatten.uniq.compact.each do |inc|
|
||||||
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
|
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc}\""}")
|
||||||
end
|
end
|
||||||
testfile_includes.each do |inc|
|
testfile_includes.each do |inc|
|
||||||
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
|
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc}\""}")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
mocks.each do |mock|
|
mocks.each do |mock|
|
||||||
output.puts("#include \"#{mock.gsub('.h', '')}.h\"")
|
output.puts("#include \"#{mock}\"")
|
||||||
end
|
end
|
||||||
output.puts('#include "CException.h"') if @options[:plugins].include?(:cexception)
|
output.puts('#include "CException.h"') if @options[:plugins].include?(:cexception)
|
||||||
|
|
||||||
@@ -262,7 +263,7 @@ class UnityTestRunnerGenerator
|
|||||||
output.puts(' GlobalOrderError = NULL;')
|
output.puts(' GlobalOrderError = NULL;')
|
||||||
end
|
end
|
||||||
|
|
||||||
mocks = mock_headers.map { |mock| File.basename(mock) }
|
mocks = mock_headers.map { |mock| File.basename(mock, '.*') }
|
||||||
mocks.each do |mock|
|
mocks.each do |mock|
|
||||||
mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
|
mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
|
||||||
output.puts(" #{mock_clean}_Init();")
|
output.puts(" #{mock_clean}_Init();")
|
||||||
@@ -438,10 +439,10 @@ class UnityTestRunnerGenerator
|
|||||||
output.puts("#include \"#{@options[:framework]}.h\"")
|
output.puts("#include \"#{@options[:framework]}.h\"")
|
||||||
output.puts('#include "cmock.h"') unless used_mocks.empty?
|
output.puts('#include "cmock.h"') unless used_mocks.empty?
|
||||||
@options[:includes].flatten.uniq.compact.each do |inc|
|
@options[:includes].flatten.uniq.compact.each do |inc|
|
||||||
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
|
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc}\""}")
|
||||||
end
|
end
|
||||||
testfile_includes.each do |inc|
|
testfile_includes.each do |inc|
|
||||||
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
|
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc}\""}")
|
||||||
end
|
end
|
||||||
output.puts "\n"
|
output.puts "\n"
|
||||||
tests.each do |test|
|
tests.each do |test|
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ Style/HashSyntax:
|
|||||||
EnforcedStyle: no_mixed_keys
|
EnforcedStyle: no_mixed_keys
|
||||||
Style/NumericPredicate:
|
Style/NumericPredicate:
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
Style/MultilineBlockChain:
|
||||||
|
Enabled: false
|
||||||
|
|
||||||
# These are also places we diverge... but we will likely comply down the road
|
# These are also places we diverge... but we will likely comply down the road
|
||||||
Style/IfUnlessModifier:
|
Style/IfUnlessModifier:
|
||||||
|
|||||||
Reference in New Issue
Block a user