mobile_metrics 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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