simplecov-cobertura 1.0.4 → 1.1.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDFiN2I0M2NiYTEyNmNkMmYxNThhMDIxMGNjMTNjNjBmZjY3ZDExMQ==
4
+ YTE5YzQ2MDY0YjBjNmU3Zjg4MDQ1ZDgzYjM5NTk2M2E5NjFlNjBiYg==
5
5
  data.tar.gz: !binary |-
6
- MTU4YWMzY2UwMzQzZmFlZDkxNzdkYjI0Zjg3NmExMThmNThhYWM4OQ==
6
+ ZmE3ODhiZjMzODg2NGM2N2Y1MjA3YzM1ZjIzYzliMmYyYzFjMmQzNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZTRhMDhhZjRkZWRlMjE2Y2NjMjRhYTUwNWM2Mzc0OTUwMzQwZTU1NWQ1NjFi
10
- MzE1OGJmNGE5MWNmYjY0ZWU5M2E4MjQ4M2ZiYzJjZmRiOGEyODYyZTk1ZTNh
11
- MTkwNDMyNjIyNTg2MGE5MWI4YjUzMGMyZTUzZTE2NzhlZjk5NTg=
9
+ ZDI1YmJkNWQ5OGU4ZDMwMjExMmUxOWViNzZiODIxNGQxOTBkN2Y0NGQ0ZjNh
10
+ OGRiOGQ5OWVkMDhlMzFkZDczZDlmNTMwZDk0MDY0MGY1NjFjNzNkYWQ5ZDg3
11
+ ODdiMzRiZDJmZDFkMGM4ODI2OTA3YzVmZmMzYWRjNDc5NWYxODk=
12
12
  data.tar.gz: !binary |-
13
- OGNkNmEwMzA0N2VjNjVmNzMxNWU5M2Q3MTBkMzBmMWU3NjlhYjkxMTNkNDNk
14
- YWIwODFlZWVhNjE1NGFmMTNkZTk4M2FhYmU5MDNiMTVlMWU1MjIwOTQ2NmM1
15
- MGU2MTIzZjA1ZWQxZWJiMjEyNzk3NzkxYTJiNGU3OTExOTBlODM=
13
+ NDMyNTQ2Mjc1NjMzMzE1MDA2YmU2NDIzMzdkYzdjOTBkYzBiODYzNzI5MzY0
14
+ YjRiYmM5Yzc4NDU1NDE5ZmViNjA4MWZlZjcwZDI1ZTA0MTk4ODBkN2E3YTli
15
+ MmNhZTI2ZWUzZTFhNjExNTE4MDc3Y2Q0MDEwZmYxYzlmNDViMmI=
data/README.md CHANGED
@@ -38,18 +38,15 @@ Tested in a CI environment against the following Ruby versions:
38
38
  * 2.1
39
39
  * 2.0.0
40
40
  * 1.9
41
+ * JRuby (1.9 mode)
41
42
 
42
43
  ## Known Limitations
43
44
  * No support for branch coverage
44
45
 
45
- ## Troubleshooting
46
- Testing requres the libxml-ruby gem. If you get an error about not being able to install the libxml-ruby gem, do the following
47
-
48
- $ sudo apt-get install libxml2-dev
49
-
50
46
  ## Contributors
51
47
  * Jesse Bowes
52
48
  * Sean Clemmer
49
+ * Ivailo Petrov
53
50
 
54
51
  ## Contributing
55
52
 
@@ -4,7 +4,7 @@ require 'rexml/element'
4
4
  module SimpleCov
5
5
  module Formatter
6
6
  class CoberturaFormatter
7
- VERSION = '1.0.4'
7
+ VERSION = '1.1.0.beta.1'
8
8
 
9
9
  RESULT_FILE_NAME = 'coverage.xml'
10
10
  DTD_URL = 'http://cobertura.sourceforge.net/xml/coverage-04.dtd'
@@ -37,22 +37,31 @@ module SimpleCov
37
37
  source.text = SimpleCov.root
38
38
 
39
39
  coverage.add_element(packages = REXML::Element.new('packages'))
40
- packages.add_element(package = REXML::Element.new('package'))
41
- set_package_attributes(package, result)
42
40
 
43
- package.add_element(classes = REXML::Element.new('classes'))
41
+ if result.groups.empty?
42
+ groups = {File.basename(SimpleCov.root) => result.files}
43
+ else
44
+ groups = result.groups
45
+ end
46
+
47
+ groups.map do |name, files|
48
+ packages.add_element(package = REXML::Element.new('package'))
49
+ set_package_attributes(package, name, files)
50
+
51
+ package.add_element(classes = REXML::Element.new('classes'))
44
52
 
45
- result.files.each do |file|
46
- classes.add_element(class_ = REXML::Element.new('class'))
47
- set_class_attributes(class_, file)
53
+ files.each do |file|
54
+ classes.add_element(class_ = REXML::Element.new('class'))
55
+ set_class_attributes(class_, file)
48
56
 
49
- class_.add_element(REXML::Element.new('methods'))
50
- class_.add_element(lines = REXML::Element.new('lines'))
57
+ class_.add_element(REXML::Element.new('methods'))
58
+ class_.add_element(lines = REXML::Element.new('lines'))
51
59
 
52
- file.lines.each do |file_line|
53
- if file_line.covered? || file_line.missed?
54
- lines.add_element(line = REXML::Element.new('line'))
55
- set_line_attributes(line, file_line)
60
+ file.lines.each do |file_line|
61
+ if file_line.covered? || file_line.missed?
62
+ lines.add_element(line = REXML::Element.new('line'))
63
+ set_line_attributes(line, file_line)
64
+ end
56
65
  end
57
66
  end
58
67
  end
@@ -73,8 +82,8 @@ module SimpleCov
73
82
  coverage.attributes['timestamp'] = Time.now.to_i.to_s
74
83
  end
75
84
 
76
- def set_package_attributes(package, result)
77
- package.attributes['name'] = 'simplecov-cobertura'
85
+ def set_package_attributes(package, name, result)
86
+ package.attributes['name'] = name
78
87
  package.attributes['line-rate'] = (result.covered_percent/100).round(2).to_s
79
88
  package.attributes['branch-rate'] = '0'
80
89
  package.attributes['complexity'] = '0'
@@ -14,7 +14,7 @@ class CoberturaFormatterTest < Test::Unit::TestCase
14
14
  end
15
15
 
16
16
  def teardown
17
- # Do nothing
17
+ SimpleCov.groups.clear
18
18
  end
19
19
 
20
20
  def test_format_save_file
@@ -30,4 +30,102 @@ class CoberturaFormatterTest < Test::Unit::TestCase
30
30
  doc = Nokogiri::XML::Document.parse(xml, nil, nil, options)
31
31
  assert_empty doc.external_subset.validate(doc)
32
32
  end
33
+
34
+ def test_no_groups
35
+ xml = @formatter.format(@result)
36
+ doc = Nokogiri::XML::Document.parse(xml)
37
+
38
+ coverage = doc.xpath '/coverage'
39
+ assert_equal '1.0', coverage.attribute('line-rate').value
40
+ assert_equal '0', coverage.attribute('branch-rate').value
41
+ assert_equal '2', coverage.attribute('lines-covered').value
42
+ assert_equal '2', coverage.attribute('lines-valid').value
43
+ assert_equal '0', coverage.attribute('branches-covered').value
44
+ assert_equal '0', coverage.attribute('branches-valid').value
45
+ assert_equal '0', coverage.attribute('complexity').value
46
+ assert_equal '0', coverage.attribute('version').value
47
+ assert_not_empty coverage.attribute('timestamp').value
48
+
49
+ sources = doc.xpath '/coverage/sources/source'
50
+ assert_equal 1, sources.length
51
+ assert_equal 'simplecov-cobertura', File.basename(sources.first.text)
52
+
53
+ packages = doc.xpath '/coverage/packages/package'
54
+ assert_equal 1, packages.length
55
+ package = packages.first
56
+ assert_equal 'simplecov-cobertura', package.attribute('name').value
57
+ assert_equal '1.0', package.attribute('line-rate').value
58
+ assert_equal '0', package.attribute('branch-rate').value
59
+ assert_equal '0', package.attribute('complexity').value
60
+
61
+ classes = doc.xpath '/coverage/packages/package/classes/class'
62
+ assert_equal 1, classes.length
63
+ clazz = classes.first
64
+ assert_equal 'simplecov-cobertura_test', clazz.attribute('name').value
65
+ assert_equal 'test/simplecov-cobertura_test.rb', clazz.attribute('filename').value
66
+ assert_equal '1.0', clazz.attribute('line-rate').value
67
+ assert_equal '0', clazz.attribute('branch-rate').value
68
+ assert_equal '0', clazz.attribute('complexity').value
69
+
70
+ lines = doc.xpath '/coverage/packages/package/classes/class/lines/line'
71
+ assert_equal 2, lines.length
72
+ first_line = lines.first
73
+ assert_equal '1', first_line.attribute('number').value
74
+ assert_equal 'false', first_line.attribute('branch').value
75
+ assert_equal '1', first_line.attribute('hits').value
76
+ last_line = lines.last
77
+ assert_equal '2', last_line.attribute('number').value
78
+ assert_equal 'false', last_line.attribute('branch').value
79
+ assert_equal '2', last_line.attribute('hits').value
80
+ end
81
+
82
+ def test_groups
83
+ SimpleCov.add_group('test_group', 'test/')
84
+
85
+ xml = @formatter.format(@result)
86
+ doc = Nokogiri::XML::Document.parse(xml)
87
+
88
+ coverage = doc.xpath '/coverage'
89
+ assert_equal '1.0', coverage.attribute('line-rate').value
90
+ assert_equal '0', coverage.attribute('branch-rate').value
91
+ assert_equal '2', coverage.attribute('lines-covered').value
92
+ assert_equal '2', coverage.attribute('lines-valid').value
93
+ assert_equal '0', coverage.attribute('branches-covered').value
94
+ assert_equal '0', coverage.attribute('branches-valid').value
95
+ assert_equal '0', coverage.attribute('complexity').value
96
+ assert_equal '0', coverage.attribute('version').value
97
+ assert_not_empty coverage.attribute('timestamp').value
98
+
99
+ sources = doc.xpath '/coverage/sources/source'
100
+ assert_equal 1, sources.length
101
+ assert_equal 'simplecov-cobertura', File.basename(sources.first.text)
102
+
103
+ packages = doc.xpath '/coverage/packages/package'
104
+ assert_equal 1, packages.length
105
+ package = packages.first
106
+ assert_equal 'test_group', package.attribute('name').value
107
+ assert_equal '1.0', package.attribute('line-rate').value
108
+ assert_equal '0', package.attribute('branch-rate').value
109
+ assert_equal '0', package.attribute('complexity').value
110
+
111
+ classes = doc.xpath '/coverage/packages/package/classes/class'
112
+ assert_equal 1, classes.length
113
+ clazz = classes.first
114
+ assert_equal 'simplecov-cobertura_test', clazz.attribute('name').value
115
+ assert_equal 'test/simplecov-cobertura_test.rb', clazz.attribute('filename').value
116
+ assert_equal '1.0', clazz.attribute('line-rate').value
117
+ assert_equal '0', clazz.attribute('branch-rate').value
118
+ assert_equal '0', clazz.attribute('complexity').value
119
+
120
+ lines = doc.xpath '/coverage/packages/package/classes/class/lines/line'
121
+ assert_equal 2, lines.length
122
+ first_line = lines.first
123
+ assert_equal '1', first_line.attribute('number').value
124
+ assert_equal 'false', first_line.attribute('branch').value
125
+ assert_equal '1', first_line.attribute('hits').value
126
+ last_line = lines.last
127
+ assert_equal '2', last_line.attribute('number').value
128
+ assert_equal 'false', last_line.attribute('branch').value
129
+ assert_equal '2', last_line.attribute('hits').value
130
+ end
33
131
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplecov-cobertura
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse Bowes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-25 00:00:00.000000000 Z
11
+ date: 2016-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -111,9 +111,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
111
  version: 1.9.3
112
112
  required_rubygems_version: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - ! '>='
114
+ - - ! '>'
115
115
  - !ruby/object:Gem::Version
116
- version: '0'
116
+ version: 1.3.1
117
117
  requirements: []
118
118
  rubyforge_project:
119
119
  rubygems_version: 2.4.6