aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2008-04-27 17:52:35 -0700
committerJeremy Kemper <jeremy@bitsweat.net>2008-04-28 10:52:23 -0700
commit642bcd2d011ce8c32a0a69bfb4fd6942593584bb (patch)
treee6e1d6044dcd622c11ce8806738e67bfd9d8ecdb
parent8af98c3f8143d7086e15d4938fd56512ed584f2e (diff)
downloadrails-642bcd2d011ce8c32a0a69bfb4fd6942593584bb.tar.gz
rails-642bcd2d011ce8c32a0a69bfb4fd6942593584bb.tar.bz2
rails-642bcd2d011ce8c32a0a69bfb4fd6942593584bb.zip
Ruby 1.9 compat: force assert_select text encoding to the encoding of the regexp it's matching against.
-rw-r--r--actionpack/lib/action_controller/assertions/selector_assertions.rb5
-rw-r--r--actionpack/test/controller/assert_select_test.rb15
2 files changed, 15 insertions, 5 deletions
diff --git a/actionpack/lib/action_controller/assertions/selector_assertions.rb b/actionpack/lib/action_controller/assertions/selector_assertions.rb
index 573405c0f9..272b8f6841 100644
--- a/actionpack/lib/action_controller/assertions/selector_assertions.rb
+++ b/actionpack/lib/action_controller/assertions/selector_assertions.rb
@@ -263,12 +263,15 @@ module ActionController
if match_with = equals[:text]
matches.delete_if do |match|
text = ""
+ text.force_encoding(match_with.encoding) if text.respond_to?(:force_encoding)
stack = match.children.reverse
while node = stack.pop
if node.tag?
stack.concat node.children.reverse
else
- text << node.content
+ content = node.content
+ content.force_encoding(match_with.encoding) if content.respond_to?(:force_encoding)
+ text << content
end
end
text.strip! unless NO_STRIP.include?(match.name)
diff --git a/actionpack/test/controller/assert_select_test.rb b/actionpack/test/controller/assert_select_test.rb
index c8ad56cbc0..5af579f3e3 100644
--- a/actionpack/test/controller/assert_select_test.rb
+++ b/actionpack/test/controller/assert_select_test.rb
@@ -345,10 +345,17 @@ class AssertSelectTest < Test::Unit::TestCase
page.replace "test", "<div id=\"1\">\343\203\201\343\202\261\343\203\203\343\203\210</div>"
end
assert_select_rjs do
- assert_select "#1", :text => "\343\203\201\343\202\261\343\203\203\343\203\210"
- assert_select "#1", "\343\203\201\343\202\261\343\203\203\343\203\210"
- assert_select "#1", Regexp.new("\343\203\201..\343\203\210",0,'U')
- assert_raises(AssertionFailedError) { assert_select "#1", Regexp.new("\343\203\201.\343\203\210",0,'U') }
+ str = "#1"
+ assert_select str, :text => "\343\203\201\343\202\261\343\203\203\343\203\210"
+ assert_select str, "\343\203\201\343\202\261\343\203\203\343\203\210"
+ if str.respond_to?(:force_encoding)
+ str.force_encoding(Encoding::UTF_8)
+ assert_select str, /\343\203\201..\343\203\210/u
+ assert_raises(AssertionFailedError) { assert_select str, /\343\203\201.\343\203\210/u }
+ else
+ assert_select str, Regexp.new("\343\203\201..\343\203\210",0,'U')
+ assert_raises(AssertionFailedError) { assert_select str, Regexp.new("\343\203\201.\343\203\210",0,'U') }
+ end
end
end