dchelimsky-rspec-rails 1.1.99.9 → 1.1.99.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/.document +7 -0
  2. data/History.txt +3 -0
  3. data/Manifest.txt +43 -40
  4. data/Rakefile +1 -6
  5. data/Upgrade.markdown +70 -19
  6. data/generators/rspec/templates/rspec.rake +4 -2
  7. data/generators/rspec/templates/script/spec +19 -2
  8. data/generators/rspec/templates/script/spec_server +17 -3
  9. data/lib/spec/rails/example/controller_example_group.rb +3 -2
  10. data/lib/spec/rails/example/helper_example_group.rb +6 -20
  11. data/lib/spec/rails/example/routing_example_group.rb +13 -0
  12. data/lib/spec/rails/extensions/spec/matchers/have.rb +2 -2
  13. data/lib/spec/rails/matchers/ar_be_valid.rb +4 -4
  14. data/lib/spec/rails/matchers/assert_select.rb +35 -20
  15. data/lib/spec/rails/matchers/have_text.rb +2 -2
  16. data/lib/spec/rails/matchers/include_text.rb +2 -2
  17. data/lib/spec/rails/matchers/redirect_to.rb +2 -2
  18. data/lib/spec/rails/matchers/render_template.rb +2 -2
  19. data/lib/spec/rails/version.rb +1 -1
  20. data/rspec-rails.gemspec +8 -8
  21. data/spec/resources/controllers/controller_spec_controller.rb +4 -0
  22. data/spec/resources/controllers/example.txt +1 -0
  23. data/spec/resources/views/controller_spec/{_partial.rhtml → _partial.html.erb} +0 -0
  24. data/spec/resources/views/controller_spec/{action_setting_flash_after_session_reset.rhtml → action_setting_flash_after_session_reset.html.erb} +0 -0
  25. data/spec/resources/views/controller_spec/{action_setting_flash_before_session_reset.rhtml → action_setting_flash_before_session_reset.html.erb} +0 -0
  26. data/spec/resources/views/controller_spec/{action_setting_the_assigns_hash.rhtml → action_setting_the_assigns_hash.html.erb} +0 -0
  27. data/spec/resources/views/controller_spec/{action_with_errors_in_template.rhtml → action_with_errors_in_template.html.erb} +0 -0
  28. data/spec/resources/views/controller_spec/{action_with_template.rhtml → action_with_template.html.erb} +0 -0
  29. data/spec/resources/views/layouts/{application.rhtml → application.html.erb} +0 -0
  30. data/spec/resources/views/layouts/{simple.rhtml → simple.html.erb} +0 -0
  31. data/spec/resources/views/render_spec/{_a_partial.rhtml → _a_partial.html.erb} +0 -0
  32. data/spec/resources/views/render_spec/{action_with_alternate_layout.rhtml → action_with_alternate_layout.html.erb} +0 -0
  33. data/spec/resources/views/rjs_spec/{_replacement_partial.rhtml → _replacement_partial.html.erb} +0 -0
  34. data/spec/resources/views/rjs_spec/{hide_div.rjs → hide_div.js.rjs} +0 -0
  35. data/spec/resources/views/rjs_spec/{hide_page_element.rjs → hide_page_element.js.rjs} +0 -0
  36. data/spec/resources/views/rjs_spec/{insert_html.rjs → insert_html.js.rjs} +0 -0
  37. data/spec/resources/views/rjs_spec/{replace.rjs → replace.js.rjs} +0 -0
  38. data/spec/resources/views/rjs_spec/{replace_html.rjs → replace_html.js.rjs} +0 -0
  39. data/spec/resources/views/rjs_spec/{replace_html_with_partial.rjs → replace_html_with_partial.js.rjs} +0 -0
  40. data/spec/resources/views/rjs_spec/{visual_effect.rjs → visual_effect.js.rjs} +0 -0
  41. data/spec/resources/views/rjs_spec/{visual_toggle_effect.rjs → visual_toggle_effect.js.rjs} +0 -0
  42. data/spec/resources/views/tag_spec/{no_tags.rhtml → no_tags.html.erb} +0 -0
  43. data/spec/resources/views/tag_spec/{single_div_with_no_attributes.rhtml → single_div_with_no_attributes.html.erb} +0 -0
  44. data/spec/resources/views/tag_spec/{single_div_with_one_attribute.rhtml → single_div_with_one_attribute.html.erb} +0 -0
  45. data/spec/resources/views/view_spec/{_partial.rhtml → _partial.html.erb} +0 -0
  46. data/spec/resources/views/view_spec/{_partial_used_twice.rhtml → _partial_used_twice.html.erb} +0 -0
  47. data/spec/resources/views/view_spec/{_partial_with_local_variable.rhtml → _partial_with_local_variable.html.erb} +0 -0
  48. data/spec/resources/views/view_spec/{_partial_with_sub_partial.rhtml → _partial_with_sub_partial.html.erb} +0 -0
  49. data/spec/resources/views/view_spec/{_spacer.rhtml → _spacer.html.erb} +0 -0
  50. data/spec/resources/views/view_spec/{accessor.rhtml → accessor.html.erb} +0 -0
  51. data/spec/resources/views/view_spec/{block_helper.rhtml → block_helper.html.erb} +0 -0
  52. data/spec/resources/views/view_spec/{entry_form.rhtml → entry_form.html.erb} +0 -0
  53. data/spec/resources/views/view_spec/{explicit_helper.rhtml → explicit_helper.html.erb} +0 -0
  54. data/spec/resources/views/view_spec/foo/{show.rhtml → show.html.erb} +0 -0
  55. data/spec/resources/views/view_spec/{implicit_helper.rhtml → implicit_helper.html.erb} +0 -0
  56. data/spec/resources/views/view_spec/{multiple_helpers.rhtml → multiple_helpers.html.erb} +0 -0
  57. data/spec/resources/views/view_spec/{should_not_receive.rhtml → should_not_receive.html.erb} +0 -0
  58. data/spec/resources/views/view_spec/{template_with_partial.rhtml → template_with_partial.html.erb} +0 -0
  59. data/spec/resources/views/view_spec/{template_with_partial_using_collection.rhtml → template_with_partial_using_collection.html.erb} +0 -0
  60. data/spec/resources/views/view_spec/{template_with_partial_with_array.rhtml → template_with_partial_with_array.html.erb} +0 -0
  61. data/spec/spec/rails/example/controller_example_group_spec.rb +8 -3
  62. data/spec/spec/rails/example/helper_example_group_spec.rb +27 -0
  63. data/spec/spec/rails/example/routing_example_group_spec.rb +9 -0
  64. data/spec/spec/rails/example/shared_routing_example_group_examples.rb +45 -0
  65. data/spec/spec/rails/example/view_example_group_spec.rb +3 -3
  66. data/spec/spec/rails/matchers/assert_select_spec.rb +56 -58
  67. data/spec/spec/rails/matchers/render_template_spec.rb +45 -37
  68. metadata +48 -45
  69. data/spec/resources/views/render_spec/some_action.rjs +0 -1
data/.document ADDED
@@ -0,0 +1,7 @@
1
+ lib/**/*.rb
2
+ History.txt
3
+ License.txt
4
+ README.txt
5
+ Upgrade.markdown
6
+ features/**/*.feature
7
+
data/History.txt CHANGED
@@ -49,6 +49,9 @@ IMPORTANT: This release includes the following backwards-compatibility-breaking
49
49
  * force cache_classes = false when running with spec_server. Closes #287.
50
50
  * keep spec_server working against edge rails (Jonathan Tron). Closes #685.
51
51
  * create lib/tasks if not present when running script/generate rspec. Closes #687.
52
+ * fixed regression (and added spec so it won't regress again) where
53
+ render => :inline didn't render unless integrate_views was set
54
+ * fixed nil.with_output_buffer bug in helper specs. Closes #719.
52
55
 
53
56
  === Version 1.1.12 / 2009-01-11
54
57
 
data/Manifest.txt CHANGED
@@ -1,3 +1,4 @@
1
+ .document
1
2
  History.txt
2
3
  License.txt
3
4
  Manifest.txt
@@ -47,6 +48,7 @@ lib/spec/rails/example/functional_example_group.rb
47
48
  lib/spec/rails/example/helper_example_group.rb
48
49
  lib/spec/rails/example/model_example_group.rb
49
50
  lib/spec/rails/example/render_observer.rb
51
+ lib/spec/rails/example/routing_example_group.rb
50
52
  lib/spec/rails/example/routing_helpers.rb
51
53
  lib/spec/rails/example/view_example_group.rb
52
54
  lib/spec/rails/extensions.rb
@@ -77,6 +79,7 @@ spec/rails_suite.rb
77
79
  spec/resources/controllers/action_view_base_spec_controller.rb
78
80
  spec/resources/controllers/application.rb
79
81
  spec/resources/controllers/controller_spec_controller.rb
82
+ spec/resources/controllers/example.txt
80
83
  spec/resources/controllers/redirect_spec_controller.rb
81
84
  spec/resources/controllers/render_spec_controller.rb
82
85
  spec/resources/controllers/rjs_spec_controller.rb
@@ -88,49 +91,48 @@ spec/resources/helpers/view_spec_helper.rb
88
91
  spec/resources/models/animal.rb
89
92
  spec/resources/models/person.rb
90
93
  spec/resources/models/thing.rb
91
- spec/resources/views/controller_spec/_partial.rhtml
92
- spec/resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml
93
- spec/resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml
94
- spec/resources/views/controller_spec/action_setting_the_assigns_hash.rhtml
95
- spec/resources/views/controller_spec/action_with_errors_in_template.rhtml
96
- spec/resources/views/controller_spec/action_with_template.rhtml
97
- spec/resources/views/layouts/application.rhtml
98
- spec/resources/views/layouts/simple.rhtml
94
+ spec/resources/views/controller_spec/_partial.html.erb
95
+ spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb
96
+ spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb
97
+ spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb
98
+ spec/resources/views/controller_spec/action_with_errors_in_template.html.erb
99
+ spec/resources/views/controller_spec/action_with_template.html.erb
100
+ spec/resources/views/layouts/application.html.erb
101
+ spec/resources/views/layouts/simple.html.erb
99
102
  spec/resources/views/objects/_object.html.erb
100
- spec/resources/views/render_spec/_a_partial.rhtml
101
- spec/resources/views/render_spec/action_with_alternate_layout.rhtml
103
+ spec/resources/views/render_spec/_a_partial.html.erb
104
+ spec/resources/views/render_spec/action_with_alternate_layout.html.erb
102
105
  spec/resources/views/render_spec/some_action.html.erb
103
106
  spec/resources/views/render_spec/some_action.js.rjs
104
- spec/resources/views/render_spec/some_action.rjs
105
- spec/resources/views/rjs_spec/_replacement_partial.rhtml
106
- spec/resources/views/rjs_spec/hide_div.rjs
107
- spec/resources/views/rjs_spec/hide_page_element.rjs
108
- spec/resources/views/rjs_spec/insert_html.rjs
109
- spec/resources/views/rjs_spec/replace.rjs
110
- spec/resources/views/rjs_spec/replace_html.rjs
111
- spec/resources/views/rjs_spec/replace_html_with_partial.rjs
112
- spec/resources/views/rjs_spec/visual_effect.rjs
113
- spec/resources/views/rjs_spec/visual_toggle_effect.rjs
114
- spec/resources/views/tag_spec/no_tags.rhtml
115
- spec/resources/views/tag_spec/single_div_with_no_attributes.rhtml
116
- spec/resources/views/tag_spec/single_div_with_one_attribute.rhtml
117
- spec/resources/views/view_spec/_partial.rhtml
118
- spec/resources/views/view_spec/_partial_used_twice.rhtml
119
- spec/resources/views/view_spec/_partial_with_local_variable.rhtml
120
- spec/resources/views/view_spec/_partial_with_sub_partial.rhtml
121
- spec/resources/views/view_spec/_spacer.rhtml
122
- spec/resources/views/view_spec/accessor.rhtml
123
- spec/resources/views/view_spec/block_helper.rhtml
124
- spec/resources/views/view_spec/entry_form.rhtml
125
- spec/resources/views/view_spec/explicit_helper.rhtml
126
- spec/resources/views/view_spec/foo/show.rhtml
127
- spec/resources/views/view_spec/implicit_helper.rhtml
128
- spec/resources/views/view_spec/multiple_helpers.rhtml
107
+ spec/resources/views/rjs_spec/_replacement_partial.html.erb
108
+ spec/resources/views/rjs_spec/hide_div.js.rjs
109
+ spec/resources/views/rjs_spec/hide_page_element.js.rjs
110
+ spec/resources/views/rjs_spec/insert_html.js.rjs
111
+ spec/resources/views/rjs_spec/replace.js.rjs
112
+ spec/resources/views/rjs_spec/replace_html.js.rjs
113
+ spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs
114
+ spec/resources/views/rjs_spec/visual_effect.js.rjs
115
+ spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs
116
+ spec/resources/views/tag_spec/no_tags.html.erb
117
+ spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb
118
+ spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb
119
+ spec/resources/views/view_spec/_partial.html.erb
120
+ spec/resources/views/view_spec/_partial_used_twice.html.erb
121
+ spec/resources/views/view_spec/_partial_with_local_variable.html.erb
122
+ spec/resources/views/view_spec/_partial_with_sub_partial.html.erb
123
+ spec/resources/views/view_spec/_spacer.html.erb
124
+ spec/resources/views/view_spec/accessor.html.erb
125
+ spec/resources/views/view_spec/block_helper.html.erb
126
+ spec/resources/views/view_spec/entry_form.html.erb
127
+ spec/resources/views/view_spec/explicit_helper.html.erb
128
+ spec/resources/views/view_spec/foo/show.html.erb
129
+ spec/resources/views/view_spec/implicit_helper.html.erb
130
+ spec/resources/views/view_spec/multiple_helpers.html.erb
129
131
  spec/resources/views/view_spec/path_params.html.erb
130
- spec/resources/views/view_spec/should_not_receive.rhtml
131
- spec/resources/views/view_spec/template_with_partial.rhtml
132
- spec/resources/views/view_spec/template_with_partial_using_collection.rhtml
133
- spec/resources/views/view_spec/template_with_partial_with_array.rhtml
132
+ spec/resources/views/view_spec/should_not_receive.html.erb
133
+ spec/resources/views/view_spec/template_with_partial.html.erb
134
+ spec/resources/views/view_spec/template_with_partial_using_collection.html.erb
135
+ spec/resources/views/view_spec/template_with_partial_with_array.html.erb
134
136
  spec/spec/rails/example/assigns_hash_proxy_spec.rb
135
137
  spec/spec/rails/example/configuration_spec.rb
136
138
  spec/spec/rails/example/controller_example_group_spec.rb
@@ -140,7 +142,8 @@ spec/spec/rails/example/error_handling_spec.rb
140
142
  spec/spec/rails/example/example_group_factory_spec.rb
141
143
  spec/spec/rails/example/helper_example_group_spec.rb
142
144
  spec/spec/rails/example/model_example_group_spec.rb
143
- spec/spec/rails/example/shared_behaviour_spec.rb
145
+ spec/spec/rails/example/routing_example_group_spec.rb
146
+ spec/spec/rails/example/shared_routing_example_group_examples.rb
144
147
  spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb
145
148
  spec/spec/rails/example/view_example_group_spec.rb
146
149
  spec/spec/rails/extensions/action_view_base_spec.rb
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ Hoe.new('rspec-rails', Spec::Rails::VERSION::STRING) do |p|
20
20
  p.description = "Behaviour Driven Development for Ruby on Rails."
21
21
  p.rubyforge_name = 'rspec'
22
22
  p.developer('RSpec Development Team', 'rspec-devel@rubyforge.org')
23
- p.extra_deps = [["dchelimsky-rspec","1.1.99.9"],["rack",">=0.4.0"]]
23
+ p.extra_deps = [["dchelimsky-rspec","1.1.99.13"],["rack",">=0.4.0"]]
24
24
  p.extra_dev_deps = [["cucumber",">= 0.1.13"]]
25
25
  p.remote_rdoc_dir = "rspec-rails/#{Spec::Rails::VERSION::STRING}"
26
26
  end
@@ -55,9 +55,4 @@ namespace :update do
55
55
  task :manifest do
56
56
  system %q[touch Manifest.txt; rake check_manifest | grep -v "(in " | patch]
57
57
  end
58
-
59
- desc "update the gemspec"
60
- task :gemspec do
61
- system %q[rake debug_gem | grep -v "(in " | grep -v "s.add_dependency(%q<hoe" | grep -v "s.add_dependency(%q<cuc" > `basename \\`pwd\\``.gemspec]
62
- end
63
58
  end
data/Upgrade.markdown CHANGED
@@ -1,15 +1,17 @@
1
- # Upgrade to rspec-rails-1.1.99.x
1
+ # Upgrade to rspec-rails-1.1.99.x (pre rspec-rails-1.2)
2
2
 
3
- ## Supported Rails Versions
3
+ ## What's changed
4
+
5
+ ### Supported Rails Versions
4
6
 
5
7
  This release supports the following versions of rails:
6
8
 
7
9
  * 2.0.5
8
10
  * 2.1.2
9
11
  * 2.2.2
10
- * 2.3.0
12
+ * 2.3.1
11
13
 
12
- ## update generated files
14
+ ### update generated files
13
15
 
14
16
  Be sure to run "script/generate rspec" and allow the following files to be overwritten:
15
17
 
@@ -17,36 +19,85 @@ Be sure to run "script/generate rspec" and allow the following files to be overw
17
19
  * script/spec
18
20
  * script/spec_server
19
21
 
20
- ## controller.use\_rails\_error\_handling! is deprecated
22
+ ### ``controller.use_rails_error_handling!`` is deprecated
21
23
 
22
- Use rescue\_action\_in\_public! instead. It comes directly from rails and does
24
+ Use ``rescue_action_in_public!`` instead. It comes directly from rails and does
23
25
  exactly the same thing
24
26
 
25
- ## route_for
27
+ ### route_for
26
28
 
27
- After a change to edge rails broke our monkey-patched #route_for method, I
28
- decided to just delegate to rails' #assert_generates method. For most cases,
29
+ After a change to edge rails broke our monkey-patched ``route_for`` method, I
30
+ decided to just delegate to rails' ``assert_generates`` method. For most cases,
29
31
  this will not present a problem, but for some it might. You'll know if you
30
32
  upgrade and see any newly failing, route-related examples. Here are the things
31
33
  that you might need to change.
32
34
 
33
- * Make sure IDs are strings
35
+ #### Make sure IDs are strings
34
36
 
35
37
  If you had :id => 1 before, you need to change that to :id => "1"
36
38
 
37
- #old
38
- route_for(:controller => 'things', :action => 'show', :id => 1).should == "/things/1"
39
+ #old
40
+ route_for(:controller => 'things', :action => 'show', :id => 1).should == "/things/1"
39
41
 
40
- #new
41
- route_for(:controller => 'things', :action => 'show', :id => "1").should == "/things/1"
42
+ #new
43
+ route_for(:controller => 'things', :action => 'show', :id => "1").should == "/things/1"
42
44
 
43
- * Convert paths for non-get methods to hashes
45
+ #### Convert paths for non-get methods to hashes
44
46
 
45
47
  If you had an example with a route that requires post, put, or delete, you'll
46
48
  need to declare that explicitly.
47
49
 
48
- #old
49
- route_for(:controller => 'things', :action => 'create').should == "/things"
50
+ #old
51
+ route_for(:controller => 'things', :action => 'create').should == "/things"
52
+
53
+ #new
54
+ route_for(:controller => 'things', :action => 'create').should == {:path => "/things", :method => :post}
50
55
 
51
- #new
52
- route_for(:controller => 'things', :action => 'create').should == {:path => "/things", :method => :post}
56
+ ### Controller/template isolation
57
+
58
+ Even though controller specs do not render views by default (use
59
+ ``integrate_views`` to get them to render views), the way this works has
60
+ changed in this version.
61
+
62
+ It used to be that the view template need not even exist, but due to changes
63
+ in rails it became much more difficult to manage that for all the different
64
+ versions of rails that rspec-rails supports. So now the template must exist,
65
+ but it still won't be rendered unless you declare ``integrate_views``.
66
+
67
+ ## What's new
68
+
69
+ ### render no longer requires a path
70
+
71
+ The ``render()`` method in view specs will infer the path from the
72
+ first argument passed to ``describe()``.
73
+
74
+ describe "players/show" do
75
+ it "does something" do
76
+ render
77
+ response.should have_tag("....")
78
+ end
79
+ end
80
+
81
+ ### routing specs live in spec/routing
82
+
83
+ ``script/generate rspec_scaffold`` now generates its routing spec in
84
+ ``spec/routing/``.
85
+
86
+ ### bypass_rescue
87
+
88
+ Added a new ``bypass_rescue()`` declaration for controller specs. Use this
89
+ when you want to specify that an error is raised by an action, even if that
90
+ error is later captured by a ``rescue_from()`` declaration.
91
+
92
+ describe AccountController do
93
+ describe "GET @account" do
94
+ context "requested by anonymous user" do
95
+ it "denies access" do
96
+ bypass_rescue
97
+ lambda do
98
+ get :show, :id => "37"
99
+ end.should raise_error(AccessDenied)
100
+ end
101
+ end
102
+ end
103
+ end
@@ -112,11 +112,13 @@ namespace :spec do
112
112
  ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers')
113
113
  ::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers')
114
114
  ::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib')
115
+ ::STATS_DIRECTORIES << %w(Routing\ specs spec/lib) if File.exist?('spec/routing')
115
116
  ::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models')
116
117
  ::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views')
117
118
  ::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers')
118
119
  ::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers')
119
120
  ::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib')
121
+ ::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing')
120
122
  ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
121
123
  end
122
124
 
@@ -136,7 +138,7 @@ namespace :spec do
136
138
  end
137
139
 
138
140
  namespace :server do
139
- daemonized_server_pid = File.expand_path("#{RAILS_ROOT}/tmp/spec_server.pid")
141
+ daemonized_server_pid = File.expand_path("#{RAILS_ROOT}/tmp/pids/spec_server.pid")
140
142
 
141
143
  desc "start spec_server."
142
144
  task :start do
@@ -144,7 +146,7 @@ namespace :spec do
144
146
  $stderr.puts "spec_server is already running."
145
147
  else
146
148
  $stderr.puts %Q{Starting up spec_server ...}
147
- FileUtils.mkdir('tmp') unless test ?d, 'tmp'
149
+ FileUtils.mkdir_p('tmp/pids') unless test ?d, 'tmp/pids'
148
150
  system("ruby", "script/spec_server", "--daemon", "--pid", daemonized_server_pid)
149
151
  end
150
152
  end
@@ -1,4 +1,21 @@
1
1
  #!/usr/bin/env ruby
2
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../vendor/plugins/rspec/lib"))
3
- require 'spec'
2
+ rails_root = File.expand_path(File.dirname(__FILE__) + "/..")
3
+ rspec_gem_dir = nil
4
+ Dir["#{rails_root}/vendor/gems/*"].each do |subdir|
5
+ rspec_gem_dir = subdir if subdir.gsub("#{rails_root}/vendor/gems/","") =~ /^(\w+-)?rspec-(\d+)/ && File.exist?("#{subdir}/lib/spec/rake/spectask.rb")
6
+ end
7
+ rspec_plugin_dir = File.expand_path("#{rails_root}/vendor/plugins/rspec")
8
+
9
+ if rspec_gem_dir && (test ?d, rspec_plugin_dir)
10
+ raise "\n#{'*'*50}\nYou have rspec installed in both vendor/gems and vendor/plugins\nPlease pick one and dispose of the other.\n#{'*'*50}\n\n"
11
+ end
12
+
13
+ if rspec_gem_dir
14
+ $LOAD_PATH.unshift("#{rspec_gem_dir}/lib")
15
+ elsif File.exist?(rspec_plugin_dir)
16
+ $LOAD_PATH.unshift("#{rspec_plugin_dir}/lib")
17
+ end
18
+
19
+
20
+ require 'spec/autorun'
4
21
  exit ::Spec::Runner::CommandLine.run
@@ -1,5 +1,21 @@
1
1
  #!/usr/bin/env ruby
2
- $LOAD_PATH.unshift File.dirname(__FILE__) + '/../vendor/plugins/rspec-rails/lib' # For rspec installed as plugin
2
+ rails_root = File.expand_path(File.dirname(__FILE__) + "/..")
3
+ rspec_rails_gem_dir = nil
4
+ Dir["#{rails_root}/vendor/gems/*"].each do |subdir|
5
+ rspec_rails_gem_dir = subdir if subdir.gsub("#{rails_root}/vendor/gems/","") =~ /^(\w+-)?rspec-rails-(\d+)/
6
+ end
7
+ rspec_rails_plugin_dir = File.expand_path("#{rails_root}/vendor/plugins/rspec-rails")
8
+
9
+ if rspec_rails_gem_dir && (test ?d, rspec_rails_plugin_dir)
10
+ raise "\n#{'*'*50}\nYou have rspec installed in both vendor/gems and vendor/plugins\nPlease pick one and dispose of the other.\n#{'*'*50}\n\n"
11
+ end
12
+
13
+ if rspec_rails_gem_dir
14
+ $LOAD_PATH.unshift("#{rspec_rails_gem_dir}/lib")
15
+ elsif File.exist?(rspec_rails_plugin_dir)
16
+ $LOAD_PATH.unshift("#{rspec_rails_plugin_dir}/lib")
17
+ end
18
+
3
19
  require 'optparse'
4
20
  require 'spec/rails/spec_server'
5
21
 
@@ -33,5 +49,3 @@ if options[:daemon]
33
49
  else
34
50
  ::Spec::Rails::SpecServer.run
35
51
  end
36
-
37
- puts "Ready"
@@ -162,6 +162,7 @@ MESSAGE
162
162
  end
163
163
 
164
164
  def render(*args)
165
+ return super if Hash === args.last && args.last[:inline]
165
166
  @_rendered ? record_render(args[0]) : super
166
167
  end
167
168
 
@@ -211,7 +212,7 @@ MESSAGE
211
212
  def response(&block)
212
213
  # NOTE - we're setting @update for the assert_select_spec - kinda weird, huh?
213
214
  @update = block
214
- @_response || @response
215
+ super
215
216
  end
216
217
 
217
218
  def integrate_views!
@@ -219,7 +220,7 @@ MESSAGE
219
220
  end
220
221
 
221
222
  private
222
-
223
+
223
224
  def integrate_views?
224
225
  @integrate_views
225
226
  end
@@ -34,29 +34,15 @@ module Spec
34
34
  attr_accessor :output_buffer
35
35
 
36
36
  class HelperObject < ActionView::Base
37
+ def initialize(*args)
38
+ @template = self
39
+ super
40
+ end
37
41
  def protect_against_forgery?
38
42
  false
39
43
  end
40
44
 
41
- def session=(session)
42
- @session = session
43
- end
44
-
45
- def request=(request)
46
- @request = request
47
- end
48
-
49
- def flash=(flash)
50
- @flash = flash
51
- end
52
-
53
- def params=(params)
54
- @params = params
55
- end
56
-
57
- def controller=(controller)
58
- @controller = controller
59
- end
45
+ attr_writer :session, :request, :flash, :params, :controller
60
46
 
61
47
  private
62
48
  attr_reader :session, :request, :flash, :params, :controller
@@ -113,7 +99,7 @@ module Spec
113
99
  ActionView::Base.included_modules.reverse.each do |mod|
114
100
  include mod if mod.parents.include?(ActionView::Helpers)
115
101
  end
116
-
102
+
117
103
  before(:each) do
118
104
  @controller.request = @request
119
105
  @controller.url = ActionController::UrlRewriter.new @request, {} # url_for
@@ -0,0 +1,13 @@
1
+ module Spec
2
+ module Rails
3
+ module Example
4
+
5
+ class RoutingExampleGroup < ActionController::TestCase
6
+ tests Class.new(ActionController::Base)
7
+
8
+ Spec::Example::ExampleGroupFactory.register(:routing, self)
9
+ end
10
+
11
+ end
12
+ end
13
+ end