mobile_metrics 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4fad7c783004d3f8c01f018cb3350529d04d0d4e
4
- data.tar.gz: d1610532a69212e81f2c3fe3d83d767de954d46b
2
+ SHA256:
3
+ metadata.gz: 30ed2b68c154f8901ce362daf0dd744ce7b0d325fa88dc9294af55b4b0bfa7e1
4
+ data.tar.gz: a2993af8b7d748b55d40a9478b37628e75126fdfdc4f1a082c50b43580f131ea
5
5
  SHA512:
6
- metadata.gz: 557743d0e0138090eb50ac275a8f68d582fcdb69a175e6f71779f685c7e72ff319e3cf8ef4a4786ac9e91500cfe253caec9dec4baabd1703d1df60a72ed7c958
7
- data.tar.gz: 7552fda88947222053e6eb0e66521448ab1f5dfcc3667ca818328acd7fbbad6acb7fa1f73686936468cae66dbfa4fbf0ee869a4e22f0f7743fad56706bd723a3
6
+ metadata.gz: 0bed566a44e5080bb5b18a649c90c193dd785a54720c940e1a0ec3ce7e661523eadc7f1f4c6815bed24808d728f1b317597539d9b47bcaea1ff588bb94d6523d
7
+ data.tar.gz: df938aec687c837a8b7ded3dfb193f6738b95083dc89a2f2e40890e2ed9a02ebaa337dab3e0812ad3951aec540148be68f55410d009f7eb0eb8a46d3a50bd1ce
data/Gemfile.lock CHANGED
@@ -1,12 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mobile_metrics (0.0.1)
4
+ mobile_metrics (0.0.2)
5
+ ox (~> 2.0)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
10
  diff-lcs (1.3)
11
+ ox (2.5.0)
10
12
  rake (10.5.0)
11
13
  rspec (3.7.0)
12
14
  rspec-core (~> 3.7.0)
@@ -0,0 +1,82 @@
1
+
2
+ module MobileMetrics
3
+
4
+ # Adapted from: https://github.com/orta/danger-junit/blob/master/lib/junit/plugin.rb
5
+ class JunitParser
6
+ # All the tests for introspection
7
+ #
8
+ # @return [Array<Ox::Element>]
9
+ attr_accessor :tests
10
+
11
+ # An array of XML elements that represent passed tests.
12
+ #
13
+ # @return [Array<Ox::Element>]
14
+ attr_accessor :passes
15
+
16
+ # An array of XML elements that represent failed tests.
17
+ #
18
+ # @return [Array<Ox::Element>]
19
+ attr_accessor :failures
20
+
21
+ # An array of XML elements that represent passed tests.
22
+ #
23
+ # @return [Array<Ox::Element>]
24
+ attr_accessor :errors
25
+
26
+ # An array of XML elements that represent skipped tests.
27
+ #
28
+ # @return [Array<Ox::Element>]
29
+ attr_accessor :skipped
30
+
31
+ # An attribute to make the plugin show a warning on skipped tests.
32
+ #
33
+ # @return [Bool]
34
+ attr_accessor :show_skipped_tests
35
+
36
+ # An array of symbols that become the columns of your tests,
37
+ # if `nil`, the default, it will be all of the attributes.
38
+ #
39
+ # @return [Array<Symbol>]
40
+ attr_accessor :headers
41
+
42
+ # Parses an XML file, which fills all the attributes,
43
+ # will `raise` for errors
44
+ # @return [void]
45
+ def parse(file)
46
+ require 'ox'
47
+ raise "No JUnit file was found at #{file}" unless File.exist? file
48
+
49
+ xml_string = File.read(file)
50
+ @doc = Ox.parse(xml_string)
51
+
52
+ suite_root = @doc.nodes.first.value == 'testsuites' ? @doc.nodes.first : @doc
53
+ @tests = suite_root.nodes.map(&:nodes).flatten.select { |node| node.kind_of?(Ox::Element) && node.value == 'testcase' }
54
+
55
+ failed_suites = suite_root.nodes.select { |suite| suite[:failures].to_i > 0 || suite[:errors].to_i > 0 }
56
+ failed_tests = failed_suites.map(&:nodes).flatten.select { |node| node.kind_of?(Ox::Element) && node.value == 'testcase' }
57
+
58
+ @failures = failed_tests.select do |test|
59
+ test.nodes.count > 0
60
+ end.select do |test|
61
+ node = test.nodes.first
62
+ node.kind_of?(Ox::Element) && node.value == 'failure'
63
+ end
64
+
65
+ @errors = failed_tests.select do |test|
66
+ test.nodes.count > 0
67
+ end.select do |test|
68
+ node = test.nodes.first
69
+ node.kind_of?(Ox::Element) && node.value == 'error'
70
+ end
71
+
72
+ @skipped = tests.select do |test|
73
+ test.nodes.count > 0
74
+ end.select do |test|
75
+ node = test.nodes.first
76
+ node.kind_of?(Ox::Element) && node.value == 'skipped'
77
+ end
78
+
79
+ @passes = tests - @failures - @errors - @skipped
80
+ end
81
+ end
82
+ end
@@ -1,3 +1,3 @@
1
1
  module MobileMetrics
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require "mobile_metrics/version"
2
+ require "mobile_metrics/junit"
2
3
 
3
4
  require 'time'
4
5
  require 'json'
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.bindir = "exe"
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
+
22
+ spec.add_runtime_dependency 'ox', '~> 2.0'
21
23
 
22
24
  spec.add_development_dependency "bundler", "~> 1.16"
23
25
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobile_metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - dbeard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-15 00:00:00.000000000 Z
11
+ date: 2018-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ox
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -68,6 +82,7 @@ files:
68
82
  - bin/console
69
83
  - bin/setup
70
84
  - lib/mobile_metrics.rb
85
+ - lib/mobile_metrics/junit.rb
71
86
  - lib/mobile_metrics/version.rb
72
87
  - mobile_metrics.gemspec
73
88
  homepage:
@@ -89,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
104
  version: '0'
90
105
  requirements: []
91
106
  rubyforge_project:
92
- rubygems_version: 2.6.14
107
+ rubygems_version: 2.7.7
93
108
  signing_key:
94
109
  specification_version: 4
95
110
  summary: Mobile logging format library