shoulda 3.4.0 → 4.0.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 (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -7
  3. data/.hound.yml +3 -0
  4. data/.rubocop.yml +192 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +33 -2
  7. data/Appraisals +109 -8
  8. data/CHANGELOG.md +10 -0
  9. data/CONTRIBUTING.md +6 -1
  10. data/Gemfile +13 -0
  11. data/README.md +67 -74
  12. data/Rakefile +24 -10
  13. data/gemfiles/rails_4_2.gemfile +34 -0
  14. data/gemfiles/rails_4_2.gemfile.lock +240 -0
  15. data/gemfiles/rails_5_0.gemfile +32 -0
  16. data/gemfiles/rails_5_0.gemfile.lock +232 -0
  17. data/gemfiles/rails_5_1.gemfile +33 -0
  18. data/gemfiles/rails_5_1.gemfile.lock +247 -0
  19. data/gemfiles/rails_5_2.gemfile +35 -0
  20. data/gemfiles/rails_5_2.gemfile.lock +266 -0
  21. data/gemfiles/rails_6_0.gemfile +37 -0
  22. data/gemfiles/rails_6_0.gemfile.lock +291 -0
  23. data/lib/shoulda/version.rb +1 -1
  24. data/script/install_gems_in_all_appraisals +16 -0
  25. data/script/run_all_tests +16 -0
  26. data/script/supported_ruby_versions +7 -0
  27. data/script/update_gem_in_all_appraisals +17 -0
  28. data/script/update_gems_in_all_appraisals +16 -0
  29. data/shoulda.gemspec +23 -23
  30. data/test/acceptance/integrates_with_rails_test.rb +580 -0
  31. data/test/acceptance_test_helper.rb +43 -0
  32. data/test/support/acceptance/add_shoulda_to_project.rb +73 -0
  33. data/test/support/acceptance/helpers/array_helpers.rb +13 -0
  34. data/test/support/acceptance/helpers/pluralization_helpers.rb +13 -0
  35. data/test/support/acceptance/matchers/have_output.rb +33 -0
  36. data/test/support/acceptance/matchers/indicate_that_tests_were_run.rb +109 -0
  37. data/test/support/acceptance/rails_application_with_shoulda.rb +47 -0
  38. data/test/support/current_bundle.rb +61 -0
  39. data/test/support/snowglobe.rb +5 -0
  40. data/test/test_helper.rb +23 -0
  41. metadata +61 -153
  42. data/features/rails_integration.feature +0 -87
  43. data/features/step_definitions/rails_steps.rb +0 -77
  44. data/features/support/env.rb +0 -14
  45. data/gemfiles/3.0.gemfile +0 -7
  46. data/gemfiles/3.0.gemfile.lock +0 -127
  47. data/gemfiles/3.1.gemfile +0 -9
  48. data/gemfiles/3.1.gemfile.lock +0 -149
  49. data/gemfiles/3.2.gemfile +0 -9
  50. data/gemfiles/3.2.gemfile.lock +0 -146
@@ -0,0 +1,43 @@
1
+ require_relative 'support/current_bundle'
2
+
3
+ Tests::CurrentBundle.instance.assert_appraisal!
4
+
5
+ #---
6
+
7
+ require 'test_helper'
8
+
9
+ require_relative 'support/acceptance/rails_application_with_shoulda'
10
+ require_relative 'support/acceptance/matchers/have_output'
11
+ require_relative 'support/acceptance/matchers/indicate_that_tests_were_run'
12
+
13
+ class AcceptanceTest < Minitest::Test
14
+ include AcceptanceTests::Matchers
15
+
16
+ private
17
+
18
+ def app
19
+ @app ||= AcceptanceTests::RailsApplicationWithShoulda.new
20
+ end
21
+ end
22
+
23
+ begin
24
+ require 'rails/test_unit/reporter'
25
+
26
+ # Patch Rails' reporter for Minitest so that it looks for the test
27
+ # correctly under Minitest 5.11
28
+ # See: <https://github.com/rails/rails/pull/31624>
29
+ Rails::TestUnitReporter.class_eval do
30
+ def format_rerun_snippet(result)
31
+ location, line =
32
+ if result.respond_to?(:source_location)
33
+ result.source_location
34
+ else
35
+ result.method(result.name).source_location
36
+ end
37
+
38
+ "#{executable} #{relative_path_for(location)}:#{line}"
39
+ end
40
+ end
41
+ rescue LoadError
42
+ # Okay, rails/test_unit/reporter isn't a thing, no big deal
43
+ end
@@ -0,0 +1,73 @@
1
+ module AcceptanceTests
2
+ class AddShouldaToProject
3
+ ROOT_DIRECTORY = Pathname.new('../../..').expand_path(__FILE__)
4
+
5
+ def self.call(app, options)
6
+ new(app, options).call
7
+ end
8
+
9
+ def initialize(app, options)
10
+ @app = app
11
+ @options = options
12
+ end
13
+
14
+ def call
15
+ app.add_gem 'shoulda', gem_options
16
+
17
+ unless options[:with_configuration] === false
18
+ add_configuration_block_to_test_helper
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ attr_reader :app, :options
25
+
26
+ def test_framework
27
+ options[:test_framework]
28
+ end
29
+
30
+ def libraries
31
+ options.fetch(:libraries, [])
32
+ end
33
+
34
+ def gem_options
35
+ gem_options = { path: ROOT_DIRECTORY }
36
+
37
+ if options[:manually]
38
+ gem_options[:require] = false
39
+ end
40
+
41
+ gem_options
42
+ end
43
+
44
+ def add_configuration_block_to_test_helper
45
+ content = <<-CONTENT
46
+ Shoulda::Matchers.configure do |config|
47
+ config.integrate do |with|
48
+ #{test_framework_config}
49
+ #{library_config}
50
+ end
51
+ end
52
+ CONTENT
53
+
54
+ if options[:manually]
55
+ content = "require 'shoulda'\n#{content}"
56
+ end
57
+
58
+ app.append_to_file('test/test_helper.rb', content)
59
+ end
60
+
61
+ def test_framework_config
62
+ if test_framework
63
+ "with.test_framework :#{test_framework}\n"
64
+ else
65
+ ''
66
+ end
67
+ end
68
+
69
+ def library_config
70
+ libraries.map { |library| "with.library :#{library}" }.join("\n")
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,13 @@
1
+ module AcceptanceTests
2
+ module ArrayHelpers
3
+ def to_sentence(array)
4
+ if array.size == 1
5
+ array[0]
6
+ elsif array.size == 2
7
+ array.join(' and ')
8
+ else
9
+ to_sentence(array[1..-2].join(', '), [array[-1]])
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module AcceptanceTests
2
+ module PluralizationHelpers
3
+ def pluralize(count, singular_version, plural_version = nil)
4
+ plural_version ||= singular_version + 's'
5
+
6
+ if count == 1
7
+ "#{count} #{singular_version}"
8
+ else
9
+ "#{count} #{plural_version}"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,33 @@
1
+ module AcceptanceTests
2
+ module Matchers
3
+ # rubocop:disable Naming/PredicateName
4
+ def have_output(output)
5
+ HaveOutputMatcher.new(output)
6
+ end
7
+ # rubocop:enable Naming/PredicateName
8
+
9
+ class HaveOutputMatcher
10
+ def initialize(output)
11
+ @output = output
12
+ end
13
+
14
+ def matches?(runner)
15
+ @runner = runner
16
+ runner.has_output?(output)
17
+ end
18
+
19
+ def failure_message
20
+ "Expected command to have output, but did not.\n\n" +
21
+ "Command: #{runner.formatted_command}\n\n" +
22
+ "Expected output:\n" +
23
+ output.inspect + "\n\n" +
24
+ "Actual output:\n" +
25
+ runner.output
26
+ end
27
+
28
+ protected
29
+
30
+ attr_reader :output, :runner
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,109 @@
1
+ require_relative '../helpers/array_helpers'
2
+ require_relative '../helpers/pluralization_helpers'
3
+
4
+ module AcceptanceTests
5
+ module Matchers
6
+ def indicate_that_tests_were_run(series)
7
+ IndicateThatTestsWereRunMatcher.new(series)
8
+ end
9
+
10
+ class IndicateThatTestsWereRunMatcher
11
+ include ArrayHelpers
12
+ include PluralizationHelpers
13
+
14
+ def initialize(expected_numbers)
15
+ @expected_numbers = expected_numbers
16
+ end
17
+
18
+ def matches?(runner)
19
+ @runner = runner
20
+ Set.new(expected_numbers).subset?(Set.new(actual_numbers))
21
+ end
22
+
23
+ def failure_message
24
+ "Expected output to indicate that #{some_tests_were_run}.\n" +
25
+ "#{formatted_expected_numbers}\n" +
26
+ "#{formatted_actual_numbers}\n\n" +
27
+ "Output:\n\n" +
28
+ actual_output
29
+ end
30
+
31
+ protected
32
+
33
+ attr_reader :expected_numbers, :runner
34
+
35
+ private
36
+
37
+ def some_tests_were_run
38
+ if some_tests_were_run_clauses.size > 1
39
+ "#{to_sentence(some_tests_were_run_clauses)} were run"
40
+ else
41
+ "#{some_tests_were_run_clauses} was run"
42
+ end
43
+ end
44
+
45
+ def some_tests_were_run_clauses
46
+ expected_numbers.map do |type, number|
47
+ if number == 1
48
+ "#{number} #{type.to_s.chop}"
49
+ else
50
+ "#{number} #{type}"
51
+ end
52
+ end
53
+ end
54
+
55
+ def formatted_expected_numbers
56
+ "Expected numbers: #{format_hash(expected_numbers)}"
57
+ end
58
+
59
+ def formatted_actual_numbers
60
+ report_line = find_report_line_in(actual_output)
61
+
62
+ if report_line
63
+ "Actual numbers: #{report_line.inspect}"
64
+ else
65
+ 'Actual numbers: (n/a)'
66
+ end
67
+ end
68
+
69
+ def actual_numbers
70
+ numbers = parse(
71
+ actual_output,
72
+ [:tests, :assertions, :failures, :errors, :skips],
73
+ )
74
+ numbers || {}
75
+ end
76
+
77
+ def actual_output
78
+ runner.output
79
+ end
80
+
81
+ def parse(text, pieces)
82
+ report_line = find_report_line_in(text)
83
+
84
+ if report_line
85
+ pieces.inject({}) do |hash, piece|
86
+ number = report_line.match(/(\d+) #{piece}/)[1].to_i
87
+ hash.merge(piece => number)
88
+ end
89
+ end
90
+ end
91
+
92
+ def find_report_line_in(text)
93
+ lines = text.split(/\n/)
94
+
95
+ index_of_line_with_time = lines.find_index do |line|
96
+ line =~ /\AFinished in \d\.\d+s\Z/
97
+ end
98
+
99
+ if index_of_line_with_time
100
+ lines[index_of_line_with_time + 1]
101
+ end
102
+ end
103
+
104
+ def format_hash(hash)
105
+ '{' + hash.map { |k, v| "#{k}: #{v.inspect}" }.join(', ') + '}'
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,47 @@
1
+ require_relative 'add_shoulda_to_project'
2
+ require_relative '../snowglobe'
3
+
4
+ module AcceptanceTests
5
+ class RailsApplicationWithShoulda < Snowglobe::RailsApplication
6
+ def create
7
+ super
8
+
9
+ bundle.updating do
10
+ bundle.add_gem 'minitest-reporters'
11
+ AddShouldaToProject.call(
12
+ self,
13
+ test_framework: :minitest,
14
+ libraries: [:rails],
15
+ )
16
+ end
17
+
18
+ fs.append_to_file 'test/test_helper.rb', <<-FILE
19
+ require 'minitest/autorun'
20
+ require 'minitest/reporters'
21
+
22
+ Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
23
+
24
+ begin
25
+ require "rails/test_unit/reporter"
26
+
27
+ # Patch Rails' reporter for Minitest so that it looks for the test
28
+ # correctly under Minitest 5.11
29
+ # See: <https://github.com/rails/rails/pull/31624>
30
+ Rails::TestUnitReporter.class_eval do
31
+ def format_rerun_snippet(result)
32
+ location, line = if result.respond_to?(:source_location)
33
+ result.source_location
34
+ else
35
+ result.method(result.name).source_location
36
+ end
37
+
38
+ "\#{executable} \#{relative_path_for(location)}:\#{line}"
39
+ end
40
+ end
41
+ rescue LoadError
42
+ # Okay, rails/test_unit/reporter isn't a thing, no big deal
43
+ end
44
+ FILE
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,61 @@
1
+ require 'bundler'
2
+ require 'appraisal'
3
+
4
+ module Tests
5
+ class CurrentBundle
6
+ AppraisalNotSpecified = Class.new(ArgumentError)
7
+
8
+ include Singleton
9
+
10
+ def assert_appraisal!
11
+ unless appraisal_in_use?
12
+ message = <<MSG
13
+
14
+
15
+ Please run tests starting with `appraisal <appraisal_name>`.
16
+ Possible appraisals are: #{available_appraisals}
17
+
18
+ MSG
19
+ raise AppraisalNotSpecified, message
20
+ end
21
+ end
22
+
23
+ def appraisal_in_use?
24
+ path.dirname == root.join('gemfiles')
25
+ end
26
+
27
+ def current_or_latest_appraisal
28
+ current_appraisal || latest_appraisal
29
+ end
30
+
31
+ def latest_appraisal
32
+ available_appraisals.max
33
+ end
34
+
35
+ private
36
+
37
+ def available_appraisals
38
+ appraisals = []
39
+
40
+ Appraisal::AppraisalFile.each do |appraisal|
41
+ appraisals << appraisal.name
42
+ end
43
+
44
+ appraisals
45
+ end
46
+
47
+ def current_appraisal
48
+ if appraisal_in_use?
49
+ File.basename(path, '.gemfile')
50
+ end
51
+ end
52
+
53
+ def path
54
+ Bundler.default_gemfile
55
+ end
56
+
57
+ def root
58
+ Pathname.new('../../..').expand_path(__FILE__)
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,5 @@
1
+ require 'snowglobe'
2
+
3
+ Snowglobe.configure do |config|
4
+ config.project_name = 'shoulda'
5
+ end
@@ -0,0 +1,23 @@
1
+ require 'bundler/setup'
2
+ require 'pry'
3
+ require 'pry-byebug'
4
+ require 'minitest/autorun'
5
+ require 'minitest/reporters'
6
+ require 'warnings_logger'
7
+
8
+ require_relative '../lib/shoulda'
9
+
10
+ Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
11
+
12
+ WarningsLogger::Spy.call(
13
+ project_name: 'shoulda',
14
+ project_directory: Pathname.new('../..').expand_path(__FILE__),
15
+ )
16
+
17
+ Shoulda::Matchers.configure do |config|
18
+ config.integrate do |with|
19
+ with.test_framework :minitest
20
+ end
21
+ end
22
+
23
+ $VERBOSE = true
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoulda
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 3.4.0
4
+ version: 4.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Tammer Saleh
@@ -13,207 +12,116 @@ authors:
13
12
  autorequire:
14
13
  bindir: bin
15
14
  cert_chain: []
16
- date: 2013-03-18 00:00:00.000000000 Z
15
+ date: 2020-06-13 00:00:00.000000000 Z
17
16
  dependencies:
18
17
  - !ruby/object:Gem::Dependency
19
- prerelease: false
20
18
  name: shoulda-context
21
- type: :runtime
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.0'
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: 1.0.1
30
- none: false
31
19
  requirement: !ruby/object:Gem::Requirement
32
20
  requirements:
33
- - - ~>
34
- - !ruby/object:Gem::Version
35
- version: '1.0'
36
- - - ! '>='
21
+ - - "~>"
37
22
  - !ruby/object:Gem::Version
38
- version: 1.0.1
39
- none: false
40
- - !ruby/object:Gem::Dependency
41
- prerelease: false
42
- name: shoulda-matchers
23
+ version: '2.0'
43
24
  type: :runtime
44
- version_requirements: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ~>
47
- - !ruby/object:Gem::Version
48
- version: '1.0'
49
- - - ! '>='
50
- - !ruby/object:Gem::Version
51
- version: 1.4.1
52
- none: false
53
- requirement: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - ~>
56
- - !ruby/object:Gem::Version
57
- version: '1.0'
58
- - - ! '>='
59
- - !ruby/object:Gem::Version
60
- version: 1.4.1
61
- none: false
62
- - !ruby/object:Gem::Dependency
63
- prerelease: false
64
- name: appraisal
65
- type: :development
66
- version_requirements: !ruby/object:Gem::Requirement
67
- requirements:
68
- - - ~>
69
- - !ruby/object:Gem::Version
70
- version: 0.4.0
71
- none: false
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ~>
75
- - !ruby/object:Gem::Version
76
- version: 0.4.0
77
- none: false
78
- - !ruby/object:Gem::Dependency
79
- prerelease: false
80
- name: rails
81
- type: :development
82
- version_requirements: !ruby/object:Gem::Requirement
83
- requirements:
84
- - - '='
85
- - !ruby/object:Gem::Version
86
- version: 3.0.12
87
- none: false
88
- requirement: !ruby/object:Gem::Requirement
89
- requirements:
90
- - - '='
91
- - !ruby/object:Gem::Version
92
- version: 3.0.12
93
- none: false
94
- - !ruby/object:Gem::Dependency
95
- prerelease: false
96
- name: sqlite3
97
- type: :development
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ~>
101
- - !ruby/object:Gem::Version
102
- version: 1.3.2
103
- none: false
104
- requirement: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - ~>
107
- - !ruby/object:Gem::Version
108
- version: 1.3.2
109
- none: false
110
- - !ruby/object:Gem::Dependency
111
25
  prerelease: false
112
- name: rspec-rails
113
- type: :development
114
26
  version_requirements: !ruby/object:Gem::Requirement
115
27
  requirements:
116
- - - ~>
117
- - !ruby/object:Gem::Version
118
- version: 2.7.0
119
- none: false
120
- requirement: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ~>
28
+ - - "~>"
123
29
  - !ruby/object:Gem::Version
124
- version: 2.7.0
125
- none: false
30
+ version: '2.0'
126
31
  - !ruby/object:Gem::Dependency
127
- prerelease: false
128
- name: cucumber
129
- type: :development
130
- version_requirements: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - ~>
133
- - !ruby/object:Gem::Version
134
- version: 1.1.0
135
- none: false
32
+ name: shoulda-matchers
136
33
  requirement: !ruby/object:Gem::Requirement
137
34
  requirements:
138
- - - ~>
35
+ - - "~>"
139
36
  - !ruby/object:Gem::Version
140
- version: 1.1.0
141
- none: false
142
- - !ruby/object:Gem::Dependency
37
+ version: '4.0'
38
+ type: :runtime
143
39
  prerelease: false
144
- name: aruba
145
- type: :development
146
40
  version_requirements: !ruby/object:Gem::Requirement
147
41
  requirements:
148
- - - ~>
149
- - !ruby/object:Gem::Version
150
- version: 0.4.11
151
- none: false
152
- requirement: !ruby/object:Gem::Requirement
153
- requirements:
154
- - - ~>
42
+ - - "~>"
155
43
  - !ruby/object:Gem::Version
156
- version: 0.4.11
157
- none: false
44
+ version: '4.0'
158
45
  description: Making tests easy on the fingers and eyes
159
46
  email: support@thoughtbot.com
160
47
  executables: []
161
48
  extensions: []
162
49
  extra_rdoc_files: []
163
50
  files:
164
- - .autotest
165
- - .gitignore
166
- - .travis.yml
51
+ - ".autotest"
52
+ - ".gitignore"
53
+ - ".hound.yml"
54
+ - ".rubocop.yml"
55
+ - ".ruby-version"
56
+ - ".travis.yml"
167
57
  - Appraisals
58
+ - CHANGELOG.md
168
59
  - CONTRIBUTING.md
169
60
  - Gemfile
170
61
  - MIT-LICENSE
171
62
  - README.md
172
63
  - Rakefile
173
- - features/rails_integration.feature
174
- - features/step_definitions/rails_steps.rb
175
- - features/support/env.rb
176
- - gemfiles/3.0.gemfile
177
- - gemfiles/3.0.gemfile.lock
178
- - gemfiles/3.1.gemfile
179
- - gemfiles/3.1.gemfile.lock
180
- - gemfiles/3.2.gemfile
181
- - gemfiles/3.2.gemfile.lock
64
+ - gemfiles/rails_4_2.gemfile
65
+ - gemfiles/rails_4_2.gemfile.lock
66
+ - gemfiles/rails_5_0.gemfile
67
+ - gemfiles/rails_5_0.gemfile.lock
68
+ - gemfiles/rails_5_1.gemfile
69
+ - gemfiles/rails_5_1.gemfile.lock
70
+ - gemfiles/rails_5_2.gemfile
71
+ - gemfiles/rails_5_2.gemfile.lock
72
+ - gemfiles/rails_6_0.gemfile
73
+ - gemfiles/rails_6_0.gemfile.lock
182
74
  - lib/shoulda.rb
183
75
  - lib/shoulda/version.rb
76
+ - script/install_gems_in_all_appraisals
77
+ - script/run_all_tests
78
+ - script/supported_ruby_versions
79
+ - script/update_gem_in_all_appraisals
80
+ - script/update_gems_in_all_appraisals
184
81
  - shoulda.gemspec
82
+ - test/acceptance/integrates_with_rails_test.rb
83
+ - test/acceptance_test_helper.rb
84
+ - test/support/acceptance/add_shoulda_to_project.rb
85
+ - test/support/acceptance/helpers/array_helpers.rb
86
+ - test/support/acceptance/helpers/pluralization_helpers.rb
87
+ - test/support/acceptance/matchers/have_output.rb
88
+ - test/support/acceptance/matchers/indicate_that_tests_were_run.rb
89
+ - test/support/acceptance/rails_application_with_shoulda.rb
90
+ - test/support/current_bundle.rb
91
+ - test/support/snowglobe.rb
92
+ - test/test_helper.rb
185
93
  homepage: https://github.com/thoughtbot/shoulda
186
94
  licenses:
187
95
  - MIT
96
+ metadata: {}
188
97
  post_install_message:
189
98
  rdoc_options: []
190
99
  require_paths:
191
100
  - lib
192
101
  required_ruby_version: !ruby/object:Gem::Requirement
193
102
  requirements:
194
- - - ! '>='
103
+ - - ">="
195
104
  - !ruby/object:Gem::Version
196
- segments:
197
- - 0
198
- hash: 1378977218323282975
199
105
  version: '0'
200
- none: false
201
106
  required_rubygems_version: !ruby/object:Gem::Requirement
202
107
  requirements:
203
- - - ! '>='
108
+ - - ">="
204
109
  - !ruby/object:Gem::Version
205
- segments:
206
- - 0
207
- hash: 1378977218323282975
208
110
  version: '0'
209
- none: false
210
111
  requirements: []
211
- rubyforge_project:
212
- rubygems_version: 1.8.23
112
+ rubygems_version: 3.1.2
213
113
  signing_key:
214
- specification_version: 3
114
+ specification_version: 4
215
115
  summary: Making tests easy on the fingers and eyes
216
116
  test_files:
217
- - features/rails_integration.feature
218
- - features/step_definitions/rails_steps.rb
219
- - features/support/env.rb
117
+ - test/acceptance/integrates_with_rails_test.rb
118
+ - test/acceptance_test_helper.rb
119
+ - test/support/acceptance/add_shoulda_to_project.rb
120
+ - test/support/acceptance/helpers/array_helpers.rb
121
+ - test/support/acceptance/helpers/pluralization_helpers.rb
122
+ - test/support/acceptance/matchers/have_output.rb
123
+ - test/support/acceptance/matchers/indicate_that_tests_were_run.rb
124
+ - test/support/acceptance/rails_application_with_shoulda.rb
125
+ - test/support/current_bundle.rb
126
+ - test/support/snowglobe.rb
127
+ - test/test_helper.rb