branchcov-xmlruby-sonar 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/ruby_branch_cover.rb +97 -0
- metadata +43 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7a9fd78f1218ff3f8abf910d71cc4e6c354abb14a6dd9fe8a0d3d9d82ff43864
|
4
|
+
data.tar.gz: 1faa96cc9976cee8ec14ce9c95284d94f0a0c412e2978dbfe96c473cb5c91956
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5d4105c79decb3d4d383d957d46db26e75908d5a1098a3cea43feda019acf44324abf703eb558a8b21a9d21e72b54638e823b2501fb1adce2d51d21d60f32564
|
7
|
+
data.tar.gz: 829ab5c1c0f33f30fff97c93ff5c58f783b5b63b8c78a6c605f838bc02014286791cba4583fc8c111df63c96f9618ec36bcc5336c446f6bbc847fcbbe5f70c94
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'builder'
|
3
|
+
|
4
|
+
class RubyBranchCover
|
5
|
+
|
6
|
+
# To check line already present in list of lineToCover element
|
7
|
+
def checkIfLineAlreadyPresent(lineNumber, lineToCoverElementList)
|
8
|
+
lineToCoverElementList.each_with_index do
|
9
|
+
|lineToCoverElement, idx|
|
10
|
+
if lineToCoverElement[:lineNumber] == lineNumber
|
11
|
+
return idx
|
12
|
+
end
|
13
|
+
end
|
14
|
+
return -1
|
15
|
+
end
|
16
|
+
|
17
|
+
def findNotCoveredBranches(condtionsMap)
|
18
|
+
notCovered = 0
|
19
|
+
condtionsMap.each do
|
20
|
+
|condition, hitCount|
|
21
|
+
if hitCount == 0
|
22
|
+
notCovered+=1
|
23
|
+
end
|
24
|
+
end
|
25
|
+
return notCovered
|
26
|
+
end
|
27
|
+
|
28
|
+
def prepareXmlBuilder(xml, fileElementArray)
|
29
|
+
xml.coverage("version" => "1") do
|
30
|
+
fileElementArray.each do
|
31
|
+
|fileElement|
|
32
|
+
xml.file("path" => fileElement[:path]) do
|
33
|
+
fileElement[:lineElements].each do
|
34
|
+
|lineToCoverElement|
|
35
|
+
xml.lineToCover("lineNumber"=>lineToCoverElement[:lineNumber], "covered"=>lineToCoverElement[:covered],
|
36
|
+
"branchesToCover"=>lineToCoverElement[:branchesToCover], "coveredBranches"=>lineToCoverElement[:coveredBranches])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def readJsonAndGetXml
|
45
|
+
dirname = File.basename(Dir.getwd)
|
46
|
+
# puts dirname
|
47
|
+
file = File.read('coverage/.resultset.json')
|
48
|
+
data_hash = JSON.parse(file)
|
49
|
+
|
50
|
+
unless data_hash['RSpec'] == nil && data_hash['RSpec']['coverage'] == nil
|
51
|
+
puts "Rspec and coverage key found"
|
52
|
+
files_map = data_hash['RSpec']['coverage']
|
53
|
+
filename_key_list = files_map.keys
|
54
|
+
fileElementArray = []
|
55
|
+
files_map.each do
|
56
|
+
|filename,value|
|
57
|
+
branches = value['branches']
|
58
|
+
# if filename == '/Users/mfv-computer-0090/projects/tax_adjustment_web/lib/pa_api/abstract_client.rb'
|
59
|
+
# puts "branch size: #{branches.keys.size}"
|
60
|
+
# end
|
61
|
+
lineToCoverArray = []
|
62
|
+
unless branches.keys.size == 0
|
63
|
+
branches.each do
|
64
|
+
|branch, condtionsMap|
|
65
|
+
lineNumber = branch.split(',')[2]
|
66
|
+
notCovered = 0
|
67
|
+
if filename == '/Users/mfv-computer-0090/projects/tax_adjustment_web/lib/pa_api/abstract_client.rb'
|
68
|
+
puts "branch conditions size: #{condtionsMap.keys.size}"
|
69
|
+
end
|
70
|
+
notCovered = findNotCoveredBranches condtionsMap
|
71
|
+
covered = condtionsMap.keys.size-notCovered
|
72
|
+
lineToCoverElement = {lineNumber:lineNumber , covered: condtionsMap.keys.size == covered , branchesToCover: condtionsMap.keys.size, coveredBranches:condtionsMap.keys.size-notCovered}
|
73
|
+
# if filename == '/Users/mfv-computer-0090/projects/tax_adjustment_web/lib/pa_api/abstract_client.rb'
|
74
|
+
# puts "LineElement prepared: #{lineToCoverElement}"
|
75
|
+
# end
|
76
|
+
index = checkIfLineAlreadyPresent lineNumber, lineToCoverArray
|
77
|
+
if index != -1
|
78
|
+
currentLineToCoverElement = lineToCoverArray[index]
|
79
|
+
currentLineToCoverElement[:branchesToCover] = currentLineToCoverElement[:branchesToCover] + lineToCoverElement[:branchesToCover]
|
80
|
+
currentLineToCoverElement[:coveredBranches] = currentLineToCoverElement[:coveredBranches] + lineToCoverElement[:coveredBranches]
|
81
|
+
currentLineToCoverElement[:covered] = currentLineToCoverElement[:covered] && lineToCoverElement[:covered]
|
82
|
+
lineToCoverArray[index] = currentLineToCoverElement
|
83
|
+
else
|
84
|
+
lineToCoverArray.push(lineToCoverElement)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
fileElement = {path: filename, lineElements: lineToCoverArray}
|
88
|
+
fileElementArray.push(fileElement)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
xml = Builder::XmlMarkup.new(:target => @output, :indent => 2)
|
93
|
+
prepareXmlBuilder xml, fileElementArray
|
94
|
+
File.write("coverage/ruby-c1.xml", xml.to_xml)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
metadata
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: branchcov-xmlruby-sonar
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Suganya
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-03-09 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A program to convert json to xml test coverage foramt gem
|
14
|
+
email: ''
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/ruby_branch_cover.rb
|
20
|
+
homepage: https://rubygems.org/gems/branchcov-xmlruby-sonar
|
21
|
+
licenses:
|
22
|
+
- ''
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubygems_version: 3.3.7
|
40
|
+
signing_key:
|
41
|
+
specification_version: 4
|
42
|
+
summary: Branch Coverage Ruby!
|
43
|
+
test_files: []
|