test-queue 0.5.0 → 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 +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
|
[](https://rubygems.org/gems/test-queue)
|
4
|
-
[](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
|