rspec 0.7.5.1 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (194) hide show
  1. data/CHANGES +60 -1
  2. data/EXAMPLES.rd +38 -19
  3. data/MIT-LICENSE +1 -1
  4. data/README +24 -17
  5. data/RELEASE-PLAN +117 -0
  6. data/Rakefile +24 -18
  7. data/TODO.0.8.0 +5 -0
  8. data/examples/auto_spec_name_generation_example.rb +18 -0
  9. data/examples/custom_expectation_matchers.rb +53 -0
  10. data/examples/dynamic_spec.rb +9 -0
  11. data/examples/io_processor_spec.rb +2 -2
  12. data/examples/mocking_example.rb +4 -4
  13. data/examples/partial_mock_example.rb +2 -2
  14. data/examples/predicate_example.rb +2 -2
  15. data/examples/stack_spec.rb +32 -36
  16. data/examples/stubbing_example.rb +19 -19
  17. data/examples/test_case_spec.rb +6 -6
  18. data/lib/spec.rb +3 -0
  19. data/lib/spec/callback.rb +8 -0
  20. data/lib/spec/callback/extensions/object.rb +4 -0
  21. data/lib/spec/deprecated.rb +3 -0
  22. data/lib/spec/expectations.rb +44 -17
  23. data/lib/spec/expectations/extensions.rb +1 -2
  24. data/lib/spec/expectations/extensions/object.rb +78 -130
  25. data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  26. data/lib/spec/expectations/handler.rb +47 -0
  27. data/lib/spec/expectations/should/base.rb +32 -29
  28. data/lib/spec/expectations/should/change.rb +1 -1
  29. data/lib/spec/expectations/should/have.rb +9 -17
  30. data/lib/spec/expectations/should/not.rb +54 -56
  31. data/lib/spec/expectations/should/should.rb +59 -65
  32. data/lib/spec/expectations/sugar.rb +27 -4
  33. data/lib/spec/matchers.rb +160 -0
  34. data/lib/spec/matchers/be.rb +161 -0
  35. data/lib/spec/matchers/be_close.rb +37 -0
  36. data/lib/spec/matchers/change.rb +120 -0
  37. data/lib/spec/matchers/eql.rb +43 -0
  38. data/lib/spec/matchers/equal.rb +43 -0
  39. data/lib/spec/matchers/has.rb +44 -0
  40. data/lib/spec/matchers/have.rb +140 -0
  41. data/lib/spec/matchers/include.rb +50 -0
  42. data/lib/spec/matchers/match.rb +41 -0
  43. data/lib/spec/matchers/raise_error.rb +100 -0
  44. data/lib/spec/matchers/respond_to.rb +35 -0
  45. data/lib/spec/matchers/satisfy.rb +47 -0
  46. data/lib/spec/matchers/throw_symbol.rb +75 -0
  47. data/lib/spec/mocks.rb +224 -1
  48. data/lib/spec/mocks/argument_expectation.rb +16 -2
  49. data/lib/spec/mocks/error_generator.rb +5 -3
  50. data/lib/spec/mocks/errors.rb +2 -2
  51. data/lib/spec/mocks/extensions/object.rb +1 -1
  52. data/lib/spec/mocks/message_expectation.rb +29 -19
  53. data/lib/spec/mocks/{mock_methods.rb → methods.rb} +5 -5
  54. data/lib/spec/mocks/mock.rb +2 -2
  55. data/lib/spec/mocks/mock_handler.rb +81 -68
  56. data/lib/spec/rake/spectask.rb +7 -12
  57. data/lib/spec/rake/verify_rcov.rb +1 -1
  58. data/lib/spec/runner.rb +117 -0
  59. data/lib/spec/runner/command_line.rb +8 -5
  60. data/lib/spec/runner/context.rb +13 -37
  61. data/lib/spec/runner/context_eval.rb +4 -3
  62. data/lib/spec/runner/context_runner.rb +7 -4
  63. data/lib/spec/runner/drb_command_line.rb +1 -1
  64. data/lib/spec/runner/execution_context.rb +3 -11
  65. data/lib/spec/runner/extensions/kernel.rb +7 -5
  66. data/lib/spec/runner/extensions/object.rb +4 -1
  67. data/lib/spec/runner/formatter/base_text_formatter.rb +11 -3
  68. data/lib/spec/runner/formatter/html_formatter.rb +21 -10
  69. data/lib/spec/runner/heckle_runner.rb +24 -8
  70. data/lib/spec/runner/heckle_runner_win.rb +10 -0
  71. data/lib/spec/runner/option_parser.rb +58 -13
  72. data/lib/spec/runner/spec_matcher.rb +22 -29
  73. data/lib/spec/runner/spec_parser.rb +1 -0
  74. data/lib/spec/runner/specification.rb +36 -22
  75. data/lib/spec/translator.rb +87 -0
  76. data/lib/spec/version.rb +16 -7
  77. data/spec/spec/callback/callback_container_spec.rb +27 -0
  78. data/spec/spec/callback/module_spec.rb +37 -0
  79. data/spec/spec/callback/object_spec.rb +90 -0
  80. data/spec/spec/callback/object_with_class_callback_spec.rb +19 -0
  81. data/spec/spec/expectations/differs/default_spec.rb +107 -0
  82. data/spec/spec/expectations/extensions/object_spec.rb +46 -0
  83. data/spec/spec/expectations/fail_with_spec.rb +71 -0
  84. data/spec/spec/expectations/should/should_==_spec.rb +19 -0
  85. data/spec/spec/expectations/should/should_=~_spec.rb +13 -0
  86. data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +21 -0
  87. data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +30 -0
  88. data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +81 -0
  89. data/spec/spec/expectations/should/should_be_close_spec.rb +18 -0
  90. data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +44 -0
  91. data/spec/spec/expectations/should/should_be_false_spec.rb +39 -0
  92. data/spec/spec/expectations/should/should_be_spec.rb +11 -0
  93. data/spec/spec/expectations/should/should_be_true_spec.rb +27 -0
  94. data/spec/spec/expectations/should/should_change_spec.rb +184 -0
  95. data/spec/spec/expectations/should/should_eql_spec.rb +11 -0
  96. data/spec/spec/expectations/should/should_equal_spec.rb +11 -0
  97. data/spec/spec/expectations/should/should_have_at_least_spec.rb +53 -0
  98. data/spec/spec/expectations/should/should_have_at_most_spec.rb +45 -0
  99. data/spec/spec/expectations/should/should_have_key_spec.rb +21 -0
  100. data/spec/spec/expectations/should/should_have_spec.rb +64 -0
  101. data/spec/spec/expectations/should/should_include_spec.rb +59 -0
  102. data/spec/spec/expectations/should/should_match_spec.rb +25 -0
  103. data/spec/spec/expectations/should/should_not_==_spec.rb +15 -0
  104. data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +21 -0
  105. data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +11 -0
  106. data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +68 -0
  107. data/spec/spec/expectations/should/should_not_be_spec.rb +11 -0
  108. data/spec/spec/expectations/should/should_not_change_spec.rb +24 -0
  109. data/spec/spec/expectations/should/should_not_eql_spec.rb +11 -0
  110. data/spec/spec/expectations/should/should_not_equal_spec.rb +11 -0
  111. data/spec/spec/expectations/should/should_not_have_key_spec.rb +15 -0
  112. data/spec/spec/expectations/should/should_not_include_spec.rb +58 -0
  113. data/spec/spec/expectations/should/should_not_match_spec.rb +11 -0
  114. data/spec/spec/expectations/should/should_not_raise_spec.rb +75 -0
  115. data/spec/spec/expectations/should/should_not_respond_to_spec.rb +15 -0
  116. data/spec/spec/expectations/should/should_not_throw_spec.rb +35 -0
  117. data/spec/spec/expectations/should/should_raise_spec.rb +66 -0
  118. data/spec/spec/expectations/should/should_respond_to_spec.rb +15 -0
  119. data/spec/spec/expectations/should/should_satisfy_spec.rb +35 -0
  120. data/spec/spec/expectations/should/should_throw_spec.rb +27 -0
  121. data/spec/spec/matchers/be_close_spec.rb +33 -0
  122. data/spec/spec/matchers/be_spec.rb +182 -0
  123. data/spec/spec/matchers/change_spec.rb +232 -0
  124. data/spec/spec/matchers/description_generation_spec.rb +147 -0
  125. data/spec/spec/matchers/eql_spec.rb +41 -0
  126. data/spec/spec/matchers/equal_spec.rb +41 -0
  127. data/spec/spec/matchers/handler_spec.rb +75 -0
  128. data/spec/spec/matchers/has_spec.rb +37 -0
  129. data/spec/spec/matchers/have_spec.rb +259 -0
  130. data/spec/spec/matchers/include_spec.rb +33 -0
  131. data/spec/spec/matchers/match_spec.rb +37 -0
  132. data/spec/spec/matchers/matcher_methods_spec.rb +85 -0
  133. data/spec/spec/matchers/raise_error_spec.rb +147 -0
  134. data/spec/spec/matchers/respond_to_spec.rb +30 -0
  135. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  136. data/spec/spec/matchers/throw_symbol_spec.rb +59 -0
  137. data/spec/spec/mocks/any_number_of_times_spec.rb +34 -0
  138. data/spec/spec/mocks/at_least_spec.rb +97 -0
  139. data/spec/spec/mocks/at_most_spec.rb +97 -0
  140. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  141. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  142. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  143. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  144. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +74 -0
  145. data/spec/spec/mocks/mock_ordering_spec.rb +80 -0
  146. data/spec/spec/mocks/mock_spec.rb +407 -0
  147. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  148. data/spec/spec/mocks/null_object_mock_spec.rb +40 -0
  149. data/spec/spec/mocks/once_counts_spec.rb +56 -0
  150. data/spec/spec/mocks/options_hash_spec.rb +31 -0
  151. data/spec/spec/mocks/partial_mock_spec.rb +52 -0
  152. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +64 -0
  153. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +92 -0
  154. data/spec/spec/mocks/precise_counts_spec.rb +56 -0
  155. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  156. data/spec/spec/mocks/stub_spec.rb +159 -0
  157. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  158. data/spec/spec/runner/command_line_spec.rb +32 -0
  159. data/spec/spec/runner/context_matching_spec.rb +28 -0
  160. data/spec/spec/runner/context_runner_spec.rb +100 -0
  161. data/spec/spec/runner/context_spec.rb +405 -0
  162. data/spec/spec/runner/drb_command_line_spec.rb +74 -0
  163. data/spec/spec/runner/execution_context_spec.rb +52 -0
  164. data/spec/spec/runner/formatter/html_formatter_spec.rb +40 -0
  165. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
  166. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +36 -0
  167. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +78 -0
  168. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +18 -0
  169. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +41 -0
  170. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
  171. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +46 -0
  172. data/spec/spec/runner/heckle_runner_spec.rb +63 -0
  173. data/spec/spec/runner/heckler_spec.rb +14 -0
  174. data/spec/spec/runner/kernel_ext_spec.rb +16 -0
  175. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  176. data/spec/spec/runner/object_ext_spec.rb +11 -0
  177. data/spec/spec/runner/option_parser_spec.rb +269 -0
  178. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +47 -0
  179. data/spec/spec/runner/reporter_spec.rb +126 -0
  180. data/spec/spec/runner/spec_matcher_spec.rb +107 -0
  181. data/spec/spec/runner/spec_name_generation_spec.rb +102 -0
  182. data/spec/spec/runner/spec_parser_spec.rb +37 -0
  183. data/spec/spec/runner/specification_class_spec.rb +72 -0
  184. data/spec/spec/runner/specification_instance_spec.rb +160 -0
  185. data/spec/spec/runner/specification_should_raise_spec.rb +136 -0
  186. data/spec/spec/spec_classes.rb +102 -0
  187. data/spec/spec/translator_spec.rb +79 -0
  188. data/spec/spec_helper.rb +35 -0
  189. metadata +141 -9
  190. data/bin/drbspec +0 -3
  191. data/lib/spec/expectations/diff.rb +0 -28
  192. data/lib/spec/expectations/extensions/numeric.rb +0 -19
  193. data/lib/spec/expectations/extensions/string.rb +0 -22
  194. data/lib/spec/expectations/message_builder.rb +0 -13
data/CHANGES CHANGED
@@ -1,11 +1,70 @@
1
1
  = RSpec Changelog
2
2
 
3
+ == Version 0.8.0
4
+
5
+ This release introduces a new approach to handling expectations using Expression Matchers.
6
+
7
+ See Upgrade[http://rspec.rubyforge.org/upgrade.html], Spec::Expectations, Spec::Matchers and RELEASE-PLAN for more info.
8
+
9
+ This release also improves the spec command line by adding DRb support and making it possible to
10
+ store command line options in a file. This means a more flexible RSpec experience with Rails,
11
+ Rake and editor plugins like TextMate.
12
+
13
+ It also sports myriad new features, bug fixes, patches and general goodness:
14
+
15
+ * Fixed [#8928] rspec_on_rails 0.8.0-RC1 controller tests make double call to setup_with_fixtures
16
+ * Fixed [#8925] Documentation bug in 0.8.0RC1 rspec website
17
+ * Applied [#8132] [PATCH] RSpec breaks "rake db:sessions:create" in a rails project that has the rspec_on_rails plugin (Patch from Erik Kastner)
18
+ * Fixed [#8789] --line and --spec not working when the context has parenhesis in the name
19
+ * Added [#8783] auto generate spec names from last expectation
20
+ * --heckle now fails if the heckled class or module is not found.
21
+ * Fixed [#8771] Spec::Mocks::BaseExpectation#with converts hash params to array of arrays with #collect
22
+ * Fixed [#8750] should[_not]_include backwards compatibility between 0.8.0-RC1 and 0.7.5.1 broken
23
+ * Fixed [#8646] Context Runner does not report on Non standard exceptions and return a 0 return code
24
+ * RSpec on Rails' spec_helper.rb will only force RAILS_ENV to test if it was not specified on the command line.
25
+ * Fixed [#5485] proc#should_raise and proc#should_not_raise output
26
+ * Added [#8484] should_receive with blocks
27
+ * Applied [#8218] heckle_runner.rb doesn't work with heckle >= 1.2.0 (Patch from Michal Kwiatkowski)
28
+ * Fixed [#8240] Cryptic error message when no controller_name
29
+ * Applied [#7461] [PATCH] Contexts don't call Module::included when they include a module
30
+ * Removed unintended block of test/unit assertions in rspec_on_rails - they should all, in theory, now be accessible
31
+ * Added mock_model method to RSpec on Rails, which stubs common methods. Based on http://metaclass.org/2006/12/22/making-a-mockery-of-activerecord
32
+ * Fixed [#8165] Partial Mock Errors when respond_to? is true but the method is not in the object
33
+ * Fixed [#7611] Partial Mocks override Subclass methods
34
+ * Fixed [#8302] Strange side effect when mocking a class method
35
+ * Applied [#8316] to_param should return a stringified key in resource generator's controller spec (Patch from Chris Anderson)
36
+ * Applied [#8216] shortcut for creating object stub
37
+ * Applied [#8008] Correct generated specs for view when calling resource generator (Patch from Jonathan Tron)
38
+ * Fixed [#7754] Command-R fails to run spec in TextMate (added instruction from Luke Redpath to the website)
39
+ * Fixed [#7826] RSpect.tmbundle web page out of date.
40
+ * RSpec on Rails specs are now running against RoR 1.2.1 and 1.2.2
41
+ * rspec_resource now generates specs for views (TODO: make them use the new assert_select, when it's documented)
42
+ * In a Rails app, RSpec core is only loaded when RAILS_ENV==test (init.rb)
43
+ * Added support for target.should arbitrary_expectation_handler and target.should_not arbitrary_expectation_handler
44
+ * Fixed [#7533] Spec suite fails and the process exits with a code 0
45
+ * Fixed [#7565] Subsequent stub! calls for method fail to override the first call to method
46
+ * Applied [#7524] Incorrect Documentation for 'pattern' in Rake task (patch from Stephen Duncan)
47
+ * Fixed [#7409] default fixtures do not appear to run.
48
+ * Fixed [#7507] "render..and return" doesn't return
49
+ * Fixed [#7509] rcov/rspec incorrectly includes boot.rb (Patch from Courtenay)
50
+ * Fixed [#7506] unnecessary complex output on failure of response.should_be_redirect
51
+ * Applied [#6098] Make scaffold_resource generator. Based on code from Pat Maddox.
52
+ * The drbspec command is gone. Use spec --drb instead.
53
+ * The drb option is gone from the Rake task. Pass --drb to spec_opts instead.
54
+ * New -X/--drb option for running specs against a server like spec/rails' script/rails_spec_server
55
+ * New -O/--options and -G/--generate flags for file-based options (handy for spec/rails)
56
+ * Applied [#7339] Turn off caching in HTML reports
57
+ * Applied [#7419] "c option for colorizing output does not work with rails_spec" (Patch from Shintaro Kakutani)
58
+ * Applied [#7406] [PATCH] 0.7.5 rspec_on_rails loads fixtures into development database (Patch from Wilson Bilkovich)
59
+ * Applied [#7387] Allow stubs to return consecutive values (Patch from Pat Maddox)
60
+ * Applied [#7393] Fix for rake task (Patch from Pat Maddox)
61
+ * Reinstated support for response.should_render (in addition to controller.should_render)
62
+
3
63
  == Version 0.7.5.1
4
64
 
5
65
  Bug fix release to allow downloads of rspec gem using rubygems 0.9.1.
6
66
 
7
67
  == Version 0.7.5
8
-
9
68
  This release adds support for Heckle - Seattle'rb's code mutation tool.
10
69
  There are also several bug fixes to the RSpec core and the RSpec on Rails plugin.
11
70
 
@@ -1,3 +1,22 @@
1
+ # specs with no names
2
+ # * NAME NOT GENERATED
3
+ # * NAME NOT GENERATED
4
+ # * NAME NOT GENERATED
5
+ # * NAME NOT GENERATED
6
+ # A mouse
7
+ # * should eat cheese
8
+ # * should not eat cat
9
+ # The month march
10
+ # * The root of 1 square should be 1
11
+ # * The root of 2 square should be 2
12
+ # * The root of 3 square should be 3
13
+ # * The root of 4 square should be 4
14
+ # * The root of 5 square should be 5
15
+ # * The root of 6 square should be 6
16
+ # * The root of 7 square should be 7
17
+ # * The root of 8 square should be 8
18
+ # * The root of 9 square should be 9
19
+ # * The root of 10 square should be 10
1
20
  # A FileAccessor
2
21
  # * should open a file and pass it to the processor's process method
3
22
  # Greeter
@@ -23,29 +42,29 @@
23
42
  # State created in context_setup
24
43
  # * should be accessible from spec
25
44
  # * should not have sideffects
26
- # A stack which is neither empty nor full
27
- # * should add to the top when sent 'push'
28
- # * should return the top item when sent 'peek'
29
- # * should NOT remove the top item when sent 'peek'
30
- # * should return the top item when sent 'pop'
31
- # * should remove the top item when sent 'pop'
45
+ # A Stack
46
+ # * should add to the top when sent #push
47
+ # * should return the top item when sent #peek
48
+ # * should NOT remove the top item when sent #peek
49
+ # * should return the top item when sent #pop
50
+ # * should remove the top item when sent #pop
32
51
  # An empty stack
33
- # * should be empty
34
- # * should no longer be empty after 'push'
35
- # * should complain when sent 'peek'
36
- # * should complain when sent 'pop'
52
+ # * NAME NOT GENERATED
53
+ # * should no longer be empty after #push
54
+ # * should complain when sent #peek
55
+ # * should complain when sent #pop
37
56
  # An almost empty stack (with one item)
38
- # * should not be empty
39
- # * should remain not empty after 'peek'
40
- # * should become empty after 'pop'
57
+ # * NAME NOT GENERATED
58
+ # * should remain not empty after #peek
59
+ # * should become empty after #pop
41
60
  # An almost full stack (with one item less than capacity)
42
- # * should not be full
43
- # * should become full when sent 'push'
61
+ # * NAME NOT GENERATED
62
+ # * should become full when sent #push
44
63
  # A full stack
45
- # * should be full
46
- # * should remain full after 'peek'
47
- # * should no longer be full after 'pop'
48
- # * should complain on 'push'
64
+ # * NAME NOT GENERATED
65
+ # * should remain full after #peek
66
+ # * should no longer be full after #pop
67
+ # * should complain on #push
49
68
  # A consumer of a stub
50
69
  # * should be able to stub methods on any Object
51
70
  # A stubbed method on a class
@@ -1,4 +1,4 @@
1
- Copyright (c) 2005-2006 The RSpec Development Team
1
+ Copyright (c) 2005-2007 The RSpec Development Team
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README CHANGED
@@ -1,30 +1,38 @@
1
1
  == RSpec
2
2
 
3
- RSpec is a framework for developing ruby applications using Behaviour Driven Development.
3
+ RSpec is a Behaviour Definition Framework intended for use in Behaviour
4
+ Driven Development. RSpec plays the same role that a unit testing framework
5
+ would play in a Test Driven Development environment, but does so using
6
+ words and structures that better support BDD.
4
7
 
5
- == Expectations
8
+ RSpec ships with four modules:
6
9
 
7
- RSpec adds expectation methods to every object, with specific types of expectations
8
- set on specific classes. For example ...
10
+ Spec::Matchers provides Expression Matchers for use with Spec::Expectations
11
+ and Spec::Mocks.
9
12
 
10
- <code>
11
- @message = "some message"
12
- @message.should == "some message"
13
- </code>
13
+ Spec::Expectations supports setting expectations on your objects so you
14
+ can do things like:
14
15
 
15
- ... will be available on every object, whereas ...
16
+ result.should equal(expected_result)
17
+
18
+ Spec::Mocks supports creating Mock Objects, Stubs, and adding Mock/Stub
19
+ behaviour to your existing objects.
16
20
 
17
- <code>
18
- proc { @number = @number + 1 }.should_change{ @number }.by(1)
19
- </code>
21
+ Spec::Runner provides a very small but powerful DSL for writing executable
22
+ specifications.
20
23
 
21
- ... will only be available for proc objects.
24
+ == Installation
22
25
 
23
- See Spec::Expectations for details on the different expectations you can set.
26
+ The simplest approach is to install the gem:
27
+
28
+ gem install -r rspec #mac users must sudo
24
29
 
25
30
  == Building the RSpec gem
26
- rake gem
27
- gem install pkg/rspec-0.x.x.gem (you may have to sudo)
31
+ If you prefer to build the gem locally, check out source from svn://rubyforge.org/var/svn/rspec/trunk. Then
32
+ do the following:
33
+
34
+ rake gem
35
+ gem install pkg/rspec-0.x.x.gem (you may have to sudo)
28
36
 
29
37
  == Running the specs ==
30
38
  In order to run RSpec's full suite of specs (rake pre_commit) you must install the following gems:
@@ -45,6 +53,5 @@ and stdlib - with a few exceptions:
45
53
  * The spec command line uses diff-lcs when --diff is specified.
46
54
  * The spec command line uses heckle when --heckle is specified.
47
55
  * The Spec::Rake::SpecTask needs RCov if RCov is enabled in the task.
48
- * RSpec on Rails needs the ZenTest gem to be installed (and Rails and its dependencies of course)
49
56
 
50
57
  See http://rspec.rubyforge.org for further documentation.
@@ -0,0 +1,117 @@
1
+ Beginning with 0.8.0, RSpec is moving towards a new syntax using Expression Matchers
2
+ instead of adding expectations directly to Object. We'll still be adding a few methods
3
+ to Object, but it will be much less invasive, and will eliminate conflicts with
4
+ other tools and frameworks that utilize method_missing to perform magic.
5
+
6
+ For more information on Expression Matchers, see the rdoc for Spec::Matchers
7
+
8
+ Our plan is as follows:
9
+
10
+ * release 0.8.0 with:
11
+ - full support for Expression Matchers
12
+ - a translation tool that will convert the majority of your specs from the old syntax to the new syntax
13
+ - deprecation warnings for all of the old methods that will be removed
14
+ * release 0.9.0 with all of the old methods removed
15
+
16
+ Everything that is listed below is already supported and usable right now.
17
+
18
+ == General: should_xyz
19
+
20
+ #before
21
+ actual.should_xyz expected
22
+ actual.should_not_xyz expected
23
+
24
+ #after
25
+ actual.should xyz(expected)
26
+ actual.should_not xyz(expected)
27
+
28
+ This change applies to all of these as well:
29
+
30
+ should_equal
31
+ should_eql
32
+ should_be_close
33
+ should_include
34
+ should_match
35
+ should_satisfy
36
+
37
+ == should_be
38
+
39
+ #before
40
+ result.should_be true
41
+ result.should_be false
42
+ result.should_be nil
43
+ result.should_not_be nil
44
+
45
+ #after
46
+ result.should be(true)
47
+ result.should be(false)
48
+ result.should be(nil)
49
+ result.should_not be(true)
50
+
51
+ == should_be with arbitrary predicates
52
+
53
+ #before
54
+ true.should_be_arbitrary_predicate
55
+ true.should_be_a_arbitrary_predicate
56
+ true.should_be_an_arbitrary_predicate
57
+
58
+ #after
59
+ true.should be_arbitrary_predicate
60
+ true.should be_a_arbitrary_predicate
61
+ true.should be_an_arbitrary_predicate
62
+
63
+ == should_be with comparison operators
64
+
65
+ #before
66
+ 5.should_be > 3
67
+ 4.should_be >= 4
68
+ 4.should_be <= 4
69
+ 4.should_be < 4
70
+
71
+ #before
72
+ 5.should be > 3
73
+ 4.should be >= 4
74
+ 4.should be <= 4
75
+ 4.should be < 4
76
+
77
+ == should ==
78
+
79
+ #before
80
+ actual.should == expected
81
+ actual.should_not == expected
82
+
83
+ #after - exactly the same
84
+ actual.should == expected
85
+ actual.should_not == expected
86
+
87
+ == should =~
88
+
89
+ #before
90
+ actual.should =~ regexp
91
+ actual.should_not =~ regexp
92
+
93
+ #after - exactly the same
94
+ actual.should =~ regexp
95
+ actual.should_not =~ regexp
96
+
97
+ == should_have
98
+
99
+ #before
100
+ team.should_have(3).players
101
+ hash.should_have_key(:a)
102
+
103
+ #after
104
+ team.should have(3).players
105
+ hash.should have_key(:a)
106
+
107
+ == should_change
108
+
109
+ #before
110
+ proc.should_change(:target, message)
111
+ proc.should_change(:target, message).by(1)
112
+ proc.should_change(:target, message).from("a").to("b")
113
+
114
+ proc.should change(:target, message)
115
+ proc.should change(:target, message).by(1)
116
+ proc.should change(:target, message).from("a").to("b")
117
+
data/Rakefile CHANGED
@@ -7,11 +7,11 @@ require 'rake/rdoctask'
7
7
  require 'spec/version'
8
8
 
9
9
  # Some of the tasks are in separate files since they are also part of the website documentation
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'
10
+ load File.dirname(__FILE__) + '/rake_tasks/examples.rake'
11
+ load File.dirname(__FILE__) + '/rake_tasks/examples_specdoc.rake'
12
+ load File.dirname(__FILE__) + '/rake_tasks/examples_with_rcov.rake'
13
+ load File.dirname(__FILE__) + '/rake_tasks/failing_examples_with_html.rake'
14
+ load File.dirname(__FILE__) + '/rake_tasks/verify_rcov.rake'
15
15
 
16
16
  PKG_NAME = "rspec"
17
17
  PKG_VERSION = Spec::VERSION::STRING
@@ -19,28 +19,25 @@ PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
19
19
  PKG_FILES = FileList[
20
20
  '[A-Z]*',
21
21
  'lib/**/*.rb',
22
- 'test/**/*.rb',
23
- 'examples/**/*',
24
- File.dirname(__FILE__) + '../web_spec/**/*.rb',
25
- File.dirname(__FILE__) + '../web_spec/**/*.txt',
26
- File.dirname(__FILE__) + '../web_spec/**/*.patch'
22
+ 'spec/**/*.rb',
23
+ 'examples/**/*'
27
24
  ]
28
25
 
29
26
  task :default => [:spec, :verify_rcov]
30
27
 
31
28
  desc "Run all specs"
32
29
  Spec::Rake::SpecTask.new do |t|
33
- t.spec_files = FileList['spec/**/*_spec.rb', 'vendor/RSpec.tmbundle/Support/spec/*_spec.rb']
30
+ t.spec_files = FileList['spec/**/*_spec.rb', '../RSpec.tmbundle/Support/spec/*_spec.rb']
34
31
  t.spec_opts = ['--color','--backtrace']
35
32
  t.rcov = true
36
33
  t.rcov_dir = '../doc/output/coverage'
37
- t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,bin\/drbspec,examples']
34
+ t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
38
35
  end
39
36
 
40
37
  desc "Run all specs and store html output in doc/output/report.html"
41
38
  Spec::Rake::SpecTask.new('spec_html') do |t|
42
39
  t.spec_files = FileList['spec/**/*_spec.rb', 'vendor/RSpec.tmbundle/Support/spec/*_spec.rb']
43
- t.spec_opts = ['--diff','--format html','--backtrace','--out ../doc/output/report.html']
40
+ t.spec_opts = ['--format html','--backtrace','--out ../doc/output/report.html']
44
41
  end
45
42
 
46
43
  desc "Run all failing examples"
@@ -65,15 +62,16 @@ task :webgen do
65
62
  end
66
63
  raise "ERROR while running webgen: #{output}" if output =~ /ERROR/n || $? != 0
67
64
  end
68
- spec_page = File.open(File.dirname(__FILE__) + '/../doc/output/tools/spec.html').read
69
- raise "It seems like the output in the generated documentation is broken" unless spec_page =~/\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\./m
65
+ spec_page = File.expand_path(File.dirname(__FILE__) + '/../doc/output/tools/spec.html')
66
+ spec_page_content = File.open(spec_page).read
67
+ raise "#{'!'*400}\nIt seems like the output in the generated documentation is broken (no dots: ......)\n. Look in #{spec_page}" unless spec_page_content =~/\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\./m
70
68
  end
71
69
 
72
70
  desc 'Generate RDoc'
73
71
  rd = Rake::RDocTask.new do |rdoc|
74
72
  rdoc.rdoc_dir = '../doc/output/rdoc'
75
73
  rdoc.options << '--title' << 'RSpec' << '--line-numbers' << '--inline-source' << '--main' << 'README'
76
- rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'EXAMPLES.rd', 'lib/**/*.rb')
74
+ rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'EXAMPLES.rd', 'RELEASE-PLAN', 'lib/**/*.rb')
77
75
  end
78
76
  task :rdoc => :examples_specdoc # We generate EXAMPLES.rd
79
77
 
@@ -97,7 +95,7 @@ spec = Gem::Specification.new do |s|
97
95
 
98
96
  s.autorequire = 'spec'
99
97
  s.bindir = 'bin'
100
- s.executables = ['spec', 'drbspec']
98
+ s.executables = ['spec']
101
99
  s.default_executable = 'spec'
102
100
  s.author = ["RSpec Development Team"]
103
101
  s.email = "rspec-devel@rubyforge.org"
@@ -131,6 +129,7 @@ end
131
129
 
132
130
  task :clobber do
133
131
  rm_rf '../doc/output'
132
+ rm_rf 'translated_specs'
134
133
  end
135
134
 
136
135
  task :release => [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_website, :publish_news]
@@ -160,7 +159,14 @@ task :pre_commit => [
160
159
  ]
161
160
 
162
161
  desc "Build the website, but do not publish it"
163
- task :website => [:clobber, :verify_rcov, :spec_html, :webgen, :failing_examples_with_html, :examples_specdoc, :rdoc]
162
+ task :website => [:clobber, :verify_rcov, :spec_html, :webgen, :failing_examples_with_html, :examples_specdoc, :rdoc, :rdoc_rails]
163
+
164
+ task :rdoc_rails do
165
+ Dir.chdir '../rspec_on_rails/vendor/plugins/rspec_on_rails' do
166
+ rake = (PLATFORM == "i386-mswin32") ? "rake.cmd" : "rake"
167
+ `#{rake} rdoc`
168
+ end
169
+ end
164
170
 
165
171
  task :verify_user do
166
172
  raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
@@ -0,0 +1,5 @@
1
+ See ~/rspec_on_rails/TODO.0.8.0 for issues related to the rails plugin.
2
+
3
+ Here's what remains to do everywhere else before the 0.8.0 release:
4
+
5
+ NOTHING
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ # Run spec w/ -fs to see the output of this file
4
+
5
+ context "specs with no names" do
6
+
7
+ # spec name is auto-generated as "should equal(5)"
8
+ specify do
9
+ 3.should equal(3)
10
+ 5.should equal(5)
11
+ end
12
+
13
+ specify { 3.should be < 5 }
14
+
15
+ specify { ["a"].should include("a") }
16
+
17
+ specify { [1,2,3].should respond_to(:size) }
18
+ end