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
|