junit_model 0.1.0 → 0.1.1

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
2
  SHA1:
3
- metadata.gz: 7b7bf4f754ab21c30fc0557d1c32eefc872cbe31
4
- data.tar.gz: b5c44f1bce90ccc586e827e5ed7a94fc8653f959
3
+ metadata.gz: e8c2b889357cd9b0bdf627c03467ff4503880f42
4
+ data.tar.gz: c8b0076148a797a632098e61350c3ef58df9d31f
5
5
  SHA512:
6
- metadata.gz: 050f4db4c9449661f95545bccbf210f1322027c65d08d2f1765015685110b4ebd0baa56081d19c39a0587aab3f69ec225e894846ac07c54257ae5b565032cba8
7
- data.tar.gz: c5e8ed9dc9d34b4ba76a1fffd1039dff776466b2e636fcdb8f728c3c27f44877f3bcb817928c0b061514636c3c11bdb931205fe264b5c8ac5d57e0817a095f22
6
+ metadata.gz: 03052896a0b99f57cd00da88c28513b6670c628df0a2f6ad0240dccf353a9924ae1bb758d1a8ceb77ddcc94055c180d70d856acd31904d4fa6ee64362e93e2d9
7
+ data.tar.gz: 3af8922b6357c85d8b54bed9d88d924abcea38e7a10eda5decb279a195baa4376bbafa3c7b3397011834476be5fd19ec3e20666069c259dd8f26a3be6ab259bd
@@ -0,0 +1 @@
1
+ service_name: travis-ci
@@ -1,4 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.0.0
4
+ - 2.1.0
3
5
  - 2.2.0
4
6
  before_install: gem install bundler -v 1.11.2
data/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  A nicer way to interact with JUnit xml files.
4
4
 
5
5
  [![Build Status](https://travis-ci.org/iainsmith/junit_model.svg?branch=master)](https://travis-ci.org/iainsmith/junit_model)
6
+ [![Coverage Status](https://coveralls.io/repos/github/iainsmith/junit_model/badge.svg?branch=master)](https://coveralls.io/github/iainsmith/junit_model?branch=master)
6
7
 
7
8
  # Features
8
9
 
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'junit_model'
4
+
5
+ options = JunitModel::CLI::Parser.parse(ARGV)
6
+
7
+ if options.files.count != 2
8
+ puts 'Failed: You must pass exactly 2 files to be merged'
9
+ exit
10
+ end
11
+
12
+ JunitModel::CLI::Merger.merge(options)
@@ -18,15 +18,18 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "xml-simple", "1.1.5"
22
- spec.add_dependency "builder"
21
+ spec.add_dependency "xml-simple", "~> 1.1"
22
+ spec.add_dependency "builder", "~> 3.2"
23
23
 
24
- spec.add_development_dependency "bundler", "~> 1.11"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.add_development_dependency "bundler"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rspec"
27
27
  spec.add_development_dependency "guard-rspec"
28
28
  spec.add_development_dependency "terminal-notifier"
29
29
  spec.add_development_dependency "terminal-notifier-guard"
30
30
  spec.add_development_dependency "pry-remote"
31
31
  spec.add_development_dependency "guard-rubocop"
32
+ spec.add_development_dependency "coveralls"
33
+
34
+ spec.required_ruby_version = '>= 2.0'
32
35
  end
@@ -3,6 +3,8 @@ require 'junit_model/parser'
3
3
  require 'junit_model/xml'
4
4
  require 'junit_model/merger'
5
5
  require 'junit_model/models'
6
+ require 'junit_model/cli/cli_parser'
7
+ require 'junit_model/cli/cli_merger'
6
8
 
7
9
  # Junit Model is here for good
8
10
  module JunitModel
@@ -0,0 +1,23 @@
1
+ module JunitModel
2
+ module CLI
3
+ # Merge JUnit xml files from the command line
4
+ class Merger
5
+ def self.merge(options)
6
+ path_a = options.files[0]
7
+ path_b = options.files[1]
8
+ output_path = options.output_path
9
+
10
+ test_a = JunitModel::Parser.read_path(path_a)
11
+ test_b = JunitModel::Parser.read_path(path_b)
12
+
13
+ merged_tests = JunitModel::Merger.merge(test_a, test_b)
14
+ puts "Merged #{path_a} and #{path_b} to #{output_path}"
15
+ puts "Tests:#{merged_tests.tests} Failures:#{merged_tests.failure_count} Suites:#{merged_tests.test_suites.count}"
16
+ xml = merged_tests.to_xml
17
+ File.open(output_path, 'w') do |file|
18
+ file.write(xml)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,40 @@
1
+ require 'optparse'
2
+
3
+ module JunitModel
4
+ module CLI
5
+ # The options to be used throughout the CLI Module
6
+ class Options
7
+ attr_accessor :files, :output_path
8
+ def initialize
9
+ self.files = []
10
+ self.output_path = './merged_tests.xml'
11
+ end
12
+ end
13
+
14
+ # Parse CLI::Options from ARGV
15
+ class Parser
16
+ def self.parse(argv)
17
+ options = Options.new
18
+ opt_parser = OptionParser.new do |opts|
19
+ opts.banner = 'Usage: example.rb [options]'
20
+
21
+ opts.on('-o', '--output OUTPUT', String, 'Output') do |n|
22
+ options.output_path = n
23
+ end
24
+
25
+ opts.on('-h', '--help', 'Prints this help') do
26
+ puts opts
27
+ exit
28
+ end
29
+ end
30
+
31
+ opt_parser.order(argv) do |file|
32
+ options.files << file unless file.nil?
33
+ end
34
+
35
+ opt_parser.parse(argv)
36
+ options
37
+ end
38
+ end
39
+ end
40
+ end
@@ -46,7 +46,7 @@ module JunitModel
46
46
  classname: suite_a.name,
47
47
  tests: merged_test_cases.count.to_s,
48
48
  failures: failed_count.to_s,
49
- test_cases: merged_test_cases
49
+ testcase: merged_test_cases
50
50
  )
51
51
  end
52
52
 
@@ -1,3 +1,3 @@
1
1
  module JunitModel
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -8,13 +8,19 @@ module JunitModel
8
8
  builder.instruct! :xml, version: '1.0', encoding: 'UTF-8'
9
9
  builder.testsuites(tests: result.test_count, failures: result.failures_count) do |suite_builder|
10
10
  result.test_suites.each do |suite|
11
- suite_builder.testsuite(name: suite.name, tests: suite.tests, failures: suite.failures) do |test_builder|
11
+ suite_builder.testsuite(suite_hash(suite)) do |test_builder|
12
12
  suite.test_cases.each do |test_case|
13
- test_builder.testcase(classname: test_case.classname, name: test_case.name, time: test_case.time)
13
+ test_builder.testcase(test_case.to_h)
14
14
  end
15
15
  end
16
16
  end
17
17
  end
18
18
  end
19
+
20
+ def self.suite_hash(suite)
21
+ suite_hash = suite.to_h
22
+ suite_hash.delete(:testcase)
23
+ suite_hash
24
+ end
19
25
  end
20
26
  end
metadata CHANGED
@@ -1,85 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: junit_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iain Smith
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-21 00:00:00.000000000 Z
11
+ date: 2016-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xml-simple
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.1.5
19
+ version: '1.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.1.5
26
+ version: '1.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: builder
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '3.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '3.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.11'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.11'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '3.0'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '3.0'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-rspec
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -150,13 +150,29 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: coveralls
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
153
167
  description:
154
168
  email:
155
169
  - iain@mountain23.com
156
- executables: []
170
+ executables:
171
+ - junit_merge
157
172
  extensions: []
158
173
  extra_rdoc_files: []
159
174
  files:
175
+ - ".coveralls.yml"
160
176
  - ".gitignore"
161
177
  - ".rspec"
162
178
  - ".rubocop.yml"
@@ -169,8 +185,11 @@ files:
169
185
  - Rakefile
170
186
  - bin/console
171
187
  - bin/setup
188
+ - exe/junit_merge
172
189
  - junit_model.gemspec
173
190
  - lib/junit_model.rb
191
+ - lib/junit_model/cli/cli_merger.rb
192
+ - lib/junit_model/cli/cli_parser.rb
174
193
  - lib/junit_model/merger.rb
175
194
  - lib/junit_model/models.rb
176
195
  - lib/junit_model/parser.rb
@@ -188,7 +207,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
207
  requirements:
189
208
  - - ">="
190
209
  - !ruby/object:Gem::Version
191
- version: '0'
210
+ version: '2.0'
192
211
  required_rubygems_version: !ruby/object:Gem::Requirement
193
212
  requirements:
194
213
  - - ">="
@@ -201,4 +220,3 @@ signing_key:
201
220
  specification_version: 4
202
221
  summary: A nicer way to deal with JUnit style xml
203
222
  test_files: []
204
- has_rdoc: