minitest-reporters-parallel_tests_reporter 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 52d9a953c7e8cf65e14924cf3baad384f3bcd699
4
+ data.tar.gz: 102f4ef181d9517d1c4a623a779f1509c19468dc
5
+ SHA512:
6
+ metadata.gz: d8fd3f4a02f9e12584f0671e9b917edadd66fd59217094f7048bf14c5594c72450b1b493fbc9ccda3e5b43af402fdfbc8d3c714940822079416e79df37f46f07
7
+ data.tar.gz: fef7b18e51b8d3bd8184b39955d10b8b831fc53e7d30e55c7d8419c90b4297883c6acae1e2e2b86c768a763be0ca19bb493e70b5d6424e49b258cd313098542b
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.3
4
+ before_install: gem install bundler -v 1.10.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in minitest-reporters-parallel_tests_reporter.gemspec
4
+ gemspec
@@ -0,0 +1,37 @@
1
+ # Minitest::Reporters::ParallelTestsReporter
2
+
3
+ a [minitest-reporters](https://github.com/kern/minitest-reporters) extension
4
+ for integrating with [parallel_tests](https://github.com/grosser/parallel_tests).
5
+ Designed to integrate with [parallel_tests-extensions](https://github.com/backupify/parallel_tests-extensions)
6
+
7
+ ## Installation
8
+
9
+ ```rb
10
+ gem 'minitest-reporters-parallel_tests_reporter'
11
+ gem 'parallel_tests-extensions'
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ In the example below we integrate with [parallel_tests-extensions](https://github.com/backupify/parallel_tests-extensions) to
17
+ compile the reports from each process and print out the failed tests:
18
+
19
+ ```rb
20
+ require 'parallel_tests/extensions'
21
+ require 'minitest/reporters/parallel_tests_reporter'
22
+
23
+ ParallelTests.after_tests do
24
+ if ParallelTests.first_process?
25
+ report = Minitest::Reporters::ParallelTestsReporter.compile_reports!
26
+ failed = report.select {|r| r[:failures].any?}
27
+ if failed.any?
28
+ puts "\nThe following tests failed:"
29
+ puts failed.map {|f| f[:location]}.join("\n")
30
+ end
31
+ end
32
+ end
33
+
34
+ if ParallelTests.is_running?
35
+ Minitest::Reporters.use!(Minitest::Reporters::ParallelTestsReporter.new)
36
+ end
37
+ ```
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,62 @@
1
+ require 'minitest/reporters'
2
+
3
+ module Minitest
4
+ module Reporters
5
+ class ParallelTestsReporter < BaseReporter
6
+ VERSION = '0.0.1'
7
+
8
+ # Override if needed
9
+ def self.compiled_report_filepath
10
+ 'tmp/test_output_compiled.yml'
11
+ end
12
+
13
+ # Override if needed
14
+ def self.report_name_prefix
15
+ 'tmp/test_output'
16
+ end
17
+
18
+ # Use to read the report
19
+ def self.load_compiled_report
20
+ YAML.load_file(self.compiled_report_filepath)
21
+ end
22
+
23
+ # Call to compile all of the parallel reports together into one
24
+ # Destroys each of the segment reports after compiling
25
+ def self.compile_reports!
26
+ outputs = Dir[self.report_name_prefix + '*.yml']
27
+ outputs.delete self.compiled_report_filepath
28
+ sorted = outputs
29
+ .flat_map {|p| YAML.load_file(p)}
30
+ .sort {|a,b| b[:time] <=> a[:time]}
31
+
32
+ File.open(self.compiled_report_filepath, 'w') { |f| f.write sorted.to_yaml }
33
+ logger.debug(self.name + "::compile_reports!") { "Compiled parallel test results written to #{self.compiled_report_filepath}" }
34
+
35
+ FileUtils.rm(outputs)
36
+ logger.debug(self.name + "::compile_reports!") { "Parallel segment test results deleted #{outputs}" }
37
+ sorted
38
+ end
39
+
40
+ # Hook into BaseReporter
41
+ def report
42
+ super
43
+ result = tests.map do |t|
44
+ { test_class_name: t.class.name, failures: t.failures.map(&:location), location: t.location, time: t.time }
45
+ end
46
+ filename = self.class.report_name_prefix + ENV['TEST_ENV_NUMBER'] + '.yml'
47
+ File.open(filename, 'w') do |f|
48
+ f.write result.to_yaml
49
+ end
50
+ logger.debug("#{self.class.name}#report") { "Parallel segment test results written to #{filename}" }
51
+ end
52
+
53
+ def logger
54
+ self.class.logger
55
+ end
56
+
57
+ def self.logger
58
+ @logger ||= Logger.new($stdout)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'minitest/reporters/parallel_tests_reporter'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "minitest-reporters-parallel_tests_reporter"
8
+ spec.version = Minitest::Reporters::ParallelTestsReporter::VERSION
9
+ spec.authors = ["Josh Bodah"]
10
+ spec.email = ["jb3689@yahoo.com"]
11
+
12
+ spec.summary = %q{a minitest-reporters extension for integrating with parallel_tests}
13
+ spec.description = %q{a minitest-reporters extension for integrating with parallel_tests. designed to integrate with parallel_tests-extensions}
14
+ spec.homepage = "https://github.com/backupify/minitest-reporters-parallel_tests_reporter"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'minitest-reporters'
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.10"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "minitest"
26
+ end
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: minitest-reporters-parallel_tests_reporter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Josh Bodah
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-11-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest-reporters
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.10'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.10'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: a minitest-reporters extension for integrating with parallel_tests. designed
70
+ to integrate with parallel_tests-extensions
71
+ email:
72
+ - jb3689@yahoo.com
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - ".travis.yml"
79
+ - Gemfile
80
+ - README.md
81
+ - Rakefile
82
+ - lib/minitest/reporters/parallel_tests_reporter.rb
83
+ - minitest-reporters-parallel_tests_reporter.gemspec
84
+ homepage: https://github.com/backupify/minitest-reporters-parallel_tests_reporter
85
+ licenses: []
86
+ metadata: {}
87
+ post_install_message:
88
+ rdoc_options: []
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubyforge_project:
103
+ rubygems_version: 2.4.8
104
+ signing_key:
105
+ specification_version: 4
106
+ summary: a minitest-reporters extension for integrating with parallel_tests
107
+ test_files: []
108
+ has_rdoc: