rspec 0.6.4 → 0.7.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.
- data/CHANGES +90 -1
- data/EXAMPLES.rd +28 -6
- data/MIT-LICENSE +20 -0
- data/README +18 -12
- data/Rakefile +60 -54
- data/examples/custom_formatter.rb +4 -4
- data/examples/helper_method_example.rb +11 -0
- data/examples/mocking_example.rb +19 -2
- data/examples/partial_mock_example.rb +28 -0
- data/examples/stack_spec.rb +8 -8
- data/examples/stubbing_example.rb +50 -9
- data/examples/test_case_spec.rb +6 -6
- data/lib/spec.rb +1 -2
- data/lib/spec/callback.rb +0 -0
- data/lib/spec/expectations.rb +3 -6
- data/lib/spec/expectations/diff.rb +23 -47
- data/lib/spec/expectations/differs/default.rb +62 -0
- data/lib/spec/expectations/{exceptions.rb → errors.rb} +0 -0
- data/lib/spec/expectations/extensions.rb +4 -0
- data/lib/spec/expectations/extensions/inspect_for_expectation_not_met_error.rb +14 -0
- data/lib/spec/expectations/extensions/numeric.rb +5 -0
- data/lib/spec/expectations/{expectations.rb → extensions/object.rb} +3 -6
- data/lib/spec/expectations/extensions/symbol.rb +5 -0
- data/lib/spec/expectations/should.rb +4 -0
- data/lib/spec/expectations/should/base.rb +42 -0
- data/lib/spec/expectations/should/have.rb +79 -0
- data/lib/spec/expectations/should/not.rb +72 -0
- data/lib/spec/expectations/should/should.rb +83 -0
- data/lib/spec/expectations/sugar.rb +6 -25
- data/lib/spec/mocks.rb +5 -1
- data/lib/spec/mocks/argument_expectation.rb +15 -1
- data/lib/spec/mocks/error_generator.rb +72 -0
- data/lib/spec/mocks/{exceptions.rb → errors.rb} +0 -0
- data/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/spec/mocks/message_expectation.rb +80 -73
- data/lib/spec/mocks/mock.rb +4 -69
- data/lib/spec/mocks/mock_handler.rb +158 -0
- data/lib/spec/mocks/mock_methods.rb +44 -0
- data/lib/spec/mocks/order_group.rb +10 -2
- data/lib/spec/rake/spectask.rb +20 -18
- data/lib/spec/rake/{rcov_verify.rb → verify_rcov.rb} +2 -2
- data/lib/spec/runner.rb +3 -1
- data/lib/spec/runner/backtrace_tweaker.rb +2 -1
- data/lib/spec/runner/context.rb +10 -16
- data/lib/spec/runner/context_eval.rb +40 -40
- data/lib/spec/runner/execution_context.rb +1 -12
- data/lib/spec/runner/{kernel_ext.rb → extensions/kernel.rb} +2 -2
- data/lib/spec/runner/{instance_exec.rb → extensions/object.rb} +0 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +25 -18
- data/lib/spec/runner/formatter/html_formatter.rb +81 -101
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +9 -9
- data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
- data/lib/spec/runner/formatter/specdoc_formatter.rb +7 -6
- data/lib/spec/runner/option_parser.rb +41 -5
- data/lib/spec/runner/reporter.rb +3 -15
- data/lib/spec/runner/spec_should_raise_handler.rb +74 -0
- data/lib/spec/runner/specification.rb +33 -14
- data/lib/spec/version.rb +6 -3
- data/vendor/watir/README.txt +1 -1
- metadata +34 -68
- data/bin/test2spec +0 -112
- data/examples/helper_method_spec.rb +0 -12
- data/lib/spec/expectations/have_helper.rb +0 -41
- data/lib/spec/expectations/helper.rb +0 -4
- data/lib/spec/expectations/should_base.rb +0 -52
- data/lib/spec/expectations/should_helper.rb +0 -93
- data/lib/spec/expectations/should_negator.rb +0 -71
- data/lib/spec/test_to_spec/ruby2ruby.rb +0 -492
- data/lib/spec/test_to_spec/sexp_transformer.rb +0 -196
- data/lib/spec/test_to_spec/test_case_ext.rb +0 -22
- data/lib/spec/test_to_spec/translation_test_runner.rb +0 -147
- data/test/spec/expectations/arbitrary_operator_test.rb +0 -55
- data/test/spec/expectations/arbitrary_predicate_test.rb +0 -163
- data/test/spec/expectations/containment_test.rb +0 -129
- data/test/spec/expectations/diff_test.rb +0 -62
- data/test/spec/expectations/identity_test.rb +0 -75
- data/test/spec/expectations/object_equality_test.rb +0 -65
- data/test/spec/expectations/raising_test.rb +0 -106
- data/test/spec/expectations/regex_matching_test.rb +0 -36
- data/test/spec/expectations/should_have_test.rb +0 -169
- data/test/spec/expectations/should_satisfy_test.rb +0 -37
- data/test/spec/expectations/sugar_test.rb +0 -93
- data/test/spec/expectations/supported_symbols_test.rb +0 -33
- data/test/spec/expectations/throwing_test.rb +0 -55
- data/test/spec/expectations/true_false_special_case_test.rb +0 -85
- data/test/spec/expectations/typing_test.rb +0 -108
- data/test/spec/mocks/mock_arg_constraints_test.rb +0 -113
- data/test/spec/mocks/mock_counts_test.rb +0 -431
- data/test/spec/mocks/mock_ordering_test.rb +0 -109
- data/test/spec/mocks/mock_test.rb +0 -220
- data/test/spec/mocks/null_object_test.rb +0 -37
- data/test/spec/runner/backtrace_tweaker_test.rb +0 -90
- data/test/spec/runner/context_matching_test.rb +0 -35
- data/test/spec/runner/context_runner_test.rb +0 -62
- data/test/spec/runner/context_test.rb +0 -191
- data/test/spec/runner/execution_context_test.rb +0 -45
- data/test/spec/runner/formatter/failure_dump_test.rb +0 -94
- data/test/spec/runner/formatter/html_formatter_test.rb +0 -48
- data/test/spec/runner/formatter/progress_bar_formatter_test.rb +0 -56
- data/test/spec/runner/formatter/rdoc_formatter_test.rb +0 -51
- data/test/spec/runner/formatter/specdoc_formatter_test.rb +0 -57
- data/test/spec/runner/kernel_ext_test.rb +0 -13
- data/test/spec/runner/option_parser_test.rb +0 -141
- data/test/spec/runner/reporter_test.rb +0 -128
- data/test/spec/runner/spec_matcher_test.rb +0 -47
- data/test/spec/runner/specification_test.rb +0 -121
- data/test/spec/test_to_spec/ruby_to_ruby_test.rb +0 -79
- data/test/spec/test_to_spec/sexp_transformer_assertion_test.rb +0 -207
- data/test/spec/test_to_spec/sexp_transformer_test.rb +0 -303
- data/test/spec/test_to_spec/test_case_ext_test.rb +0 -25
- data/test/spec/test_to_spec/testfiles/test_unit_api_spec.rb +0 -75
- data/test/spec/test_to_spec/testfiles/test_unit_api_test.rb +0 -70
- data/test/test_classes.rb +0 -102
- data/test/test_helper.rb +0 -32
data/CHANGES
CHANGED
@@ -1,10 +1,99 @@
|
|
1
1
|
= RSpec Changelog
|
2
2
|
|
3
|
+
== Version 0.7.0 (in SVN)
|
4
|
+
|
5
|
+
This is the "Grow up and eat your own dog food release". RSpec is now used on itself and
|
6
|
+
we're no longer using Test::Unit to test it. Although, we are still extending Test::Unit
|
7
|
+
for the rails plugin (indirectly - through ZenTest)
|
8
|
+
|
9
|
+
IMPORTANT NOTE: THIS RELEASE IS NOT 100% BACKWARDS COMPATIBLE TO 0.6.x
|
10
|
+
|
11
|
+
There are a few changes that will require that you change your existing specs.
|
12
|
+
|
13
|
+
--------------------------------------------------
|
14
|
+
RSpec now handles equality exactly like ruby does:
|
15
|
+
|
16
|
+
# actual.should_equal(expected) will pass if actual.equal?(expected) returns true
|
17
|
+
# actual.should_eql(expected) will pass if actual.eql?(expected) returns true
|
18
|
+
# actual.should == expected will pass if actual == expected) returns true
|
19
|
+
|
20
|
+
At the high level, eql? implies equivalence, while equal? implies object identity. For more
|
21
|
+
information on how ruby deals w/ equality, you should do this:
|
22
|
+
|
23
|
+
ri equal?
|
24
|
+
|
25
|
+
or look at this:
|
26
|
+
|
27
|
+
http://www.ruby-doc.org/core/classes/Object.html#M001057
|
28
|
+
|
29
|
+
Also, we left in should_be as a synonym for should_equal, so the only specs that should break are the
|
30
|
+
ones using should_equal (which used to use <code>==</code> instead of <code>.equal?</code>).
|
31
|
+
|
32
|
+
Lastly, should_be used to handle true and false differently from any other values. We've removed
|
33
|
+
this special handling, so now actual.should_be true will fail for any value other than true (it
|
34
|
+
used to pass for any non-nil, non-false value), and actual.should_be false will fail for any
|
35
|
+
value other than false (it used to pass for nil or false).
|
36
|
+
|
37
|
+
Here's what you'll need to do to update your specs:
|
38
|
+
* search for "should_equal" and replace with "should_eql"
|
39
|
+
* run specs
|
40
|
+
|
41
|
+
If any specs still fail, they are probably related to should_be(true) or should_be(false) using
|
42
|
+
non-boolean values. Those you'll just have to inspect manually and adjust appropriately (sorry!).
|
43
|
+
|
44
|
+
--------------------------------------------------
|
45
|
+
Specifying multiple return values in mocks now works like this:
|
46
|
+
|
47
|
+
mock.should_receive(:message).and_return(1,2,3)
|
48
|
+
|
49
|
+
It used to work like this:
|
50
|
+
|
51
|
+
mock.should_receive(:message).and_return([1,2,3])
|
52
|
+
|
53
|
+
but we decided that was counter intuitive and otherwise lame.
|
54
|
+
|
55
|
+
Here's what you'll need to do to update your specs:
|
56
|
+
* search for "and_return(["
|
57
|
+
* get rid of the "[" and "]"
|
58
|
+
|
59
|
+
--------------------------------------------------
|
60
|
+
RSpec on Rails now supports the following (thanks to ZenTest upon which it is built):
|
61
|
+
|
62
|
+
* Separate specs for models, views, controllers and helpers
|
63
|
+
* Controller specs are completely decoupled from the views by default (though you can tell them to couple themselves if you prefer)
|
64
|
+
* View specs are completely decoupled from app-specific controllers
|
65
|
+
|
66
|
+
See http://rspec.rubyforge.org/documentation/rails/index.html for more information
|
67
|
+
--------------------------------------------------
|
68
|
+
As usual, there are also other new features and bug fixes:
|
69
|
+
|
70
|
+
* Added lots of documentation on mocks/stubs and the rails plugin.
|
71
|
+
* Added support for assigns[key] syntax for controller specs (to align w/ pre-existing syntax for view specs)
|
72
|
+
* Added support for controller.should_redirect_to
|
73
|
+
* RSpec on Rails automatically checks whether it's compatible with the installed RSpec
|
74
|
+
* Applied [#6393] rspec_on_rails uses deprecated '@response' instead of the accessor
|
75
|
+
* RSpec now has 100% spec coverage(!)
|
76
|
+
* Added support for stubbing and partial mocking
|
77
|
+
* Progress (....F..F.) is now coloured. Tweaked patch from KAKUTANI Shintaro.
|
78
|
+
* Backtrace now excludes the rcov runner (/usr/local/bin/rcov)
|
79
|
+
* Fixed [#5539] predicates do not work w/ rails
|
80
|
+
* Added [#6091] support for Regexp matching messages sent to should_raise
|
81
|
+
* Added [#6333] support for Regexp matching in mock arguments
|
82
|
+
* Applied [#6283] refactoring of diff support to allow selectable formats and custom differs
|
83
|
+
* Fixed [#5564] "ruby spec_file.rb" doesn't work the same way as "spec spec_file.rb"
|
84
|
+
* Fixed [#6056] Multiple output of failing-spec notice
|
85
|
+
* Fixed [#6233] Colours in specdoc
|
86
|
+
* Applied [#6207] Allows --diff option to diff target and expected's #inspect output (Patch by Lachie Cox)
|
87
|
+
* Fixed [#6203] Failure messages are misleading - consider using inspect.
|
88
|
+
* Added [#6334] subject.should_have_xyz will try to call subject.has_xyz? - use this for hash.should_have_key(key)
|
89
|
+
* Fixed [#6017] Rake task should ignore empty or non-existent spec-dirs
|
90
|
+
|
3
91
|
== Version 0.6.4
|
4
92
|
|
5
93
|
In addition to a number of bug fixes and patches, this release begins to formalize the support for
|
6
94
|
RSpec on Rails.
|
7
95
|
|
96
|
+
* Added Christopher Petrilli's TextMate bundle to vendor/textmate/RSpec.tmbundle
|
8
97
|
* Fixed [#5909], once again supporting multi_word_predicates
|
9
98
|
* Applied [#5873] - response.should_have_rjs (initial patch from Jake Howerton, based on ARTS by Kevin Clark)
|
10
99
|
* Added generation of view specs for rspec_on_rails
|
@@ -75,7 +164,7 @@ This release improves Rails support and test2spec translation.
|
|
75
164
|
* Fixed underscore problems that occurred when RSpec was used in Rails
|
76
165
|
* Simplified the Rails support by packaging it as a plugin instead of a generator gem.
|
77
166
|
* Fixed [#5063] 'rspec_on_rails' require line in spec_helper.rb
|
78
|
-
* Added pre_commit rake task to reduce risk of regressions. Useful for
|
167
|
+
* Added pre_commit rake task to reduce risk of regressions. Useful for RSpec developers and patchers.
|
79
168
|
* Added failure_message to RSpec Rake task
|
80
169
|
* test2spec now defines converted helper methods outside of the setup block (bug #5057).
|
81
170
|
|
data/EXAMPLES.rd
CHANGED
@@ -1,11 +1,23 @@
|
|
1
1
|
# A FileAccessor
|
2
2
|
# * should open a file and pass it to the processor's process method
|
3
|
-
#
|
4
|
-
# * should
|
3
|
+
# a context with helper a method
|
4
|
+
# * should make that method available to specs
|
5
5
|
# An IoProcessor
|
6
6
|
# * should raise nothing when the file is exactly 32 bytes
|
7
7
|
# * should raise an exception when the file length is less than 32 bytes
|
8
|
-
# A
|
8
|
+
# A consumer of a mock
|
9
|
+
# * should be able to send messages to the mock
|
10
|
+
# a mock
|
11
|
+
# * should be able to mock the same message twice w/ different args
|
12
|
+
# * should be able to mock the same message twice w/ different args in reverse order
|
13
|
+
# A partial mock
|
14
|
+
# * should work at the class level
|
15
|
+
# * should revert to the original after each spec
|
16
|
+
# * can be mocked w/ ordering
|
17
|
+
# BDD framework
|
18
|
+
# * should be adopted quickly
|
19
|
+
# * should be intuitive
|
20
|
+
# A stack which is neither empty nor full
|
9
21
|
# * should add to the top when sent 'push'
|
10
22
|
# * should return the top item when sent 'peek'
|
11
23
|
# * should NOT remove the top item when sent 'peek'
|
@@ -28,7 +40,17 @@
|
|
28
40
|
# * should remain full after 'peek'
|
29
41
|
# * should no longer be full after 'pop'
|
30
42
|
# * should complain on 'push'
|
31
|
-
#
|
43
|
+
# A consumer of a stub
|
44
|
+
# * should be able to stub methods on any Object
|
45
|
+
# A stubbed method on a class
|
46
|
+
# * should return the stubbed value
|
47
|
+
# * should revert to the original method after each spec
|
48
|
+
# * can stub! and mock the same message
|
49
|
+
# A mock
|
50
|
+
# * can stub!
|
51
|
+
# * can stub! and mock
|
52
|
+
# * can stub! and mock the same message
|
53
|
+
# RSpec should integrate with Test::Unit::TestCase
|
32
54
|
# * TestCase#setup should be called.
|
33
|
-
# *
|
34
|
-
# *
|
55
|
+
# * RSpec should be able to access TestCase methods
|
56
|
+
# * RSpec should be able to accept included modules
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2005-2006 The RSpec Development Team
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README
CHANGED
@@ -1,15 +1,21 @@
|
|
1
|
-
|
1
|
+
== Building the RSpec gem ==
|
2
|
+
rake gem
|
3
|
+
gem install pkg/rspec-0.x.x.gem (you may have to sudo)
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
9
|
-
*
|
10
|
-
*
|
11
|
-
*
|
12
|
-
*
|
5
|
+
== Running the specs ==
|
6
|
+
In order to run RSpec's full suite of specs (rake pre_commit) you must install the following gems:
|
7
|
+
|
8
|
+
* rake # Runs the build script
|
9
|
+
* rcov # Verifies that the code is 100% covered by specs
|
10
|
+
* webgen # Generates the static HTML website
|
11
|
+
* RedCloth # Required by webgen
|
12
|
+
* syntax # Required by our own custom webgen extension to highlight ruby code
|
13
|
+
* diff-lcs # Required if you use the --diff switch
|
14
|
+
* win32console # Required by the --colour switch if you're on Windows
|
15
|
+
* meta_project # Required in order to make releases at RubyForge
|
16
|
+
* sqlite3-ruby # Required by RSpec on Rails specs
|
17
|
+
* ZenTest # Required by RSpec on Rails specs
|
18
|
+
* Rails # Required by RSpec on Rails specs
|
13
19
|
|
14
20
|
You must also install SQLite - which is needed to test the Rails plugin.
|
15
21
|
|
@@ -17,7 +23,7 @@ Note that RSpec itself - once built - doesn't have any dependencies outside the
|
|
17
23
|
and stdlib - with a few exceptions:
|
18
24
|
|
19
25
|
* The spec command line uses diff-lcs when --diff is specified.
|
20
|
-
* The test2spec command line uses ParseTree and RubyInline.
|
21
26
|
* The Spec::Rake::SpecTask needs RCov if RCov is enabled in the task.
|
27
|
+
* RSpec on Rails needs the ZenTest gem to be installed (and Rails and its dependencies of course)
|
22
28
|
|
23
29
|
See http://rspec.rubyforge.org for further documentation.
|
data/Rakefile
CHANGED
@@ -3,17 +3,15 @@ require 'rubygems'
|
|
3
3
|
require 'rake/gempackagetask'
|
4
4
|
require 'rake/contrib/rubyforgepublisher'
|
5
5
|
require 'rake/clean'
|
6
|
-
require 'rake/testtask'
|
7
6
|
require 'rake/rdoctask'
|
8
7
|
require 'spec/version'
|
9
|
-
require 'rcov/rcovtask'
|
10
8
|
|
11
9
|
# Some of the tasks are in separate files since they are also part of the website documentation
|
12
|
-
load File.dirname(__FILE__) + '/
|
13
|
-
load File.dirname(__FILE__) + '/
|
14
|
-
load File.dirname(__FILE__) + '/
|
15
|
-
load File.dirname(__FILE__) + '/
|
16
|
-
load File.dirname(__FILE__) + '/
|
10
|
+
load File.dirname(__FILE__) + '/tasks/examples.rake'
|
11
|
+
load File.dirname(__FILE__) + '/tasks/examples_specdoc.rake'
|
12
|
+
load File.dirname(__FILE__) + '/tasks/examples_with_rcov.rake'
|
13
|
+
load File.dirname(__FILE__) + '/tasks/failing_examples_with_html.rake'
|
14
|
+
load File.dirname(__FILE__) + '/tasks/verify_rcov.rake'
|
17
15
|
|
18
16
|
PKG_NAME = "rspec"
|
19
17
|
PKG_VERSION = Spec::VERSION::STRING
|
@@ -29,50 +27,22 @@ PKG_FILES = FileList[
|
|
29
27
|
'vendor/selenium/*.txt'
|
30
28
|
]
|
31
29
|
|
32
|
-
task :default => :
|
30
|
+
task :default => [:spec, :verify_rcov]
|
31
|
+
|
32
|
+
desc "Run all specs"
|
33
|
+
Spec::Rake::SpecTask.new do |t|
|
34
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
35
|
+
t.spec_opts = ['--diff','--color','--backtrace']
|
36
|
+
t.rcov = true
|
37
|
+
t.rcov_dir = 'doc/output/coverage'
|
38
|
+
t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec']
|
39
|
+
end
|
33
40
|
|
34
41
|
desc "Run all failing examples"
|
35
42
|
Spec::Rake::SpecTask.new('failing_examples') do |t|
|
36
43
|
t.spec_files = FileList['failing_examples/**/*_spec.rb']
|
37
44
|
end
|
38
45
|
|
39
|
-
require 'rbconfig'
|
40
|
-
windows = Config::CONFIG['target_os'] == 'mswin32'
|
41
|
-
Rake::TestTask.new do |t|
|
42
|
-
tests = FileList['test/**/*_test.rb']
|
43
|
-
tests.exclude 'test/spec/test_to_spec/*.rb' if windows
|
44
|
-
t.test_files = tests
|
45
|
-
t.verbose = true
|
46
|
-
# t.warning = true
|
47
|
-
end
|
48
|
-
|
49
|
-
Rcov::RcovTask.new do |t|
|
50
|
-
t.test_files = FileList['test/**/*_test.rb']
|
51
|
-
t.output_dir = 'doc/output/coverage'
|
52
|
-
t.rcov_opts = ['--text-report']
|
53
|
-
end
|
54
|
-
|
55
|
-
desc 'Translate our own tests to specs'
|
56
|
-
task :test2spec => :create_test2spec_dir do
|
57
|
-
rm_rf 'spec/translated'
|
58
|
-
`bin/test2spec --force --template spec/test2spec.erb --specdir spec/translated test`
|
59
|
-
# Remove the spec translations that we don't care about.
|
60
|
-
rm 'spec/translated/spec/test_to_spec/sexp_transformer_assertion_spec.rb'
|
61
|
-
rm 'spec/translated/spec/test_to_spec/sexp_transformer_spec.rb'
|
62
|
-
rm 'spec/translated/r2_r_spec.rb'
|
63
|
-
end
|
64
|
-
task :create_test2spec_dir do
|
65
|
-
mkdir_p 'doc/output/tools' unless File.exist? 'doc/output/tools'
|
66
|
-
end
|
67
|
-
|
68
|
-
desc 'Runs all RSpec specs - translated with test2spec from our own tests'
|
69
|
-
Spec::Rake::SpecTask.new('test2spec_test' => :test2spec) do |t|
|
70
|
-
t.spec_files = FileList['spec/**/*_spec.rb']
|
71
|
-
t.spec_opts = ["--format", "html", "--diff"]
|
72
|
-
t.out = 'doc/output/tools/rspec_specs.html'
|
73
|
-
t.failure_message = "**** Translated specs failed. See doc/output/tools/rspec_specs.html ****"
|
74
|
-
end
|
75
|
-
|
76
46
|
desc 'Verify that no warnings occur'
|
77
47
|
task :verify_warnings do
|
78
48
|
`ruby -w #{File.dirname(__FILE__) + '/bin/spec'} --help 2> warnings.txt`
|
@@ -82,7 +52,7 @@ task :verify_warnings do
|
|
82
52
|
end
|
83
53
|
|
84
54
|
desc 'Generate HTML documentation for website'
|
85
|
-
task :webgen
|
55
|
+
task :webgen do
|
86
56
|
Dir.chdir 'doc' do
|
87
57
|
output = nil
|
88
58
|
IO.popen('webgen 2>&1') do |io|
|
@@ -122,9 +92,9 @@ spec = Gem::Specification.new do |s|
|
|
122
92
|
s.require_path = 'lib'
|
123
93
|
s.autorequire = 'spec'
|
124
94
|
s.bindir = "bin"
|
125
|
-
s.executables = ["spec"
|
95
|
+
s.executables = ["spec"]
|
126
96
|
s.default_executable = "spec"
|
127
|
-
s.author = "Steven Baker, Aslak Hellesoy, Dave Astels, David Chelimsky"
|
97
|
+
s.author = ["Steven Baker", "Aslak Hellesoy", "Dave Astels", "David Chelimsky", "Brian Takita"]
|
128
98
|
s.email = "rspec-devel@rubyforge.org"
|
129
99
|
s.homepage = "http://rspec.rubyforge.org"
|
130
100
|
s.rubyforge_project = "rspec"
|
@@ -151,15 +121,44 @@ end
|
|
151
121
|
|
152
122
|
desc "Look for TODO and FIXME tags in the code"
|
153
123
|
task :todo do
|
154
|
-
egrep
|
124
|
+
egrep /(FIXME|TODO|TBD)/
|
155
125
|
end
|
156
126
|
|
157
127
|
task :clobber do
|
158
128
|
rm_rf 'doc/output'
|
159
|
-
rm_rf 'spec/translated'
|
160
129
|
end
|
161
130
|
|
162
|
-
|
131
|
+
desc "Touches files storing revisions so that svn will update $LastChangedRevision"
|
132
|
+
task :touch_revision_storing_files do
|
133
|
+
# See http://svnbook.red-bean.com/en/1.0/ch07s02.html - the section on svn:keywords
|
134
|
+
files = [
|
135
|
+
'lib/spec/version.rb',
|
136
|
+
'vendor/rspec_on_rails/vendor/plugins/rspec/lib/spec/rails/version.rb'
|
137
|
+
]
|
138
|
+
touch_needed = false
|
139
|
+
IO.popen('svn stat') do |io|
|
140
|
+
io.each_line do |line|
|
141
|
+
if line =~ /^M\s*(.*)/
|
142
|
+
touch_needed = !files.index($1)
|
143
|
+
break if touch_needed
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
if touch_needed
|
149
|
+
new_token = rand
|
150
|
+
files.each do |path|
|
151
|
+
abs_path = File.join(File.dirname(__FILE__), path)
|
152
|
+
content = File.open(abs_path).read
|
153
|
+
touched_content = content.gsub(/# RANDOM_TOKEN: (.*)\n/n, "# RANDOM_TOKEN: #{new_token}\n")
|
154
|
+
File.open(abs_path, 'w') do |io|
|
155
|
+
io.write touched_content
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
task :release => [:clobber, :verify_committed, :verify_user, :verify_password, :spec, :publish_packages, :tag, :publish_website, :publish_news]
|
163
162
|
|
164
163
|
desc "Verifies that there is no uncommitted code"
|
165
164
|
task :verify_committed do
|
@@ -178,7 +177,14 @@ task :tag do
|
|
178
177
|
end
|
179
178
|
|
180
179
|
desc "Run this task before you commit. You should see 'OK TO COMMIT'"
|
181
|
-
task :pre_commit => [
|
180
|
+
task :pre_commit => [
|
181
|
+
:touch_revision_storing_files,
|
182
|
+
:verify_warnings,
|
183
|
+
:website,
|
184
|
+
:examples,
|
185
|
+
:failing_examples_with_html,
|
186
|
+
:rails_pre_commit,
|
187
|
+
:commit_ok]
|
182
188
|
|
183
189
|
task :rails_pre_commit do
|
184
190
|
Dir.chdir 'vendor/rspec_on_rails' do
|
@@ -191,8 +197,8 @@ task :commit_ok do |t|
|
|
191
197
|
puts "OK TO COMMIT"
|
192
198
|
end
|
193
199
|
|
194
|
-
desc "Build the website
|
195
|
-
task :website => [:clobber, :
|
200
|
+
desc "Build the website, but do not publish it"
|
201
|
+
task :website => [:clobber, :verify_rcov, :webgen, :failing_examples_with_html, :spec, :examples_specdoc, :rdoc]
|
196
202
|
|
197
203
|
task :verify_user do
|
198
204
|
raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
|
@@ -5,18 +5,18 @@ require 'spec/runner/formatter/base_text_formatter'
|
|
5
5
|
# bin/spec failing_examples -r examples/custom_formatter.rb -f CustomFormatter
|
6
6
|
class CustomFormatter < Spec::Runner::Formatter::BaseTextFormatter
|
7
7
|
def add_context(name, first)
|
8
|
-
@output
|
8
|
+
@output.print "\n" if first
|
9
9
|
end
|
10
10
|
|
11
11
|
def spec_failed(name, counter, failure)
|
12
|
-
@output
|
12
|
+
@output.print 'X'
|
13
13
|
end
|
14
14
|
|
15
15
|
def spec_passed(name)
|
16
|
-
@output
|
16
|
+
@output.print '_'
|
17
17
|
end
|
18
18
|
|
19
19
|
def start_dump
|
20
|
-
@output
|
20
|
+
@output.print "\n"
|
21
21
|
end
|
22
22
|
end
|
data/examples/mocking_example.rb
CHANGED
@@ -1,11 +1,28 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../lib/spec'
|
2
2
|
|
3
3
|
context "A consumer of a mock" do
|
4
|
-
|
5
4
|
specify "should be able to send messages to the mock" do
|
6
5
|
mock = mock("poke me")
|
7
6
|
mock.should_receive(:poke)
|
8
7
|
mock.poke
|
9
8
|
end
|
9
|
+
end
|
10
|
+
|
11
|
+
context "a mock" do
|
12
|
+
specify "should be able to mock the same message twice w/ different args" do
|
13
|
+
mock = mock("mock")
|
14
|
+
mock.should_receive(:msg).with(:arg1).and_return(:val1)
|
15
|
+
mock.should_receive(:msg).with(:arg2).and_return(:val2)
|
16
|
+
mock.msg(:arg1).should_eql(:val1)
|
17
|
+
mock.msg(:arg2).should_eql(:val2)
|
18
|
+
end
|
10
19
|
|
11
|
-
|
20
|
+
specify "should be able to mock the same message twice w/ different args in reverse order" do
|
21
|
+
mock = mock("mock")
|
22
|
+
mock.should_receive(:msg).with(:arg1).and_return(:val1)
|
23
|
+
mock.should_receive(:msg).with(:arg2).and_return(:val2)
|
24
|
+
mock.msg(:arg2).should_eql(:val2)
|
25
|
+
mock.msg(:arg1).should_eql(:val1)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|