test-queue 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +93 -0
- data/.gitignore +5 -0
- data/Appraisals +35 -0
- data/Gemfile +4 -2
- data/README.md +13 -13
- 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 +6 -1
- data/lib/test_queue/runner/sample.rb +2 -2
- data/lib/test_queue/runner/testunit.rb +1 -1
- data/lib/test_queue/runner.rb +15 -15
- 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 +5 -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 +4 -3
- metadata +21 -32
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f689a4cffa234a32b4e3919fe2f263258cd32682925c29d59e26fdd0a8218236
|
4
|
+
data.tar.gz: 5e2f51214fa2dfcc184386fc588767f7ce15ac9738de0a3c8a730aed33995669
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f76dbac0466294ffca4a780f7c411611cba1c55006a22343bdc11d789e400b135d4457c889d591498ede4ec92dd12ce615239f3569667b061117729e2e61fbc
|
7
|
+
data.tar.gz: a9666ce78f35e7d1a4cf3f877782ef86b7909396fb12f27c6df883f483ff07907db6b3a9ced68c2f36eae55b2d3f28c9ed3699df3b4ed9a1fc9151b9147306a8
|
@@ -0,0 +1,93 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
pull_request:
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
main:
|
11
|
+
name: >-
|
12
|
+
${{ matrix.ruby }} ${{ matrix.entry.name }}
|
13
|
+
runs-on: ${{ matrix.os }}-latest
|
14
|
+
env:
|
15
|
+
TEST_QUEUE_WORKERS: 2
|
16
|
+
TEST_QUEUE_VERBOSE: 1
|
17
|
+
strategy:
|
18
|
+
fail-fast: false
|
19
|
+
matrix:
|
20
|
+
os: [ubuntu]
|
21
|
+
# Lowest and Latest version.
|
22
|
+
ruby: ['2.7', '3.2']
|
23
|
+
entry:
|
24
|
+
- { name: cucumber1_3, bats: test/cucumber.bats }
|
25
|
+
- { name: cucumber2_4, bats: test/cucumber.bats }
|
26
|
+
- { name: minitest4, bats: test/minitest4.bats }
|
27
|
+
- { name: minitest5, bats: test/minitest5.bats }
|
28
|
+
- { name: rspec3, bats: test/rspec3.bats }
|
29
|
+
- { name: testunit, bats: test/testunit.bats }
|
30
|
+
|
31
|
+
steps:
|
32
|
+
- name: checkout
|
33
|
+
uses: actions/checkout@v3
|
34
|
+
- name: set up Ruby
|
35
|
+
uses: ruby/setup-ruby@v1
|
36
|
+
with:
|
37
|
+
ruby-version: ${{ matrix.ruby }}
|
38
|
+
|
39
|
+
- name: install dependencies
|
40
|
+
run: bundle install --jobs 3 --retry 3
|
41
|
+
- name: setup for Bats
|
42
|
+
run: bundle exec rake setup
|
43
|
+
- name: spec
|
44
|
+
run: bundle exec rake spec
|
45
|
+
- name: install dependencies for ${{ matrix.entry.name }}
|
46
|
+
run: BUNDLE_GEMFILE=gemfiles/${{ matrix.entry.name }}.gemfile bundle install --jobs 3 --retry 3
|
47
|
+
- name: test
|
48
|
+
run: BUNDLE_GEMFILE=gemfiles/${{ matrix.entry.name }}.gemfile vendor/bats/bin/bats ${{ matrix.entry.bats }}
|
49
|
+
|
50
|
+
# RSpec 2 doesn't work with Ruby 3.2:
|
51
|
+
#
|
52
|
+
# /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/rspec-core-2.99.2/lib/rspec/core/ruby_project.rb:27:
|
53
|
+
# in `block in find_first_parent_containing': undefined method `exists?' for File:Class (NoMethodError)
|
54
|
+
#
|
55
|
+
# ascend_until {|path| File.exists?(File.join(path, dir))}
|
56
|
+
# ^^^^^^^^
|
57
|
+
# Did you mean? exist?
|
58
|
+
#
|
59
|
+
# Up to Ruby 3.1 is the supported version for RSpec 2.
|
60
|
+
rspec2:
|
61
|
+
name: >-
|
62
|
+
${{ matrix.ruby }} ${{ matrix.entry.name }}
|
63
|
+
runs-on: ${{ matrix.os }}-latest
|
64
|
+
env:
|
65
|
+
TEST_QUEUE_WORKERS: 2
|
66
|
+
TEST_QUEUE_VERBOSE: 1
|
67
|
+
strategy:
|
68
|
+
fail-fast: false
|
69
|
+
matrix:
|
70
|
+
os: [ubuntu]
|
71
|
+
# Lowest and Latest version.
|
72
|
+
ruby: ['2.7', '3.1']
|
73
|
+
entry:
|
74
|
+
- { name: rspec2, bats: test/rspec2.bats }
|
75
|
+
|
76
|
+
steps:
|
77
|
+
- name: checkout
|
78
|
+
uses: actions/checkout@v3
|
79
|
+
- name: set up Ruby
|
80
|
+
uses: ruby/setup-ruby@v1
|
81
|
+
with:
|
82
|
+
ruby-version: ${{ matrix.ruby }}
|
83
|
+
|
84
|
+
- name: install dependencies
|
85
|
+
run: bundle install --jobs 3 --retry 3
|
86
|
+
- name: setup for Bats
|
87
|
+
run: bundle exec rake setup
|
88
|
+
- name: spec
|
89
|
+
run: bundle exec rake spec
|
90
|
+
- name: install dependencies for ${{ matrix.entry.name }}
|
91
|
+
run: BUNDLE_GEMFILE=gemfiles/${{ matrix.entry.name }}.gemfile bundle install --jobs 3 --retry 3
|
92
|
+
- name: test
|
93
|
+
run: BUNDLE_GEMFILE=gemfiles/${{ matrix.entry.name }}.gemfile vendor/bats/bin/bats ${{ matrix.entry.bats }}
|
data/.gitignore
CHANGED
data/Appraisals
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
appraise "cucumber1-3" do
|
2
|
+
gem 'cucumber', '~> 1.3.10'
|
3
|
+
# Pin Rake version to Prevent `NoMethodError: undefined method `last_comment'`.
|
4
|
+
gem 'rake', '< 11.0'
|
5
|
+
end
|
6
|
+
|
7
|
+
appraise "cucumber2-4" do
|
8
|
+
gem 'cucumber', '~> 2.4.0'
|
9
|
+
# Pin Rake version to Prevent `NoMethodError: undefined method `last_comment'`.
|
10
|
+
gem 'rake', '< 11.0'
|
11
|
+
end
|
12
|
+
|
13
|
+
appraise "minitest4" do
|
14
|
+
gem 'rake'
|
15
|
+
gem 'minitest', '~> 4.7'
|
16
|
+
end
|
17
|
+
|
18
|
+
appraise "minitest5" do
|
19
|
+
gem 'rake'
|
20
|
+
gem 'minitest', '5.10.0'
|
21
|
+
end
|
22
|
+
|
23
|
+
appraise "rspec2" do
|
24
|
+
# Pin Rake version to Prevent `NoMethodError: undefined method `last_comment'`.
|
25
|
+
gem 'rake', '< 11.0'
|
26
|
+
gem 'rspec', '~> 2.99'
|
27
|
+
end
|
28
|
+
|
29
|
+
appraise "rspec3" do
|
30
|
+
gem 'rspec', '~> 3.12'
|
31
|
+
end
|
32
|
+
|
33
|
+
appraise "testunit" do
|
34
|
+
gem 'test-unit'
|
35
|
+
end
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
# test-queue
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/test-queue.svg)](https://rubygems.org/gems/test-queue)
|
4
|
-
[![
|
4
|
+
[![CI](https://github.com/tmm1/test-queue/actions/workflows/test.yml/badge.svg)](https://github.com/tmm1/test-queue/actions/workflows/test.yml)
|
5
5
|
|
6
6
|
Yet another parallel test runner, built using a centralized queue to ensure
|
7
7
|
optimal distribution of tests between workers.
|
@@ -10,13 +10,13 @@ Specifically optimized for CI environments: build statistics from each run
|
|
10
10
|
are stored locally and used to sort the queue at the beginning of the
|
11
11
|
next run.
|
12
12
|
|
13
|
-
|
13
|
+
## Design
|
14
14
|
|
15
15
|
test-queue uses a simple master + pre-fork worker model. The master
|
16
16
|
exposes a unix domain socket server which workers use to grab tests off
|
17
17
|
the queue.
|
18
18
|
|
19
|
-
```
|
19
|
+
```console
|
20
20
|
─┬─ 21232 minitest-queue master
|
21
21
|
├─── 21571 minitest-queue worker [3] - AuthenticationTest
|
22
22
|
├─── 21568 minitest-queue worker [2] - ApiTest
|
@@ -27,7 +27,7 @@ the queue.
|
|
27
27
|
test-queue also has a distributed mode, where additional masters can share
|
28
28
|
the workload and relay results back to a central master.
|
29
29
|
|
30
|
-
|
30
|
+
## Environment variables
|
31
31
|
|
32
32
|
- `TEST_QUEUE_WORKERS`: number of workers to use per master (default: all available cores)
|
33
33
|
- `TEST_QUEUE_VERBOSE`: show results as they are available (default: `0`)
|
@@ -40,11 +40,11 @@ the workload and relay results back to a central master.
|
|
40
40
|
- `TEST_QUEUE_REMOTE_MASTER_MESSAGE`: when using distributed builds, set this on a remote master and it will appear in that master's connection message on the central master.
|
41
41
|
- `TEST_QUEUE_SPLIT_GROUPS`: split tests up by example rather than example group. Faster for tests with short setup time such as selenium. RSpec only. Add the :no_split tag to ExampleGroups you don't want split.
|
42
42
|
|
43
|
-
|
43
|
+
## Usage
|
44
44
|
|
45
45
|
test-queue bundles `testunit-queue`, `minitest-queue` and `rspec-queue` binaries which can be used directly:
|
46
46
|
|
47
|
-
```
|
47
|
+
```console
|
48
48
|
$ minitest-queue $(find test/ -name \*_test.rb)
|
49
49
|
$ rspec-queue --format progress spec
|
50
50
|
```
|
@@ -53,7 +53,7 @@ But the underlying `TestQueue::Runner::TestUnit`, `TestQueue::Runner::MiniTest`
|
|
53
53
|
built to be subclassed by your application. I recommend checking a new
|
54
54
|
executable into your project using one of these superclasses.
|
55
55
|
|
56
|
-
```
|
56
|
+
```console
|
57
57
|
$ vim script/test-queue
|
58
58
|
$ chmod +x script/test-queue
|
59
59
|
$ git add script/test-queue
|
@@ -69,7 +69,7 @@ runner to reset any global state.
|
|
69
69
|
class MyAppTestRunner < TestQueue::Runner::MiniTest
|
70
70
|
def after_fork(num)
|
71
71
|
# use separate mysql database (we assume it exists and has the right schema already)
|
72
|
-
ActiveRecord::Base.configurations
|
72
|
+
ActiveRecord::Base.configurations.configs_for(env_name: 'test', name: 'primary').database << num.to_s
|
73
73
|
ActiveRecord::Base.establish_connection(:test)
|
74
74
|
|
75
75
|
# use separate redis database
|
@@ -97,13 +97,13 @@ end
|
|
97
97
|
MyAppTestRunner.new.execute
|
98
98
|
```
|
99
99
|
|
100
|
-
|
100
|
+
## Distributed mode
|
101
101
|
|
102
102
|
To use distributed mode, the central master must listen on a tcp port. Additional masters can be booted
|
103
|
-
in relay mode to connect to the central master. Remote masters must provide a TEST_QUEUE_RELAY_TOKEN
|
103
|
+
in relay mode to connect to the central master. Remote masters must provide a `TEST_QUEUE_RELAY_TOKEN`
|
104
104
|
to match the central master's.
|
105
105
|
|
106
|
-
```
|
106
|
+
```console
|
107
107
|
$ TEST_QUEUE_RELAY_TOKEN=123 TEST_QUEUE_SOCKET=0.0.0.0:12345 bundle exec minitest-queue ./test/sample_test.rb
|
108
108
|
$ TEST_QUEUE_RELAY_TOKEN=123 TEST_QUEUE_RELAY=0.0.0.0:12345 bundle exec minitest-queue ./test/sample_test.rb
|
109
109
|
$ TEST_QUEUE_RELAY_TOKEN=123 ./test-multi.sh
|
@@ -112,7 +112,7 @@ $ TEST_QUEUE_RELAY_TOKEN=123 ./test-multi.sh
|
|
112
112
|
See the [Parameterized Trigger Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin)
|
113
113
|
for a simple way to do this with jenkins.
|
114
114
|
|
115
|
-
|
115
|
+
## See also
|
116
116
|
|
117
117
|
* https://github.com/Shopify/rails_parallel
|
118
118
|
* https://github.com/grosser/parallel_tests
|
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
5
|
+
|
6
|
+
task :default => [:setup, :spec, :feature]
|
7
|
+
|
8
|
+
task :setup do
|
9
|
+
sh 'script/bootstrap' unless File.exist?("#{Dir.pwd}/vendor/bats/bin/bats")
|
10
|
+
end
|
11
|
+
|
12
|
+
task :feature do
|
13
|
+
sh 'TEST_QUEUE_WORKERS=2 TEST_QUEUE_VERBOSE=1 vendor/bats/bin/bats test'
|
14
|
+
end
|
data/{bin → exe}/cucumber-queue
RENAMED
data/{bin → exe}/minitest-queue
RENAMED
data/{bin → exe}/rspec-queue
RENAMED
data/{bin → exe}/testunit-queue
RENAMED
data/lib/test-queue.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
require_relative 'test_queue'
|
@@ -1,9 +1,9 @@
|
|
1
1
|
begin
|
2
2
|
require 'minitest'
|
3
|
-
|
3
|
+
require_relative '../runner/minitest5'
|
4
4
|
rescue LoadError => e
|
5
5
|
require 'minitest/unit'
|
6
|
-
|
6
|
+
require_relative '../runner/minitest4'
|
7
7
|
end
|
8
8
|
|
9
9
|
module TestQueue
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative '../runner'
|
2
2
|
|
3
3
|
module MiniTest
|
4
4
|
def self.__run reporter, options
|
@@ -56,6 +56,13 @@ module TestQueue
|
|
56
56
|
class Runner
|
57
57
|
class MiniTest < Runner
|
58
58
|
def initialize
|
59
|
+
options = Minitest.process_args ARGV
|
60
|
+
|
61
|
+
if Minitest.respond_to?(:seed)
|
62
|
+
Minitest.seed = options[:seed]
|
63
|
+
srand Minitest.seed
|
64
|
+
end
|
65
|
+
|
59
66
|
if ::MiniTest::Test.runnables.any? { |r| r.runnable_methods.any? }
|
60
67
|
fail "Do not `require` test files. Pass them via ARGV instead and they will be required as needed."
|
61
68
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative '../runner'
|
2
2
|
require 'rspec/core'
|
3
3
|
|
4
4
|
case ::RSpec::Core::Version::STRING.to_i
|
@@ -36,6 +36,11 @@ module TestQueue
|
|
36
36
|
options.parse_options if options.respond_to?(:parse_options)
|
37
37
|
options.configure(::RSpec.configuration)
|
38
38
|
|
39
|
+
if ::RSpec.configuration.instance_variable_defined?(:@files_or_directories_to_run) &&
|
40
|
+
::RSpec.configuration.instance_variable_get(:@files_or_directories_to_run).empty?
|
41
|
+
::RSpec.configuration.instance_variable_set(:@files_or_directories_to_run, [::RSpec.configuration.default_path])
|
42
|
+
end
|
43
|
+
|
39
44
|
::RSpec.configuration.files_to_run.uniq
|
40
45
|
end
|
41
46
|
|
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
|
@@ -48,12 +48,12 @@ module TestQueue
|
|
48
48
|
|
49
49
|
@procline = $0
|
50
50
|
|
51
|
-
@
|
51
|
+
@allowlist = if forced = ENV['TEST_QUEUE_FORCE']
|
52
52
|
forced.split(/\s*,\s*/)
|
53
53
|
else
|
54
54
|
[]
|
55
55
|
end
|
56
|
-
@
|
56
|
+
@allowlist.freeze
|
57
57
|
|
58
58
|
all_files = @test_framework.all_suite_files.to_set
|
59
59
|
@queue = @stats.all_suites
|
@@ -61,12 +61,12 @@ module TestQueue
|
|
61
61
|
.sort_by { |suite| -suite.duration }
|
62
62
|
.map { |suite| [suite.name, suite.path] }
|
63
63
|
|
64
|
-
if @
|
65
|
-
@queue.select! { |suite_name, path| @
|
66
|
-
@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) }
|
67
67
|
end
|
68
68
|
|
69
|
-
@awaited_suites = Set.new(@
|
69
|
+
@awaited_suites = Set.new(@allowlist)
|
70
70
|
@original_queue = Set.new(@queue).freeze
|
71
71
|
|
72
72
|
@workers = {}
|
@@ -318,9 +318,9 @@ module TestQueue
|
|
318
318
|
# distributes them to remote masters.
|
319
319
|
return if relay?
|
320
320
|
|
321
|
-
# No need to discover suites if all
|
321
|
+
# No need to discover suites if all allowlisted suites are already
|
322
322
|
# queued.
|
323
|
-
return if @
|
323
|
+
return if @allowlist.any? && @awaited_suites.empty?
|
324
324
|
|
325
325
|
@discovering_suites_pid = fork do
|
326
326
|
terminate = false
|
@@ -346,7 +346,7 @@ module TestQueue
|
|
346
346
|
def awaiting_suites?
|
347
347
|
case
|
348
348
|
when @awaited_suites.any?
|
349
|
-
# We're waiting to find all the
|
349
|
+
# We're waiting to find all the allowlisted suites so we can run them
|
350
350
|
# in the correct order.
|
351
351
|
true
|
352
352
|
when @queue.empty? && !!@discovering_suites_pid
|
@@ -359,7 +359,7 @@ module TestQueue
|
|
359
359
|
end
|
360
360
|
|
361
361
|
def enqueue_discovered_suite(suite_name, path)
|
362
|
-
if @
|
362
|
+
if @allowlist.any? && !@allowlist.include?(suite_name)
|
363
363
|
return
|
364
364
|
end
|
365
365
|
|
@@ -377,9 +377,9 @@ module TestQueue
|
|
377
377
|
@queue.unshift [suite_name, path]
|
378
378
|
|
379
379
|
if @awaited_suites.delete?(suite_name) && @awaited_suites.empty?
|
380
|
-
# We've found all the
|
381
|
-
#
|
382
|
-
@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) }
|
383
383
|
|
384
384
|
kill_suite_discovery_process("INT")
|
385
385
|
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"
|
@@ -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,6 +1,7 @@
|
|
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
|
|
@@ -10,7 +11,7 @@ spec = Gem::Specification.new do |s|
|
|
10
11
|
s.email = "ruby@tmm1.net"
|
11
12
|
s.license = 'MIT'
|
12
13
|
|
13
|
-
s.bindir = '
|
14
|
+
s.bindir = 'exe'
|
14
15
|
s.executables << 'rspec-queue'
|
15
16
|
s.executables << 'minitest-queue'
|
16
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
8
|
autorequire:
|
9
|
-
bindir:
|
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,34 +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
|
-
- 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
|
45
27
|
- LICENSE
|
46
28
|
- README.md
|
47
|
-
-
|
48
|
-
-
|
49
|
-
-
|
50
|
-
-
|
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
|
51
41
|
- lib/test-queue.rb
|
52
42
|
- lib/test_queue.rb
|
53
43
|
- lib/test_queue/iterator.rb
|
@@ -65,14 +55,13 @@ files:
|
|
65
55
|
- lib/test_queue/stats.rb
|
66
56
|
- lib/test_queue/test_framework.rb
|
67
57
|
- script/bootstrap
|
68
|
-
- script/cibuild
|
69
|
-
- script/spec
|
70
58
|
- spec/stats_spec.rb
|
71
59
|
- test-queue.gemspec
|
72
60
|
- test/cucumber.bats
|
73
61
|
- test/minitest4.bats
|
74
62
|
- test/minitest5.bats
|
75
|
-
- test/
|
63
|
+
- test/rspec2.bats
|
64
|
+
- test/rspec3.bats
|
76
65
|
- test/samples/features/bad.feature
|
77
66
|
- test/samples/features/sample.feature
|
78
67
|
- test/samples/features/sample2.feature
|
@@ -102,14 +91,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
102
91
|
requirements:
|
103
92
|
- - ">="
|
104
93
|
- !ruby/object:Gem::Version
|
105
|
-
version:
|
94
|
+
version: 2.7.0
|
106
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
96
|
requirements:
|
108
97
|
- - ">="
|
109
98
|
- !ruby/object:Gem::Version
|
110
99
|
version: '0'
|
111
100
|
requirements: []
|
112
|
-
rubygems_version: 3.
|
101
|
+
rubygems_version: 3.4.6
|
113
102
|
signing_key:
|
114
103
|
specification_version: 4
|
115
104
|
summary: parallel test runner
|
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.5.0)
|
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.5.0)
|
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
data/Gemfile-rspec2-1.lock
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
test-queue (0.5.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
diff-lcs (1.2.5)
|
10
|
-
rspec (2.13.0)
|
11
|
-
rspec-core (~> 2.13.0)
|
12
|
-
rspec-expectations (~> 2.13.0)
|
13
|
-
rspec-mocks (~> 2.13.0)
|
14
|
-
rspec-core (2.13.1)
|
15
|
-
rspec-expectations (2.13.0)
|
16
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
17
|
-
rspec-mocks (2.13.1)
|
18
|
-
|
19
|
-
PLATFORMS
|
20
|
-
ruby
|
21
|
-
|
22
|
-
DEPENDENCIES
|
23
|
-
rspec (= 2.13.0)
|
24
|
-
test-queue!
|
25
|
-
|
26
|
-
BUNDLED WITH
|
27
|
-
1.13.1
|
data/Gemfile-rspec3-0
DELETED
data/Gemfile-rspec3-0.lock
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
test-queue (0.5.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
diff-lcs (1.2.5)
|
10
|
-
rspec (3.0.0)
|
11
|
-
rspec-core (~> 3.0.0)
|
12
|
-
rspec-expectations (~> 3.0.0)
|
13
|
-
rspec-mocks (~> 3.0.0)
|
14
|
-
rspec-core (3.0.4)
|
15
|
-
rspec-support (~> 3.0.0)
|
16
|
-
rspec-expectations (3.0.4)
|
17
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
18
|
-
rspec-support (~> 3.0.0)
|
19
|
-
rspec-mocks (3.0.4)
|
20
|
-
rspec-support (~> 3.0.0)
|
21
|
-
rspec-support (3.0.4)
|
22
|
-
|
23
|
-
PLATFORMS
|
24
|
-
ruby
|
25
|
-
|
26
|
-
DEPENDENCIES
|
27
|
-
rspec (~> 3.0.0)
|
28
|
-
test-queue!
|
29
|
-
|
30
|
-
BUNDLED WITH
|
31
|
-
1.13.1
|
data/Gemfile-rspec3-1
DELETED
data/Gemfile-rspec3-1.lock
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
test-queue (0.5.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
diff-lcs (1.2.5)
|
10
|
-
rspec (3.1.0)
|
11
|
-
rspec-core (~> 3.1.0)
|
12
|
-
rspec-expectations (~> 3.1.0)
|
13
|
-
rspec-mocks (~> 3.1.0)
|
14
|
-
rspec-core (3.1.7)
|
15
|
-
rspec-support (~> 3.1.0)
|
16
|
-
rspec-expectations (3.1.2)
|
17
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
18
|
-
rspec-support (~> 3.1.0)
|
19
|
-
rspec-mocks (3.1.3)
|
20
|
-
rspec-support (~> 3.1.0)
|
21
|
-
rspec-support (3.1.2)
|
22
|
-
|
23
|
-
PLATFORMS
|
24
|
-
ruby
|
25
|
-
|
26
|
-
DEPENDENCIES
|
27
|
-
rspec (~> 3.1.0)
|
28
|
-
test-queue!
|
29
|
-
|
30
|
-
BUNDLED WITH
|
31
|
-
1.13.1
|
data/Gemfile-rspec3-2
DELETED
data/Gemfile-rspec3-2.lock
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
test-queue (0.5.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
diff-lcs (1.2.5)
|
10
|
-
rspec (3.2.0)
|
11
|
-
rspec-core (~> 3.2.0)
|
12
|
-
rspec-expectations (~> 3.2.0)
|
13
|
-
rspec-mocks (~> 3.2.0)
|
14
|
-
rspec-core (3.2.3)
|
15
|
-
rspec-support (~> 3.2.0)
|
16
|
-
rspec-expectations (3.2.1)
|
17
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
18
|
-
rspec-support (~> 3.2.0)
|
19
|
-
rspec-mocks (3.2.1)
|
20
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
21
|
-
rspec-support (~> 3.2.0)
|
22
|
-
rspec-support (3.2.2)
|
23
|
-
|
24
|
-
PLATFORMS
|
25
|
-
ruby
|
26
|
-
|
27
|
-
DEPENDENCIES
|
28
|
-
rspec (~> 3.2.0)
|
29
|
-
test-queue!
|
30
|
-
|
31
|
-
BUNDLED WITH
|
32
|
-
1.13.1
|
data/Gemfile-testunit
DELETED
data/Gemfile-testunit.lock
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
test-queue (0.5.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
power_assert (0.2.2)
|
10
|
-
test-unit (3.0.8)
|
11
|
-
power_assert
|
12
|
-
|
13
|
-
PLATFORMS
|
14
|
-
ruby
|
15
|
-
|
16
|
-
DEPENDENCIES
|
17
|
-
test-queue!
|
18
|
-
test-unit (= 3.0.8)
|
19
|
-
|
20
|
-
BUNDLED WITH
|
21
|
-
1.13.1
|
data/Gemfile.lock
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
test-queue (0.5.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
builder (3.2.2)
|
10
|
-
cucumber (1.3.10)
|
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.0.2)
|
16
|
-
diff-lcs (1.2.4)
|
17
|
-
gherkin (2.12.2)
|
18
|
-
multi_json (~> 1.3)
|
19
|
-
minitest (5.3.3)
|
20
|
-
multi_json (1.8.4)
|
21
|
-
multi_test (0.0.3)
|
22
|
-
rspec (2.13.0)
|
23
|
-
rspec-core (~> 2.13.0)
|
24
|
-
rspec-expectations (~> 2.13.0)
|
25
|
-
rspec-mocks (~> 2.13.0)
|
26
|
-
rspec-core (2.13.1)
|
27
|
-
rspec-expectations (2.13.0)
|
28
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
29
|
-
rspec-mocks (2.13.1)
|
30
|
-
|
31
|
-
PLATFORMS
|
32
|
-
ruby
|
33
|
-
|
34
|
-
DEPENDENCIES
|
35
|
-
cucumber (~> 1.3.10)
|
36
|
-
minitest (= 5.3.3)
|
37
|
-
rspec (>= 2.13, < 4.0)
|
38
|
-
test-queue!
|
39
|
-
|
40
|
-
BUNDLED WITH
|
41
|
-
1.13.1
|
data/script/cibuild
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
|
3
|
-
set -ex
|
4
|
-
|
5
|
-
if [ "$SUITE" = "ruby" ]; then
|
6
|
-
exec script/spec
|
7
|
-
fi
|
8
|
-
|
9
|
-
export TEST_QUEUE_WORKERS=2 TEST_QUEUE_VERBOSE=1
|
10
|
-
|
11
|
-
if [ -f "Gemfile-$SUITE" ]; then
|
12
|
-
export BUNDLE_GEMFILE="Gemfile-$SUITE"
|
13
|
-
else
|
14
|
-
export BUNDLE_GEMFILE=Gemfile
|
15
|
-
fi
|
16
|
-
|
17
|
-
bundle install
|
18
|
-
|
19
|
-
vendor/bats/bin/bats test
|