From b24d616ecec829f69986ed0293f43e194688fb61 Mon Sep 17 00:00:00 2001 From: Porter Schutz Date: Tue, 30 Oct 2012 14:03:01 -0700 Subject: [PATCH 1/5] Added per-file metrics. --- lib/simplecov-json.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/simplecov-json.rb b/lib/simplecov-json.rb index 874be89..4444f3c 100644 --- a/lib/simplecov-json.rb +++ b/lib/simplecov-json.rb @@ -3,16 +3,20 @@ require 'json' class SimpleCov::Formatter::JSONFormatter def format(result) - puts result.inspect + #puts result.inspect data = {} 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, + covered_lines: sourceFile.covered_lines.count, + lines_of_code: sourceFile.lines_of_code, } end data[:groups] = result.groups From ba69ca37dde7011b23c5091ab36ea62051883729 Mon Sep 17 00:00:00 2001 From: Porter Schutz Date: Tue, 30 Oct 2012 15:16:07 -0700 Subject: [PATCH 2/5] Fixing gemspec and tests. --- simplecov-json.gemspec | 4 +-- test/test_simplecov_json.rb | 56 +++++++++++++++++++++++++++++++------ 2 files changed, 49 insertions(+), 11 deletions(-) diff --git a/simplecov-json.gemspec b/simplecov-json.gemspec index b779fb6..3b74e2c 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.1' + s.version = '0.1.2' s.platform = Gem::Platform::RUBY s.authors = ["Vicent Llongo"] s.email = ["villosil@gmail.com"] @@ -13,7 +13,7 @@ Gem::Specification.new do |s| s.rubyforge_project = "simplecov-json" s.files = ['lib/simplecov-json.rb'] - s.test_files = ['test/helper', 'test/test_simplecov_json.rb'] + s.test_files = ['test/helper.rb', 'test/test_simplecov_json.rb'] s.require_paths = ["lib"] s.add_dependency(%q, [">= 0"]) diff --git a/test/test_simplecov_json.rb b/test/test_simplecov_json.rb index c39b77d..cb3f4ff 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(:groups).returns(['controllers', 'models']) @@ -27,12 +46,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 + }, ], 'groups' =>['controllers', 'models'], 'metrics' => { From 27e4088732eb68a450322c7ef111b1592daff95b Mon Sep 17 00:00:00 2001 From: Porter Schutz Date: Mon, 29 Apr 2013 18:36:57 -0700 Subject: [PATCH 3/5] Handle case where there was zero coverage data. --- lib/simplecov-json.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/simplecov-json.rb b/lib/simplecov-json.rb index 4444f3c..67f376b 100644 --- a/lib/simplecov-json.rb +++ b/lib/simplecov-json.rb @@ -14,7 +14,7 @@ class SimpleCov::Formatter::JSONFormatter filename: sourceFile.filename, covered_percent: sourceFile.covered_percent, coverage: sourceFile.coverage, - covered_strength: sourceFile.covered_strength, + covered_strength: sourceFile.covered_strength.nan? ? 0.0 : sourceFile.covered_strength, covered_lines: sourceFile.covered_lines.count, lines_of_code: sourceFile.lines_of_code, } @@ -22,7 +22,7 @@ class SimpleCov::Formatter::JSONFormatter data[:groups] = result.groups 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, } From f9c47f9ff3fb25429483087bf42f465adbfcaea1 Mon Sep 17 00:00:00 2001 From: Porter Schutz Date: Mon, 29 Apr 2013 18:41:48 -0700 Subject: [PATCH 4/5] Bump version number. --- simplecov-json.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simplecov-json.gemspec b/simplecov-json.gemspec index 3b74e2c..ed5b4ed 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"] From 7f5bbf0e40c4ede8215e2d1df0ee7c12139a435c Mon Sep 17 00:00:00 2001 From: Porter Schutz Date: Mon, 29 Apr 2013 18:45:09 -0700 Subject: [PATCH 5/5] Update Gemfile.lock to reflect simplecov-json version bump. --- Gemfile.lock | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Gemfile.lock 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!