rspec 1.1.3 → 1.1.4

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 (122) hide show
  1. data/CHANGES +35 -0
  2. data/MIT-LICENSE +1 -1
  3. data/README +9 -44
  4. data/Rakefile +34 -51
  5. data/TODO +0 -1
  6. data/UPGRADE +0 -24
  7. data/bin/spec +0 -0
  8. data/bin/spec_translator +0 -0
  9. data/examples/pure/behave_as_example.rb +0 -0
  10. data/examples/pure/partial_mock_example.rb +1 -0
  11. data/examples/stories/calculator.rb +1 -1
  12. data/lib/autotest/rspec.rb +7 -9
  13. data/lib/spec/example.rb +1 -1
  14. data/lib/spec/example/configuration.rb +30 -16
  15. data/lib/spec/example/example_group.rb +2 -1
  16. data/lib/spec/example/example_group_factory.rb +23 -21
  17. data/lib/spec/example/example_group_methods.rb +18 -5
  18. data/lib/spec/example/example_matcher.rb +0 -0
  19. data/lib/spec/example/example_methods.rb +6 -0
  20. data/lib/spec/example/module_inclusion_warnings.rb +37 -0
  21. data/lib/spec/expectations/differs/default.rb +1 -1
  22. data/lib/spec/expectations/extensions/object.rb +4 -12
  23. data/lib/spec/expectations/handler.rb +8 -0
  24. data/lib/spec/extensions.rb +1 -0
  25. data/lib/spec/extensions/metaclass.rb +7 -0
  26. data/lib/spec/extensions/object.rb +0 -4
  27. data/lib/spec/matchers/change.rb +1 -1
  28. data/lib/spec/matchers/has.rb +1 -11
  29. data/lib/spec/matchers/operator_matcher.rb +0 -0
  30. data/lib/spec/matchers/raise_error.rb +53 -30
  31. data/lib/spec/mocks.rb +1 -1
  32. data/lib/spec/mocks/argument_constraint_matchers.rb +5 -1
  33. data/lib/spec/mocks/argument_expectation.rb +26 -0
  34. data/lib/spec/mocks/extensions.rb +1 -0
  35. data/lib/spec/mocks/framework.rb +15 -0
  36. data/lib/spec/mocks/message_expectation.rb +29 -5
  37. data/lib/spec/mocks/mock.rb +9 -7
  38. data/lib/spec/mocks/proxy.rb +26 -12
  39. data/lib/spec/rake/spectask.rb +5 -5
  40. data/lib/spec/runner/backtrace_tweaker.rb +1 -1
  41. data/lib/spec/runner/formatter/base_formatter.rb +2 -3
  42. data/lib/spec/runner/formatter/base_text_formatter.rb +2 -2
  43. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +4 -8
  44. data/lib/spec/runner/formatter/html_formatter.rb +18 -14
  45. data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
  46. data/lib/spec/runner/formatter/profile_formatter.rb +4 -0
  47. data/lib/spec/runner/formatter/progress_bar_formatter.rb +5 -1
  48. data/lib/spec/runner/formatter/specdoc_formatter.rb +1 -1
  49. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +18 -7
  50. data/lib/spec/runner/option_parser.rb +17 -15
  51. data/lib/spec/runner/options.rb +37 -14
  52. data/lib/spec/runner/reporter.rb +15 -11
  53. data/lib/spec/story/extensions/regexp.rb +2 -2
  54. data/lib/spec/story/extensions/string.rb +2 -2
  55. data/lib/spec/story/runner.rb +9 -5
  56. data/lib/spec/story/runner/plain_text_story_runner.rb +2 -2
  57. data/lib/spec/story/runner/scenario_runner.rb +8 -0
  58. data/lib/spec/story/runner/story_mediator.rb +1 -1
  59. data/lib/spec/story/runner/story_runner.rb +3 -1
  60. data/lib/spec/story/step.rb +4 -4
  61. data/lib/spec/story/story.rb +8 -11
  62. data/lib/spec/story/world.rb +0 -1
  63. data/lib/spec/version.rb +2 -2
  64. data/plugins/mock_frameworks/rspec.rb +2 -0
  65. data/spec/autotest/rspec_spec.rb +12 -10
  66. data/spec/spec/example/configuration_spec.rb +0 -0
  67. data/spec/spec/example/example_group/described_module_spec.rb +20 -0
  68. data/spec/spec/example/example_group/warning_messages_spec.rb +76 -0
  69. data/spec/spec/example/example_group_factory_spec.rb +117 -102
  70. data/spec/spec/example/example_group_methods_spec.rb +51 -17
  71. data/spec/spec/example/example_group_spec.rb +13 -1
  72. data/spec/spec/example/example_methods_spec.rb +28 -6
  73. data/spec/spec/example/nested_example_group_spec.rb +12 -0
  74. data/spec/spec/example/predicate_matcher_spec.rb +0 -0
  75. data/spec/spec/expectations/differs/default_spec.rb +27 -9
  76. data/spec/spec/matchers/be_spec.rb +24 -0
  77. data/spec/spec/matchers/has_spec.rb +16 -0
  78. data/spec/spec/matchers/raise_error_spec.rb +124 -0
  79. data/spec/spec/mocks/{bug_report_10263.rb → bug_report_10263_spec.rb} +0 -0
  80. data/spec/spec/mocks/bug_report_11545_spec.rb +2 -0
  81. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +8 -0
  82. data/spec/spec/mocks/hash_including_matcher_spec.rb +32 -0
  83. data/spec/spec/mocks/mock_spec.rb +56 -37
  84. data/spec/spec/mocks/partial_mock_spec.rb +41 -5
  85. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +6 -0
  86. data/spec/spec/runner/execution_context_spec.rb +7 -1
  87. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +3 -2
  88. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +30 -25
  89. data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -3
  90. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +333 -0
  91. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +12 -2
  92. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +2 -2
  93. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +110 -78
  94. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +105 -1
  95. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +33 -28
  96. data/spec/spec/runner/option_parser_spec.rb +65 -49
  97. data/spec/spec/runner/options_spec.rb +103 -17
  98. data/spec/spec/runner/reporter_spec.rb +10 -7
  99. data/spec/spec/runner/spec_drb.opts +1 -0
  100. data/spec/spec/runner/spec_parser_spec.rb +10 -4
  101. data/spec/spec/story/runner/plain_text_story_runner_spec.rb +14 -13
  102. data/spec/spec/story/runner/scenario_runner_spec.rb +124 -52
  103. data/spec/spec/story/runner/story_mediator_spec.rb +2 -2
  104. data/spec/spec/story/runner/story_runner_spec.rb +40 -2
  105. data/spec/spec/story/runner_spec.rb +59 -72
  106. data/spec/spec/story/step_spec.rb +20 -1
  107. data/spec/spec/story/story_spec.rb +2 -2
  108. data/stories/all.rb +1 -1
  109. data/stories/example_groups/stories.rb +4 -3
  110. data/stories/mock_framework_integration/stories.rb +7 -0
  111. data/stories/mock_framework_integration/use_flexmock.story +9 -0
  112. data/stories/resources/spec/spec_with_flexmock.rb +18 -0
  113. metadata +21 -18
  114. data/pre_commit/lib/pre_commit.rb +0 -4
  115. data/pre_commit/lib/pre_commit/core.rb +0 -50
  116. data/pre_commit/lib/pre_commit/pre_commit.rb +0 -54
  117. data/pre_commit/lib/pre_commit/rspec.rb +0 -111
  118. data/pre_commit/lib/pre_commit/rspec_on_rails.rb +0 -313
  119. data/pre_commit/spec/pre_commit/pre_commit_spec.rb +0 -15
  120. data/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb +0 -36
  121. data/pre_commit/spec/spec_helper.rb +0 -3
  122. data/pre_commit/spec/spec_suite.rb +0 -11
data/CHANGES CHANGED
@@ -1,6 +1,40 @@
1
+ == Version 1.1.4
2
+
3
+ Maintenance release.
4
+
5
+ Note: we've removed the metaclass method from Object. There were some
6
+ generated specs that used it, and they will now break. Just replace the
7
+ metaclass call with (class << self; self; end) and all will be well.
8
+
9
+ * pending steps print out yellow in stories (patch from Kyle Hargraves)
10
+ * Deprecation warnings for specs that assume auto-inclusion of modules. Closes #326 (patch from Scott Taylor)
11
+ * mock.should_not_receive(:anything) fails fast (once again)
12
+ * Patch from Antti Tarvainen to stop files from being loaded repeatedly when running heckle. Closes #333.
13
+ * Fixed bug in which session object in example was not the same instance used in the controller. Closes #331.
14
+ * Applied patch from Antti Tarvainen to fix bug where heckle runs rspec runs heckle runs rspec etc. Closes #280.
15
+ * Applied patch from Zach Dennis to merge :steps functionality to :steps_for. Closes #324.
16
+ * Applied patch from Ryan Davis to add eval of block passed to raise_error matcher. Closes #321.
17
+ * alias :context :describe in example_group_methods. Closes #312.
18
+ * Applied patch from Ben Mabey to make the Story runner exit with a non-0 exit code on failing stories. Closes #228.
19
+ * Applied patch from Coda Hale to get the :red hook called in autotest. Closes #279.
20
+ * Applied patch from Patrick Ritchie to support --drb in spec.opts. Closes #274, #293.
21
+ * Moved metaclass method from Object to an internal module which gets included where it is needed.
22
+ * Applied patch from Dayo Esho: and_yield clobbers return value from block. Closes #217.
23
+ * Applied patch from Bob Cotton: ExampleGroupFactory.default resets previously registered types. Closes #222.
24
+ * Applied patch from Mike Williams to support the lib directory in rails apps with the Textmate Alternate File command. Closes #276.
25
+ * ExampleGroupMethods#xspecify aliases #xit
26
+ * A SharedExampleGroup can be created within another ExampleGroup.
27
+ * Applied patch from Bob Cotton: Nested ExampleGroups do not have a spec_path. Closes #224.
28
+ * Add before_suite and after_suite callbacks to ExampleGroupMethods and Options. Closes #210.
29
+ * The after(:suite) callback lambda is passed a boolean representing whether the suite passed or failed
30
+ * Added NestedTextFormatter. Closes #366.
31
+ * decoupled mock framework from global extensions used by rspec - supports use of flexmock or mocha w/ rails
32
+ * Applied patch from Roman Chernyatchik to allow the user to pass in the rails version into spectask. Closes #325, #370
33
+
1
34
  == Version 1.1.3
2
35
 
3
36
  Maintenance release.
37
+ Notice to autotest users: you must also upgrade to ZenTest-3.9.0.
4
38
 
5
39
  * Tightened up exceptions list in autotest/rails_spec. Closes #264.
6
40
  * Applied patch from Ryan Davis for ZenTest-3.9.0 compatibility
@@ -18,6 +52,7 @@ Maintenance release.
18
52
  == Version 1.1.2
19
53
 
20
54
  Minor bug fixes/enhancements.
55
+ Notice to autotest users: you must also upgrade to ZenTest-3.8.0.
21
56
 
22
57
  * RSpec's Autotest subclasses compatible with ZenTest-3.8.0 (thanks to Ryan Davis for making it easier on Autotest subs).
23
58
  * Applied patch from idl to add spec/lib to rake stats. Closes #226.
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2005-2007 The RSpec Development Team
1
+ Copyright (c) 2005-2008 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
@@ -5,9 +5,9 @@ with Executable Scenarios and Executable Examples at the code level.
5
5
 
6
6
  RSpec ships with several modules:
7
7
 
8
- Spec::Story provides a framework for expressing User Stories
8
+ Spec::Story provides a framework for expressing User Stories and Scenarios
9
9
 
10
- Spec::Example provides a framework for expressing code Examples
10
+ Spec::Example provides a framework for expressing Isolated Examples
11
11
 
12
12
  Spec::Matchers provides Expression Matchers for use with Spec::Expectations
13
13
  and Spec::Mocks.
@@ -22,50 +22,15 @@ behaviour to your existing objects.
22
22
 
23
23
  == Installation
24
24
 
25
- The simplest approach is to install the gem:
25
+ The simplest approach is to install the gem (as root in some environments):
26
26
 
27
- gem install -r rspec #mac users must sudo
27
+ gem install -r rspec
28
28
 
29
29
  == Building the RSpec gem
30
- If you prefer to build the gem locally, check out source from svn://rubyforge.org/var/svn/rspec/trunk. Then
31
- do the following:
32
30
 
33
- rake gem
34
- gem install pkg/rspec-0.x.x.gem (you may have to sudo)
35
-
36
- == Running RSpec's specs
37
- In order to run RSpec's full suite of specs (rake pre_commit) you must install the following gems:
38
-
39
- * rake # Runs the build script
40
- * rcov # Verifies that the code is 100% covered by specs
41
- * webby # Generates the static HTML website
42
- * syntax # Required to highlight ruby code
43
- * diff-lcs # Required if you use the --diff switch
44
- * win32console # Required by the --colour switch if you're on Windows
45
- * meta_project # Required in order to make releases at RubyForge
46
- * heckle # Required if you use the --heckle switch
47
- * hpricot # Used for parsing HTML from the HTML output formatter in RSpec's own specs
48
-
49
- Once those are all installed, you should be able to run the suite with the following steps:
50
-
51
- * svn co svn://rubyforge.org/var/svn/rspec/trunk rspec
52
- * cd rspec
53
- * rake install_dependencies
54
- * cd example_rails_app
55
- * export RSPEC_RAILS_VERSION=1.2.3
56
- * rake rspec:generate_mysql_config
57
- * mysql -u root < db/mysql_setup.sql
58
- * cd ..
59
- * rake pre_commit
60
-
61
- Note that RSpec itself - once built - doesn't have any dependencies outside the Ruby core
62
- and stdlib - with a few exceptions:
63
-
64
- * The spec command line uses diff-lcs when --diff is specified.
65
- * The spec command line uses heckle when --heckle is specified.
66
- * The Spec::Rake::SpecTask needs RCov if RCov is enabled in the task.
67
-
68
- See http://rspec.rubyforge.org for further documentation.
69
-
70
- == Contributing
31
+ If you prefer to build the gem locally:
71
32
 
33
+ git clone git://github.com/dchelimsky/rspec.git
34
+ cd rspec
35
+ rake gem
36
+ gem install pkg/rspec-0.x.x.gem #as root
data/Rakefile CHANGED
@@ -7,8 +7,6 @@ require 'rake/rdoctask'
7
7
  require 'rake/testtask'
8
8
  require 'spec/version'
9
9
  dir = File.dirname(__FILE__)
10
- $LOAD_PATH.unshift(File.expand_path("#{dir}/pre_commit/lib"))
11
- require "pre_commit"
12
10
 
13
11
  # Some of the tasks are in separate files since they are also part of the website documentation
14
12
  load File.dirname(__FILE__) + '/rake_tasks/examples.rake'
@@ -27,7 +25,6 @@ PKG_FILES = FileList[
27
25
  'failing_examples/**/*',
28
26
  'plugins/**/*',
29
27
  'stories/**/*',
30
- 'pre_commit/**/*',
31
28
  'rake_tasks/**/*'
32
29
  ]
33
30
 
@@ -56,8 +53,8 @@ end
56
53
 
57
54
  desc "Run all specs and store html output in doc/output/report.html"
58
55
  Spec::Rake::SpecTask.new('spec_html') do |t|
59
- t.spec_files = FileList['spec/**/*_spec.rb', '../../RSpec.tmbundle/Support/spec/*_spec.rb']
60
- t.spec_opts = ['--format html:../doc/output/report.html','--backtrace']
56
+ t.spec_files = FileList['spec/**/*_spec.rb']
57
+ t.spec_opts = ['--format html:../../../../doc/output/report.html', '--format progress','--backtrace']
61
58
  end
62
59
 
63
60
  desc "Run all failing examples"
@@ -124,48 +121,36 @@ task :todo do
124
121
  egrep /(FIXME|TODO|TBD)/
125
122
  end
126
123
 
127
- task :clobber do
128
- core.clobber
129
- end
130
-
131
- task :release => [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_news]
124
+ task :release => [:verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_news]
132
125
 
133
126
  desc "Verifies that there is no uncommitted code"
134
127
  task :verify_committed do
135
- IO.popen('svn stat') do |io|
136
- io.each_line do |line|
137
- raise "\n!!! Do a svn commit first !!!\n\n" if line =~ /^\s*M\s*/
138
- end
139
- end
128
+ # IO.popen('git status') do |io|
129
+ # io.each_line do |line|
130
+ # raise "\n!!! Do a git commit first !!!\n\n" if line =~ /^#\s*modified:/
131
+ # end
132
+ # end
140
133
  end
141
134
 
142
135
  desc "Creates a tag in svn"
143
136
  task :tag do
144
- from = `svn info #{File.dirname(__FILE__)}`.match(/URL: (.*)\/rspec/n)[1]
145
- to = from.gsub(/trunk/, "tags/#{Spec::VERSION::TAG}")
146
- current = from.gsub(/trunk/, "tags/CURRENT")
147
-
148
- puts "Creating tag in SVN"
149
- tag_cmd = "svn cp #{from} #{to} -m \"Tag release #{Spec::VERSION::FULL_VERSION}\""
150
- `#{tag_cmd}` ; raise "ERROR: #{tag_cmd}" unless $? == 0
151
-
152
- puts "Removing CURRENT"
153
- remove_current_cmd = "svn rm #{current} -m \"Remove tags/CURRENT\""
154
- `#{remove_current_cmd}` ; raise "ERROR: #{remove_current_cmd}" unless $? == 0
155
-
156
- puts "Re-Creating CURRENT"
157
- create_current_cmd = "svn cp #{to} #{current} -m \"Copy #{Spec::VERSION::TAG} to tags/CURRENT\""
158
- `#{create_current_cmd}` ; "ERROR: #{create_current_cmd}" unless $? == 0
137
+ # from = `svn info #{File.dirname(__FILE__)}`.match(/URL: (.*)\/rspec/n)[1]
138
+ # to = from.gsub(/trunk/, "tags/#{Spec::VERSION::TAG}")
139
+ # current = from.gsub(/trunk/, "tags/CURRENT")
140
+ #
141
+ # puts "Creating tag in SVN"
142
+ # tag_cmd = "svn cp #{from} #{to} -m \"Tag release #{Spec::VERSION::FULL_VERSION}\""
143
+ # `#{tag_cmd}` ; raise "ERROR: #{tag_cmd}" unless $? == 0
144
+ #
145
+ # puts "Removing CURRENT"
146
+ # remove_current_cmd = "svn rm #{current} -m \"Remove tags/CURRENT\""
147
+ # `#{remove_current_cmd}` ; raise "ERROR: #{remove_current_cmd}" unless $? == 0
148
+ #
149
+ # puts "Re-Creating CURRENT"
150
+ # create_current_cmd = "svn cp #{to} #{current} -m \"Copy #{Spec::VERSION::TAG} to tags/CURRENT\""
151
+ # `#{create_current_cmd}` ; "ERROR: #{create_current_cmd}" unless $? == 0
159
152
  end
160
153
 
161
- desc "Run this task before you commit. You should see 'OK TO COMMIT'"
162
- task(:pre_commit) {core.pre_commit}
163
-
164
- desc "Build the website, but do not publish it"
165
- task(:website) {core.website}
166
-
167
- task(:rdoc_rails) {core.rdoc_rails}
168
-
169
154
  task :verify_user do
170
155
  raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
171
156
  end
@@ -197,10 +182,11 @@ end
197
182
  desc "Package the Rails plugin"
198
183
  task :package_rspec_on_rails do
199
184
  mkdir 'pkg' rescue nil
200
- rm_rf 'pkg/rspec_on_rails' rescue nil
201
- `svn export ../rspec_on_rails pkg/rspec_on_rails-#{PKG_VERSION}`
185
+ rm_rf "pkg/rspec-rails-#{PKG_VERSION}" rescue nil
186
+ `git clone ../rspec-rails pkg/rspec-rails-#{PKG_VERSION}`
187
+ rm_rf "pkg/rspec-rails-#{PKG_VERSION}/.git"
202
188
  Dir.chdir 'pkg' do
203
- `tar cvzf rspec_on_rails-#{PKG_VERSION}.tgz rspec_on_rails-#{PKG_VERSION}`
189
+ `tar cvzf rspec-rails-#{PKG_VERSION}.tgz rspec-rails-#{PKG_VERSION}`
204
190
  end
205
191
  end
206
192
  task :pkg => :package_rspec_on_rails
@@ -208,20 +194,21 @@ task :pkg => :package_rspec_on_rails
208
194
  desc "Package the RSpec.tmbundle"
209
195
  task :package_tmbundle do
210
196
  mkdir 'pkg' rescue nil
211
- rm_rf 'pkg/RSpec.tmbundle' rescue nil
212
- `svn export ../RSpec.tmbundle pkg/RSpec.tmbundle`
197
+ rm_rf "pkg/RSpec-#{PKG_VERSION}.tmbundle" rescue nil
198
+ `git clone ../../../../RSpec.tmbundle pkg/RSpec-#{PKG_VERSION}.tmbundle`
199
+ rm_rf "pkg/RSpec-#{PKG_VERSION}.tmbundle/.git"
213
200
  Dir.chdir 'pkg' do
214
- `tar cvzf RSpec-#{PKG_VERSION}.tmbundle.tgz RSpec.tmbundle`
201
+ `tar cvzf RSpec-#{PKG_VERSION}.tmbundle.tgz RSpec-#{PKG_VERSION}.tmbundle`
215
202
  end
216
203
  end
217
204
  task :pkg => :package_tmbundle
218
205
 
219
206
  desc "Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file"
220
- task :publish_packages => [:verify_user, :package] do
207
+ task :publish_packages => [:verify_user, :package, :pkg] do
221
208
  release_files = FileList[
222
209
  "pkg/#{PKG_FILE_NAME}.gem",
223
210
  "pkg/#{PKG_FILE_NAME}.tgz",
224
- "pkg/rspec_on_rails-#{PKG_VERSION}.tgz",
211
+ "pkg/rspec-rails-#{PKG_VERSION}.tgz",
225
212
  "pkg/#{PKG_FILE_NAME}.zip",
226
213
  "pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz"
227
214
  ]
@@ -272,8 +259,4 @@ task :publish_news => [:verify_user] do
272
259
  else
273
260
  puts "** Not publishing news to RubyForge - this is a prerelease"
274
261
  end
275
- end
276
-
277
- def core
278
- PreCommit::Core.new(self)
279
- end
262
+ end
data/TODO CHANGED
@@ -1,2 +1 @@
1
- === Before releasing 1.1.0:
2
1
 
data/UPGRADE CHANGED
@@ -1,29 +1,5 @@
1
- = Upgrading existing code to RSpec-0.9
2
-
3
- == General (see below for Spec::Rails specifics)
4
-
5
- === New Syntax for should and should_not
6
-
7
- * Use translator (should get 90% of your code)
8
- * Manually fix "parenthesis" warnings
9
-
10
- === Change before_context_eval to before_eval
11
-
12
- before_context_eval is an un-published hook used by
13
- Spec::Rails to create specialized behaviour contexts.
14
- Most of you don't need to change this, but for those
15
- who have exploited it, you'll need to change it to
16
- before_eval.
17
-
18
1
  == Spec::Rails
19
2
 
20
- === spec_helper.rb
21
-
22
- We've added a new way to configure Spec::Runner to do
23
- things like use_transactional_fixtures and use_instantiated_fixtures.
24
- You'll need to update spec/spec_helper.rb accordingly. You can either
25
- just re-generate it:
26
-
27
3
  script/generate rspec
28
4
 
29
5
  Or modify spec_helper.rb based on the template, which can be found at:
data/bin/spec CHANGED
File without changes
data/bin/spec_translator CHANGED
File without changes
File without changes
@@ -25,4 +25,5 @@ describe "A partial mock" do
25
25
  MockableClass.msg_2
26
26
  MockableClass.msg_3
27
27
  end
28
+
28
29
  end
@@ -27,7 +27,7 @@ Story "addition", %{
27
27
  As an accountant
28
28
  I want to add numbers
29
29
  So that I can count some beans
30
- }, :steps => steps do
30
+ }, :steps_for => steps do
31
31
  Scenario "2 + 3" do
32
32
  Given "an addend of 2"
33
33
  And "an addend of 3"
@@ -21,17 +21,15 @@ class Autotest::Rspec < Autotest
21
21
 
22
22
  def initialize
23
23
  super
24
-
25
24
  self.failed_results_re = /^\d+\)\n(?:\e\[\d*m)?(?:.*?Error in )?'([^\n]*)'(?: FAILED)?(?:\e\[\d*m)?\n(.*?)\n\n/m
26
- self.completed_re = /\Z/ # FIX: some sort of summary line at the end?
25
+ self.completed_re = /\n(?:\e\[\d*m)?\d* examples?/m
27
26
  end
28
-
27
+
29
28
  def consolidate_failures(failed)
30
- filters = Hash.new { |h,k| h[k] = [] }
31
- failed.each do |spec, failed_trace|
32
- if f = test_files_for(failed).find { |f| failed_trace =~ Regexp.new(f) } then
33
- filters[f] << spec
34
- break
29
+ filters = new_hash_of_arrays
30
+ failed.each do |spec, trace|
31
+ if trace =~ /\n(\.\/)?(.*\.rb):[\d]+:\Z?/
32
+ filters[$2] << spec
35
33
  end
36
34
  end
37
35
  return filters
@@ -41,7 +39,7 @@ class Autotest::Rspec < Autotest
41
39
  return "#{ruby} -S #{spec_command} #{add_options_if_present} #{files_to_test.keys.flatten.join(' ')}"
42
40
  end
43
41
 
44
- def add_options_if_present
42
+ def add_options_if_present # :nodoc:
45
43
  File.exist?("spec/spec.opts") ? "-O spec/spec.opts " : ""
46
44
  end
47
45
 
data/lib/spec/example.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'timeout'
2
- require 'forwardable'
3
2
  require 'spec/example/pending'
4
3
  require 'spec/example/module_reopening_fix'
4
+ require 'spec/example/module_inclusion_warnings'
5
5
  require 'spec/example/example_group_methods'
6
6
  require 'spec/example/example_methods'
7
7
  require 'spec/example/example_group'
@@ -7,14 +7,20 @@ module Spec
7
7
  # config.mock_with :rspec, :mocha, :flexmock, or :rr
8
8
  # end
9
9
  #
10
- # To use any other mock framework, you'll have to provide
11
- # your own adapter. This is simply a module that responds to
12
- # setup_mocks_for_rspec, verify_mocks_for_rspec and teardown_mocks_for_rspec.
10
+ # To use any other mock framework, you'll have to provide your own
11
+ # adapter. This is simply a module that responds to the following
12
+ # methods:
13
+ #
14
+ # setup_mocks_for_rspec
15
+ # verify_mocks_for_rspec
16
+ # teardown_mocks_for_rspec.
17
+ #
13
18
  # These are your hooks into the lifecycle of a given example. RSpec will
14
- # call setup_mocks_for_rspec before running anything else in each Example.
15
- # After executing the #after methods, RSpec will then call verify_mocks_for_rspec
16
- # and teardown_mocks_for_rspec (this is guaranteed to run even if there are
17
- # failures in verify_mocks_for_rspec).
19
+ # call setup_mocks_for_rspec before running anything else in each
20
+ # Example. After executing the #after methods, RSpec will then call
21
+ # verify_mocks_for_rspec and teardown_mocks_for_rspec (this is
22
+ # guaranteed to run even if there are failures in
23
+ # verify_mocks_for_rspec).
18
24
  #
19
25
  # Once you've defined this module, you can pass that to mock_with:
20
26
  #
@@ -35,12 +41,18 @@ module Spec
35
41
  @mock_framework ||= mock_framework_path("rspec")
36
42
  end
37
43
 
38
- # Declares modules to be included in all example groups (<tt>describe</tt> blocks).
39
- #
40
- # config.include(My::Bottle, My::Cup)
41
- #
42
- # If you want to restrict the inclusion to a subset of all the example groups then
43
- # specify this in a Hash as the last argument:
44
+ # :call-seq:
45
+ # include(Some::Helpers)
46
+ # include(Some::Helpers, More::Helpers)
47
+ # include(My::Helpers, :type => :key)
48
+ #
49
+ # Declares modules to be included in multiple example groups
50
+ # (<tt>describe</tt> blocks). With no :type, the modules listed will be
51
+ # included in all example groups. Use :type to restrict the inclusion to
52
+ # a subset of example groups. The value assigned to :type should be a
53
+ # key that maps to a class that is either a subclass of
54
+ # Spec::Example::ExampleGroup or extends Spec::Example::ExampleGroupMethods
55
+ # and includes Spec::Example::ExampleMethods
44
56
  #
45
57
  # config.include(My::Pony, My::Horse, :type => :farm)
46
58
  #
@@ -70,7 +82,7 @@ module Spec
70
82
  #
71
83
  # This makes it possible to say:
72
84
  #
73
- # person.should swim # passes if person.should_swim? returns true
85
+ # person.should swim # passes if person.can_swim? returns true
74
86
  #
75
87
  def predicate_matchers
76
88
  @predicate_matchers ||= {}
@@ -85,10 +97,11 @@ module Spec
85
97
  )
86
98
  example_group.prepend_before(scope, &proc)
87
99
  end
100
+
88
101
  # Appends a global <tt>before</tt> block to all example groups.
89
102
  #
90
- # If you want to restrict the block to a subset of all the example groups then
91
- # specify this in a Hash as the last argument:
103
+ # If you want to restrict the block to a subset of all the example
104
+ # groups then specify this in a Hash as the last argument:
92
105
  #
93
106
  # config.prepend_before(:all, :type => :farm)
94
107
  #
@@ -115,6 +128,7 @@ module Spec
115
128
  example_group.prepend_after(scope, &proc)
116
129
  end
117
130
  alias_method :after, :prepend_after
131
+
118
132
  # Appends a global <tt>after</tt> block to all example groups.
119
133
  # See #append_before for filtering semantics.
120
134
  def append_after(*args, &proc)