diff --git a/auto/generate_test_runner.rb b/auto/generate_test_runner.rb index 32c0ace..1ae56f0 100644 --- a/auto/generate_test_runner.rb +++ b/auto/generate_test_runner.rb @@ -28,6 +28,7 @@ class UnityTestRunnerGenerator :test_prefix => "test|spec|should", :setup_name => "setUp", :teardown_name => "tearDown", + :main_name => "main", } end @@ -82,7 +83,7 @@ class UnityTestRunnerGenerator if (@options[:header_file] && !@options[:header_file].empty?) File.open(@options[:header_file], 'w') do |output| - create_h_file(output, @options[:header_file], tests, testfile_includes) + create_h_file(output, @options[:header_file], tests, testfile_includes, used_mocks) end end end @@ -288,7 +289,10 @@ class UnityTestRunnerGenerator def create_main(output, filename, tests, used_mocks) output.puts("\n\n//=======MAIN=====") - output.puts("int main(void)") + if (@options[:main_name] != "main") + output.puts("int #{@options[:main_name]}(void);") + end + output.puts("int #{@options[:main_name]}(void)") output.puts("{") output.puts(" suite_setup();") unless @options[:suite_setup].nil? output.puts(" UnityBegin(\"#{filename.gsub(/\\/,'\\\\')}\");") @@ -309,11 +313,13 @@ class UnityTestRunnerGenerator output.puts("}") end - def create_h_file(output, filename, tests, testfile_includes) - filename = filename.upcase.gsub(/(?:\/|\\|\.)*/,'_') + def create_h_file(output, filename, tests, testfile_includes, used_mocks) + filename = File.basename(filename).gsub(/[-\/\\\.\,\s]/, "_").upcase output.puts("/* AUTOGENERATED FILE. DO NOT EDIT. */") output.puts("#ifndef _#{filename}") output.puts("#define _#{filename}\n\n") + output.puts("#include \"#{@options[:framework].to_s}.h\"") + output.puts('#include "cmock.h"') unless (used_mocks.empty?) @options[:includes].flatten.uniq.compact.each do |inc| output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}") end @@ -321,7 +327,13 @@ class UnityTestRunnerGenerator output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}") end output.puts "\n" - tests.each {|test| output.puts("void #{test[:test]}(#{test[:params]});") } + tests.each do |test| + if ((test[:params].nil?) or (test[:params].empty?)) + output.puts("void #{test[:test]}(void);") + else + output.puts("void #{test[:test]}(#{test[:params]});") + end + end output.puts("#endif\n\n") end end @@ -337,10 +349,10 @@ if ($0 == __FILE__) options[:plugins] = [:cexception]; true when /\.*\.ya?ml/ options = UnityTestRunnerGenerator.grab_config(arg); true - when /\.*\.h/ - options[:includes] << arg; true when /--(\w+)=\"?(.*)\"?/ options[$1.to_sym] = $2; true + when /\.*\.h/ + options[:includes] << arg; true else false end end @@ -358,6 +370,7 @@ if ($0 == __FILE__) " -cexception - include cexception support", " --setup_name=\"\" - redefine setUp func name to something else", " --teardown_name=\"\" - redefine tearDown func name to something else", + " --main_name=\"\" - redefine main func name to something else", " --test_prefix=\"\" - redefine test prefix from default test|spec|should", " --suite_setup=\"\" - code to execute for setup of entire suite", " --suite_teardown=\"\" - code to execute for teardown of entire suite",