From 41c362352433f265a95c00d8e7b5c1f1299e9011 Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Thu, 12 Oct 2006 21:13:05 +0000 Subject: Use String#chars in TextHelper::excerpt. Closes #6386 [Manfred Stienstra] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5288 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/test/template/text_helper_test.rb | 43 ++++++++++++---------------- actionpack/test/testing_sandbox.rb | 29 +++++-------------- 2 files changed, 25 insertions(+), 47 deletions(-) (limited to 'actionpack/test') diff --git a/actionpack/test/template/text_helper_test.rb b/actionpack/test/template/text_helper_test.rb index a3962095ae..dd127cde66 100644 --- a/actionpack/test/template/text_helper_test.rb +++ b/actionpack/test/template/text_helper_test.rb @@ -24,31 +24,16 @@ class TextHelperTest < Test::Unit::TestCase assert_equal "Hello Wor...", truncate("Hello World!!", 12) end - def test_truncate_multibyte_without_kcode - result = execute_in_sandbox(<<-'CODE') - require File.dirname(__FILE__) + '/../../activesupport/lib/active_support/core_ext/kernel' - require "#{File.dirname(__FILE__)}/../lib/action_view/helpers/text_helper" - include ActionView::Helpers::TextHelper - truncate("\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224", 10) - CODE - - assert_equal "\354\225\210\353\205\225\355...", result - end - - def test_truncate_multibyte_with_kcode - result = execute_in_sandbox(<<-'CODE') - $KCODE = "u" - require 'jcode' - - require File.dirname(__FILE__) + '/../../activesupport/lib/active_support/core_ext/kernel' - require "#{File.dirname(__FILE__)}/../lib/action_view/helpers/text_helper" - include ActionView::Helpers::TextHelper - truncate("\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254\353\236 \354\225\204\353\235\274\353\246\254\354\230\244", 10) - CODE - - assert_equal "\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254\353\236 ...", result + def test_truncate_multibyte + with_kcode 'none' do + assert_equal "\354\225\210\353\205\225\355...", truncate("\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224", 10) + end + with_kcode 'u' do + assert_equal "\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254\353\236 ...", + truncate("\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254\353\236 \354\225\204\353\235\274\353\246\254\354\230\244", 10) + end end - + def test_strip_links assert_equal "on my mind", strip_links("on my mind") assert_equal "on my mind", strip_links("on my mind") @@ -105,7 +90,15 @@ class TextHelperTest < Test::Unit::TestCase assert_equal('...is a beautiful! morn...', excerpt('This is a beautiful! morning', 'beautiful', 5)) assert_equal('...is a beautiful? morn...', excerpt('This is a beautiful? morning', 'beautiful', 5)) end - + + def test_excerpt_with_utf8 + with_kcode('u') do + assert_equal("...fficiency could not be h...", excerpt("That's why efficiency could not be helped", 'could', 8)) + end + with_kcode('none') do + assert_equal("...\203ciency could not be h...", excerpt("That's why efficiency could not be helped", 'could', 8)) + end + end def test_word_wrap assert_equal("my very very\nvery long\nstring", word_wrap("my very very very long string", 15)) diff --git a/actionpack/test/testing_sandbox.rb b/actionpack/test/testing_sandbox.rb index b21f411730..b3b8b0f4d4 100644 --- a/actionpack/test/testing_sandbox.rb +++ b/actionpack/test/testing_sandbox.rb @@ -1,26 +1,11 @@ module TestingSandbox - - # This whole thing *could* be much simpler, but I don't think Tempfile, - # popen and others exist on all platforms (like Windows). - def execute_in_sandbox(code) - test_name = "#{File.dirname(__FILE__)}/test.#{$$}.rb" - res_name = "#{File.dirname(__FILE__)}/test.#{$$}.out" - - File.open(test_name, "w+") do |file| - file.write(<<-CODE) - $:.unshift "../lib" - block = Proc.new do - #{code} - end - print block.call - CODE + # Temporarily replaces KCODE for the block + def with_kcode(kcode) + old_kcode, $KCODE = $KCODE, kcode + begin + yield + ensure + $KCODE = old_kcode end - - system("ruby #{test_name} > #{res_name}") or raise "could not run test in sandbox" - File.read(res_name) - ensure - File.delete(test_name) rescue nil - File.delete(res_name) rescue nil end - end -- cgit v1.2.3