diff --git a/auto/generate_test_runner.rb b/auto/generate_test_runner.rb index a61529b..0b6e622 100644 --- a/auto/generate_test_runner.rb +++ b/auto/generate_test_runner.rb @@ -78,7 +78,7 @@ class UnityTestRunnerGenerator lines.each_with_index do |line, index| #find tests - if line =~ /^((?:\s*TEST_CASE\s*\(.*?\)\s*)*)\s*void\s+(test.*?)\s*\(\s*(.*)\s*\)/ + if line =~ /^((?:\s*TEST_CASE\s*\(.*?\)\s*)*)\s*void\s+((?:test.*)|(?:spec.*))\s*\(\s*(.*)\s*\)/ arguments = $1 name = $2 call = $3 @@ -266,8 +266,7 @@ class UnityTestRunnerGenerator output.puts("int main(void)") output.puts("{") output.puts(" suite_setup();") unless @options[:suite_setup].nil? - output.puts(" UnityBegin();") - output.puts(" Unity.TestFile = \"#{filename}\";") + output.puts(" UnityBegin(\"#{filename}\");") if (@options[:use_param_tests]) tests.each do |test| if ((test[:args].nil?) or (test[:args].empty?)) diff --git a/auto/unity_test_summary.rb b/auto/unity_test_summary.rb index 259e8c5..8cf360f 100644 --- a/auto/unity_test_summary.rb +++ b/auto/unity_test_summary.rb @@ -2,7 +2,7 @@ # Unity Project - A Test Framework for C # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams # [Released under MIT License. Please refer to license.txt for details] -# ========================================== +# ========================================== #!/usr/bin/ruby # @@ -15,22 +15,22 @@ class UnityTestSummary include FileUtils::Verbose attr_reader :report, :total_tests, :failures, :ignored - + def initialize @report = '' @total_tests = 0 @failures = 0 @ignored = 0 end - + def run # Clean up result file names results = @targets.map {|target| target.gsub(/\\/,'/')} - - # Dig through each result file, looking for details on pass/fail: + + # Dig through each result file, looking for details on pass/fail: failure_output = [] ignore_output = [] - + results.each do |result_file| lines = File.readlines(result_file).map { |line| line.chomp } if lines.length == 0 @@ -45,7 +45,7 @@ class UnityTestSummary @ignored += ignored end end - + if @ignored > 0 @report += "\n" @report += "--------------------------\n" @@ -53,7 +53,7 @@ class UnityTestSummary @report += "--------------------------\n" @report += ignore_output.flatten.join("\n") end - + if @failures > 0 @report += "\n" @report += "--------------------------\n" @@ -61,7 +61,7 @@ class UnityTestSummary @report += "--------------------------\n" @report += failure_output.flatten.join("\n") end - + @report += "\n" @report += "--------------------------\n" @report += "OVERALL UNITY TEST SUMMARY\n" @@ -69,11 +69,11 @@ class UnityTestSummary @report += "#{@total_tests} TOTAL TESTS #{@failures} TOTAL FAILURES #{@ignored} IGNORED\n" @report += "\n" end - + def set_targets(target_array) @targets = target_array end - + def set_root_path(path) @root = path end @@ -88,7 +88,7 @@ class UnityTestSummary puts " root_path - Helpful for producing more verbose output if using relative paths." exit 1 end - + protected def get_details(result_file, lines) @@ -104,7 +104,7 @@ class UnityTestSummary end return results end - + def parse_test_summary(summary) if summary.find { |v| v =~ /(\d+) Tests (\d+) Failures (\d+) Ignored/ } [$1.to_i,$2.to_i,$3.to_i] @@ -114,7 +114,7 @@ class UnityTestSummary end def here; File.expand_path(File.dirname(__FILE__)); end - + end if $0 == __FILE__ @@ -126,11 +126,11 @@ if $0 == __FILE__ results = Dir[targets] raise "No *.testpass or *.testfail files found in '#{targets}'" if results.empty? uts.set_targets(results) - + #set the root path ARGV[1] ||= File.expand_path(File.dirname(__FILE__)) + '/' uts.set_root_path(ARGV[1]) - + #run the summarizer puts uts.run rescue Exception => e diff --git a/src/unity.c b/src/unity.c index 277c0b2..6766713 100644 --- a/src/unity.c +++ b/src/unity.c @@ -1102,9 +1102,9 @@ void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int } //----------------------------------------------- -void UnityBegin(void) +void UnityBegin(const char* filename) { - Unity.TestFile = NULL; + Unity.TestFile = filename; Unity.CurrentTestName = NULL; Unity.CurrentTestLineNumber = 0; Unity.NumberOfTests = 0; @@ -1112,6 +1112,8 @@ void UnityBegin(void) Unity.TestIgnores = 0; Unity.CurrentTestFailed = 0; Unity.CurrentTestIgnored = 0; + + UNITY_OUTPUT_START(); } //----------------------------------------------- @@ -1136,6 +1138,7 @@ int UnityEnd(void) UnityPrintFail(); } UNITY_PRINT_EOL; + UNITY_OUTPUT_COMPLETE(); return (int)(Unity.TestFailures); } diff --git a/src/unity_internals.h b/src/unity_internals.h index 57ce0d1..4ad1a60 100644 --- a/src/unity_internals.h +++ b/src/unity_internals.h @@ -258,20 +258,23 @@ typedef UNITY_DOUBLE_TYPE _UD; #endif //------------------------------------------------------- -// Output Method +// Output Method: stdout (DEFAULT) //------------------------------------------------------- - #ifndef UNITY_OUTPUT_CHAR - //Default to using putchar, which is defined in stdio.h #include #define UNITY_OUTPUT_CHAR(a) putchar(a) - #else - //If defined as something else, make sure we declare it here so it's ready for use extern int UNITY_OUTPUT_CHAR(int); +#endif +#ifndef UNITY_OUTPUT_START +#define UNITY_OUTPUT_START() +#endif + +#ifndef UNITY_OUTPUT_COMPLETE +#define UNITY_OUTPUT_COMPLETE() #endif //------------------------------------------------------- @@ -388,7 +391,7 @@ extern struct _Unity Unity; // Test Suite Management //------------------------------------------------------- -void UnityBegin(void); +void UnityBegin(const char* filename); int UnityEnd(void); void UnityConcludeTest(void); void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum); @@ -544,7 +547,7 @@ extern const char* UnityStrErr64; #define TEST_IS_IGNORED (Unity.CurrentTestIgnored) #ifndef UNITY_BEGIN -#define UNITY_BEGIN() {UnityBegin(); Unity.TestFile = __FILE__;} +#define UNITY_BEGIN() UnityBegin(__FILE__) #endif #ifndef UNITY_END diff --git a/test/rakefile_helper.rb b/test/rakefile_helper.rb index 7bd5d25..75ed7aa 100644 --- a/test/rakefile_helper.rb +++ b/test/rakefile_helper.rb @@ -172,12 +172,12 @@ module RakefileHelpers def report_summary summary = UnityTestSummary.new - summary.set_root_path(UNITY_ROOT ) + summary.set_root_path(UNITY_ROOT) results_glob = "#{$cfg['compiler']['build_path']}*.test*" results_glob.gsub!(/\\/, '/') results = Dir[results_glob] summary.set_targets(results) - summary.run + report summary.run end def run_tests(test_files)