parallel_tests 0.4.10 → 0.4.11
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.
- data/VERSION +1 -1
- data/bin/parallel_test +6 -7
- data/lib/parallel_cucumber.rb +1 -5
- data/lib/parallel_specs.rb +1 -1
- data/lib/parallel_tests.rb +2 -11
- data/parallel_tests.gemspec +2 -2
- data/spec/integration_spec.rb +3 -5
- data/spec/parallel_cucumber_spec.rb +2 -32
- data/spec/parallel_specs_spec.rb +2 -21
- data/spec/parallel_tests_spec.rb +2 -36
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.11
|
data/bin/parallel_test
CHANGED
@@ -63,22 +63,21 @@ else
|
|
63
63
|
num_tests = groups.inject(0){|sum,item| sum + item.size }
|
64
64
|
puts "#{num_processes} processes for #{num_tests} #{name}s, ~ #{num_tests / groups.size} #{name}s per process"
|
65
65
|
|
66
|
-
|
66
|
+
test_results = Parallel.map(groups, :in_processes => num_processes) do |group|
|
67
67
|
klass.run_tests(group, groups.index(group), options[:test_options])
|
68
68
|
end
|
69
69
|
|
70
70
|
#parse and print results
|
71
|
-
results = klass.find_results(
|
71
|
+
results = klass.find_results(test_results.map{|result| result[:stdout] }*"")
|
72
72
|
puts ""
|
73
73
|
puts "Results:"
|
74
|
-
results.each{|r| puts r}
|
74
|
+
results.each{|r| puts r }
|
75
75
|
|
76
76
|
#report total time taken
|
77
77
|
puts ""
|
78
78
|
puts "Took #{Time.now - start} seconds"
|
79
79
|
|
80
|
-
#exit with correct status code
|
81
|
-
|
82
|
-
#
|
83
|
-
abort "#{name.capitalize}s Failed" if klass.failed?(results)
|
80
|
+
#exit with correct status code so rake parallel:test && echo 123 works
|
81
|
+
failed = test_results.any?{|result| result[:exit_status] != 0 }
|
82
|
+
abort "#{name.capitalize}s Failed" if failed
|
84
83
|
end
|
data/lib/parallel_cucumber.rb
CHANGED
@@ -4,7 +4,7 @@ class ParallelCucumber < ParallelTests
|
|
4
4
|
def self.run_tests(test_files, process_number, options)
|
5
5
|
color = ($stdout.tty? ? 'AUTOTEST=1 ; export AUTOTEST ;' : '')#display color when we are in a terminal
|
6
6
|
cmd = "#{color} #{executable} #{options} #{test_files*' '}"
|
7
|
-
execute_command(cmd, process_number)
|
7
|
+
execute_command(cmd, process_number)
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.executable
|
@@ -26,8 +26,4 @@ class ParallelCucumber < ParallelTests
|
|
26
26
|
def self.line_is_result?(line)
|
27
27
|
line =~ /^\d+ (steps|scenarios)/
|
28
28
|
end
|
29
|
-
|
30
|
-
def self.line_is_failure?(line)
|
31
|
-
line =~ /^\d+ (steps|scenarios).*(\d{2,}|[1-9]) failed/
|
32
|
-
end
|
33
29
|
end
|
data/lib/parallel_specs.rb
CHANGED
@@ -4,7 +4,7 @@ class ParallelSpecs < ParallelTests
|
|
4
4
|
def self.run_tests(test_files, process_number, options)
|
5
5
|
exe = executable # its expensive with bundler, so do not call it twice
|
6
6
|
cmd = "#{color} #{exe} #{options} #{spec_opts(exe)} #{test_files*' '}"
|
7
|
-
execute_command(cmd, process_number)
|
7
|
+
execute_command(cmd, process_number)
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.executable
|
data/lib/parallel_tests.rb
CHANGED
@@ -31,7 +31,7 @@ class ParallelTests
|
|
31
31
|
def self.run_tests(test_files, process_number, options)
|
32
32
|
require_list = test_files.map { |filename| "\"#{filename}\"" }.join(",")
|
33
33
|
cmd = "ruby -Itest #{options} -e '[#{require_list}].each {|f| require f }'"
|
34
|
-
execute_command(cmd, process_number)
|
34
|
+
execute_command(cmd, process_number)
|
35
35
|
end
|
36
36
|
|
37
37
|
def self.execute_command(cmd, process_number)
|
@@ -56,11 +56,6 @@ class ParallelTests
|
|
56
56
|
}.compact
|
57
57
|
end
|
58
58
|
|
59
|
-
def self.failed?(results)
|
60
|
-
return true if results.empty?
|
61
|
-
!! results.detect{|line| line_is_failure?(line)}
|
62
|
-
end
|
63
|
-
|
64
59
|
def self.test_env_number(process_number)
|
65
60
|
process_number == 0 ? '' : process_number + 1
|
66
61
|
end
|
@@ -87,10 +82,6 @@ class ParallelTests
|
|
87
82
|
line =~ /\d+ failure/
|
88
83
|
end
|
89
84
|
|
90
|
-
def self.line_is_failure?(line)
|
91
|
-
line =~ /(\d{2,}|[1-9]) (failure|error)/
|
92
|
-
end
|
93
|
-
|
94
85
|
def self.test_suffix
|
95
86
|
"_test.rb"
|
96
87
|
end
|
@@ -120,4 +111,4 @@ class ParallelTests
|
|
120
111
|
Dir["#{root}**/**/*#{self.test_suffix}"]
|
121
112
|
end
|
122
113
|
end
|
123
|
-
end
|
114
|
+
end
|
data/parallel_tests.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{parallel_tests}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Grosser"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-02-04}
|
13
13
|
s.email = %q{grosser.michael@gmail.com}
|
14
14
|
s.executables = ["parallel_spec", "parallel_cucumber", "parallel_test"]
|
15
15
|
s.files = [
|
data/spec/integration_spec.rb
CHANGED
@@ -29,7 +29,7 @@ describe 'CLI' do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def run_specs(options={})
|
32
|
-
`cd #{folder} && #{executable} -t spec -n #{options[:processes]||2} #{options[:add]} 2>&1
|
32
|
+
`cd #{folder} && #{executable} -t spec -n #{options[:processes]||2} #{options[:add]} 2>&1`
|
33
33
|
end
|
34
34
|
|
35
35
|
it "runs tests in parallel" do
|
@@ -45,8 +45,7 @@ describe 'CLI' do
|
|
45
45
|
result.scan('1 example, 0 failure').size.should == 4 # 2 results + 2 result summary
|
46
46
|
result.scan(/Finished in \d+\.\d+ seconds/).size.should == 2
|
47
47
|
result.scan(/Took \d+\.\d+ seconds/).size.should == 1 # parallel summary
|
48
|
-
|
49
|
-
result.should include('i ran!')
|
48
|
+
$?.success?.should == true
|
50
49
|
end
|
51
50
|
|
52
51
|
it "fails when tests fail" do
|
@@ -56,8 +55,7 @@ describe 'CLI' do
|
|
56
55
|
|
57
56
|
result.scan('1 example, 1 failure').size.should == 2
|
58
57
|
result.scan('1 example, 0 failure').size.should == 2
|
59
|
-
|
60
|
-
result.should_not include('i ran!')
|
58
|
+
$?.success?.should == false
|
61
59
|
end
|
62
60
|
|
63
61
|
it "can exec given commands with ENV['TEST_ENV_NUM']" do
|
@@ -24,7 +24,7 @@ describe ParallelCucumber do
|
|
24
24
|
io = open('spec/spec_helper.rb')
|
25
25
|
ParallelCucumber.stub!(:print)
|
26
26
|
ParallelCucumber.should_receive(:open).and_return io
|
27
|
-
ParallelCucumber.run_tests(['xxx'],1,'').should =~ /\$LOAD_PATH << File/
|
27
|
+
ParallelCucumber.run_tests(['xxx'],1,'')[:stdout].should =~ /\$LOAD_PATH << File/
|
28
28
|
end
|
29
29
|
|
30
30
|
it "runs bundle exec cucumber when on bundler 0.9" do
|
@@ -69,34 +69,4 @@ EOF
|
|
69
69
|
ParallelCucumber.find_results(output).should == ["7 scenarios (3 failed, 4 passed)", "33 steps (3 failed, 2 skipped, 28 passed)", "4 scenarios (4 passed)", "40 steps (40 passed)"]
|
70
70
|
end
|
71
71
|
end
|
72
|
-
|
73
|
-
describe :failed do
|
74
|
-
it "fails with single failed" do
|
75
|
-
ParallelCucumber.failed?(['40 steps (40 passed)','33 steps (3 failed, 2 skipped, 28 passed)']).should == true
|
76
|
-
end
|
77
|
-
|
78
|
-
it "fails with multiple failed tests" do
|
79
|
-
ParallelCucumber.failed?(['33 steps (3 failed, 2 skipped, 28 passed)','33 steps (3 failed, 2 skipped, 28 passed)']).should == true
|
80
|
-
end
|
81
|
-
|
82
|
-
it "fails with a single scenario failure during setup phase" do
|
83
|
-
ParallelCucumber.failed?(['1 scenarios (1 failed)']).should == true
|
84
|
-
end
|
85
|
-
|
86
|
-
it "fails with scenario failures during setup phase when other steps pass" do
|
87
|
-
ParallelCucumber.failed?(['7 scenarios (3 failed, 4 passed)','40 steps (40 passed)']).should == true
|
88
|
-
end
|
89
|
-
|
90
|
-
it "does not fail with successful tests" do
|
91
|
-
ParallelCucumber.failed?(['4 scenarios (4 passed)','40 steps (40 passed)','4 scenarios (4 passed)','40 steps (40 passed)']).should == false
|
92
|
-
end
|
93
|
-
|
94
|
-
it "does not fail with 0 failures" do
|
95
|
-
ParallelCucumber.failed?(['4 scenarios (4 passed 0 failed)','40 steps (40 passed 0 failed)','4 scenarios (4 passed 0 failed)','40 steps (40 passed)']).should == false
|
96
|
-
end
|
97
|
-
|
98
|
-
it "does fail with 10 failures" do
|
99
|
-
ParallelCucumber.failed?(['40 steps (40 passed 10 failed)','40 steps (40 passed)']).should == true
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
72
|
+
end
|
data/spec/parallel_specs_spec.rb
CHANGED
@@ -111,7 +111,7 @@ describe ParallelSpecs do
|
|
111
111
|
io = open('spec/spec_helper.rb')
|
112
112
|
ParallelSpecs.stub!(:print)
|
113
113
|
ParallelSpecs.should_receive(:open).and_return io
|
114
|
-
ParallelSpecs.run_tests(['xxx'],1,'').should =~ /\$LOAD_PATH << File/
|
114
|
+
ParallelSpecs.run_tests(['xxx'],1,'')[:stdout].should =~ /\$LOAD_PATH << File/
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
@@ -146,23 +146,4 @@ EOF
|
|
146
146
|
ParallelSpecs.find_results(output).should == ['0 examples, 0 failures, 0 pending','1 examples, 1 failures, 1 pending']
|
147
147
|
end
|
148
148
|
end
|
149
|
-
|
150
|
-
describe :failed do
|
151
|
-
it "fails with single failed specs" do
|
152
|
-
ParallelSpecs.failed?(['0 examples, 0 failures, 0 pending','1 examples, 1 failure, 1 pending']).should == true
|
153
|
-
end
|
154
|
-
|
155
|
-
it "fails with multiple failed specs" do
|
156
|
-
ParallelSpecs.failed?(['0 examples, 1 failure, 0 pending','1 examples, 111 failures, 1 pending']).should == true
|
157
|
-
end
|
158
|
-
|
159
|
-
it "does not fail with successful specs" do
|
160
|
-
ParallelSpecs.failed?(['0 examples, 0 failures, 0 pending','1 examples, 0 failures, 1 pending']).should == false
|
161
|
-
end
|
162
|
-
|
163
|
-
it "does fail with 10 failures" do
|
164
|
-
ParallelSpecs.failed?(['0 examples, 10 failures, 0 pending','1 examples, 0 failures, 1 pending']).should == true
|
165
|
-
end
|
166
|
-
|
167
|
-
end
|
168
|
-
end
|
149
|
+
end
|
data/spec/parallel_tests_spec.rb
CHANGED
@@ -45,7 +45,7 @@ describe ParallelTests do
|
|
45
45
|
io = open('spec/spec_helper.rb')
|
46
46
|
ParallelTests.stub!(:print)
|
47
47
|
ParallelTests.should_receive(:open).and_return io
|
48
|
-
ParallelTests.run_tests(['xxx'],1,'').should =~ /\$LOAD_PATH << File/
|
48
|
+
ParallelTests.run_tests(['xxx'],1,'')[:stdout].should =~ /\$LOAD_PATH << File/
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -103,40 +103,6 @@ EOF
|
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
|
-
describe :failed do
|
107
|
-
it "fails with single failed" do
|
108
|
-
ParallelTests.failed?(['10 tests, 20 assertions, 0 failures, 0 errors','10 tests, 20 assertions, 1 failure, 0 errors']).should == true
|
109
|
-
end
|
110
|
-
|
111
|
-
it "fails with single error" do
|
112
|
-
ParallelTests.failed?(['10 tests, 20 assertions, 0 failures, 1 errors','10 tests, 20 assertions, 0 failures, 0 errors']).should == true
|
113
|
-
end
|
114
|
-
|
115
|
-
it "fails with failed and error" do
|
116
|
-
ParallelTests.failed?(['10 tests, 20 assertions, 0 failures, 1 errors','10 tests, 20 assertions, 1 failures, 1 errors']).should == true
|
117
|
-
end
|
118
|
-
|
119
|
-
it "fails with multiple failed tests" do
|
120
|
-
ParallelTests.failed?(['10 tests, 20 assertions, 2 failures, 0 errors','10 tests, 1 assertion, 1 failures, 0 errors']).should == true
|
121
|
-
end
|
122
|
-
|
123
|
-
it "does not fail with successful tests" do
|
124
|
-
ParallelTests.failed?(['10 tests, 20 assertions, 0 failures, 0 errors','10 tests, 20 assertions, 0 failures, 0 errors']).should == false
|
125
|
-
end
|
126
|
-
|
127
|
-
it "does fail with 10 failures" do
|
128
|
-
ParallelTests.failed?(['10 tests, 20 assertions, 10 failures, 0 errors','10 tests, 20 assertions, 0 failures, 0 errors']).should == true
|
129
|
-
end
|
130
|
-
|
131
|
-
it "is not failed with empty results" do
|
132
|
-
ParallelTests.failed?(['0 tests, 0 assertions, 0 failures, 0 errors']).should == false
|
133
|
-
end
|
134
|
-
|
135
|
-
it "is failed when there are no results" do
|
136
|
-
ParallelTests.failed?([]).should == true
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
106
|
describe :bundler_enabled? do
|
141
107
|
before do
|
142
108
|
Object.stub!(:const_defined?).with(:Bundler).and_return false
|
@@ -173,4 +139,4 @@ EOF
|
|
173
139
|
it "has a version" do
|
174
140
|
ParallelTests::VERSION.should =~ /^\d+\.\d+\.\d+$/
|
175
141
|
end
|
176
|
-
end
|
142
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parallel_tests
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 11
|
10
|
+
version: 0.4.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Grosser
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-02-04 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|