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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/ruby_branch_cover.rb +97 -0
  3. 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: []