rspec 1.2.0 → 1.2.1
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.
- data/.document +4 -4
- data/{History.txt → History.rdoc} +27 -4
- data/Manifest.txt +18 -7
- data/{README.txt → README.rdoc} +0 -0
- data/Rakefile +16 -9
- data/{Ruby1.9.markdown → Ruby1.9.rdoc} +3 -3
- data/TODO.txt +0 -7
- data/Upgrade.rdoc +110 -0
- data/features/matchers/create_matcher.feature +40 -0
- data/features/matchers/create_matcher_outside_rspec.feature +39 -0
- data/features/pending/pending_examples.feature +5 -5
- data/features/step_definitions/running_rspec.rb +13 -0
- data/features/subject/explicit_subject.feature +31 -0
- data/features/subject/implicit_subject.feature +31 -0
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +1 -0
- data/lib/spec/adapters/mock_frameworks/mocha.rb +1 -0
- data/lib/spec/adapters/mock_frameworks/rr.rb +1 -0
- data/lib/spec/adapters/mock_frameworks/rspec.rb +12 -10
- data/lib/spec/dsl.rb +0 -1
- data/lib/spec/dsl/main.rb +3 -3
- data/lib/spec/example.rb +4 -3
- data/lib/spec/example/example_group_factory.rb +1 -3
- data/lib/spec/example/example_group_methods.rb +22 -28
- data/lib/spec/example/example_group_proxy.rb +64 -0
- data/lib/spec/example/example_methods.rb +8 -11
- data/lib/spec/example/example_proxy.rb +42 -0
- data/lib/spec/example/shared_example_group.rb +1 -1
- data/lib/spec/example/subject.rb +14 -3
- data/lib/spec/expectations.rb +1 -1
- data/lib/spec/expectations/differs/default.rb +46 -49
- data/lib/spec/expectations/differs/load-diff-lcs.rb +12 -0
- data/lib/spec/interop/test/unit/testcase.rb +2 -2
- data/lib/spec/matchers.rb +49 -9
- data/lib/spec/matchers/be.rb +12 -15
- data/lib/spec/matchers/change.rb +1 -0
- data/lib/spec/matchers/dsl.rb +15 -0
- data/lib/spec/matchers/have.rb +9 -8
- data/lib/spec/matchers/include.rb +2 -16
- data/lib/spec/matchers/match_array.rb +2 -14
- data/lib/spec/matchers/matcher.rb +16 -11
- data/lib/spec/matchers/pretty.rb +36 -0
- data/lib/spec/matchers/raise_error.rb +9 -8
- data/lib/spec/matchers/simple_matcher.rb +1 -0
- data/lib/spec/matchers/throw_symbol.rb +1 -1
- data/lib/spec/mocks/argument_expectation.rb +2 -0
- data/lib/spec/mocks/message_expectation.rb +2 -0
- data/lib/spec/mocks/proxy.rb +9 -10
- data/lib/spec/runner.rb +1 -0
- data/lib/spec/runner/extensions/kernel.rb +9 -0
- data/lib/spec/runner/formatter/base_formatter.rb +22 -9
- data/lib/spec/runner/formatter/html_formatter.rb +2 -1
- data/lib/spec/runner/heckle_runner.rb +1 -0
- data/lib/spec/runner/option_parser.rb +4 -1
- data/lib/spec/runner/options.rb +11 -0
- data/lib/spec/runner/spec_parser.rb +15 -22
- data/lib/spec/version.rb +4 -6
- data/spec/autotest/autotest_helper.rb +6 -1
- data/spec/spec/dsl/main_spec.rb +3 -3
- data/spec/spec/example/example_group_factory_spec.rb +11 -23
- data/spec/spec/example/example_group_methods_spec.rb +45 -20
- data/spec/spec/example/example_group_proxy_spec.rb +63 -0
- data/spec/spec/example/example_group_spec.rb +15 -0
- data/spec/spec/example/example_methods_spec.rb +5 -35
- data/spec/spec/example/example_proxy_spec.rb +47 -0
- data/spec/spec/example/nested_example_group_spec.rb +3 -3
- data/spec/spec/example/shared_example_group_spec.rb +4 -4
- data/spec/spec/example/subject_spec.rb +77 -0
- data/spec/spec/matchers/be_close_spec.rb +10 -10
- data/spec/spec/matchers/be_instance_of_spec.rb +13 -8
- data/spec/spec/matchers/be_kind_of_spec.rb +10 -8
- data/spec/spec/{dsl/matchers_spec.rb → matchers/dsl_spec.rb} +4 -4
- data/spec/spec/matchers/matcher_spec.rb +53 -1
- data/spec/spec/matchers/matchers_spec.rb +2 -0
- data/spec/spec/package/bin_spec_spec.rb +4 -4
- data/spec/spec/runner/command_line_spec.rb +2 -2
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +4 -4
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +1 -1
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +1 -1
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +12 -11
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +1 -1
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +1 -1
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +1 -1
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +1 -1
- data/spec/spec/runner/option_parser_spec.rb +20 -0
- data/spec/spec/runner/options_spec.rb +23 -1
- data/spec/spec/runner/reporter_spec.rb +20 -17
- data/spec/spec/runner/spec_parser_spec.rb +1 -1
- metadata +33 -15
- data/Upgrade.markdown +0 -63
- data/lib/spec/dsl/matchers.rb +0 -13
- data/lib/spec/example/example_description.rb +0 -15
data/.document
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
|
-
=== Version 1.2.
|
|
1
|
+
=== Version 1.2.1 / 2009-03-22
|
|
2
|
+
|
|
3
|
+
* enhancments
|
|
4
|
+
|
|
5
|
+
* matchers, including the new DSL, easily added to your test/unit tests
|
|
6
|
+
* added support for 0 to n args in matcher DSL
|
|
7
|
+
* restored loading rubygems when necessary
|
|
8
|
+
* if you really don't want to use rubygems, you
|
|
9
|
+
can set an NO_RUBYGEMS environment
|
|
10
|
+
variable, and RSpec won't force it on you.
|
|
11
|
+
* added -u/--debugger option (Rick DeNatale) #262.
|
|
12
|
+
* just add "debugger" anywhere in your code and run spec path/to/code --debugger
|
|
13
|
+
* rename ExampleDescription to ExampleProxy
|
|
14
|
+
* pass ExampleProxy to example_started(). Closes #738, #743
|
|
15
|
+
* thanks to Tobias Grimm (Eclipse) fort the patch and Roman Chernyatchik
|
|
16
|
+
(JetBrains, RubyMine) for the assist
|
|
17
|
+
|
|
18
|
+
* bug fixes
|
|
19
|
+
|
|
20
|
+
* subject (implicit or explicit) is now properly inherited by nested groups. Closes #744.
|
|
2
21
|
|
|
3
|
-
|
|
22
|
+
=== Version 1.2.0 / 2009-03-15
|
|
23
|
+
|
|
24
|
+
* warnings:
|
|
4
25
|
|
|
5
26
|
* If you use the ruby command to run specs instead of the spec command, you'll
|
|
6
27
|
need to require 'spec/autorun' or they won't run. This won't affect you if
|
|
@@ -20,11 +41,13 @@ WARNINGS:
|
|
|
20
41
|
matchers, or using extension libraries that do, this should not affect
|
|
21
42
|
you. If you run into trouble, you'll just need to change:
|
|
22
43
|
|
|
23
|
-
|
|
24
|
-
|
|
44
|
+
failure_message => failure_message_for_should
|
|
45
|
+
negative_failure_message => failure_message_for_should_not
|
|
25
46
|
|
|
26
47
|
* All references to rubygems have been removed from within rspec's code.
|
|
27
48
|
|
|
49
|
+
* NOTE that they have been restored in 1.2.1, above
|
|
50
|
+
|
|
28
51
|
* See http://gist.github.com/54177 for rationale and suggestions on
|
|
29
52
|
alternative approaches to loading rubygems
|
|
30
53
|
|
data/Manifest.txt
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
.autotest
|
|
2
2
|
.document
|
|
3
|
-
History.
|
|
3
|
+
History.rdoc
|
|
4
4
|
License.txt
|
|
5
5
|
Manifest.txt
|
|
6
|
-
README.
|
|
6
|
+
README.rdoc
|
|
7
7
|
Rakefile
|
|
8
|
-
Ruby1.9.
|
|
8
|
+
Ruby1.9.rdoc
|
|
9
9
|
TODO.txt
|
|
10
|
-
Upgrade.
|
|
10
|
+
Upgrade.rdoc
|
|
11
11
|
bin/autospec
|
|
12
12
|
bin/spec
|
|
13
13
|
cucumber.yml
|
|
@@ -66,12 +66,15 @@ features/interop/examples_and_tests_together.feature
|
|
|
66
66
|
features/interop/test_but_not_test_unit.feature
|
|
67
67
|
features/interop/test_case_with_should_methods.feature
|
|
68
68
|
features/matchers/create_matcher.feature
|
|
69
|
+
features/matchers/create_matcher_outside_rspec.feature
|
|
69
70
|
features/mock_framework_integration/use_flexmock.feature
|
|
70
71
|
features/mock_framework_integration/use_mocha.feature
|
|
71
72
|
features/mock_framework_integration/use_rr.feature
|
|
72
73
|
features/mocks/mix_stubs_and_mocks.feature
|
|
73
74
|
features/pending/pending_examples.feature
|
|
74
75
|
features/step_definitions/running_rspec.rb
|
|
76
|
+
features/subject/explicit_subject.feature
|
|
77
|
+
features/subject/implicit_subject.feature
|
|
75
78
|
features/support/env.rb
|
|
76
79
|
features/support/matchers/smart_match.rb
|
|
77
80
|
init.rb
|
|
@@ -85,17 +88,17 @@ lib/spec/adapters/mock_frameworks/rspec.rb
|
|
|
85
88
|
lib/spec/autorun.rb
|
|
86
89
|
lib/spec/dsl.rb
|
|
87
90
|
lib/spec/dsl/main.rb
|
|
88
|
-
lib/spec/dsl/matchers.rb
|
|
89
91
|
lib/spec/example.rb
|
|
90
92
|
lib/spec/example/before_and_after_hooks.rb
|
|
91
93
|
lib/spec/example/errors.rb
|
|
92
|
-
lib/spec/example/example_description.rb
|
|
93
94
|
lib/spec/example/example_group.rb
|
|
94
95
|
lib/spec/example/example_group_factory.rb
|
|
95
96
|
lib/spec/example/example_group_hierarchy.rb
|
|
96
97
|
lib/spec/example/example_group_methods.rb
|
|
98
|
+
lib/spec/example/example_group_proxy.rb
|
|
97
99
|
lib/spec/example/example_matcher.rb
|
|
98
100
|
lib/spec/example/example_methods.rb
|
|
101
|
+
lib/spec/example/example_proxy.rb
|
|
99
102
|
lib/spec/example/module_reopening_fix.rb
|
|
100
103
|
lib/spec/example/pending.rb
|
|
101
104
|
lib/spec/example/predicate_matchers.rb
|
|
@@ -103,6 +106,7 @@ lib/spec/example/shared_example_group.rb
|
|
|
103
106
|
lib/spec/example/subject.rb
|
|
104
107
|
lib/spec/expectations.rb
|
|
105
108
|
lib/spec/expectations/differs/default.rb
|
|
109
|
+
lib/spec/expectations/differs/load-diff-lcs.rb
|
|
106
110
|
lib/spec/expectations/errors.rb
|
|
107
111
|
lib/spec/expectations/extensions.rb
|
|
108
112
|
lib/spec/expectations/extensions/object.rb
|
|
@@ -120,6 +124,7 @@ lib/spec/matchers/be_instance_of.rb
|
|
|
120
124
|
lib/spec/matchers/be_kind_of.rb
|
|
121
125
|
lib/spec/matchers/change.rb
|
|
122
126
|
lib/spec/matchers/compatibility.rb
|
|
127
|
+
lib/spec/matchers/dsl.rb
|
|
123
128
|
lib/spec/matchers/eql.rb
|
|
124
129
|
lib/spec/matchers/equal.rb
|
|
125
130
|
lib/spec/matchers/errors.rb
|
|
@@ -134,6 +139,7 @@ lib/spec/matchers/match_array.rb
|
|
|
134
139
|
lib/spec/matchers/matcher.rb
|
|
135
140
|
lib/spec/matchers/method_missing.rb
|
|
136
141
|
lib/spec/matchers/operator_matcher.rb
|
|
142
|
+
lib/spec/matchers/pretty.rb
|
|
137
143
|
lib/spec/matchers/raise_error.rb
|
|
138
144
|
lib/spec/matchers/respond_to.rb
|
|
139
145
|
lib/spec/matchers/satisfy.rb
|
|
@@ -165,6 +171,7 @@ lib/spec/runner/command_line.rb
|
|
|
165
171
|
lib/spec/runner/configuration.rb
|
|
166
172
|
lib/spec/runner/drb_command_line.rb
|
|
167
173
|
lib/spec/runner/example_group_runner.rb
|
|
174
|
+
lib/spec/runner/extensions/kernel.rb
|
|
168
175
|
lib/spec/runner/formatter/base_formatter.rb
|
|
169
176
|
lib/spec/runner/formatter/base_text_formatter.rb
|
|
170
177
|
lib/spec/runner/formatter/failing_example_groups_formatter.rb
|
|
@@ -204,19 +211,21 @@ spec/rspec_suite.rb
|
|
|
204
211
|
spec/ruby_forker.rb
|
|
205
212
|
spec/spec.opts
|
|
206
213
|
spec/spec/dsl/main_spec.rb
|
|
207
|
-
spec/spec/dsl/matchers_spec.rb
|
|
208
214
|
spec/spec/example/example_group_class_definition_spec.rb
|
|
209
215
|
spec/spec/example/example_group_factory_spec.rb
|
|
210
216
|
spec/spec/example/example_group_methods_spec.rb
|
|
217
|
+
spec/spec/example/example_group_proxy_spec.rb
|
|
211
218
|
spec/spec/example/example_group_spec.rb
|
|
212
219
|
spec/spec/example/example_matcher_spec.rb
|
|
213
220
|
spec/spec/example/example_methods_spec.rb
|
|
221
|
+
spec/spec/example/example_proxy_spec.rb
|
|
214
222
|
spec/spec/example/helper_method_spec.rb
|
|
215
223
|
spec/spec/example/nested_example_group_spec.rb
|
|
216
224
|
spec/spec/example/pending_module_spec.rb
|
|
217
225
|
spec/spec/example/predicate_matcher_spec.rb
|
|
218
226
|
spec/spec/example/shared_example_group_spec.rb
|
|
219
227
|
spec/spec/example/subclassing_example_group_spec.rb
|
|
228
|
+
spec/spec/example/subject_spec.rb
|
|
220
229
|
spec/spec/expectations/differs/default_spec.rb
|
|
221
230
|
spec/spec/expectations/extensions/object_spec.rb
|
|
222
231
|
spec/spec/expectations/fail_with_spec.rb
|
|
@@ -241,6 +250,7 @@ spec/spec/matchers/be_spec.rb
|
|
|
241
250
|
spec/spec/matchers/change_spec.rb
|
|
242
251
|
spec/spec/matchers/compatibility_spec.rb
|
|
243
252
|
spec/spec/matchers/description_generation_spec.rb
|
|
253
|
+
spec/spec/matchers/dsl_spec.rb
|
|
244
254
|
spec/spec/matchers/eql_spec.rb
|
|
245
255
|
spec/spec/matchers/equal_spec.rb
|
|
246
256
|
spec/spec/matchers/exist_spec.rb
|
|
@@ -251,6 +261,7 @@ spec/spec/matchers/match_array_spec.rb
|
|
|
251
261
|
spec/spec/matchers/match_spec.rb
|
|
252
262
|
spec/spec/matchers/matcher_methods_spec.rb
|
|
253
263
|
spec/spec/matchers/matcher_spec.rb
|
|
264
|
+
spec/spec/matchers/matchers_spec.rb
|
|
254
265
|
spec/spec/matchers/operator_matcher_spec.rb
|
|
255
266
|
spec/spec/matchers/raise_error_spec.rb
|
|
256
267
|
spec/spec/matchers/respond_to_spec.rb
|
data/{README.txt → README.rdoc}
RENAMED
|
File without changes
|
data/Rakefile
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
# -*- ruby -*-
|
|
2
|
+
gem 'hoe', '>=1.9.0'
|
|
3
|
+
require 'hoe'
|
|
2
4
|
|
|
3
5
|
$:.unshift(File.join(File.dirname(__FILE__), 'lib'))
|
|
4
|
-
|
|
6
|
+
|
|
5
7
|
require 'spec/version'
|
|
6
8
|
require 'spec/rake/spectask'
|
|
7
9
|
require 'cucumber/rake/task'
|
|
8
10
|
|
|
9
|
-
class Hoe
|
|
10
|
-
def extra_deps
|
|
11
|
-
@extra_deps.reject! { |x| Array(x).first == 'hoe' }
|
|
12
|
-
@extra_deps
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
11
|
Hoe.new('rspec', Spec::VERSION::STRING) do |p|
|
|
17
12
|
p.summary = Spec::VERSION::SUMMARY
|
|
18
13
|
p.url = 'http://rspec.info/'
|
|
@@ -22,6 +17,18 @@ Hoe.new('rspec', Spec::VERSION::STRING) do |p|
|
|
|
22
17
|
p.extra_dev_deps = [["cucumber",">= 0.1.13"]]
|
|
23
18
|
p.remote_rdoc_dir = "rspec/#{Spec::VERSION::STRING}"
|
|
24
19
|
p.rspec_options = ['--options', 'spec/spec.opts']
|
|
20
|
+
p.history_file = 'History.rdoc'
|
|
21
|
+
p.readme_file = 'README.rdoc'
|
|
22
|
+
p.post_install_message = <<-POST_INSTALL_MESSAGE
|
|
23
|
+
#{'*'*50}
|
|
24
|
+
|
|
25
|
+
Thank you for installing rspec-#{Spec::VERSION::STRING}
|
|
26
|
+
|
|
27
|
+
Please be sure to read History.rdoc and Upgrade.rdoc
|
|
28
|
+
for useful information about this release.
|
|
29
|
+
|
|
30
|
+
#{'*'*50}
|
|
31
|
+
POST_INSTALL_MESSAGE
|
|
25
32
|
end
|
|
26
33
|
|
|
27
34
|
['audit','test','test_deps','default','post_blog'].each do |task|
|
|
@@ -47,7 +54,7 @@ namespace :spec do
|
|
|
47
54
|
t.spec_opts = ['--options', 'spec/spec.opts']
|
|
48
55
|
t.rcov = true
|
|
49
56
|
t.rcov_dir = 'coverage'
|
|
50
|
-
t.rcov_opts = ['--exclude', "instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,spec/spec,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
|
|
57
|
+
t.rcov_opts = ['--exclude', "kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,spec/spec,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
|
|
51
58
|
end
|
|
52
59
|
end
|
|
53
60
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
= RSpec and Ruby 1.9
|
|
2
2
|
|
|
3
3
|
Currently, RSpec (core) is mostly compatible with Ruby 1.9.1. There are still
|
|
4
4
|
outstanding issues, some of which we plan to address and some we don't.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
== Test::Unit
|
|
7
7
|
|
|
8
8
|
RSpec/Test::Unit interop will run with the test-unit-1.2.3 gem, but you must install it.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
== Class Variables
|
|
11
11
|
|
|
12
12
|
Due to changes in scoping rules, class variables within example groups are not
|
|
13
13
|
supported in Ruby 1.9.
|
data/TODO.txt
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
== Refactoring
|
|
2
2
|
|
|
3
|
-
Refactoring for 1.2.0
|
|
4
|
-
|
|
5
3
|
** global predictate matchers should be stored in run_options
|
|
6
4
|
* eliminate dependency on global options and configuration
|
|
7
5
|
** the only place they should exist is in the Runner, which should manage them
|
|
@@ -13,11 +11,6 @@ Refactoring for 1.2.0
|
|
|
13
11
|
* be able to do everything with classes and methods
|
|
14
12
|
* tweak raise_error rdoc to show only one arg
|
|
15
13
|
|
|
16
|
-
== Ruby 1.9.1
|
|
17
|
-
|
|
18
|
-
* one example remains failing
|
|
19
|
-
* cucumber isn't working yet
|
|
20
|
-
|
|
21
14
|
== rspec-2.0
|
|
22
15
|
|
|
23
16
|
* rename top level namespace to Rspec and commands to 'rspec' and 'autorspec'
|
data/Upgrade.rdoc
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
= Upgrade to rspec-1.2.1 (in dev)
|
|
2
|
+
|
|
3
|
+
== What's Changed
|
|
4
|
+
|
|
5
|
+
=== <tt>require 'rubygems' unless ENV['NO_RUBYGEMS']</tt>
|
|
6
|
+
|
|
7
|
+
After minor public outcry and confusion, we restored necessary references to
|
|
8
|
+
rubygems in rspec. If you use a different mechanism for managing gems, just
|
|
9
|
+
set a <tt>NO_RUBYGEMS</tt> environment variable (to any non-nil value).
|
|
10
|
+
|
|
11
|
+
=== Proxies and locations
|
|
12
|
+
|
|
13
|
+
This is probably only interesting to you if you use custom formatters.
|
|
14
|
+
|
|
15
|
+
Formatters now receive Spec::Example::ExampleGroupProxy and
|
|
16
|
+
Spec::Example::ExampleGroup objects with cohesive APIs for reporting. See the
|
|
17
|
+
RDoc for those classes and Spec::Runner::Formatter::BaseFormatter for more
|
|
18
|
+
information.
|
|
19
|
+
|
|
20
|
+
== What's new
|
|
21
|
+
|
|
22
|
+
=== The new matcher DSL works with test/unit (without the rest of rspec)
|
|
23
|
+
|
|
24
|
+
We'll be separating this out to its own gem for rspec 2.0, but for now, just install
|
|
25
|
+
rspec >= 1.2.1 and add the following to your <tt>test_helper</tt> file:
|
|
26
|
+
|
|
27
|
+
require 'spec/expectations'
|
|
28
|
+
class Test::Unit::TestCase
|
|
29
|
+
include Spec::Matchers
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
This will add <tt>should()</tt> and <tt>should_not()</tt> to your objects, make all of
|
|
33
|
+
rspec's built-in matchers available to your tests, INCLUDING rspec's DSL for
|
|
34
|
+
creating matchers (see below, under Upgrade to rspec-1.2.0)
|
|
35
|
+
|
|
36
|
+
=== debugger
|
|
37
|
+
|
|
38
|
+
If you have ruby-debug installed, you can set a breakpoint by adding <tt>debugger()</tt>
|
|
39
|
+
in your code:
|
|
40
|
+
|
|
41
|
+
# some code .....
|
|
42
|
+
debugger
|
|
43
|
+
# some more code ....
|
|
44
|
+
|
|
45
|
+
... and using the <tt>--debugger</tt> or <tt>-u</tt> command line option.
|
|
46
|
+
|
|
47
|
+
spec path/to/file.rb --debugger
|
|
48
|
+
|
|
49
|
+
= Upgrade to rspec-1.2.0
|
|
50
|
+
|
|
51
|
+
== What's Changed
|
|
52
|
+
|
|
53
|
+
=== WARNINGS
|
|
54
|
+
|
|
55
|
+
* If you use the ruby command to run specs instead of the spec command, you'll
|
|
56
|
+
need to require 'spec/autorun' or they won't run. This won't affect you if
|
|
57
|
+
you use the spec command or the Spec::Rake::SpecTask that ships with RSpec.
|
|
58
|
+
|
|
59
|
+
* require 'spec/test/unit' to invoke test/unit interop if you're using
|
|
60
|
+
RSpec's core (this is handled implicitly with spec-rails)
|
|
61
|
+
|
|
62
|
+
* setup and teardown are gone - use before and after instead
|
|
63
|
+
|
|
64
|
+
* you can still use setup and teardown if you're using
|
|
65
|
+
Test::Unit::TestCase as the base ExampleGroup class (which is implicit
|
|
66
|
+
in rspec-rails)
|
|
67
|
+
|
|
68
|
+
* The matcher protocol has been improved. The old protocol is still supported,
|
|
69
|
+
but we added support for two new methods that speak a bit more clearly:
|
|
70
|
+
|
|
71
|
+
failure_message => failure_message_for_should
|
|
72
|
+
negative_failure_message => failure_message_for_should_not
|
|
73
|
+
|
|
74
|
+
* All references to rubygems have been removed from within rspec's code.
|
|
75
|
+
|
|
76
|
+
* See http://gist.github.com/54177 for rationale and suggestions on
|
|
77
|
+
alternative approaches to loading rubygems
|
|
78
|
+
|
|
79
|
+
== What's New
|
|
80
|
+
|
|
81
|
+
=== Ruby 1.9
|
|
82
|
+
|
|
83
|
+
RSpec now works with Ruby 1.9.1. See http://wiki.github.com/dchelimsky/rspec/ruby-191
|
|
84
|
+
for useful information.
|
|
85
|
+
|
|
86
|
+
=== Improved heckle integration
|
|
87
|
+
|
|
88
|
+
RSpec works with heckle again! Gotta use heckle >= 1.4.2 for this to work
|
|
89
|
+
though, and it only works with ruby-1.8.6 and 1.8.7 (heckle doesn't support
|
|
90
|
+
1.9.1 yet).
|
|
91
|
+
|
|
92
|
+
[sudo] gem install heckle --version ">=1.4.2"
|
|
93
|
+
spec spec/game/mastermind.rb --heckle Game::Mastermind
|
|
94
|
+
|
|
95
|
+
=== New Matcher DSL
|
|
96
|
+
|
|
97
|
+
We've added a new DSL for generating custom matchers very simply and cleanly.
|
|
98
|
+
We'll still support the simple_matcher method, so never fear if you're using
|
|
99
|
+
that, but we recommend that you start developing your new matchers with this
|
|
100
|
+
new syntax.
|
|
101
|
+
|
|
102
|
+
Spec::Matchers.create do :be_a_multiple_of |smaller|
|
|
103
|
+
match do |bigger|
|
|
104
|
+
bigger % smaller == 0
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
9.should be_a_multiple_of(3)
|
|
109
|
+
|
|
110
|
+
See <tt>features/matchers/create_matcher.feature</tt> for more examples
|
|
@@ -113,3 +113,43 @@ Feature: custom matcher shortcut
|
|
|
113
113
|
And the stdout should match "2 examples, 0 failures"
|
|
114
114
|
And the stdout should match "should be multiple of 3"
|
|
115
115
|
And the stdout should match "should not be multiple of 4"
|
|
116
|
+
|
|
117
|
+
Scenario: with no args
|
|
118
|
+
Given the following spec:
|
|
119
|
+
"""
|
|
120
|
+
Spec::Matchers.create :have_7_fingers do
|
|
121
|
+
match do |thing|
|
|
122
|
+
thing.fingers.length == 7
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
class Thing
|
|
127
|
+
def fingers; (1..7).collect {"finger"}; end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
describe Thing do
|
|
131
|
+
it {should have_7_fingers}
|
|
132
|
+
end
|
|
133
|
+
"""
|
|
134
|
+
When I run it with the spec command --format specdoc
|
|
135
|
+
Then the exit code should be 0
|
|
136
|
+
And the stdout should match "1 example, 0 failures"
|
|
137
|
+
And the stdout should match "should have 7 fingers"
|
|
138
|
+
|
|
139
|
+
Scenario: with multiple args
|
|
140
|
+
Given the following spec:
|
|
141
|
+
"""
|
|
142
|
+
Spec::Matchers.create :be_the_sum_of do |a,b,c,d|
|
|
143
|
+
match do |sum|
|
|
144
|
+
a + b + c + d == sum
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
describe 10 do
|
|
149
|
+
it {should be_the_sum_of(1,2,3,4)}
|
|
150
|
+
end
|
|
151
|
+
"""
|
|
152
|
+
When I run it with the spec command --format specdoc
|
|
153
|
+
Then the exit code should be 0
|
|
154
|
+
And the stdout should match "1 example, 0 failures"
|
|
155
|
+
And the stdout should match "should be the sum of 1, 2, 3, and 4"
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Feature: custom matcher shortcut
|
|
2
|
+
|
|
3
|
+
In order to express my domain clearly in my code examples
|
|
4
|
+
As a non-rspec user
|
|
5
|
+
I want a shortcut for create custom matchers
|
|
6
|
+
|
|
7
|
+
Scenario: creating a matcher with default messages
|
|
8
|
+
Given a file named test_multiples.rb with:
|
|
9
|
+
"""
|
|
10
|
+
$:.unshift File.join(File.dirname(__FILE__), "/../lib")
|
|
11
|
+
require 'test/unit'
|
|
12
|
+
require 'spec/expectations'
|
|
13
|
+
|
|
14
|
+
Spec::Matchers.create :be_a_multiple_of do |expected|
|
|
15
|
+
match do |actual|
|
|
16
|
+
actual % expected == 0
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class Test::Unit::TestCase
|
|
21
|
+
include Spec::Matchers
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class TestMultiples < Test::Unit::TestCase
|
|
25
|
+
|
|
26
|
+
def test_9_should_be_a_multiple_of_3
|
|
27
|
+
9.should be_a_multiple_of(3)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_9_should_be_a_multiple_of_4
|
|
31
|
+
9.should be_a_multiple_of(4)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
"""
|
|
36
|
+
When I run it with the ruby interpreter
|
|
37
|
+
Then the exit code should be 256
|
|
38
|
+
And the stdout should match "expected 9 to be a multiple of 4"
|
|
39
|
+
And the stdout should match "2 tests, 0 assertions, 1 failures, 0 errors"
|