diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2008-04-27 17:52:35 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-04-28 10:52:23 -0700 |
commit | 642bcd2d011ce8c32a0a69bfb4fd6942593584bb (patch) | |
tree | e6e1d6044dcd622c11ce8806738e67bfd9d8ecdb | |
parent | 8af98c3f8143d7086e15d4938fd56512ed584f2e (diff) | |
download | rails-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.rb | 5 | ||||
-rw-r--r-- | actionpack/test/controller/assert_select_test.rb | 15 |
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 |