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.
Files changed (62) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +93 -0
  3. data/.gitignore +5 -0
  4. data/Appraisals +35 -0
  5. data/Gemfile +4 -2
  6. data/LICENSE +21 -0
  7. data/README.md +19 -19
  8. data/Rakefile +14 -0
  9. data/{bin → exe}/cucumber-queue +4 -0
  10. data/{bin → exe}/minitest-queue +4 -0
  11. data/{bin → exe}/rspec-queue +4 -0
  12. data/{bin → exe}/testunit-queue +4 -0
  13. data/gemfiles/cucumber1_3.gemfile +9 -0
  14. data/gemfiles/cucumber2_4.gemfile +9 -0
  15. data/gemfiles/minitest4.gemfile +7 -0
  16. data/gemfiles/minitest5.gemfile +7 -0
  17. data/gemfiles/rspec2.gemfile +8 -0
  18. data/gemfiles/rspec3.gemfile +7 -0
  19. data/gemfiles/testunit.gemfile +7 -0
  20. data/lib/test-queue.rb +1 -1
  21. data/lib/test_queue/runner/minitest.rb +2 -2
  22. data/lib/test_queue/runner/minitest4.rb +1 -1
  23. data/lib/test_queue/runner/minitest5.rb +8 -1
  24. data/lib/test_queue/runner/puppet_lint.rb +1 -1
  25. data/lib/test_queue/runner/rspec.rb +8 -7
  26. data/lib/test_queue/runner/rspec2.rb +6 -0
  27. data/lib/test_queue/runner/rspec3.rb +6 -0
  28. data/lib/test_queue/runner/sample.rb +2 -2
  29. data/lib/test_queue/runner/testunit.rb +1 -1
  30. data/lib/test_queue/runner.rb +33 -28
  31. data/lib/test_queue.rb +2 -2
  32. data/script/bootstrap +1 -0
  33. data/spec/stats_spec.rb +3 -0
  34. data/test/minitest4.bats +1 -1
  35. data/test/minitest5.bats +15 -5
  36. data/test/{rspec.bats → rspec2.bats} +4 -4
  37. data/test/rspec3.bats +56 -0
  38. data/test/sleepy_runner.rb +3 -1
  39. data/test-queue.gemspec +5 -5
  40. metadata +26 -37
  41. data/.travis.yml +0 -18
  42. data/Gemfile-cucumber1-3 +0 -4
  43. data/Gemfile-cucumber1-3.lock +0 -33
  44. data/Gemfile-cucumber2-4 +0 -4
  45. data/Gemfile-cucumber2-4.lock +0 -37
  46. data/Gemfile-minitest4 +0 -3
  47. data/Gemfile-minitest4.lock +0 -19
  48. data/Gemfile-minitest5 +0 -3
  49. data/Gemfile-minitest5.lock +0 -19
  50. data/Gemfile-rspec2-1 +0 -3
  51. data/Gemfile-rspec2-1.lock +0 -27
  52. data/Gemfile-rspec3-0 +0 -3
  53. data/Gemfile-rspec3-0.lock +0 -31
  54. data/Gemfile-rspec3-1 +0 -3
  55. data/Gemfile-rspec3-1.lock +0 -31
  56. data/Gemfile-rspec3-2 +0 -3
  57. data/Gemfile-rspec3-2.lock +0 -32
  58. data/Gemfile-testunit +0 -3
  59. data/Gemfile-testunit.lock +0 -21
  60. data/Gemfile.lock +0 -41
  61. data/script/cibuild +0 -19
  62. data/script/spec +0 -7
@@ -2,8 +2,8 @@ require 'set'
2
2
  require 'socket'
3
3
  require 'fileutils'
4
4
  require 'securerandom'
5
- require 'test_queue/stats'
6
- require 'test_queue/test_framework'
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
- @whitelist = if forced = ENV['TEST_QUEUE_FORCE']
51
+ @allowlist = if forced = ENV['TEST_QUEUE_FORCE']
51
52
  forced.split(/\s*,\s*/)
52
53
  else
53
54
  []
54
55
  end
55
- @whitelist.freeze
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 @whitelist.any?
64
- @queue.select! { |suite_name, path| @whitelist.include?(suite_name) }
65
- @queue.sort_by! { |suite_name, path| @whitelist.index(suite_name) }
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(@whitelist)
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
- @slave_connection_timeout =
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
- @slave_message = ENV["TEST_QUEUE_SLAVE_MESSAGE"] if ENV.has_key?("TEST_QUEUE_SLAVE_MESSAGE")
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 = @slave_message ? " #{@slave_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("SLAVE #{@concurrency} #{Socket.gethostname} #{message}")
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 whitelisted suites are already
321
+ # No need to discover suites if all allowlisted suites are already
316
322
  # queued.
317
- return if @whitelist.any? && @awaited_suites.empty?
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 whitelisted suites so we can run them
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 @whitelist.any? && !@whitelist.include?(suite_name)
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 whitelisted suites. Sort the queue to match the
375
- # whitelist.
376
- @queue.sort_by! { |suite_name, path| @whitelist.index(suite_name) }
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 slave from a different test run, respond with "WRONG RUN", and it will consider the test run done.
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 /^SLAVE (\d+) ([\w\.-]+)(?: (.+))?/
513
+ when /^REMOTE MASTER (\d+) ([\w\.-]+)(?: (.+))?/
509
514
  num = $1.to_i
510
- slave = $2
511
- slave_message = $3
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 #{slave} after #{Time.now-@start_time}s"
517
- message << " " + slave_message if slave_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 #{@slave_connection_timeout}s..."
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 > @slave_connection_timeout
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
@@ -4,5 +4,5 @@ if !IO.respond_to?(:binread)
4
4
  end
5
5
  end
6
6
 
7
- require 'test_queue/iterator'
8
- require 'test_queue/runner'
7
+ require_relative 'test_queue/iterator'
8
+ require_relative 'test_queue/runner'
data/script/bootstrap CHANGED
@@ -10,3 +10,4 @@ mkdir tmp
10
10
  mkdir -p vendor/bats
11
11
  curl --silent --location --show-error https://github.com/sstephenson/bats/archive/v0.4.0.tar.gz | tar -xz -C tmp
12
12
  tmp/bats-0.4.0/install.sh "$ROOT/vendor/bats"
13
+ rm -rf tmp
data/spec/stats_spec.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  require "fileutils"
2
2
  require "tempfile"
3
+
4
+ $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
5
+
3
6
  require "test_queue/stats"
4
7
 
5
8
  RSpec.describe TestQueue::Stats do
data/test/minitest4.bats CHANGED
@@ -1,7 +1,7 @@
1
1
  load "testlib"
2
2
 
3
3
  setup() {
4
- require_gem "minitest" ">= 4.0"
4
+ require_gem "minitest" "~> 4.0"
5
5
  }
6
6
 
7
7
  @test "minitest-queue succeeds when all tests pass" {
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" ">= 5.0"
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 whitelists certain tests" {
31
- export TEST_QUEUE_WORKERS=1 TEST_QUEUE_FORCE="MiniTestSleep21,MiniTestSleep8"
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 "MiniTestSleep21"
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="MiniTestSleep21,DoesNotExist"
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" ">= 2.0"
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 "Failure/Error: expect(:foo).to eq :bar"
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
+ }
@@ -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
- spec = Gem::Specification.new do |s|
1
+ Gem::Specification.new do |s|
2
2
  s.name = 'test-queue'
3
- s.version = '0.4.2'
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 = "http://github.com/tmm1/test-queue"
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.has_rdoc = false
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.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aman Gupta
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-17 00:00:00.000000000 Z
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
- - ".travis.yml"
25
+ - Appraisals
25
26
  - Gemfile
26
- - Gemfile-cucumber1-3
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
- - bin/cucumber-queue
47
- - bin/minitest-queue
48
- - bin/rspec-queue
49
- - bin/testunit-queue
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/rspec.bats
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: http://github.com/tmm1/test-queue
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: '0'
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
- rubyforge_project:
112
- rubygems_version: 2.4.5
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
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
3
- gem 'cucumber', '~> 1.3.10'
4
- gem 'rspec-expectations', '~> 2.14.4'
@@ -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
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
3
- gem 'cucumber', '2.4.0'
4
- gem 'rspec-expectations', '2.14.4'
@@ -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
@@ -1,3 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
3
- gem 'minitest', '4.7.3'
@@ -1,19 +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
- minitest (4.7.3)
10
-
11
- PLATFORMS
12
- ruby
13
-
14
- DEPENDENCIES
15
- minitest (= 4.7.3)
16
- test-queue!
17
-
18
- BUNDLED WITH
19
- 1.13.1
data/Gemfile-minitest5 DELETED
@@ -1,3 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
3
- gem 'minitest', '5.3.3'
@@ -1,19 +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
- minitest (5.3.3)
10
-
11
- PLATFORMS
12
- ruby
13
-
14
- DEPENDENCIES
15
- minitest (= 5.3.3)
16
- test-queue!
17
-
18
- BUNDLED WITH
19
- 1.13.1
data/Gemfile-rspec2-1 DELETED
@@ -1,3 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
3
- gem 'rspec', '2.13.0'