1
0
mirror of https://github.com/ThrowTheSwitch/Unity.git synced 2026-01-28 18:54:27 +01:00

Starting to enforce our coding style. The first step is that we’ve pulled in Rubocop to check out Ruby syntax. There is likely a bit of customization to do yet AND there is definitely that backlog of todo’s that we just told it to ignore.

This commit is contained in:
Mark VanderVoord
2017-03-28 08:44:32 -04:00
parent 550d58ba2d
commit 3062c39725
18 changed files with 1414 additions and 910 deletions

View File

@@ -4,7 +4,7 @@
# [Released under MIT License. Please refer to license.txt for details]
# ==========================================
#!/usr/bin/ruby
# !/usr/bin/ruby
#
# unity_test_summary.rb
#
@@ -16,32 +16,30 @@ class UnityTestSummary
attr_reader :report, :total_tests, :failures, :ignored
def initialize(opts = {})
def initialize(_opts = {})
@report = ''
@total_tests = 0
@failures = 0
@ignored = 0
end
def run
# Clean up result file names
results = @targets.map {|target| target.gsub(/\\/,'/')}
results = @targets.map { |target| target.tr('\\', '/') }
# 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
lines = File.readlines(result_file).map(&:chomp)
if lines.empty?
raise "Empty test result file: #{result_file}"
else
output = get_details(result_file, lines)
failure_output << output[:failures] unless output[:failures].empty?
ignore_output << output[:ignores] unless output[:ignores].empty?
tests,failures,ignored = parse_test_summary(lines)
tests, failures, ignored = parse_test_summary(lines)
@total_tests += tests
@failures += failures
@ignored += ignored
@@ -80,67 +78,68 @@ class UnityTestSummary
@root = path
end
def usage(err_msg=nil)
def usage(err_msg = nil)
puts "\nERROR: "
puts err_msg if err_msg
puts "\nUsage: unity_test_summary.rb result_file_directory/ root_path/"
puts " result_file_directory - The location of your results files."
puts " Defaults to current directory if not specified."
puts " Should end in / if specified."
puts " root_path - Helpful for producing more verbose output if using relative paths."
puts ' result_file_directory - The location of your results files.'
puts ' Defaults to current directory if not specified.'
puts ' Should end in / if specified.'
puts ' root_path - Helpful for producing more verbose output if using relative paths.'
exit 1
end
protected
def get_details(result_file, lines)
results = { :failures => [], :ignores => [], :successes => [] }
def get_details(_result_file, lines)
results = { failures: [], ignores: [], successes: [] }
lines.each do |line|
src_file,src_line,test_name,status,msg = line.split(/:/)
line_out = ((@root && (@root != 0)) ? "#{@root}#{line}" : line ).gsub(/\//, "\\")
case(status)
when 'IGNORE' then results[:ignores] << line_out
when 'FAIL' then results[:failures] << line_out
when 'PASS' then results[:successes] << line_out
src_file, src_line, test_name, status, msg = line.split(/:/)
line_out = (@root && (@root != 0) ? "#{@root}#{line}" : line).gsub(/\//, '\\')
case status
when 'IGNORE' then results[:ignores] << line_out
when 'FAIL' then results[:failures] << line_out
when 'PASS' then results[:successes] << line_out
end
end
return results
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]
[Regexp.last_match(1).to_i, Regexp.last_match(2).to_i, Regexp.last_match(3).to_i]
else
raise "Couldn't parse test results: #{summary}"
end
end
def here; File.expand_path(File.dirname(__FILE__)); end
def here
File.expand_path(File.dirname(__FILE__))
end
end
if $0 == __FILE__
if $PROGRAM_NAME == __FILE__
#parse out the command options
opts, args = ARGV.partition {|v| v =~ /^--\w+/}
opts.map! {|v| v[2..-1].to_sym }
# parse out the command options
opts, args = ARGV.partition { |v| v =~ /^--\w+/ }
opts.map! { |v| v[2..-1].to_sym }
#create an instance to work with
# create an instance to work with
uts = UnityTestSummary.new(opts)
begin
#look in the specified or current directory for result files
# look in the specified or current directory for result files
args[0] ||= './'
targets = "#{ARGV[0].gsub(/\\/, '/')}**/*.test*"
targets = "#{ARGV[0].tr('\\', '/')}**/*.test*"
results = Dir[targets]
raise "No *.testpass, *.testfail, or *.testresults files found in '#{targets}'" if results.empty?
uts.set_targets(results)
#set the root path
# set the root path
args[1] ||= Dir.pwd + '/'
uts.set_root_path(ARGV[1])
#run the summarizer
# run the summarizer
puts uts.run
rescue Exception => e
uts.usage e.message