rspec 0.7.5.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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