test-queue 0.7.0 → 0.8.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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +42 -42
  3. data/exe/cucumber-queue +2 -1
  4. data/exe/minitest-queue +3 -2
  5. data/exe/rspec-queue +2 -1
  6. data/exe/testunit-queue +2 -1
  7. data/lib/test-queue.rb +2 -0
  8. data/lib/test_queue/iterator.rb +22 -14
  9. data/lib/test_queue/runner/cucumber.rb +3 -0
  10. data/lib/test_queue/runner/{sample.rb → example.rb} +30 -9
  11. data/lib/test_queue/runner/minitest.rb +5 -3
  12. data/lib/test_queue/runner/minitest4.rb +12 -7
  13. data/lib/test_queue/runner/minitest5.rb +37 -22
  14. data/lib/test_queue/runner/puppet_lint.rb +6 -4
  15. data/lib/test_queue/runner/rspec.rb +14 -3
  16. data/lib/test_queue/runner/rspec2.rb +24 -24
  17. data/lib/test_queue/runner/rspec3.rb +11 -11
  18. data/lib/test_queue/runner/testunit.rb +6 -3
  19. data/lib/test_queue/runner.rb +87 -97
  20. data/lib/test_queue/stats.rb +17 -13
  21. data/lib/test_queue/test_framework.rb +2 -0
  22. data/lib/test_queue/version.rb +5 -0
  23. data/lib/test_queue.rb +1 -5
  24. metadata +7 -44
  25. data/.github/workflows/test.yml +0 -94
  26. data/.gitignore +0 -7
  27. data/Appraisals +0 -43
  28. data/Gemfile +0 -7
  29. data/Rakefile +0 -14
  30. data/gemfiles/cucumber1_3.gemfile +0 -9
  31. data/gemfiles/cucumber2_4.gemfile +0 -9
  32. data/gemfiles/minitest4.gemfile +0 -7
  33. data/gemfiles/minitest5.gemfile +0 -7
  34. data/gemfiles/rspec2.gemfile +0 -8
  35. data/gemfiles/rspec3.gemfile +0 -7
  36. data/gemfiles/rspec4.gemfile +0 -11
  37. data/gemfiles/testunit.gemfile +0 -7
  38. data/script/bootstrap +0 -13
  39. data/spec/stats_spec.rb +0 -79
  40. data/test/cucumber.bats +0 -57
  41. data/test/minitest4.bats +0 -34
  42. data/test/minitest5.bats +0 -194
  43. data/test/rspec2.bats +0 -46
  44. data/test/rspec3.bats +0 -56
  45. data/test/rspec4.bats +0 -56
  46. data/test/samples/features/bad.feature +0 -5
  47. data/test/samples/features/sample.feature +0 -25
  48. data/test/samples/features/sample2.feature +0 -29
  49. data/test/samples/features/step_definitions/common.rb +0 -19
  50. data/test/samples/sample_minispec.rb +0 -37
  51. data/test/samples/sample_minitest4.rb +0 -25
  52. data/test/samples/sample_minitest5.rb +0 -33
  53. data/test/samples/sample_rspec_helper.rb +0 -1
  54. data/test/samples/sample_shared_examples_for_spec.rb +0 -3
  55. data/test/samples/sample_spec.rb +0 -25
  56. data/test/samples/sample_split_spec.rb +0 -17
  57. data/test/samples/sample_testunit.rb +0 -25
  58. data/test/samples/sample_use_shared_example1_spec.rb +0 -7
  59. data/test/samples/sample_use_shared_example2_spec.rb +0 -7
  60. data/test/sleepy_runner.rb +0 -16
  61. data/test/testlib.bash +0 -89
  62. data/test/testunit.bats +0 -20
  63. data/test-queue.gemspec +0 -21
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TestQueue
2
4
  class Stats
3
5
  class Suite
@@ -19,17 +21,17 @@ module TestQueue
19
21
  duration == other.duration &&
20
22
  last_seen_at == other.last_seen_at
21
23
  end
22
- alias_method :eql?, :==
24
+ alias eql? ==
23
25
 
24
26
  def to_h
25
- { :name => name, :path => path, :duration => duration, :last_seen_at => last_seen_at.to_i }
27
+ { name: name, path: path, duration: duration, last_seen_at: last_seen_at.to_i }
26
28
  end
27
29
 
28
30
  def self.from_hash(hash)
29
- self.new(hash.fetch(:name),
30
- hash.fetch(:path),
31
- hash.fetch(:duration),
32
- Time.at(hash.fetch(:last_seen_at)))
31
+ new(hash.fetch(:name),
32
+ hash.fetch(:path),
33
+ hash.fetch(:duration),
34
+ Time.at(hash.fetch(:last_seen_at)))
33
35
  end
34
36
  end
35
37
 
@@ -56,7 +58,7 @@ module TestQueue
56
58
  def save
57
59
  prune
58
60
 
59
- File.open(@path, "wb") do |f|
61
+ File.open(@path, 'wb') do |f|
60
62
  Marshal.dump(to_h, f)
61
63
  end
62
64
  end
@@ -68,15 +70,17 @@ module TestQueue
68
70
  def to_h
69
71
  suites = @suites.each_value.map(&:to_h)
70
72
 
71
- { :version => CURRENT_VERSION, :suites => suites }
73
+ { version: CURRENT_VERSION, suites: suites }
72
74
  end
73
75
 
74
76
  def load
75
77
  data = begin
76
- File.open(@path, "rb") { |f| Marshal.load(f) }
77
- rescue Errno::ENOENT, EOFError, TypeError, ArgumentError
78
- end
79
- return unless data && data.is_a?(Hash) && data[:version] == CURRENT_VERSION
78
+ File.open(@path, 'rb') { |f| Marshal.load(f) }
79
+ rescue Errno::ENOENT, EOFError, TypeError, ArgumentError
80
+ # noop
81
+ end
82
+ return unless data.is_a?(Hash) && data[:version] == CURRENT_VERSION
83
+
80
84
  data[:suites].each do |suite_hash|
81
85
  suite = Suite.from_hash(suite_hash)
82
86
  @suites[suite.name] = suite
@@ -87,7 +91,7 @@ module TestQueue
87
91
 
88
92
  def prune
89
93
  earliest = Time.now - EIGHT_DAYS_S
90
- @suites.delete_if do |name, suite|
94
+ @suites.delete_if do |_name, suite|
91
95
  suite.last_seen_at < earliest
92
96
  end
93
97
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TestQueue
2
4
  # This class provides an abstraction over the various test frameworks we
3
5
  # support. The framework-specific subclasses are defined in the various
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TestQueue
4
+ VERSION = '0.8.0'
5
+ end
data/lib/test_queue.rb CHANGED
@@ -1,8 +1,4 @@
1
- if !IO.respond_to?(:binread)
2
- class << IO
3
- alias :binread :read
4
- end
5
- end
1
+ # frozen_string_literal: true
6
2
 
7
3
  require_relative 'test_queue/iterator'
8
4
  require_relative 'test_queue/runner'
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.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aman Gupta
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-26 00:00:00.000000000 Z
11
+ date: 2023-05-07 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,30 +20,18 @@ executables:
20
20
  extensions: []
21
21
  extra_rdoc_files: []
22
22
  files:
23
- - ".github/workflows/test.yml"
24
- - ".gitignore"
25
- - Appraisals
26
- - Gemfile
27
23
  - LICENSE
28
24
  - README.md
29
- - Rakefile
30
25
  - exe/cucumber-queue
31
26
  - exe/minitest-queue
32
27
  - exe/rspec-queue
33
28
  - 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/rspec4.gemfile
41
- - gemfiles/testunit.gemfile
42
29
  - lib/test-queue.rb
43
30
  - lib/test_queue.rb
44
31
  - lib/test_queue/iterator.rb
45
32
  - lib/test_queue/runner.rb
46
33
  - lib/test_queue/runner/cucumber.rb
34
+ - lib/test_queue/runner/example.rb
47
35
  - lib/test_queue/runner/minitest.rb
48
36
  - lib/test_queue/runner/minitest4.rb
49
37
  - lib/test_queue/runner/minitest5.rb
@@ -51,40 +39,15 @@ files:
51
39
  - lib/test_queue/runner/rspec.rb
52
40
  - lib/test_queue/runner/rspec2.rb
53
41
  - lib/test_queue/runner/rspec3.rb
54
- - lib/test_queue/runner/sample.rb
55
42
  - lib/test_queue/runner/testunit.rb
56
43
  - lib/test_queue/stats.rb
57
44
  - lib/test_queue/test_framework.rb
58
- - script/bootstrap
59
- - spec/stats_spec.rb
60
- - test-queue.gemspec
61
- - test/cucumber.bats
62
- - test/minitest4.bats
63
- - test/minitest5.bats
64
- - test/rspec2.bats
65
- - test/rspec3.bats
66
- - test/rspec4.bats
67
- - test/samples/features/bad.feature
68
- - test/samples/features/sample.feature
69
- - test/samples/features/sample2.feature
70
- - test/samples/features/step_definitions/common.rb
71
- - test/samples/sample_minispec.rb
72
- - test/samples/sample_minitest4.rb
73
- - test/samples/sample_minitest5.rb
74
- - test/samples/sample_rspec_helper.rb
75
- - test/samples/sample_shared_examples_for_spec.rb
76
- - test/samples/sample_spec.rb
77
- - test/samples/sample_split_spec.rb
78
- - test/samples/sample_testunit.rb
79
- - test/samples/sample_use_shared_example1_spec.rb
80
- - test/samples/sample_use_shared_example2_spec.rb
81
- - test/sleepy_runner.rb
82
- - test/testlib.bash
83
- - test/testunit.bats
45
+ - lib/test_queue/version.rb
84
46
  homepage: https://github.com/tmm1/test-queue
85
47
  licenses:
86
48
  - MIT
87
- metadata: {}
49
+ metadata:
50
+ rubygems_mfa_required: 'true'
88
51
  post_install_message:
89
52
  rdoc_options: []
90
53
  require_paths:
@@ -100,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
63
  - !ruby/object:Gem::Version
101
64
  version: '0'
102
65
  requirements: []
103
- rubygems_version: 3.3.26
66
+ rubygems_version: 3.4.10
104
67
  signing_key:
105
68
  specification_version: 4
106
69
  summary: parallel test runner
@@ -1,94 +0,0 @@
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: rspec4, bats: test/rspec4.bats }
30
- - { name: testunit, bats: test/testunit.bats }
31
-
32
- steps:
33
- - name: checkout
34
- uses: actions/checkout@v3
35
- - name: set up Ruby
36
- uses: ruby/setup-ruby@v1
37
- with:
38
- ruby-version: ${{ matrix.ruby }}
39
-
40
- - name: install dependencies
41
- run: bundle install --jobs 3 --retry 3
42
- - name: setup for Bats
43
- run: bundle exec rake setup
44
- - name: spec
45
- run: bundle exec rake spec
46
- - name: install dependencies for ${{ matrix.entry.name }}
47
- run: BUNDLE_GEMFILE=gemfiles/${{ matrix.entry.name }}.gemfile bundle install --jobs 3 --retry 3
48
- - name: test
49
- run: BUNDLE_GEMFILE=gemfiles/${{ matrix.entry.name }}.gemfile vendor/bats/bin/bats ${{ matrix.entry.bats }}
50
-
51
- # RSpec 2 doesn't work with Ruby 3.2:
52
- #
53
- # /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:
54
- # in `block in find_first_parent_containing': undefined method `exists?' for File:Class (NoMethodError)
55
- #
56
- # ascend_until {|path| File.exists?(File.join(path, dir))}
57
- # ^^^^^^^^
58
- # Did you mean? exist?
59
- #
60
- # Up to Ruby 3.1 is the supported version for RSpec 2.
61
- rspec2:
62
- name: >-
63
- ${{ matrix.ruby }} ${{ matrix.entry.name }}
64
- runs-on: ${{ matrix.os }}-latest
65
- env:
66
- TEST_QUEUE_WORKERS: 2
67
- TEST_QUEUE_VERBOSE: 1
68
- strategy:
69
- fail-fast: false
70
- matrix:
71
- os: [ubuntu]
72
- # Lowest and Latest version.
73
- ruby: ['2.7', '3.1']
74
- entry:
75
- - { name: rspec2, bats: test/rspec2.bats }
76
-
77
- steps:
78
- - name: checkout
79
- uses: actions/checkout@v3
80
- - name: set up Ruby
81
- uses: ruby/setup-ruby@v1
82
- with:
83
- ruby-version: ${{ matrix.ruby }}
84
-
85
- - name: install dependencies
86
- run: bundle install --jobs 3 --retry 3
87
- - name: setup for Bats
88
- run: bundle exec rake setup
89
- - name: spec
90
- run: bundle exec rake spec
91
- - name: install dependencies for ${{ matrix.entry.name }}
92
- run: BUNDLE_GEMFILE=gemfiles/${{ matrix.entry.name }}.gemfile bundle install --jobs 3 --retry 3
93
- - name: test
94
- run: BUNDLE_GEMFILE=gemfiles/${{ matrix.entry.name }}.gemfile vendor/bats/bin/bats ${{ matrix.entry.bats }}
data/.gitignore DELETED
@@ -1,7 +0,0 @@
1
- .test_queue_stats
2
- .ruby-version
3
- Gemfile.lock
4
- gemfiles/.bundle/
5
- *.gemfile.lock
6
- pkg
7
- vendor
data/Appraisals DELETED
@@ -1,43 +0,0 @@
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 "rspec4" do
34
- gem 'rspec', github: 'rspec/rspec-metagem', branch: '4-0-dev'
35
- gem 'rspec-core', github: 'rspec/rspec-core', branch: '4-0-dev'
36
- gem 'rspec-expectations', github: 'rspec/rspec-expectations', branch: '4-0-dev'
37
- gem 'rspec-mocks', github: 'rspec/rspec-mocks', branch: '4-0-dev'
38
- gem 'rspec-support', github: 'rspec/rspec-support', branch: '4-0-dev'
39
- end
40
-
41
- appraise "testunit" do
42
- gem 'test-unit'
43
- end
data/Gemfile DELETED
@@ -1,7 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
4
-
5
- gem 'appraisal'
6
- gem 'rake'
7
- gem 'rspec', '>= 2.13', '< 4.0'
data/Rakefile DELETED
@@ -1,14 +0,0 @@
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
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rake", "< 11.0"
6
- gem "rspec", ">= 2.13", "< 4.0"
7
- gem "cucumber", "~> 1.3.10"
8
-
9
- gemspec path: "../"
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rake", "< 11.0"
6
- gem "rspec", ">= 2.13", "< 4.0"
7
- gem "cucumber", "~> 2.4.0"
8
-
9
- gemspec path: "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "minitest", "~> 4.7"
6
-
7
- gemspec path: "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "minitest", "5.10.0"
6
-
7
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rake", "< 11.0"
6
- gem "rspec", "~> 2.99"
7
-
8
- gemspec path: "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rspec", "~> 3.12"
6
-
7
- gemspec path: "../"
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem 'rspec', github: 'rspec/rspec-metagem', branch: '4-0-dev'
6
- gem 'rspec-core', github: 'rspec/rspec-core', branch: '4-0-dev'
7
- gem 'rspec-expectations', github: 'rspec/rspec-expectations', branch: '4-0-dev'
8
- gem 'rspec-mocks', github: 'rspec/rspec-mocks', branch: '4-0-dev'
9
- gem 'rspec-support', github: 'rspec/rspec-support', branch: '4-0-dev'
10
-
11
- gemspec path: "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "test-unit"
6
-
7
- gemspec path: "../"
data/script/bootstrap DELETED
@@ -1,13 +0,0 @@
1
- #!/bin/sh
2
-
3
- set -ex
4
-
5
- cd "$(dirname "$0")/.."
6
- ROOT=$(pwd)
7
-
8
- rm -rf tmp
9
- mkdir tmp
10
- mkdir -p vendor/bats
11
- curl --silent --location --show-error https://github.com/sstephenson/bats/archive/v0.4.0.tar.gz | tar -xz -C tmp
12
- tmp/bats-0.4.0/install.sh "$ROOT/vendor/bats"
13
- rm -rf tmp
data/spec/stats_spec.rb DELETED
@@ -1,79 +0,0 @@
1
- require "fileutils"
2
- require "tempfile"
3
-
4
- $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
5
-
6
- require "test_queue/stats"
7
-
8
- RSpec.describe TestQueue::Stats do
9
- before do
10
- Tempfile.open("test_queue_stats") do |f|
11
- @path = f.path
12
- f.close!
13
- end
14
- end
15
-
16
- after do
17
- FileUtils.rm_f(@path)
18
- end
19
-
20
- describe "#initialize" do
21
- it "ignores empty stats files" do
22
- File.write(@path, "")
23
- stats = TestQueue::Stats.new(@path)
24
- expect(stats.all_suites).to be_empty
25
- end
26
-
27
- it "ignores invalid data in the stats files" do
28
- File.write(@path, "this is not marshal data")
29
- stats = TestQueue::Stats.new(@path)
30
- expect(stats.all_suites).to be_empty
31
- end
32
-
33
- it "ignores badly-typed data in the stats file" do
34
- File.write(@path, Marshal.dump(["heyyy"]))
35
- stats = TestQueue::Stats.new(@path)
36
- expect(stats.all_suites).to be_empty
37
- end
38
-
39
- it "ignores stats files with a wrong version number" do
40
- File.write(@path, Marshal.dump({ :version => 1e8, :suites => "boom" }))
41
- stats = TestQueue::Stats.new(@path)
42
- expect(stats.all_suites).to be_empty
43
- end
44
- end
45
-
46
- it "can save and load data" do
47
- stats = TestQueue::Stats.new(@path)
48
- time = truncated_now
49
- suites = [
50
- TestQueue::Stats::Suite.new("Suite1", "foo.rb", 0.3, time),
51
- TestQueue::Stats::Suite.new("Suite2", "bar.rb", 0.5, time + 5),
52
- ]
53
- stats.record_suites(suites)
54
- stats.save
55
-
56
- stats = TestQueue::Stats.new(@path)
57
- expect(stats.all_suites.sort_by(&:name)).to eq(suites)
58
- end
59
-
60
- it "prunes suites not seen in the last 8 days" do
61
- stats = TestQueue::Stats.new(@path)
62
- time = truncated_now
63
- suites = [
64
- TestQueue::Stats::Suite.new("Suite1", "foo.rb", 0.3, time),
65
- TestQueue::Stats::Suite.new("Suite2", "bar.rb", 0.5, time - (8 * 24 * 60 * 60) - 2),
66
- TestQueue::Stats::Suite.new("Suite3", "baz.rb", 0.6, time - (7 * 24 * 60 * 60)),
67
- ]
68
- stats.record_suites(suites)
69
- stats.save
70
-
71
- stats = TestQueue::Stats.new(@path)
72
- expect(stats.all_suites.map(&:name).sort).to eq(%w[Suite1 Suite3])
73
- end
74
-
75
- # Returns Time.now rounded down to the nearest second.
76
- def truncated_now
77
- Time.at(Time.now.to_i)
78
- end
79
- end
data/test/cucumber.bats DELETED
@@ -1,57 +0,0 @@
1
- load "testlib"
2
-
3
- SCRATCH=tmp/cucumber-tests
4
-
5
- setup() {
6
- require_gem "cucumber" ">= 1.0"
7
- rm -rf $SCRATCH
8
- mkdir -p $SCRATCH
9
- }
10
-
11
- teardown() {
12
- rm -rf $SCRATCH
13
- }
14
-
15
- @test "cucumber-queue succeeds when all features pass" {
16
- run bundle exec cucumber-queue test/samples/features --require test/samples/features/step_definitions
17
- assert_status 0
18
- assert_output_contains "Starting test-queue master"
19
- }
20
-
21
- @test "cucumber-queue fails when a feature fails" {
22
- export FAIL=1
23
- run bundle exec cucumber-queue test/samples/features --require test/samples/features/step_definitions
24
- assert_status 2
25
- assert_output_contains "Starting test-queue master"
26
- assert_output_contains "cucumber test/samples/features/bad.feature:2 # Scenario: failure"
27
- assert_output_contains "cucumber test/samples/features/sample2.feature:26 # Scenario: failure"
28
- }
29
-
30
- @test "cucumber-queue fails when given a missing feature" {
31
- run bundle exec cucumber-queue test/samples/does_not_exist.feature --require test/samples/features/step_definitions
32
- assert_status 1
33
- assert_output_contains "Aborting: Discovering suites failed."
34
- }
35
-
36
- @test "cucumber-queue fails when given a malformed feature" {
37
- [ -f README.md ]
38
- run bundle exec cucumber-queue README.md --require test/samples/features/step_definitions
39
-
40
- # Cucumber 1 and 2 fail in different ways.
41
- refute_status 0
42
- assert_output_matches 'Aborting: Discovering suites failed\.|README\.md: Parser errors:'
43
- }
44
-
45
- @test "cucumber-queue handles test file being deleted" {
46
- cp test/samples/features/*.feature $SCRATCH
47
-
48
- run bundle exec cucumber-queue $SCRATCH --require test/samples/features/step_definitions
49
- assert_status 0
50
- assert_output_matches "Feature: Foobar$"
51
-
52
- rm $SCRATCH/sample.feature
53
-
54
- run bundle exec cucumber-queue $SCRATCH --require test/samples/features/step_definitions
55
- assert_status 0
56
- refute_output_matches "Feature: Foobar$"
57
- }
data/test/minitest4.bats DELETED
@@ -1,34 +0,0 @@
1
- load "testlib"
2
-
3
- setup() {
4
- require_gem "minitest" "~> 4.0"
5
- }
6
-
7
- @test "minitest-queue succeeds when all tests pass" {
8
- run bundle exec minitest-queue ./test/samples/*_minitest4.rb
9
- assert_status 0
10
- assert_output_contains "Starting test-queue master"
11
- }
12
-
13
- @test "minitest-queue fails when a test fails" {
14
- export FAIL=1
15
- run bundle exec minitest-queue ./test/samples/*_minitest4.rb
16
- assert_status 1
17
- assert_output_contains "Starting test-queue master"
18
- assert_output_contains "1) Failure:"
19
- assert_output_contains "MiniTestFailure#test_fail"
20
- }
21
-
22
- @test "minitest-queue succeeds when all specs pass" {
23
- run bundle exec minitest-queue ./test/samples/*_minispec.rb
24
- assert_status 0
25
- assert_output_contains "Starting test-queue master"
26
- }
27
-
28
- @test "minitest-queue fails when a spec fails" {
29
- export FAIL=1
30
- run bundle exec minitest-queue ./test/samples/*_minispec.rb
31
- assert_status 1
32
- assert_output_contains "1) Failure:"
33
- assert_output_contains "Meme::when asked about blending possibilities#test_0002_fails"
34
- }