test-queue 0.4.2 → 0.6.0
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 +5 -5
- data/.github/workflows/test.yml +93 -0
- data/.gitignore +5 -0
- data/Appraisals +35 -0
- data/Gemfile +4 -2
- data/LICENSE +21 -0
- data/README.md +19 -19
- data/Rakefile +14 -0
- data/{bin → exe}/cucumber-queue +4 -0
- data/{bin → exe}/minitest-queue +4 -0
- data/{bin → exe}/rspec-queue +4 -0
- data/{bin → exe}/testunit-queue +4 -0
- data/gemfiles/cucumber1_3.gemfile +9 -0
- data/gemfiles/cucumber2_4.gemfile +9 -0
- data/gemfiles/minitest4.gemfile +7 -0
- data/gemfiles/minitest5.gemfile +7 -0
- data/gemfiles/rspec2.gemfile +8 -0
- data/gemfiles/rspec3.gemfile +7 -0
- data/gemfiles/testunit.gemfile +7 -0
- data/lib/test-queue.rb +1 -1
- data/lib/test_queue/runner/minitest.rb +2 -2
- data/lib/test_queue/runner/minitest4.rb +1 -1
- data/lib/test_queue/runner/minitest5.rb +8 -1
- data/lib/test_queue/runner/puppet_lint.rb +1 -1
- data/lib/test_queue/runner/rspec.rb +8 -7
- data/lib/test_queue/runner/rspec2.rb +6 -0
- data/lib/test_queue/runner/rspec3.rb +6 -0
- data/lib/test_queue/runner/sample.rb +2 -2
- data/lib/test_queue/runner/testunit.rb +1 -1
- data/lib/test_queue/runner.rb +33 -28
- data/lib/test_queue.rb +2 -2
- data/script/bootstrap +1 -0
- data/spec/stats_spec.rb +3 -0
- data/test/minitest4.bats +1 -1
- data/test/minitest5.bats +15 -5
- data/test/{rspec.bats → rspec2.bats} +4 -4
- data/test/rspec3.bats +56 -0
- data/test/sleepy_runner.rb +3 -1
- data/test-queue.gemspec +5 -5
- metadata +26 -37
- data/.travis.yml +0 -18
- data/Gemfile-cucumber1-3 +0 -4
- data/Gemfile-cucumber1-3.lock +0 -33
- data/Gemfile-cucumber2-4 +0 -4
- data/Gemfile-cucumber2-4.lock +0 -37
- data/Gemfile-minitest4 +0 -3
- data/Gemfile-minitest4.lock +0 -19
- data/Gemfile-minitest5 +0 -3
- data/Gemfile-minitest5.lock +0 -19
- data/Gemfile-rspec2-1 +0 -3
- data/Gemfile-rspec2-1.lock +0 -27
- data/Gemfile-rspec3-0 +0 -3
- data/Gemfile-rspec3-0.lock +0 -31
- data/Gemfile-rspec3-1 +0 -3
- data/Gemfile-rspec3-1.lock +0 -31
- data/Gemfile-rspec3-2 +0 -3
- data/Gemfile-rspec3-2.lock +0 -32
- data/Gemfile-testunit +0 -3
- data/Gemfile-testunit.lock +0 -21
- data/Gemfile.lock +0 -41
- data/script/cibuild +0 -19
- data/script/spec +0 -7
data/lib/test_queue/runner.rb
CHANGED
@@ -2,8 +2,8 @@ require 'set'
|
|
2
2
|
require 'socket'
|
3
3
|
require 'fileutils'
|
4
4
|
require 'securerandom'
|
5
|
-
|
6
|
-
|
5
|
+
require_relative 'stats'
|
6
|
+
require_relative 'test_framework'
|
7
7
|
|
8
8
|
module TestQueue
|
9
9
|
class Worker
|
@@ -37,6 +37,7 @@ module TestQueue
|
|
37
37
|
@test_framework = test_framework
|
38
38
|
@stats = Stats.new(stats_file)
|
39
39
|
|
40
|
+
@early_failure_limit = nil
|
40
41
|
if ENV['TEST_QUEUE_EARLY_FAILURE_LIMIT']
|
41
42
|
begin
|
42
43
|
@early_failure_limit = Integer(ENV['TEST_QUEUE_EARLY_FAILURE_LIMIT'])
|
@@ -47,12 +48,12 @@ module TestQueue
|
|
47
48
|
|
48
49
|
@procline = $0
|
49
50
|
|
50
|
-
@
|
51
|
+
@allowlist = if forced = ENV['TEST_QUEUE_FORCE']
|
51
52
|
forced.split(/\s*,\s*/)
|
52
53
|
else
|
53
54
|
[]
|
54
55
|
end
|
55
|
-
@
|
56
|
+
@allowlist.freeze
|
56
57
|
|
57
58
|
all_files = @test_framework.all_suite_files.to_set
|
58
59
|
@queue = @stats.all_suites
|
@@ -60,12 +61,12 @@ module TestQueue
|
|
60
61
|
.sort_by { |suite| -suite.duration }
|
61
62
|
.map { |suite| [suite.name, suite.path] }
|
62
63
|
|
63
|
-
if @
|
64
|
-
@queue.select! { |suite_name, path| @
|
65
|
-
@queue.sort_by! { |suite_name, path| @
|
64
|
+
if @allowlist.any?
|
65
|
+
@queue.select! { |suite_name, path| @allowlist.include?(suite_name) }
|
66
|
+
@queue.sort_by! { |suite_name, path| @allowlist.index(suite_name) }
|
66
67
|
end
|
67
68
|
|
68
|
-
@awaited_suites = Set.new(@
|
69
|
+
@awaited_suites = Set.new(@allowlist)
|
69
70
|
@original_queue = Set.new(@queue).freeze
|
70
71
|
|
71
72
|
@workers = {}
|
@@ -85,7 +86,7 @@ module TestQueue
|
|
85
86
|
raise ArgumentError, "Worker count (#{@concurrency}) must be greater than 0"
|
86
87
|
end
|
87
88
|
|
88
|
-
@
|
89
|
+
@relay_connection_timeout =
|
89
90
|
(ENV['TEST_QUEUE_RELAY_TIMEOUT'] && ENV['TEST_QUEUE_RELAY_TIMEOUT'].to_i) ||
|
90
91
|
30
|
91
92
|
|
@@ -100,7 +101,12 @@ module TestQueue
|
|
100
101
|
relay ||
|
101
102
|
ENV['TEST_QUEUE_RELAY']
|
102
103
|
|
103
|
-
@
|
104
|
+
@remote_master_message = if ENV.has_key?("TEST_QUEUE_REMOTE_MASTER_MESSAGE")
|
105
|
+
ENV["TEST_QUEUE_REMOTE_MASTER_MESSAGE"]
|
106
|
+
elsif ENV.has_key?("TEST_QUEUE_SLAVE_MESSAGE")
|
107
|
+
warn("`TEST_QUEUE_SLAVE_MESSAGE` is deprecated. Use `TEST_QUEUE_REMOTE_MASTER_MESSAGE` instead.")
|
108
|
+
ENV["TEST_QUEUE_SLAVE_MESSAGE"]
|
109
|
+
end
|
104
110
|
|
105
111
|
if @relay == @socket
|
106
112
|
STDERR.puts "*** Detected TEST_QUEUE_RELAY == TEST_QUEUE_SOCKET. Disabling relay mode."
|
@@ -265,10 +271,10 @@ module TestQueue
|
|
265
271
|
return unless relay?
|
266
272
|
|
267
273
|
sock = connect_to_relay
|
268
|
-
message = @
|
274
|
+
message = @remote_master_message ? " #{@remote_master_message}" : ""
|
269
275
|
message.gsub!(/(\r|\n)/, "") # Our "protocol" is newline-separated
|
270
276
|
sock.puts("TOKEN=#{@run_token}")
|
271
|
-
sock.puts("
|
277
|
+
sock.puts("REMOTE MASTER #{@concurrency} #{Socket.gethostname} #{message}")
|
272
278
|
response = sock.gets.strip
|
273
279
|
unless response == "OK"
|
274
280
|
STDERR.puts "*** Got non-OK response from master: #{response}"
|
@@ -312,9 +318,9 @@ module TestQueue
|
|
312
318
|
# distributes them to remote masters.
|
313
319
|
return if relay?
|
314
320
|
|
315
|
-
# No need to discover suites if all
|
321
|
+
# No need to discover suites if all allowlisted suites are already
|
316
322
|
# queued.
|
317
|
-
return if @
|
323
|
+
return if @allowlist.any? && @awaited_suites.empty?
|
318
324
|
|
319
325
|
@discovering_suites_pid = fork do
|
320
326
|
terminate = false
|
@@ -340,7 +346,7 @@ module TestQueue
|
|
340
346
|
def awaiting_suites?
|
341
347
|
case
|
342
348
|
when @awaited_suites.any?
|
343
|
-
# We're waiting to find all the
|
349
|
+
# We're waiting to find all the allowlisted suites so we can run them
|
344
350
|
# in the correct order.
|
345
351
|
true
|
346
352
|
when @queue.empty? && !!@discovering_suites_pid
|
@@ -353,7 +359,7 @@ module TestQueue
|
|
353
359
|
end
|
354
360
|
|
355
361
|
def enqueue_discovered_suite(suite_name, path)
|
356
|
-
if @
|
362
|
+
if @allowlist.any? && !@allowlist.include?(suite_name)
|
357
363
|
return
|
358
364
|
end
|
359
365
|
|
@@ -371,9 +377,9 @@ module TestQueue
|
|
371
377
|
@queue.unshift [suite_name, path]
|
372
378
|
|
373
379
|
if @awaited_suites.delete?(suite_name) && @awaited_suites.empty?
|
374
|
-
# We've found all the
|
375
|
-
#
|
376
|
-
@queue.sort_by! { |suite_name, path| @
|
380
|
+
# We've found all the allowlisted suites. Sort the queue to match the
|
381
|
+
# allowlist.
|
382
|
+
@queue.sort_by! { |suite_name, path| @allowlist.index(suite_name) }
|
377
383
|
|
378
384
|
kill_suite_discovery_process("INT")
|
379
385
|
end
|
@@ -485,7 +491,7 @@ module TestQueue
|
|
485
491
|
cmd = sock.gets.strip
|
486
492
|
|
487
493
|
token = token[TOKEN_REGEX, 1]
|
488
|
-
# If we have a
|
494
|
+
# If we have a remote master from a different test run, respond with "WRONG RUN", and it will consider the test run done.
|
489
495
|
if token != @run_token
|
490
496
|
message = token.nil? ? "Worker sent no token to master" : "Worker from run #{token} connected to master"
|
491
497
|
STDERR.puts "*** #{message} for run #{@run_token}; ignoring."
|
@@ -495,7 +501,6 @@ module TestQueue
|
|
495
501
|
|
496
502
|
case cmd
|
497
503
|
when /^POP (\S+) (\d+)/
|
498
|
-
# If we have a slave from a different test run, don't respond, and it will consider the test run done.
|
499
504
|
hostname = $1
|
500
505
|
pid = Integer($2)
|
501
506
|
if awaiting_suites?
|
@@ -505,16 +510,16 @@ module TestQueue
|
|
505
510
|
sock.write(data)
|
506
511
|
@assignments[obj] = [hostname, pid]
|
507
512
|
end
|
508
|
-
when /^
|
513
|
+
when /^REMOTE MASTER (\d+) ([\w\.-]+)(?: (.+))?/
|
509
514
|
num = $1.to_i
|
510
|
-
|
511
|
-
|
515
|
+
remote_master = $2
|
516
|
+
remote_master_message = $3
|
512
517
|
|
513
518
|
sock.write("OK\n")
|
514
519
|
remote_workers += num
|
515
520
|
|
516
|
-
message = "*** #{num} workers connected from #{
|
517
|
-
message << " " +
|
521
|
+
message = "*** #{num} workers connected from #{remote_master} after #{Time.now-@start_time}s"
|
522
|
+
message << " " + remote_master_message if remote_master_message
|
518
523
|
STDERR.puts message
|
519
524
|
when /^WORKER (\d+)/
|
520
525
|
data = sock.read($1.to_i)
|
@@ -546,12 +551,12 @@ module TestQueue
|
|
546
551
|
def connect_to_relay
|
547
552
|
sock = nil
|
548
553
|
start = Time.now
|
549
|
-
puts "Attempting to connect for #{@
|
554
|
+
puts "Attempting to connect for #{@relay_connection_timeout}s..."
|
550
555
|
while sock.nil?
|
551
556
|
begin
|
552
557
|
sock = TCPSocket.new(*@relay.split(':'))
|
553
558
|
rescue Errno::ECONNREFUSED => e
|
554
|
-
raise e if Time.now - start > @
|
559
|
+
raise e if Time.now - start > @relay_connection_timeout
|
555
560
|
puts "Master not yet available, sleeping..."
|
556
561
|
sleep 0.5
|
557
562
|
end
|
data/lib/test_queue.rb
CHANGED
data/script/bootstrap
CHANGED
data/spec/stats_spec.rb
CHANGED
data/test/minitest4.bats
CHANGED
data/test/minitest5.bats
CHANGED
@@ -3,7 +3,7 @@ load "testlib"
|
|
3
3
|
SCRATCH=tmp/minitest5-tests
|
4
4
|
|
5
5
|
setup() {
|
6
|
-
require_gem "minitest" "
|
6
|
+
require_gem "minitest" "~> 5.0"
|
7
7
|
rm -rf $SCRATCH
|
8
8
|
mkdir -p $SCRATCH
|
9
9
|
}
|
@@ -27,12 +27,12 @@ teardown() {
|
|
27
27
|
assert_output_contains "MiniTestFailure#test_fail"
|
28
28
|
}
|
29
29
|
|
30
|
-
@test "TEST_QUEUE_FORCE
|
31
|
-
export TEST_QUEUE_WORKERS=1 TEST_QUEUE_FORCE="
|
30
|
+
@test "TEST_QUEUE_FORCE allowlists certain tests" {
|
31
|
+
export TEST_QUEUE_WORKERS=1 TEST_QUEUE_FORCE="MiniTestSleep11,MiniTestSleep8"
|
32
32
|
run bundle exec minitest-queue ./test/samples/*_minitest5.rb
|
33
33
|
assert_status 0
|
34
34
|
assert_output_contains "Starting test-queue master"
|
35
|
-
assert_output_contains "
|
35
|
+
assert_output_contains "MiniTestSleep11"
|
36
36
|
assert_output_contains "MiniTestSleep8"
|
37
37
|
refute_output_contains "MiniTestSleep9"
|
38
38
|
}
|
@@ -68,7 +68,7 @@ assert_test_queue_force_ordering() {
|
|
68
68
|
}
|
69
69
|
|
70
70
|
@test "minitest-queue fails if TEST_QUEUE_FORCE specifies nonexistent tests" {
|
71
|
-
export TEST_QUEUE_WORKERS=1 TEST_QUEUE_FORCE="
|
71
|
+
export TEST_QUEUE_WORKERS=1 TEST_QUEUE_FORCE="MiniTestSleep11,DoesNotExist"
|
72
72
|
run bundle exec minitest-queue ./test/samples/*_minitest5.rb
|
73
73
|
assert_status 1
|
74
74
|
assert_output_contains "Failed to discover DoesNotExist specified in TEST_QUEUE_FORCE"
|
@@ -128,6 +128,16 @@ assert_test_queue_force_ordering() {
|
|
128
128
|
assert_output_contains "MiniTestFailure#test_fail"
|
129
129
|
}
|
130
130
|
|
131
|
+
@test "multi-master central master prints out remote master messages" {
|
132
|
+
export TEST_QUEUE_RELAY_TOKEN=$(date | cksum | cut -d' ' -f1)
|
133
|
+
TEST_QUEUE_RELAY=0.0.0.0:12345 TEST_QUEUE_REMOTE_MASTER_MESSAGE="hello from remote master" bundle exec minitest-queue ./test/samples/sample_minitest5.rb &
|
134
|
+
TEST_QUEUE_SOCKET=0.0.0.0:12345 run bundle exec minitest-queue ./test/samples/sample_minitest5.rb
|
135
|
+
wait
|
136
|
+
|
137
|
+
assert_status 0
|
138
|
+
assert_output_contains "hello from remote master"
|
139
|
+
}
|
140
|
+
|
131
141
|
@test "recovers from child processes dying in an unorderly way" {
|
132
142
|
export KILL=1
|
133
143
|
run bundle exec minitest-queue ./test/samples/sample_minitest5.rb
|
@@ -1,7 +1,7 @@
|
|
1
1
|
load "testlib"
|
2
2
|
|
3
3
|
setup() {
|
4
|
-
require_gem "rspec" "
|
4
|
+
require_gem "rspec" "~> 2.0"
|
5
5
|
}
|
6
6
|
|
7
7
|
@test "rspec-queue succeeds when all specs pass" {
|
@@ -15,7 +15,9 @@ setup() {
|
|
15
15
|
run bundle exec rspec-queue ./test/samples/sample_spec.rb
|
16
16
|
assert_status 1
|
17
17
|
assert_output_contains "1) RSpecFailure fails"
|
18
|
-
assert_output_contains "
|
18
|
+
assert_output_contains "RSpecFailure fails"
|
19
|
+
assert_output_contains "expected: :bar"
|
20
|
+
assert_output_contains "got: :foo"
|
19
21
|
}
|
20
22
|
|
21
23
|
@test "TEST_QUEUE_SPLIT_GROUPS splits splittable groups" {
|
@@ -41,6 +43,4 @@ setup() {
|
|
41
43
|
run bundle exec rspec-queue ./test/samples/sample_use_shared_example1_spec.rb \
|
42
44
|
./test/samples/sample_use_shared_example2_spec.rb
|
43
45
|
assert_status 0
|
44
|
-
|
45
46
|
}
|
46
|
-
|
data/test/rspec3.bats
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
load "testlib"
|
2
|
+
|
3
|
+
setup() {
|
4
|
+
require_gem "rspec" "~> 3.0"
|
5
|
+
}
|
6
|
+
|
7
|
+
@test "rspec-queue succeeds when all specs pass" {
|
8
|
+
run bundle exec rspec-queue ./test/samples/sample_spec.rb
|
9
|
+
assert_status 0
|
10
|
+
assert_output_contains "Starting test-queue master"
|
11
|
+
assert_output_contains "16 examples, 0 failures"
|
12
|
+
assert_output_contains "16 examples, 0 failures"
|
13
|
+
}
|
14
|
+
|
15
|
+
@test "rspec-queue succeeds all specs pass in the default spec directory even if directory path is omitted" {
|
16
|
+
run bundle exec rspec-queue
|
17
|
+
assert_status 0
|
18
|
+
assert_output_contains "Starting test-queue master"
|
19
|
+
assert_output_contains "6 examples, 0 failures"
|
20
|
+
assert_output_contains "0 examples, 0 failures"
|
21
|
+
}
|
22
|
+
|
23
|
+
@test "rspec-queue fails when a spec fails" {
|
24
|
+
export FAIL=1
|
25
|
+
run bundle exec rspec-queue ./test/samples/sample_spec.rb
|
26
|
+
assert_status 1
|
27
|
+
assert_output_contains "1) RSpecFailure fails"
|
28
|
+
assert_output_contains "RSpecFailure fails"
|
29
|
+
assert_output_contains "expected: :bar"
|
30
|
+
assert_output_contains "got: :foo"
|
31
|
+
}
|
32
|
+
|
33
|
+
@test "TEST_QUEUE_SPLIT_GROUPS splits splittable groups" {
|
34
|
+
export TEST_QUEUE_SPLIT_GROUPS=true
|
35
|
+
run bundle exec rspec-queue ./test/samples/sample_split_spec.rb
|
36
|
+
assert_status 0
|
37
|
+
|
38
|
+
assert_output_matches '\[ 1\] +1 example, 0 failures'
|
39
|
+
assert_output_matches '\[ 2\] +1 example, 0 failures'
|
40
|
+
}
|
41
|
+
|
42
|
+
@test "TEST_QUEUE_SPLIT_GROUPS does not split unsplittable groups" {
|
43
|
+
export TEST_QUEUE_SPLIT_GROUPS=true
|
44
|
+
export NOSPLIT=1
|
45
|
+
run bundle exec rspec-queue ./test/samples/sample_split_spec.rb
|
46
|
+
assert_status 0
|
47
|
+
|
48
|
+
assert_output_contains "2 examples, 0 failures"
|
49
|
+
assert_output_contains "0 examples, 0 failures"
|
50
|
+
}
|
51
|
+
|
52
|
+
@test "rspec-queue supports shared example groups" {
|
53
|
+
run bundle exec rspec-queue ./test/samples/sample_use_shared_example1_spec.rb \
|
54
|
+
./test/samples/sample_use_shared_example2_spec.rb
|
55
|
+
assert_status 0
|
56
|
+
}
|
data/test/sleepy_runner.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __dir__)
|
2
|
+
|
1
3
|
require 'test_queue'
|
2
4
|
require 'test_queue/runner/minitest'
|
3
5
|
|
4
6
|
class SleepyTestRunner < TestQueue::Runner::MiniTest
|
5
7
|
def after_fork(num)
|
6
|
-
if ENV['SLEEP_AS_RELAY'] && relay?
|
8
|
+
if ENV['SLEEP_AS_RELAY'] && relay?
|
7
9
|
sleep 5
|
8
10
|
elsif ENV['SLEEP_AS_MASTER'] && !relay?
|
9
11
|
sleep 5
|
data/test-queue.gemspec
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
|
1
|
+
Gem::Specification.new do |s|
|
2
2
|
s.name = 'test-queue'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.6.0'
|
4
|
+
s.required_ruby_version = '>= 2.7.0'
|
4
5
|
s.summary = 'parallel test runner'
|
5
6
|
s.description = 'minitest/rspec parallel test runner for CI environments'
|
6
7
|
|
7
|
-
s.homepage = "
|
8
|
+
s.homepage = "https://github.com/tmm1/test-queue"
|
8
9
|
|
9
10
|
s.authors = ["Aman Gupta"]
|
10
11
|
s.email = "ruby@tmm1.net"
|
11
12
|
s.license = 'MIT'
|
12
13
|
|
13
|
-
s.
|
14
|
-
s.bindir = 'bin'
|
14
|
+
s.bindir = 'exe'
|
15
15
|
s.executables << 'rspec-queue'
|
16
16
|
s.executables << 'minitest-queue'
|
17
17
|
s.executables << 'testunit-queue'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aman Gupta
|
8
|
-
autorequire:
|
9
|
-
bindir:
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: minitest/rspec parallel test runner for CI environments
|
14
14
|
email: ruby@tmm1.net
|
@@ -20,33 +20,24 @@ executables:
|
|
20
20
|
extensions: []
|
21
21
|
extra_rdoc_files: []
|
22
22
|
files:
|
23
|
+
- ".github/workflows/test.yml"
|
23
24
|
- ".gitignore"
|
24
|
-
-
|
25
|
+
- Appraisals
|
25
26
|
- Gemfile
|
26
|
-
-
|
27
|
-
- Gemfile-cucumber1-3.lock
|
28
|
-
- Gemfile-cucumber2-4
|
29
|
-
- Gemfile-cucumber2-4.lock
|
30
|
-
- Gemfile-minitest4
|
31
|
-
- Gemfile-minitest4.lock
|
32
|
-
- Gemfile-minitest5
|
33
|
-
- Gemfile-minitest5.lock
|
34
|
-
- Gemfile-rspec2-1
|
35
|
-
- Gemfile-rspec2-1.lock
|
36
|
-
- Gemfile-rspec3-0
|
37
|
-
- Gemfile-rspec3-0.lock
|
38
|
-
- Gemfile-rspec3-1
|
39
|
-
- Gemfile-rspec3-1.lock
|
40
|
-
- Gemfile-rspec3-2
|
41
|
-
- Gemfile-rspec3-2.lock
|
42
|
-
- Gemfile-testunit
|
43
|
-
- Gemfile-testunit.lock
|
44
|
-
- Gemfile.lock
|
27
|
+
- LICENSE
|
45
28
|
- README.md
|
46
|
-
-
|
47
|
-
-
|
48
|
-
-
|
49
|
-
-
|
29
|
+
- Rakefile
|
30
|
+
- exe/cucumber-queue
|
31
|
+
- exe/minitest-queue
|
32
|
+
- exe/rspec-queue
|
33
|
+
- exe/testunit-queue
|
34
|
+
- gemfiles/cucumber1_3.gemfile
|
35
|
+
- gemfiles/cucumber2_4.gemfile
|
36
|
+
- gemfiles/minitest4.gemfile
|
37
|
+
- gemfiles/minitest5.gemfile
|
38
|
+
- gemfiles/rspec2.gemfile
|
39
|
+
- gemfiles/rspec3.gemfile
|
40
|
+
- gemfiles/testunit.gemfile
|
50
41
|
- lib/test-queue.rb
|
51
42
|
- lib/test_queue.rb
|
52
43
|
- lib/test_queue/iterator.rb
|
@@ -64,14 +55,13 @@ files:
|
|
64
55
|
- lib/test_queue/stats.rb
|
65
56
|
- lib/test_queue/test_framework.rb
|
66
57
|
- script/bootstrap
|
67
|
-
- script/cibuild
|
68
|
-
- script/spec
|
69
58
|
- spec/stats_spec.rb
|
70
59
|
- test-queue.gemspec
|
71
60
|
- test/cucumber.bats
|
72
61
|
- test/minitest4.bats
|
73
62
|
- test/minitest5.bats
|
74
|
-
- test/
|
63
|
+
- test/rspec2.bats
|
64
|
+
- test/rspec3.bats
|
75
65
|
- test/samples/features/bad.feature
|
76
66
|
- test/samples/features/sample.feature
|
77
67
|
- test/samples/features/sample2.feature
|
@@ -89,11 +79,11 @@ files:
|
|
89
79
|
- test/sleepy_runner.rb
|
90
80
|
- test/testlib.bash
|
91
81
|
- test/testunit.bats
|
92
|
-
homepage:
|
82
|
+
homepage: https://github.com/tmm1/test-queue
|
93
83
|
licenses:
|
94
84
|
- MIT
|
95
85
|
metadata: {}
|
96
|
-
post_install_message:
|
86
|
+
post_install_message:
|
97
87
|
rdoc_options: []
|
98
88
|
require_paths:
|
99
89
|
- lib
|
@@ -101,16 +91,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
91
|
requirements:
|
102
92
|
- - ">="
|
103
93
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
94
|
+
version: 2.7.0
|
105
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
96
|
requirements:
|
107
97
|
- - ">="
|
108
98
|
- !ruby/object:Gem::Version
|
109
99
|
version: '0'
|
110
100
|
requirements: []
|
111
|
-
|
112
|
-
|
113
|
-
signing_key:
|
101
|
+
rubygems_version: 3.4.6
|
102
|
+
signing_key:
|
114
103
|
specification_version: 4
|
115
104
|
summary: parallel test runner
|
116
105
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
install: script/bootstrap
|
3
|
-
rvm:
|
4
|
-
- 2.2
|
5
|
-
env:
|
6
|
-
- SUITE=ruby
|
7
|
-
- SUITE=cucumber1-3
|
8
|
-
- SUITE=cucumber2-4
|
9
|
-
- SUITE=minitest4
|
10
|
-
- SUITE=minitest5
|
11
|
-
- SUITE=rspec2-1
|
12
|
-
- SUITE=rspec3-0
|
13
|
-
- SUITE=rspec3-1
|
14
|
-
- SUITE=rspec3-2
|
15
|
-
- SUITE=testunit
|
16
|
-
script: script/cibuild
|
17
|
-
notifications:
|
18
|
-
email: false
|
data/Gemfile-cucumber1-3
DELETED
data/Gemfile-cucumber1-3.lock
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
test-queue (0.4.2)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
builder (3.2.2)
|
10
|
-
cucumber (1.3.20)
|
11
|
-
builder (>= 2.1.2)
|
12
|
-
diff-lcs (>= 1.1.3)
|
13
|
-
gherkin (~> 2.12)
|
14
|
-
multi_json (>= 1.7.5, < 2.0)
|
15
|
-
multi_test (>= 0.1.2)
|
16
|
-
diff-lcs (1.2.5)
|
17
|
-
gherkin (2.12.2)
|
18
|
-
multi_json (~> 1.3)
|
19
|
-
multi_json (1.12.1)
|
20
|
-
multi_test (0.1.2)
|
21
|
-
rspec-expectations (2.14.5)
|
22
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
23
|
-
|
24
|
-
PLATFORMS
|
25
|
-
ruby
|
26
|
-
|
27
|
-
DEPENDENCIES
|
28
|
-
cucumber (~> 1.3.10)
|
29
|
-
rspec-expectations (~> 2.14.4)
|
30
|
-
test-queue!
|
31
|
-
|
32
|
-
BUNDLED WITH
|
33
|
-
1.13.1
|
data/Gemfile-cucumber2-4
DELETED
data/Gemfile-cucumber2-4.lock
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
test-queue (0.4.2)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
builder (3.2.2)
|
10
|
-
cucumber (2.4.0)
|
11
|
-
builder (>= 2.1.2)
|
12
|
-
cucumber-core (~> 1.5.0)
|
13
|
-
cucumber-wire (~> 0.0.1)
|
14
|
-
diff-lcs (>= 1.1.3)
|
15
|
-
gherkin (~> 4.0)
|
16
|
-
multi_json (>= 1.7.5, < 2.0)
|
17
|
-
multi_test (>= 0.1.2)
|
18
|
-
cucumber-core (1.5.0)
|
19
|
-
gherkin (~> 4.0)
|
20
|
-
cucumber-wire (0.0.1)
|
21
|
-
diff-lcs (1.2.5)
|
22
|
-
gherkin (4.0.0)
|
23
|
-
multi_json (1.12.1)
|
24
|
-
multi_test (0.1.2)
|
25
|
-
rspec-expectations (2.14.4)
|
26
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
27
|
-
|
28
|
-
PLATFORMS
|
29
|
-
ruby
|
30
|
-
|
31
|
-
DEPENDENCIES
|
32
|
-
cucumber (= 2.4.0)
|
33
|
-
rspec-expectations (= 2.14.4)
|
34
|
-
test-queue!
|
35
|
-
|
36
|
-
BUNDLED WITH
|
37
|
-
1.13.1
|
data/Gemfile-minitest4
DELETED
data/Gemfile-minitest4.lock
DELETED
data/Gemfile-minitest5
DELETED
data/Gemfile-minitest5.lock
DELETED
data/Gemfile-rspec2-1
DELETED