dchelimsky-rspec 1.1.11.1 → 1.1.11.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -3
- data/Manifest.txt +35 -46
- data/README.txt +30 -12
- data/Rakefile +9 -9
- data/{stories/configuration/before_blocks.story → features/configuration/before_blocks.feature} +2 -2
- data/{stories/example_groups/autogenerated_docstrings → features/example_groups/autogenerated_docstrings.feature} +1 -1
- data/{stories/example_groups/example_group_with_should_methods → features/example_groups/example_group_with_should_methods.feature} +3 -3
- data/{stories/example_groups/nested_groups → features/example_groups/nested_groups.feature} +1 -1
- data/{stories/example_groups/output → features/example_groups/output.feature} +3 -8
- data/{stories/interop/examples_and_tests_together → features/interop/examples_and_tests_together.feature} +5 -4
- data/{stories/interop/test_but_not_test_unit → features/interop/test_but_not_test_unit.feature} +2 -2
- data/{stories/interop/test_case_with_should_methods → features/interop/test_case_with_should_methods.feature} +2 -2
- data/{stories/mock_framework_integration/use_flexmock.story → features/mock_framework_integration/use_flexmock.feature} +1 -1
- data/features/step_definitions/running_rspec.rb +48 -0
- data/features/support/env.rb +25 -0
- data/{stories/resources → features/support}/helpers/cmdline.rb +0 -0
- data/{stories/resources → features/support}/helpers/story_helper.rb +0 -0
- data/{stories/resources → features/support}/matchers/smart_match.rb +0 -0
- data/{plugins → lib/adapters}/mock_frameworks/flexmock.rb +0 -0
- data/{plugins → lib/adapters}/mock_frameworks/mocha.rb +0 -0
- data/{plugins → lib/adapters}/mock_frameworks/rr.rb +0 -0
- data/{plugins → lib/adapters}/mock_frameworks/rspec.rb +1 -1
- data/lib/autotest/rspec.rb +3 -2
- data/lib/spec/dsl/main.rb +8 -4
- data/lib/spec/example/configuration.rb +1 -1
- data/lib/spec/example/example_group_factory.rb +6 -2
- data/lib/spec/example/example_group_methods.rb +47 -54
- data/lib/spec/example/shared_example_group.rb +2 -2
- data/lib/spec/example.rb +163 -14
- data/lib/spec/interop/test/unit/testresult.rb +1 -1
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +1 -1
- data/lib/spec/matchers/match_array.rb +75 -0
- data/lib/spec/matchers/operator_matcher.rb +34 -7
- data/lib/spec/matchers.rb +2 -1
- data/lib/spec/mocks/argument_constraints.rb +43 -5
- data/lib/spec/runner/example_group_runner.rb +2 -2
- data/lib/spec/runner/option_parser.rb +12 -6
- data/lib/spec/runner/options.rb +9 -9
- data/lib/spec/runner/spec_parser.rb +3 -2
- data/lib/spec/runner.rb +54 -188
- data/lib/spec/version.rb +1 -1
- data/lib/spec.rb +0 -29
- data/{rake_tasks → resources/rake}/examples.rake +0 -0
- data/{rake_tasks → resources/rake}/examples_with_rcov.rake +0 -0
- data/{rake_tasks → resources/rake}/failing_examples_with_html.rake +0 -0
- data/{rake_tasks → resources/rake}/verify_rcov.rake +0 -0
- data/{stories/resources → resources}/spec/before_blocks_example.rb +1 -1
- data/{stories/resources → resources}/spec/example_group_with_should_methods.rb +1 -1
- data/{stories/resources → resources}/spec/simple_spec.rb +1 -1
- data/resources/spec/spec_with_flexmock.rb +19 -0
- data/{stories/resources → resources}/test/spec_and_test_together.rb +1 -1
- data/{stories/resources → resources}/test/spec_including_test_but_not_unit.rb +1 -1
- data/{stories/resources → resources}/test/test_case_with_should_methods.rb +2 -2
- data/rspec.gemspec +5 -4
- data/spec/autotest/rspec_spec.rb +2 -1
- data/spec/spec/dsl/main_spec.rb +8 -5
- data/spec/spec/example/configuration_spec.rb +9 -9
- data/spec/spec/example/example_group_factory_spec.rb +22 -3
- data/spec/spec/example/example_group_methods_spec.rb +19 -15
- data/spec/spec/example/example_group_spec.rb +41 -41
- data/spec/spec/example/example_methods_spec.rb +5 -5
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/example/pending_module_spec.rb +2 -8
- data/spec/spec/example/shared_example_group_spec.rb +5 -5
- data/spec/spec/matchers/description_generation_spec.rb +5 -0
- data/spec/spec/matchers/handler_spec.rb +7 -7
- data/spec/spec/matchers/match_array_spec.rb +83 -0
- data/spec/spec/matchers/raise_error_spec.rb +18 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +39 -2
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_spec.rb +5 -6
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +1 -1
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +22 -0
- data/spec/spec/runner/option_parser_spec.rb +4 -17
- data/spec/spec/runner/options_spec.rb +19 -5
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/spec_parser_spec.rb +10 -0
- data/spec/spec/spec_spec.rb +21 -0
- metadata +39 -49
- data/lib/spec/adapters/ruby_engine/mri.rb +0 -8
- data/lib/spec/adapters/ruby_engine/rubinius.rb +0 -8
- data/lib/spec/adapters/ruby_engine.rb +0 -26
- data/lib/spec/adapters.rb +0 -1
- data/lib/spec/extensions/class.rb +0 -24
- data/lib/spec/extensions.rb +0 -1
- data/spec/spec/adapters/ruby_engine_spec.rb +0 -16
- data/stories/all.rb +0 -5
- data/stories/configuration/stories.rb +0 -7
- data/stories/example_groups/stories.rb +0 -7
- data/stories/helper.rb +0 -6
- data/stories/interop/stories.rb +0 -7
- data/stories/mock_framework_integration/stories.rb +0 -7
- data/stories/pending_stories/README +0 -3
- data/stories/resources/spec/spec_with_flexmock.rb +0 -18
- data/stories/resources/steps/running_rspec.rb +0 -50
- data/stories/resources/stories/failing_story.rb +0 -15
- data/stories/stories/multiline_steps.story +0 -23
- data/stories/stories/steps/multiline_steps.rb +0 -13
- data/stories/stories/stories.rb +0 -6
data/History.txt
CHANGED
@@ -5,25 +5,33 @@
|
|
5
5
|
* deprecated ExampleMethods#implementation_backtrace - use ExampleMethods#backtrace instead
|
6
6
|
* deprecated ExampleGroupMethods#example_group_backtrace - use ExampleGroupMethods#backtrace instead
|
7
7
|
|
8
|
-
*
|
8
|
+
* 6 major enhancements
|
9
9
|
|
10
10
|
* it { should matcher } - support for implicit receiver of #should (Joe Ferris of thoughtbot)
|
11
11
|
* subject { ... } - works in conjunction with implicit receiver of #should
|
12
12
|
* wrap_expectation (for wrapping multiple expectations and/or t/u assertions)
|
13
|
+
* added array.should =~ [1,2,3] # passes if array contains exactly the same elements in any order (Jeff Dean and Pat Maddox)
|
14
|
+
* hash_including mock argument matcher can now accept just keys, key/value pairs, or both (David Krmpotic)
|
15
|
+
* added hash_not_including mock argument matcher (David Krmpotic). Closes #634.
|
13
16
|
|
14
|
-
*
|
17
|
+
* 6 minor enhancements
|
15
18
|
|
16
19
|
* should throw_symbol accepts an optional argument: should throw_symbol(:sym, arg)
|
17
20
|
* fixed --line for jruby (Zach Moazeni)
|
18
21
|
* assorted small changes to support Ruby 1.9 (got a way to go)
|
19
22
|
* removed all instances of class << self - I do know who I am
|
23
|
+
* SpecParser can't handle backtrace paths with colons (John-Mason P. Shackelford). Closes #505.
|
24
|
+
* html formatter (and subsequently the textmate formatter) header fills in completely when running a single example
|
20
25
|
|
21
|
-
*
|
26
|
+
* 7 bug fixes
|
22
27
|
|
23
28
|
* fixed bug where {:a => 1, :b => 2}.should include(:a, :b) failed (Yossef Mendelssohn)
|
24
29
|
* only try to load Test::Unit if Test::Unit is defined (not just Test)
|
25
30
|
* Allow stubs on parent and child classes simultaneously (Jim Lindley). Fixes #600.
|
26
31
|
* BaseTextFormatter will now create the directory in a WHERE string (Adam Anderson). Fixes #616.
|
32
|
+
* Removed incorrect -S flag on autospec commands. Added explicit spec command for ruby to run, guarantee running rspec (raggi). Closes #507.
|
33
|
+
* Check whether test/unit has really been loaded before calling a method it defines (Brian Donovan). Closes #503.
|
34
|
+
* Fix spec_path for shared groups (Zach Dennis). Closes #615.
|
27
35
|
|
28
36
|
=== Version 1.1.11 / 2008-10-24
|
29
37
|
|
data/Manifest.txt
CHANGED
@@ -52,14 +52,28 @@ examples/passing/stack_spec.rb
|
|
52
52
|
examples/passing/stack_spec_with_nested_example_groups.rb
|
53
53
|
examples/passing/stubbing_example.rb
|
54
54
|
examples/passing/yielding_example.rb
|
55
|
+
features/configuration/before_blocks.feature
|
56
|
+
features/example_groups/autogenerated_docstrings.feature
|
57
|
+
features/example_groups/example_group_with_should_methods.feature
|
58
|
+
features/example_groups/nested_groups.feature
|
59
|
+
features/example_groups/output.feature
|
60
|
+
features/interop/examples_and_tests_together.feature
|
61
|
+
features/interop/test_but_not_test_unit.feature
|
62
|
+
features/interop/test_case_with_should_methods.feature
|
63
|
+
features/mock_framework_integration/use_flexmock.feature
|
64
|
+
features/step_definitions/running_rspec.rb
|
65
|
+
features/support/env.rb
|
66
|
+
features/support/helpers/cmdline.rb
|
67
|
+
features/support/helpers/story_helper.rb
|
68
|
+
features/support/matchers/smart_match.rb
|
55
69
|
init.rb
|
70
|
+
lib/adapters/mock_frameworks/flexmock.rb
|
71
|
+
lib/adapters/mock_frameworks/mocha.rb
|
72
|
+
lib/adapters/mock_frameworks/rr.rb
|
73
|
+
lib/adapters/mock_frameworks/rspec.rb
|
56
74
|
lib/autotest/discover.rb
|
57
75
|
lib/autotest/rspec.rb
|
58
76
|
lib/spec.rb
|
59
|
-
lib/spec/adapters.rb
|
60
|
-
lib/spec/adapters/ruby_engine.rb
|
61
|
-
lib/spec/adapters/ruby_engine/mri.rb
|
62
|
-
lib/spec/adapters/ruby_engine/rubinius.rb
|
63
77
|
lib/spec/dsl.rb
|
64
78
|
lib/spec/dsl/main.rb
|
65
79
|
lib/spec/example.rb
|
@@ -82,8 +96,6 @@ lib/spec/expectations/extensions/object.rb
|
|
82
96
|
lib/spec/expectations/extensions/string_and_symbol.rb
|
83
97
|
lib/spec/expectations/handler.rb
|
84
98
|
lib/spec/expectations/wrap_expectation.rb
|
85
|
-
lib/spec/extensions.rb
|
86
|
-
lib/spec/extensions/class.rb
|
87
99
|
lib/spec/interop/test.rb
|
88
100
|
lib/spec/interop/test/unit/autorunner.rb
|
89
101
|
lib/spec/interop/test/unit/testcase.rb
|
@@ -103,6 +115,7 @@ lib/spec/matchers/has.rb
|
|
103
115
|
lib/spec/matchers/have.rb
|
104
116
|
lib/spec/matchers/include.rb
|
105
117
|
lib/spec/matchers/match.rb
|
118
|
+
lib/spec/matchers/match_array.rb
|
106
119
|
lib/spec/matchers/method_missing.rb
|
107
120
|
lib/spec/matchers/operator_matcher.rb
|
108
121
|
lib/spec/matchers/raise_error.rb
|
@@ -173,14 +186,17 @@ lib/spec/story/step_mother.rb
|
|
173
186
|
lib/spec/story/story.rb
|
174
187
|
lib/spec/story/world.rb
|
175
188
|
lib/spec/version.rb
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
189
|
+
resources/rake/examples.rake
|
190
|
+
resources/rake/examples_with_rcov.rake
|
191
|
+
resources/rake/failing_examples_with_html.rake
|
192
|
+
resources/rake/verify_rcov.rake
|
193
|
+
resources/spec/before_blocks_example.rb
|
194
|
+
resources/spec/example_group_with_should_methods.rb
|
195
|
+
resources/spec/simple_spec.rb
|
196
|
+
resources/spec/spec_with_flexmock.rb
|
197
|
+
resources/test/spec_and_test_together.rb
|
198
|
+
resources/test/spec_including_test_but_not_unit.rb
|
199
|
+
resources/test/test_case_with_should_methods.rb
|
184
200
|
rspec.gemspec
|
185
201
|
spec/README.jruby
|
186
202
|
spec/autotest/autotest_helper.rb
|
@@ -191,7 +207,6 @@ spec/autotest/rspec_spec.rb
|
|
191
207
|
spec/rspec_suite.rb
|
192
208
|
spec/ruby_forker.rb
|
193
209
|
spec/spec.opts
|
194
|
-
spec/spec/adapters/ruby_engine_spec.rb
|
195
210
|
spec/spec/dsl/main_spec.rb
|
196
211
|
spec/spec/example/configuration_spec.rb
|
197
212
|
spec/spec/example/example_group_class_definition_spec.rb
|
@@ -201,6 +216,7 @@ spec/spec/example/example_group_spec.rb
|
|
201
216
|
spec/spec/example/example_matcher_spec.rb
|
202
217
|
spec/spec/example/example_methods_spec.rb
|
203
218
|
spec/spec/example/example_runner_spec.rb
|
219
|
+
spec/spec/example/helper_method_spec.rb
|
204
220
|
spec/spec/example/nested_example_group_spec.rb
|
205
221
|
spec/spec/example/pending_module_spec.rb
|
206
222
|
spec/spec/example/predicate_matcher_spec.rb
|
@@ -233,6 +249,7 @@ spec/spec/matchers/handler_spec.rb
|
|
233
249
|
spec/spec/matchers/has_spec.rb
|
234
250
|
spec/spec/matchers/have_spec.rb
|
235
251
|
spec/spec/matchers/include_spec.rb
|
252
|
+
spec/spec/matchers/match_array_spec.rb
|
236
253
|
spec/spec/matchers/match_spec.rb
|
237
254
|
spec/spec/matchers/matcher_methods_spec.rb
|
238
255
|
spec/spec/matchers/mock_constraint_matchers_spec.rb
|
@@ -258,6 +275,7 @@ spec/spec/mocks/bug_report_8165_spec.rb
|
|
258
275
|
spec/spec/mocks/bug_report_8302_spec.rb
|
259
276
|
spec/spec/mocks/failing_mock_argument_constraints_spec.rb
|
260
277
|
spec/spec/mocks/hash_including_matcher_spec.rb
|
278
|
+
spec/spec/mocks/hash_not_including_matcher_spec.rb
|
261
279
|
spec/spec/mocks/mock_ordering_spec.rb
|
262
280
|
spec/spec/mocks/mock_space_spec.rb
|
263
281
|
spec/spec/mocks/mock_spec.rb
|
@@ -314,6 +332,7 @@ spec/spec/runner/reporter_spec.rb
|
|
314
332
|
spec/spec/runner/resources/a_bar.rb
|
315
333
|
spec/spec/runner/resources/a_foo.rb
|
316
334
|
spec/spec/runner/resources/a_spec.rb
|
335
|
+
spec/spec/runner/resources/custom_example_group_runner.rb
|
317
336
|
spec/spec/runner/spec.opts
|
318
337
|
spec/spec/runner/spec_drb.opts
|
319
338
|
spec/spec/runner/spec_parser/spec_parser_fixture.rb
|
@@ -321,6 +340,7 @@ spec/spec/runner/spec_parser_spec.rb
|
|
321
340
|
spec/spec/runner/spec_spaced.opts
|
322
341
|
spec/spec/runner_spec.rb
|
323
342
|
spec/spec/spec_classes.rb
|
343
|
+
spec/spec/spec_spec.rb
|
324
344
|
spec/spec/story/builders.rb
|
325
345
|
spec/spec/story/extensions/main_spec.rb
|
326
346
|
spec/spec/story/extensions_spec.rb
|
@@ -340,37 +360,6 @@ spec/spec/story/story_helper.rb
|
|
340
360
|
spec/spec/story/story_spec.rb
|
341
361
|
spec/spec/story/world_spec.rb
|
342
362
|
spec/spec_helper.rb
|
343
|
-
stories/all.rb
|
344
|
-
stories/configuration/before_blocks.story
|
345
|
-
stories/configuration/stories.rb
|
346
|
-
stories/example_groups/autogenerated_docstrings
|
347
|
-
stories/example_groups/example_group_with_should_methods
|
348
|
-
stories/example_groups/nested_groups
|
349
|
-
stories/example_groups/output
|
350
|
-
stories/example_groups/stories.rb
|
351
|
-
stories/helper.rb
|
352
|
-
stories/interop/examples_and_tests_together
|
353
|
-
stories/interop/stories.rb
|
354
|
-
stories/interop/test_but_not_test_unit
|
355
|
-
stories/interop/test_case_with_should_methods
|
356
|
-
stories/mock_framework_integration/stories.rb
|
357
|
-
stories/mock_framework_integration/use_flexmock.story
|
358
|
-
stories/pending_stories/README
|
359
|
-
stories/resources/helpers/cmdline.rb
|
360
|
-
stories/resources/helpers/story_helper.rb
|
361
|
-
stories/resources/matchers/smart_match.rb
|
362
|
-
stories/resources/spec/before_blocks_example.rb
|
363
|
-
stories/resources/spec/example_group_with_should_methods.rb
|
364
|
-
stories/resources/spec/simple_spec.rb
|
365
|
-
stories/resources/spec/spec_with_flexmock.rb
|
366
|
-
stories/resources/steps/running_rspec.rb
|
367
|
-
stories/resources/stories/failing_story.rb
|
368
|
-
stories/resources/test/spec_and_test_together.rb
|
369
|
-
stories/resources/test/spec_including_test_but_not_unit.rb
|
370
|
-
stories/resources/test/test_case_with_should_methods.rb
|
371
|
-
stories/stories/multiline_steps.story
|
372
|
-
stories/stories/steps/multiline_steps.rb
|
373
|
-
stories/stories/stories.rb
|
374
363
|
story_server/prototype/javascripts/builder.js
|
375
364
|
story_server/prototype/javascripts/controls.js
|
376
365
|
story_server/prototype/javascripts/dragdrop.js
|
data/README.txt
CHANGED
@@ -1,31 +1,49 @@
|
|
1
1
|
= RSpec
|
2
2
|
|
3
3
|
* http://rspec.info
|
4
|
-
* http://rspec.info/rdoc/
|
5
4
|
* http://rubyforge.org/projects/rspec
|
6
5
|
* http://github.com/dchelimsky/rspec/wikis
|
7
6
|
* mailto:rspec-devel@rubyforge.org
|
8
7
|
|
9
8
|
== DESCRIPTION:
|
10
9
|
|
11
|
-
RSpec is a Behaviour Driven Development framework
|
12
|
-
|
10
|
+
RSpec is a Behaviour Driven Development framework for writing executable code
|
11
|
+
examples.
|
13
12
|
|
14
13
|
== FEATURES:
|
15
14
|
|
16
|
-
* Spec::
|
17
|
-
* Spec::
|
18
|
-
* Spec::Matchers provides Expression Matchers for use with
|
15
|
+
* Spec::Example provides a framework for expressing executable code examples
|
16
|
+
* Spec::Expectations adds #should and #should_not to every object
|
17
|
+
* Spec::Matchers provides Expression Matchers for use with #should and #should_not
|
18
|
+
* Spec::Mocks is a full featured mocking/stubbing library
|
19
19
|
|
20
20
|
== SYNOPSIS:
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
describe Account do
|
23
|
+
context "transfering money" do
|
24
|
+
it "deposits transfer amount to the other account" do
|
25
|
+
source = Account.new(50, :USD)
|
26
|
+
target = mock('target account')
|
27
|
+
target.should_receive(:deposit).with(Money.new(5, :USD))
|
28
|
+
source.transfer(5, :USD).to(target)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "reduces its balance by the transfer amount" do
|
32
|
+
source = Account.new(50, :USD)
|
33
|
+
target = stub('target account')
|
34
|
+
source.transfer(5, :USD).to(target)
|
35
|
+
source.balance.should == Money.new(45, :USD)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
26
39
|
|
27
|
-
|
28
|
-
|
40
|
+
$ spec spec/account_spec.rb --format nested
|
41
|
+
Account
|
42
|
+
transfering money
|
43
|
+
deposits transfer amount to the other account
|
44
|
+
reduces its balance by the transfer amount
|
45
|
+
|
46
|
+
2 examples, 0 failures
|
29
47
|
|
30
48
|
== INSTALL:
|
31
49
|
|
data/Rakefile
CHANGED
@@ -5,6 +5,7 @@ require 'rubygems'
|
|
5
5
|
require 'hoe'
|
6
6
|
require 'spec/version'
|
7
7
|
require 'spec/rake/spectask'
|
8
|
+
require 'cucumber/rake/task'
|
8
9
|
|
9
10
|
class Hoe
|
10
11
|
def extra_deps
|
@@ -19,6 +20,7 @@ Hoe.new('rspec', Spec::VERSION::STRING) do |p|
|
|
19
20
|
p.description = "Behaviour Driven Development for Ruby."
|
20
21
|
p.rubyforge_name = 'rspec'
|
21
22
|
p.developer('RSpec Development Team', 'rspec-devel@rubyforge.org')
|
23
|
+
p.extra_deps = [["cucumber",">= 0.1.13"]]
|
22
24
|
p.remote_rdoc_dir = "rspec/#{Spec::VERSION::STRING}"
|
23
25
|
end
|
24
26
|
|
@@ -26,14 +28,14 @@ end
|
|
26
28
|
Rake.application.instance_variable_get('@tasks').delete(task)
|
27
29
|
end
|
28
30
|
|
29
|
-
task :verify_rcov => [:spec, :
|
31
|
+
task :verify_rcov => [:spec, :features]
|
30
32
|
task :default => :verify_rcov
|
31
33
|
|
32
34
|
# # Some of the tasks are in separate files since they are also part of the website documentation
|
33
|
-
load File.dirname(__FILE__) + '/
|
34
|
-
load File.dirname(__FILE__) + '/
|
35
|
-
load File.dirname(__FILE__) + '/
|
36
|
-
load File.dirname(__FILE__) + '/
|
35
|
+
load File.dirname(__FILE__) + '/resources/rake/examples.rake'
|
36
|
+
load File.dirname(__FILE__) + '/resources/rake/examples_with_rcov.rake'
|
37
|
+
load File.dirname(__FILE__) + '/resources/rake/failing_examples_with_html.rake'
|
38
|
+
load File.dirname(__FILE__) + '/resources/rake/verify_rcov.rake'
|
37
39
|
|
38
40
|
desc "Run all specs"
|
39
41
|
Spec::Rake::SpecTask.new do |t|
|
@@ -46,10 +48,8 @@ Spec::Rake::SpecTask.new do |t|
|
|
46
48
|
end
|
47
49
|
end
|
48
50
|
|
49
|
-
desc "Run
|
50
|
-
|
51
|
-
ruby "stories/all.rb --colour --format plain"
|
52
|
-
end
|
51
|
+
desc "Run Cucumber features"
|
52
|
+
Cucumber::Rake::Task.new do; end
|
53
53
|
|
54
54
|
desc "Run failing examples (see failure output)"
|
55
55
|
Spec::Rake::SpecTask.new('failing_examples') do |t|
|
data/{stories/configuration/before_blocks.story → features/configuration/before_blocks.feature}
RENAMED
@@ -5,7 +5,7 @@ Story: before suite
|
|
5
5
|
|
6
6
|
Scenario: running with ruby
|
7
7
|
|
8
|
-
Given the file
|
8
|
+
Given the file ../../resources/spec/before_blocks_example.rb
|
9
9
|
|
10
10
|
When I run it with the ruby interpreter
|
11
11
|
|
@@ -13,7 +13,7 @@ Story: before suite
|
|
13
13
|
|
14
14
|
Scenario: running with spec
|
15
15
|
|
16
|
-
Given the file
|
16
|
+
Given the file ../../resources/spec/before_blocks_example.rb
|
17
17
|
|
18
18
|
When I run it with the spec script
|
19
19
|
|
@@ -1,17 +1,17 @@
|
|
1
|
-
|
1
|
+
Feature: Spec::ExampleGroup with should methods
|
2
2
|
|
3
3
|
As an RSpec adopter accustomed to classes and methods
|
4
4
|
I want to use should_* methods in an ExampleGroup
|
5
5
|
So that I use RSpec with classes and methods that look more like RSpec examples
|
6
6
|
|
7
7
|
Scenario: Run with ruby
|
8
|
-
Given the file spec/example_group_with_should_methods.rb
|
8
|
+
Given the file ../../resources/spec/example_group_with_should_methods.rb
|
9
9
|
When I run it with the ruby interpreter
|
10
10
|
Then the exit code should be 256
|
11
11
|
And the stdout should match "2 examples, 1 failure"
|
12
12
|
|
13
13
|
Scenario: Run with spec
|
14
|
-
Given the file spec/example_group_with_should_methods.rb
|
14
|
+
Given the file ../../resources/spec/example_group_with_should_methods.rb
|
15
15
|
When I run it with the spec script
|
16
16
|
Then the exit code should be 256
|
17
17
|
And the stdout should match "2 examples, 1 failure"
|
@@ -1,25 +1,20 @@
|
|
1
|
-
|
1
|
+
Feature: Getting correct output
|
2
2
|
|
3
3
|
As an RSpec user
|
4
4
|
I want to see output only once
|
5
5
|
So that I don't get confused
|
6
6
|
|
7
7
|
Scenario: Run with ruby
|
8
|
-
Given the file spec/simple_spec.rb
|
8
|
+
Given the file ../../resources/spec/simple_spec.rb
|
9
9
|
When I run it with the ruby interpreter
|
10
10
|
Then the exit code should be 0
|
11
11
|
And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
|
12
12
|
And the stdout should match "1 example, 0 failures"
|
13
13
|
|
14
14
|
Scenario: Run with CommandLine object
|
15
|
-
Given the file spec/simple_spec.rb
|
15
|
+
Given the file ../../resources/spec/simple_spec.rb
|
16
16
|
When I run it with the CommandLine object
|
17
17
|
Then the exit code should be 0
|
18
18
|
And the stdout should not match "Loaded suite"
|
19
19
|
And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
|
20
20
|
And the stdout should match "1 example, 0 failures"
|
21
|
-
|
22
|
-
Scenario: Tweak backtrace
|
23
|
-
Given the file stories/failing_story.rb
|
24
|
-
When I run it with the ruby interpreter
|
25
|
-
Then the stdout should not match /\/lib\/spec\//
|
@@ -1,11 +1,11 @@
|
|
1
|
-
|
1
|
+
Feature: Spec and test together
|
2
2
|
|
3
3
|
As an RSpec adopter with existing Test::Unit tests
|
4
4
|
I want to run a few specs alongside my existing Test::Unit tests
|
5
5
|
So that I can experience a smooth, gradual migration path
|
6
6
|
|
7
7
|
Scenario: Run with ruby
|
8
|
-
Given the file test/spec_and_test_together.rb
|
8
|
+
Given the file ../../resources/test/spec_and_test_together.rb
|
9
9
|
|
10
10
|
When I run it with the ruby interpreter -fs
|
11
11
|
|
@@ -16,13 +16,14 @@ Story: Spec and test together
|
|
16
16
|
And the stdout should match "10 examples, 6 failures"
|
17
17
|
And the stdout should match /expected: 40,\s*got: 4/m
|
18
18
|
And the stdout should match /expected: 50,\s*got: 5/m
|
19
|
+
|
19
20
|
Scenario: Run with spec
|
20
|
-
Given the file test/spec_and_test_together.rb
|
21
|
+
Given the file ../../resources/test/spec_and_test_together.rb
|
21
22
|
|
22
23
|
When I run it with the spec script -fs
|
23
24
|
|
24
25
|
Then the exit code should be 256
|
25
|
-
|
26
|
+
And the stdout should match "ATest"
|
26
27
|
And the stdout should match "Test::Unit::AssertionFailedError in 'An Example should fail with assert'"
|
27
28
|
And the stdout should match "'An Example should fail with should' FAILED"
|
28
29
|
And the stdout should match "10 examples, 6 failures"
|
data/{stories/interop/test_but_not_test_unit → features/interop/test_but_not_test_unit.feature}
RENAMED
@@ -4,11 +4,11 @@ Story: Test is defined, but not Test::Unit
|
|
4
4
|
I want to run examples without getting Test::Unit NameErrors
|
5
5
|
|
6
6
|
Scenario: Run with ruby
|
7
|
-
Given the file test/spec_including_test_but_not_unit.rb
|
7
|
+
Given the file ../../resources/test/spec_including_test_but_not_unit.rb
|
8
8
|
When I run it with the ruby interpreter
|
9
9
|
Then the stderr should not match "Test::Unit"
|
10
10
|
|
11
11
|
Scenario: Run with spec
|
12
|
-
Given the file test/spec_including_test_but_not_unit.rb
|
12
|
+
Given the file ../../resources/test/spec_including_test_but_not_unit.rb
|
13
13
|
When I run it with the spec script
|
14
14
|
Then the stderr should not match "Test::Unit"
|
@@ -5,13 +5,13 @@ Story: Test::Unit::TestCase extended by rspec with should methods
|
|
5
5
|
So that I use RSpec with classes and methods that look more like RSpec examples
|
6
6
|
|
7
7
|
Scenario: Run with ruby
|
8
|
-
Given the file test/test_case_with_should_methods.rb
|
8
|
+
Given the file ../../resources/test/test_case_with_should_methods.rb
|
9
9
|
When I run it with the ruby interpreter
|
10
10
|
Then the exit code should be 256
|
11
11
|
And the stdout should match "5 examples, 3 failures"
|
12
12
|
|
13
13
|
Scenario: Run with spec
|
14
|
-
Given the file test/test_case_with_should_methods.rb
|
14
|
+
Given the file ../../resources/test/test_case_with_should_methods.rb
|
15
15
|
When I run it with the spec script
|
16
16
|
Then the exit code should be 256
|
17
17
|
And the stdout should match "5 examples, 3 failures"
|
@@ -4,6 +4,6 @@ Story: Getting correct output with flexmock
|
|
4
4
|
I want to be able to use flexmock without rspec mocks interfering
|
5
5
|
|
6
6
|
Scenario: Mock with flexmock
|
7
|
-
Given the file spec/spec_with_flexmock.rb
|
7
|
+
Given the file ../../resources/spec/spec_with_flexmock.rb
|
8
8
|
When I run it with the ruby interpreter
|
9
9
|
Then the exit code should be 0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
Given /^the file (.*)$/ do |relative_path|
|
2
|
+
@path = File.expand_path(File.join(File.dirname(__FILE__), "..", "support", relative_path))
|
3
|
+
unless File.exist?(@path)
|
4
|
+
raise "could not find file at #{@path}"
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
When /^I run it with the (.*)$/ do |interpreter|
|
9
|
+
stderr_file = Tempfile.new('rspec')
|
10
|
+
stderr_file.close
|
11
|
+
@stdout = case(interpreter)
|
12
|
+
when /^ruby interpreter/
|
13
|
+
args = interpreter.gsub('ruby interpreter','')
|
14
|
+
ruby("#{@path}#{args}", stderr_file.path)
|
15
|
+
when /^spec script/
|
16
|
+
args = interpreter.gsub('spec script','')
|
17
|
+
spec("#{@path}#{args}", stderr_file.path)
|
18
|
+
when 'CommandLine object' then cmdline(@path, stderr_file.path)
|
19
|
+
else raise "Unknown interpreter: #{interpreter}"
|
20
|
+
end
|
21
|
+
@stderr = IO.read(stderr_file.path)
|
22
|
+
@exit_code = $?.to_i
|
23
|
+
end
|
24
|
+
|
25
|
+
Then /^the (.*) should match (.*)$/ do |stream, string_or_regex|
|
26
|
+
written = case(stream)
|
27
|
+
when 'stdout' then @stdout
|
28
|
+
when 'stderr' then @stderr
|
29
|
+
else raise "Unknown stream: #{stream}"
|
30
|
+
end
|
31
|
+
written.should smart_match(string_or_regex)
|
32
|
+
end
|
33
|
+
|
34
|
+
Then /^the (.*) should not match (.*)$/ do |stream, string_or_regex|
|
35
|
+
written = case(stream)
|
36
|
+
when 'stdout' then @stdout
|
37
|
+
when 'stderr' then @stderr
|
38
|
+
else raise "Unknown stream: #{stream}"
|
39
|
+
end
|
40
|
+
written.should_not smart_match(string_or_regex)
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
Then /^the exit code should be (\d+)$/ do |exit_code|
|
45
|
+
if @exit_code != exit_code.to_i
|
46
|
+
raise "Did not exit with #{exit_code}, but with #{@exit_code}. Standard error:\n#{@stderr}"
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
require File.dirname(__FILE__) + '/../../spec/ruby_forker'
|
3
|
+
require File.dirname(__FILE__) + '/matchers/smart_match'
|
4
|
+
|
5
|
+
require 'spec/expectations'
|
6
|
+
require 'spec/matchers'
|
7
|
+
|
8
|
+
module RspecWorld
|
9
|
+
include Spec::Expectations
|
10
|
+
include Spec::Matchers
|
11
|
+
include RubyForker
|
12
|
+
|
13
|
+
def spec(args, stderr)
|
14
|
+
ruby("#{File.dirname(__FILE__) + '/../../bin/spec'} #{args}", stderr)
|
15
|
+
end
|
16
|
+
|
17
|
+
def cmdline(args, stderr)
|
18
|
+
ruby("#{File.dirname(__FILE__) + '/helpers/cmdline.rb'} #{args}", stderr)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
World do |world|
|
23
|
+
world.extend(RspecWorld)
|
24
|
+
world
|
25
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/autotest/rspec.rb
CHANGED
@@ -28,7 +28,7 @@ class Autotest::Rspec < Autotest
|
|
28
28
|
def consolidate_failures(failed)
|
29
29
|
filters = new_hash_of_arrays
|
30
30
|
failed.each do |spec, trace|
|
31
|
-
if trace =~ /\n(\.\/)?(.*spec\.rb):[\d]
|
31
|
+
if trace =~ /\n(\.\/)?(.*spec\.rb):[\d]+:/
|
32
32
|
filters[$2] << spec
|
33
33
|
end
|
34
34
|
end
|
@@ -37,7 +37,8 @@ class Autotest::Rspec < Autotest
|
|
37
37
|
|
38
38
|
def make_test_cmd(files_to_test)
|
39
39
|
return '' if files_to_test.empty?
|
40
|
-
|
40
|
+
spec_program = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec'))
|
41
|
+
return "#{ruby} #{spec_program} #{files_to_test.keys.flatten.join(' ')} #{add_options_if_present}"
|
41
42
|
end
|
42
43
|
|
43
44
|
def add_options_if_present # :nodoc:
|
data/lib/spec/dsl/main.rb
CHANGED
@@ -20,6 +20,7 @@ module Spec
|
|
20
20
|
# register special implementations.
|
21
21
|
#
|
22
22
|
def describe(*args, &block)
|
23
|
+
Spec::Example::add_spec_path_to(args)
|
23
24
|
Spec::Example::ExampleGroupFactory.create_example_group(*args, &block)
|
24
25
|
end
|
25
26
|
alias :context :describe
|
@@ -39,11 +40,12 @@ module Spec
|
|
39
40
|
# ...
|
40
41
|
# end
|
41
42
|
# end
|
42
|
-
def share_examples_for(
|
43
|
-
Spec::Example::
|
43
|
+
def share_examples_for(*args, &block)
|
44
|
+
Spec::Example::add_spec_path_to(args)
|
45
|
+
Spec::Example::ExampleGroupFactory.create_shared_example_group(*args, &block)
|
44
46
|
end
|
45
47
|
alias :shared_examples_for :share_examples_for
|
46
|
-
|
48
|
+
|
47
49
|
# Creates a Shared Example Group and assigns it to a constant
|
48
50
|
#
|
49
51
|
# share_as :AllEditions do
|
@@ -70,7 +72,9 @@ module Spec
|
|
70
72
|
# end
|
71
73
|
def share_as(name, &block)
|
72
74
|
begin
|
73
|
-
|
75
|
+
args = [name]
|
76
|
+
Spec::Example::add_spec_path_to(args)
|
77
|
+
Object.const_set(name, Spec::Example::ExampleGroupFactory.create_shared_example_group(*args, &block))
|
74
78
|
rescue NameError => e
|
75
79
|
raise NameError.new(e.message + "\nThe first argument to share_as must be a legal name for a constant\n")
|
76
80
|
end
|
@@ -160,7 +160,7 @@ module Spec
|
|
160
160
|
end
|
161
161
|
|
162
162
|
def mock_framework_path(framework_name)
|
163
|
-
File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "
|
163
|
+
File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "adapters", "mock_frameworks", framework_name))
|
164
164
|
end
|
165
165
|
end
|
166
166
|
end
|
@@ -52,12 +52,16 @@ module Spec
|
|
52
52
|
def create_example_group(*args, &block)
|
53
53
|
raise ArgumentError if args.empty?
|
54
54
|
raise ArgumentError unless block
|
55
|
-
args
|
56
|
-
args.last[:spec_path] ||= File.expand_path(caller(0)[2])
|
55
|
+
Spec::Example::add_spec_path_to(args)
|
57
56
|
superclass = determine_superclass(args.last)
|
58
57
|
superclass.describe(*args, &block)
|
59
58
|
end
|
60
59
|
|
60
|
+
def create_shared_example_group(*args, &block)
|
61
|
+
Spec::Example::add_spec_path_to(args)
|
62
|
+
SharedExampleGroup.register(*args, &block)
|
63
|
+
end
|
64
|
+
|
61
65
|
protected
|
62
66
|
|
63
67
|
def determine_superclass(opts)
|