Permalink
Browse files

Added view template invalid name check, along with tests. No merges i…

…n commit.
  • Loading branch information...
1 parent 704ee0d commit 2668dce1c004d19f1c94cbde9151cef0aa7ec120 huskins committed Jul 13, 2011
@@ -301,6 +301,12 @@ def setup(context, options, block)
paths.map! { |path| retrieve_variable(path).unshift(path) }
end
+ if String === partial && @variable !~ /^[a-z_][a-zA-Z_0-9]*$/
+ raise ArgumentError.new("The partial name (#{partial}) is not a valid Ruby identifier; " +
+ "make sure your partial name starts with a letter or underscore, " +
+ "and is followed by any combinations of letters, numbers, or underscores.")
+ end
+
self
end
@@ -0,0 +1 @@
+<h1>Invalid partial</h1>
@@ -98,6 +98,15 @@ def test_render_partial_with_locals_from_default
assert_equal "only partial", @view.render("test/partial_only", :counter_counter => 5)
end
+ def test_render_partial_with_invalid_name
+ @view.render(:partial => "test/200")
+ flunk "Render did not raise ArgumentError"
+ rescue ArgumentError => e
+ assert_equal "The partial name (test/200) is not a valid Ruby identifier; " +
+ "make sure your partial name starts with a letter or underscore, " +
+ "and is followed by any combinations of letters, numbers, or underscores.", e.message
+ end
+
def test_render_partial_with_errors
@view.render(:partial => "test/raise")
flunk "Render did not raise Template::Error"

0 comments on commit 2668dce

Please sign in to comment.