vinted-parallel_tests 0.13.3 → 1.7.0.1
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 +4 -4
- data/Readme.md +86 -47
- data/bin/parallel_cucumber +5 -1
- data/bin/parallel_rspec +5 -1
- data/bin/parallel_spinach +9 -0
- data/bin/parallel_test +5 -1
- data/lib/parallel_tests.rb +15 -2
- data/lib/parallel_tests/cli.rb +115 -35
- data/lib/parallel_tests/cucumber/failures_logger.rb +9 -7
- data/lib/parallel_tests/cucumber/runner.rb +16 -77
- data/lib/parallel_tests/cucumber/scenario_line_logger.rb +52 -0
- data/lib/parallel_tests/cucumber/scenarios.rb +34 -0
- data/lib/parallel_tests/{cucumber → gherkin}/io.rb +1 -1
- data/lib/parallel_tests/{cucumber/gherkin_listener.rb → gherkin/listener.rb} +11 -6
- data/lib/parallel_tests/gherkin/runner.rb +116 -0
- data/lib/parallel_tests/{cucumber → gherkin}/runtime_logger.rb +2 -2
- data/lib/parallel_tests/grouper.rb +34 -17
- data/lib/parallel_tests/rspec/failures_logger.rb +22 -14
- data/lib/parallel_tests/rspec/logger_base.rb +5 -1
- data/lib/parallel_tests/rspec/runner.rb +5 -4
- data/lib/parallel_tests/rspec/runtime_logger.rb +10 -5
- data/lib/parallel_tests/rspec/summary_logger.rb +11 -11
- data/lib/parallel_tests/spinach/runner.rb +19 -0
- data/lib/parallel_tests/tasks.rb +41 -18
- data/lib/parallel_tests/test/runner.rb +80 -28
- data/lib/parallel_tests/test/runtime_logger.rb +86 -55
- data/lib/parallel_tests/version.rb +1 -1
- metadata +18 -35
- data/.gitignore +0 -2
- data/.rspec +0 -2
- data/.travis.yml +0 -6
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -48
- data/Rakefile +0 -6
- data/ReadmeRails2.md +0 -48
- data/parallel_tests.gemspec +0 -14
- data/spec/integration_spec.rb +0 -285
- data/spec/parallel_tests/cli_spec.rb +0 -71
- data/spec/parallel_tests/cucumber/failure_logger_spec.rb +0 -43
- data/spec/parallel_tests/cucumber/gherkin_listener_spec.rb +0 -97
- data/spec/parallel_tests/cucumber/runner_spec.rb +0 -179
- data/spec/parallel_tests/grouper_spec.rb +0 -52
- data/spec/parallel_tests/rspec/failures_logger_spec.rb +0 -82
- data/spec/parallel_tests/rspec/runner_spec.rb +0 -187
- data/spec/parallel_tests/rspec/runtime_logger_spec.rb +0 -126
- data/spec/parallel_tests/rspec/summary_logger_spec.rb +0 -37
- data/spec/parallel_tests/tasks_spec.rb +0 -151
- data/spec/parallel_tests/test/runner_spec.rb +0 -413
- data/spec/parallel_tests/test/runtime_logger_spec.rb +0 -90
- data/spec/parallel_tests_spec.rb +0 -137
- data/spec/spec_helper.rb +0 -157
@@ -4,70 +4,61 @@ require 'parallel_tests/test/runner'
|
|
4
4
|
module ParallelTests
|
5
5
|
module Test
|
6
6
|
class RuntimeLogger
|
7
|
-
@@
|
7
|
+
@@prepared = false
|
8
8
|
|
9
9
|
class << self
|
10
|
-
def
|
11
|
-
|
10
|
+
def log_test_run(test)
|
11
|
+
prepare
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
result = nil
|
14
|
+
time = ParallelTests.delta { result = yield }
|
15
|
+
log(test, time)
|
16
|
+
|
17
|
+
result
|
18
|
+
end
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
+
def unique_log
|
21
|
+
lock do
|
22
|
+
separator = "\n"
|
23
|
+
groups = File.read(logfile).split(separator).map { |line| line.split(":") }.group_by(&:first)
|
24
|
+
lines = groups.map do |file, times|
|
25
|
+
time = "%.2f" % times.map(&:last).map(&:to_f).inject(:+)
|
26
|
+
"#{file}:#{time}"
|
27
|
+
end
|
28
|
+
File.write(logfile, lines.join(separator) + separator)
|
20
29
|
end
|
21
30
|
end
|
22
31
|
|
23
32
|
private
|
24
33
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
34
|
+
# ensure folder exists + clean out previous log
|
35
|
+
# this will happen in multiple processes, but should be roughly at the same time
|
36
|
+
# so there should be no log message lost
|
37
|
+
def prepare
|
38
|
+
return if @@prepared
|
39
|
+
@@prepared = true
|
40
|
+
FileUtils.mkdir_p(File.dirname(logfile))
|
41
|
+
File.write(logfile, '')
|
29
42
|
end
|
30
43
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
if defined?(Rails)
|
37
|
-
result += case suspect.superclass.name
|
38
|
-
when "ActionDispatch::IntegrationTest"
|
39
|
-
"integration/"
|
40
|
-
when "ActionDispatch::PerformanceTest"
|
41
|
-
"performance/"
|
42
|
-
when "ActionController::TestCase"
|
43
|
-
"functional/"
|
44
|
-
when "ActionView::TestCase"
|
45
|
-
"unit/helpers/"
|
46
|
-
else
|
47
|
-
"unit/"
|
48
|
-
end
|
44
|
+
def log(test, time)
|
45
|
+
return unless message = message(test, time)
|
46
|
+
lock do
|
47
|
+
File.open(logfile, 'a') { |f| f.puts message }
|
49
48
|
end
|
50
|
-
result
|
51
49
|
end
|
52
50
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
word.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
59
|
-
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
60
|
-
word.gsub!(/\:\:/, '/')
|
61
|
-
word.tr!("-", "_")
|
62
|
-
word.downcase!
|
63
|
-
word
|
51
|
+
def message(test, delta)
|
52
|
+
return unless method = test.public_instance_methods(true).detect { |method| method =~ /^test_/ }
|
53
|
+
filename = test.instance_method(method).source_location.first.sub("#{Dir.pwd}/", "")
|
54
|
+
"#{filename}:#{delta}"
|
64
55
|
end
|
65
56
|
|
66
|
-
def
|
67
|
-
File.open(
|
57
|
+
def lock
|
58
|
+
File.open(logfile, 'r') do |f|
|
68
59
|
begin
|
69
60
|
f.flock File::LOCK_EX
|
70
|
-
yield
|
61
|
+
yield
|
71
62
|
ensure
|
72
63
|
f.flock File::LOCK_UN
|
73
64
|
end
|
@@ -82,16 +73,56 @@ module ParallelTests
|
|
82
73
|
end
|
83
74
|
end
|
84
75
|
|
85
|
-
|
86
|
-
class ::
|
87
|
-
|
76
|
+
if defined?(Minitest::Runnable) # Minitest 5
|
77
|
+
class << Minitest::Runnable
|
78
|
+
alias_method :run_without_runtime_log, :run
|
79
|
+
def run(*args)
|
80
|
+
ParallelTests::Test::RuntimeLogger.log_test_run(self) do
|
81
|
+
run_without_runtime_log(*args)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
88
85
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
86
|
+
class << Minitest
|
87
|
+
alias_method :run_without_runtime_log, :run
|
88
|
+
def run(*args)
|
89
|
+
result = run_without_runtime_log(*args)
|
90
|
+
ParallelTests::Test::RuntimeLogger.unique_log
|
91
|
+
result
|
92
|
+
end
|
93
|
+
end
|
94
|
+
elsif defined?(MiniTest::Unit) # Minitest 4
|
95
|
+
MiniTest::Unit.class_eval do
|
96
|
+
alias_method :_run_suite_without_runtime_log, :_run_suite
|
97
|
+
def _run_suite(*args)
|
98
|
+
ParallelTests::Test::RuntimeLogger.log_test_run(args.first) do
|
99
|
+
_run_suite_without_runtime_log(*args)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
alias_method :_run_suites_without_runtime_log, :_run_suites
|
104
|
+
def _run_suites(*args)
|
105
|
+
result = _run_suites_without_runtime_log(*args)
|
106
|
+
ParallelTests::Test::RuntimeLogger.unique_log
|
107
|
+
result
|
108
|
+
end
|
94
109
|
end
|
110
|
+
else # Test::Unit
|
111
|
+
require 'test/unit/testsuite'
|
112
|
+
class ::Test::Unit::TestSuite
|
113
|
+
alias_method :run_without_timing, :run
|
95
114
|
|
96
|
-
|
115
|
+
def run(result, &block)
|
116
|
+
test = tests.first
|
117
|
+
|
118
|
+
if test.is_a? ::Test::Unit::TestSuite # all tests ?
|
119
|
+
run_without_timing(result, &block)
|
120
|
+
ParallelTests::Test::RuntimeLogger.unique_log
|
121
|
+
else
|
122
|
+
ParallelTests::Test::RuntimeLogger.log_test_run(test.class) do
|
123
|
+
run_without_timing(result, &block)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
97
128
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vinted-parallel_tests
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.7.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurynas Butkus
|
@@ -10,20 +10,20 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-09-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: parallel
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
29
|
description:
|
@@ -32,30 +32,28 @@ email:
|
|
32
32
|
- tomas.varaneckas@gmail.com
|
33
33
|
- jjanauskas@gmail.com
|
34
34
|
executables:
|
35
|
+
- parallel_spinach
|
35
36
|
- parallel_cucumber
|
36
37
|
- parallel_rspec
|
37
38
|
- parallel_test
|
38
39
|
extensions: []
|
39
40
|
extra_rdoc_files: []
|
40
41
|
files:
|
41
|
-
- .gitignore
|
42
|
-
- .rspec
|
43
|
-
- .travis.yml
|
44
|
-
- Gemfile
|
45
|
-
- Gemfile.lock
|
46
|
-
- Rakefile
|
47
42
|
- Readme.md
|
48
|
-
- ReadmeRails2.md
|
49
43
|
- bin/parallel_cucumber
|
50
44
|
- bin/parallel_rspec
|
45
|
+
- bin/parallel_spinach
|
51
46
|
- bin/parallel_test
|
52
47
|
- lib/parallel_tests.rb
|
53
48
|
- lib/parallel_tests/cli.rb
|
54
49
|
- lib/parallel_tests/cucumber/failures_logger.rb
|
55
|
-
- lib/parallel_tests/cucumber/gherkin_listener.rb
|
56
|
-
- lib/parallel_tests/cucumber/io.rb
|
57
50
|
- lib/parallel_tests/cucumber/runner.rb
|
58
|
-
- lib/parallel_tests/cucumber/
|
51
|
+
- lib/parallel_tests/cucumber/scenario_line_logger.rb
|
52
|
+
- lib/parallel_tests/cucumber/scenarios.rb
|
53
|
+
- lib/parallel_tests/gherkin/io.rb
|
54
|
+
- lib/parallel_tests/gherkin/listener.rb
|
55
|
+
- lib/parallel_tests/gherkin/runner.rb
|
56
|
+
- lib/parallel_tests/gherkin/runtime_logger.rb
|
59
57
|
- lib/parallel_tests/grouper.rb
|
60
58
|
- lib/parallel_tests/railtie.rb
|
61
59
|
- lib/parallel_tests/rspec/failures_logger.rb
|
@@ -63,26 +61,11 @@ files:
|
|
63
61
|
- lib/parallel_tests/rspec/runner.rb
|
64
62
|
- lib/parallel_tests/rspec/runtime_logger.rb
|
65
63
|
- lib/parallel_tests/rspec/summary_logger.rb
|
64
|
+
- lib/parallel_tests/spinach/runner.rb
|
66
65
|
- lib/parallel_tests/tasks.rb
|
67
66
|
- lib/parallel_tests/test/runner.rb
|
68
67
|
- lib/parallel_tests/test/runtime_logger.rb
|
69
68
|
- lib/parallel_tests/version.rb
|
70
|
-
- parallel_tests.gemspec
|
71
|
-
- spec/integration_spec.rb
|
72
|
-
- spec/parallel_tests/cli_spec.rb
|
73
|
-
- spec/parallel_tests/cucumber/failure_logger_spec.rb
|
74
|
-
- spec/parallel_tests/cucumber/gherkin_listener_spec.rb
|
75
|
-
- spec/parallel_tests/cucumber/runner_spec.rb
|
76
|
-
- spec/parallel_tests/grouper_spec.rb
|
77
|
-
- spec/parallel_tests/rspec/failures_logger_spec.rb
|
78
|
-
- spec/parallel_tests/rspec/runner_spec.rb
|
79
|
-
- spec/parallel_tests/rspec/runtime_logger_spec.rb
|
80
|
-
- spec/parallel_tests/rspec/summary_logger_spec.rb
|
81
|
-
- spec/parallel_tests/tasks_spec.rb
|
82
|
-
- spec/parallel_tests/test/runner_spec.rb
|
83
|
-
- spec/parallel_tests/test/runtime_logger_spec.rb
|
84
|
-
- spec/parallel_tests_spec.rb
|
85
|
-
- spec/spec_helper.rb
|
86
69
|
homepage: http://github.com/vinted/parallel_tests
|
87
70
|
licenses:
|
88
71
|
- MIT
|
@@ -93,18 +76,18 @@ require_paths:
|
|
93
76
|
- lib
|
94
77
|
required_ruby_version: !ruby/object:Gem::Requirement
|
95
78
|
requirements:
|
96
|
-
- -
|
79
|
+
- - ">="
|
97
80
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
81
|
+
version: 1.9.3
|
99
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
83
|
requirements:
|
101
|
-
- -
|
84
|
+
- - ">="
|
102
85
|
- !ruby/object:Gem::Version
|
103
86
|
version: '0'
|
104
87
|
requirements: []
|
105
88
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
89
|
+
rubygems_version: 2.2.2
|
107
90
|
signing_key:
|
108
91
|
specification_version: 4
|
109
|
-
summary: Run Test::Unit / RSpec / Cucumber in parallel
|
92
|
+
summary: Run Test::Unit / RSpec / Cucumber / Spinach in parallel
|
110
93
|
test_files: []
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.travis.yml
DELETED
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
parallel_tests (0.13.3)
|
5
|
-
parallel
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
builder (3.0.0)
|
11
|
-
bump (0.3.8)
|
12
|
-
cucumber (1.1.4)
|
13
|
-
builder (>= 2.1.2)
|
14
|
-
diff-lcs (>= 1.1.2)
|
15
|
-
gherkin (~> 2.7.1)
|
16
|
-
json (>= 1.4.6)
|
17
|
-
term-ansicolor (>= 1.0.6)
|
18
|
-
diff-lcs (1.2.4)
|
19
|
-
gherkin (2.7.6)
|
20
|
-
json (>= 1.4.6)
|
21
|
-
gherkin (2.7.6-java)
|
22
|
-
json (>= 1.4.6)
|
23
|
-
json (1.7.5)
|
24
|
-
json (1.7.5-java)
|
25
|
-
parallel (0.6.5)
|
26
|
-
rake (10.0.3)
|
27
|
-
rspec (2.13.0)
|
28
|
-
rspec-core (~> 2.13.0)
|
29
|
-
rspec-expectations (~> 2.13.0)
|
30
|
-
rspec-mocks (~> 2.13.0)
|
31
|
-
rspec-core (2.13.1)
|
32
|
-
rspec-expectations (2.13.0)
|
33
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
34
|
-
rspec-mocks (2.13.1)
|
35
|
-
term-ansicolor (1.0.7)
|
36
|
-
test-unit (2.4.4)
|
37
|
-
|
38
|
-
PLATFORMS
|
39
|
-
java
|
40
|
-
ruby
|
41
|
-
|
42
|
-
DEPENDENCIES
|
43
|
-
bump
|
44
|
-
cucumber
|
45
|
-
parallel_tests!
|
46
|
-
rake
|
47
|
-
rspec (>= 2.4)
|
48
|
-
test-unit
|
data/Rakefile
DELETED
data/ReadmeRails2.md
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
### Install
|
2
|
-
|
3
|
-
As gem
|
4
|
-
|
5
|
-
gem install parallel_tests
|
6
|
-
|
7
|
-
# add to config/environments/development.rb
|
8
|
-
config.gem "parallel_tests"
|
9
|
-
|
10
|
-
# add to Rakefile
|
11
|
-
begin; require 'parallel_tests/tasks'; rescue LoadError; end
|
12
|
-
|
13
|
-
OR as plugin
|
14
|
-
|
15
|
-
gem install parallel
|
16
|
-
|
17
|
-
# add to config/environments/development.rb
|
18
|
-
config.gem "parallel"
|
19
|
-
|
20
|
-
./script/plugin install git://github.com/grosser/parallel_tests.git
|
21
|
-
|
22
|
-
# add to Rakefile
|
23
|
-
begin; require 'vendor/plugins/parallel_tests/lib/parallel_tests/tasks'; rescue LoadError; end
|
24
|
-
|
25
|
-
|
26
|
-
Even process runtimes
|
27
|
-
-----------------
|
28
|
-
|
29
|
-
RSpec 1.x:
|
30
|
-
--format progress
|
31
|
-
--require parallel_tests/rspec/runtime_logger
|
32
|
-
--format ParallelTests::RSpec::RuntimeLogger:tmp/parallel_runtime_rspec.log
|
33
|
-
|
34
|
-
SpecSummaryLogger
|
35
|
-
--------------------
|
36
|
-
|
37
|
-
RSpec 1.x:
|
38
|
-
--format progress
|
39
|
-
--require parallel_tests/rspec/summary_logger
|
40
|
-
--format ParallelTests::RSpec::SummaryLogger:tmp/spec_summary.log
|
41
|
-
|
42
|
-
SpecFailuresLogger
|
43
|
-
-----------------------
|
44
|
-
|
45
|
-
RSpec 1.x:
|
46
|
-
--format progress
|
47
|
-
--require parallel_tests/rspec/failures_logger
|
48
|
-
--format ParallelTests::RSpec::FailuresLogger:tmp/failing_specs.log
|
data/parallel_tests.gemspec
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
2
|
-
name = "vinted-parallel_tests"
|
3
|
-
require "parallel_tests/version"
|
4
|
-
|
5
|
-
Gem::Specification.new name, ParallelTests::VERSION do |s|
|
6
|
-
s.summary = "Run Test::Unit / RSpec / Cucumber in parallel"
|
7
|
-
s.authors = ["Laurynas Butkus", "Tomas Varaneckas", "Justas Janauskas"]
|
8
|
-
s.email = ["laurynas.butkus@gmail.com", "tomas.varaneckas@gmail.com", "jjanauskas@gmail.com"]
|
9
|
-
s.homepage = "http://github.com/vinted/parallel_tests"
|
10
|
-
s.files = `git ls-files`.split("\n")
|
11
|
-
s.license = "MIT"
|
12
|
-
s.executables = ["parallel_cucumber", "parallel_rspec", "parallel_test"]
|
13
|
-
s.add_runtime_dependency "parallel"
|
14
|
-
end
|