diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..e3908c9 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,32 @@ +GIT + remote: https://github.com/colszowka/simplecov + revision: d4ed33b3876fe6f1e808bed60e134e2f8adf6267 + specs: + simplecov (0.7.1) + multi_json (~> 1.0) + simplecov-html (~> 0.7.1) + +PATH + remote: . + specs: + simplecov-json (0.1.3) + json + simplecov + +GEM + remote: https://rubygems.org/ + specs: + json (1.7.7) + metaclass (0.0.1) + mocha (0.12.7) + metaclass (~> 0.0.1) + multi_json (1.3.6) + simplecov-html (0.7.1) + +PLATFORMS + ruby + +DEPENDENCIES + mocha + simplecov! + simplecov-json! diff --git a/lib/simplecov-json.rb b/lib/simplecov-json.rb index cad43ce..e73620c 100644 --- a/lib/simplecov-json.rb +++ b/lib/simplecov-json.rb @@ -8,17 +8,20 @@ class SimpleCov::Formatter::JSONFormatter data[:timestamp] = result.created_at.to_i data[:command_name] = result.command_name data[:files] = [] - result.original_result.each do |filename, coverage| - next unless result.filenames.include? filename - + result.files.each do |sourceFile| + next unless result.filenames.include? sourceFile.filename data[:files] << { - filename: filename, - coverage: coverage + filename: sourceFile.filename, + covered_percent: sourceFile.covered_percent, + coverage: sourceFile.coverage, + covered_strength: sourceFile.covered_strength.nan? ? 0.0 : sourceFile.covered_strength, + covered_lines: sourceFile.covered_lines.count, + lines_of_code: sourceFile.lines_of_code, } end data[:metrics] = { covered_percent: result.covered_percent, - covered_strength: result.covered_strength, + covered_strength: result.covered_strength.nan? ? 0.0 : result.covered_strength, covered_lines: result.covered_lines, total_lines: result.total_lines } diff --git a/simplecov-json.gemspec b/simplecov-json.gemspec index e76f0bd..2ef84f8 100644 --- a/simplecov-json.gemspec +++ b/simplecov-json.gemspec @@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__) Gem::Specification.new do |s| s.name = "simplecov-json" - s.version = '0.1.2' + s.version = '0.1.3' s.platform = Gem::Platform::RUBY s.authors = ["Vicent Llongo"] s.email = ["villosil@gmail.com"] diff --git a/test/test_simplecov_json.rb b/test/test_simplecov_json.rb index ff2c6ac..0de7954 100644 --- a/test/test_simplecov_json.rb +++ b/test/test_simplecov_json.rb @@ -4,16 +4,35 @@ class TestSimpleCovHtml < Test::Unit::TestCase def test_format formatter = SimpleCov::Formatter::JSONFormatter.new result = mock() + foo = mock() + bar = mock() created_at = DateTime.now.to_s - result.expects(:created_at).returns(created_at) result.expects(:command_name).returns('RSpec') - result.expects(:original_result).returns({ - '/lib/foo.rb' => [1, nil, 0, 0, nil, 1, nil], - '/lib/bar.rb' => [nil, 1, nil, 1, 1, 1, 0, 0, nil, 1, nil], - '/test/test.rb' => [nil, 1, 1, 1, 1] - }) - result.expects(:filenames).returns(['/lib/foo.rb', '/lib/bar.rb']) + + fooLineList = mock() + fooLineList.expects(:count).returns(2) + + barLineList = mock() + barLineList.expects(:count).returns(5) + + foo.expects(:filename).returns('/lib/foo.rb') + foo.expects(:filename).returns('/lib/foo.rb') + foo.expects(:covered_percent).returns(50.0) + foo.expects(:coverage).returns([1, nil, 0, 0, nil, 1, nil]) + foo.expects(:covered_strength).returns(0.50) + foo.expects(:covered_lines).returns(fooLineList) + foo.expects(:lines_of_code).returns(4) + + bar.expects(:filename).returns('/lib/bar.rb') + bar.expects(:filename).returns('/lib/bar.rb') + bar.expects(:covered_percent).returns(71.42) + bar.expects(:coverage).returns([nil, 1, nil, 1, 1, 1, 0, 0, nil, 1, nil]) + bar.expects(:covered_strength).returns(0.71) + bar.expects(:covered_lines).returns(barLineList) + bar.expects(:lines_of_code).returns(7) + + result.expects(:files).returns([foo, bar]) result.expects(:filenames).returns(['/lib/foo.rb', '/lib/bar.rb']) result.expects(:filenames).returns(['/lib/foo.rb', '/lib/bar.rb']) result.expects(:covered_percent).returns(73.33) @@ -26,12 +45,31 @@ class TestSimpleCovHtml < Test::Unit::TestCase result.expects(:total_lines).returns(15) result.expects(:covered_percent).returns(73.33) + +# filename +# covered_percent +# coverage +# covered_strength +# covered_lines +# lines_of_code assert_equal(formatter.format(result), { 'timestamp' => created_at.to_i, 'command_name' => 'RSpec', 'files' => [ - {'filename' => '/lib/foo.rb', 'coverage' => [1, nil, 0, 0, nil, 1, nil]}, - {'filename' => '/lib/bar.rb', 'coverage' => [nil, 1, nil, 1, 1, 1, 0, 0, nil, 1, nil]}, + {'filename' => '/lib/foo.rb', + 'covered_percent' => 50.0, + 'coverage' => [1, nil, 0, 0, nil, 1, nil], + 'covered_strength' => 0.50, + 'covered_lines' => 2, + 'lines_of_code' => 4 + }, + {'filename' => '/lib/bar.rb', + 'covered_percent' => 71.42, + 'coverage' => [nil, 1, nil, 1, 1, 1, 0, 0, nil, 1, nil], + 'covered_strength' => 0.71, + 'covered_lines' => 5, + 'lines_of_code' => 7 + }, ], 'metrics' => { 'covered_percent' => 73.33,