diff options
| -rw-r--r-- | activesupport/test/clean_backtrace_test.rb | 5 | ||||
| -rw-r--r-- | activesupport/test/core_ext/duration_test.rb | 4 | ||||
| -rw-r--r-- | activesupport/test/core_ext/hash_ext_test.rb | 12 | ||||
| -rw-r--r-- | activesupport/test/core_ext/load_error_test.rb | 11 | ||||
| -rw-r--r-- | activesupport/test/core_ext/object/to_query_test.rb | 4 | ||||
| -rw-r--r-- | activesupport/test/core_ext/range_ext_test.rb | 7 | ||||
| -rw-r--r-- | activesupport/test/core_ext/string_ext_test.rb | 8 | ||||
| -rw-r--r-- | activesupport/test/core_ext/time_with_zone_test.rb | 1 | ||||
| -rw-r--r-- | activesupport/test/core_ext/uri_ext_test.rb | 2 | ||||
| -rw-r--r-- | activesupport/test/key_generator_test.rb | 30 | ||||
| -rw-r--r-- | activesupport/test/multibyte_proxy_test.rb | 34 | 
11 files changed, 114 insertions, 4 deletions
| diff --git a/activesupport/test/clean_backtrace_test.rb b/activesupport/test/clean_backtrace_test.rb index dd67a45cf6..05580352a9 100644 --- a/activesupport/test/clean_backtrace_test.rb +++ b/activesupport/test/clean_backtrace_test.rb @@ -34,6 +34,11 @@ class BacktraceCleanerSilencerTest < ActiveSupport::TestCase        [ "/other/class.rb" ],        @bc.clean([ "/mongrel/class.rb", "/other/class.rb", "/mongrel/stuff.rb" ])    end + +  test "backtrace cleaner should allow removing silencer" do +    @bc.remove_silencers! +    assert_equal ["/mongrel/stuff.rb"], @bc.clean(["/mongrel/stuff.rb"]) +  end  end  class BacktraceCleanerMultipleSilencersTest < ActiveSupport::TestCase diff --git a/activesupport/test/core_ext/duration_test.rb b/activesupport/test/core_ext/duration_test.rb index 328521bdb5..31af3c4521 100644 --- a/activesupport/test/core_ext/duration_test.rb +++ b/activesupport/test/core_ext/duration_test.rb @@ -162,6 +162,10 @@ class DurationTest < ActiveSupport::TestCase      assert_equal counter, 60    end +  def test_as_json +    assert_equal 172800, 2.days.as_json +  end +    def test_to_json      assert_equal '172800', 2.days.to_json    end diff --git a/activesupport/test/core_ext/hash_ext_test.rb b/activesupport/test/core_ext/hash_ext_test.rb index eb8e87cc31..03ec20eb39 100644 --- a/activesupport/test/core_ext/hash_ext_test.rb +++ b/activesupport/test/core_ext/hash_ext_test.rb @@ -706,7 +706,7 @@ class HashExtTest < ActiveSupport::TestCase        { :failore => "stuff", :funny => "business" }.assert_valid_keys(:failure, :funny)      end      assert_equal "Unknown key: :failore. Valid keys are: :failure, :funny", exception.message -     +      exception = assert_raise ArgumentError do        { :failore => "stuff", :funny => "business" }.assert_valid_keys([ :failure ])      end @@ -1500,6 +1500,16 @@ class HashToXmlTest < ActiveSupport::TestCase      end    end +  def test_from_xml_array_one +    expected = { 'numbers' => { 'type' => 'Array', 'value' => '1' }} +    assert_equal expected, Hash.from_xml('<numbers type="Array"><value>1</value></numbers>') +  end + +  def test_from_xml_array_many +    expected = { 'numbers' => { 'type' => 'Array', 'value' => [ '1', '2' ] }} +    assert_equal expected, Hash.from_xml('<numbers type="Array"><value>1</value><value>2</value></numbers>') +  end +    def test_from_trusted_xml_allows_symbol_and_yaml_types      expected = { 'product' => { 'name' => :value }}      assert_equal expected, Hash.from_trusted_xml('<product><name type="symbol">value</name></product>') diff --git a/activesupport/test/core_ext/load_error_test.rb b/activesupport/test/core_ext/load_error_test.rb index 31863d0aca..5f804c749b 100644 --- a/activesupport/test/core_ext/load_error_test.rb +++ b/activesupport/test/core_ext/load_error_test.rb @@ -14,6 +14,15 @@ class TestMissingSourceFile < ActiveSupport::TestCase        assert_equal 'nor/this/one.rb', e.path      end    end + +  def test_is_missing +    begin load 'nor_does_this_one' +    rescue MissingSourceFile => e +      assert e.is_missing?('nor_does_this_one') +      assert e.is_missing?('nor_does_this_one.rb') +      assert_not e.is_missing?('some_other_file') +    end +  end  end  class TestLoadError < ActiveSupport::TestCase @@ -29,4 +38,4 @@ class TestLoadError < ActiveSupport::TestCase        assert_equal 'nor/this/one.rb', e.path      end    end -end
\ No newline at end of file +end diff --git a/activesupport/test/core_ext/object/to_query_test.rb b/activesupport/test/core_ext/object/to_query_test.rb index 7457c4655a..47220e9509 100644 --- a/activesupport/test/core_ext/object/to_query_test.rb +++ b/activesupport/test/core_ext/object/to_query_test.rb @@ -46,6 +46,10 @@ class ToQueryTest < ActiveSupport::TestCase        :person => {:id => [20, 10]}    end +  def test_empty_array +    assert_equal "person%5B%5D=", [].to_query('person') +  end +    def test_nested_empty_hash      assert_equal '',        {}.to_query diff --git a/activesupport/test/core_ext/range_ext_test.rb b/activesupport/test/core_ext/range_ext_test.rb index 150e6b65fb..cfe31b75e8 100644 --- a/activesupport/test/core_ext/range_ext_test.rb +++ b/activesupport/test/core_ext/range_ext_test.rb @@ -12,7 +12,7 @@ class RangeTest < ActiveSupport::TestCase      date_range = Time.utc(2005, 12, 10, 15, 30)..Time.utc(2005, 12, 10, 17, 30)      assert_equal "BETWEEN '2005-12-10 15:30:00' AND '2005-12-10 17:30:00'", date_range.to_s(:db)    end -   +    def test_date_range      assert_instance_of Range, DateTime.new..DateTime.new      assert_instance_of Range, DateTime::Infinity.new..DateTime::Infinity.new @@ -116,4 +116,9 @@ class RangeTest < ActiveSupport::TestCase      datetime = DateTime.now      assert ((datetime - 1.hour)..datetime).each {}    end + +  def test_date_time_with_step +    datetime = DateTime.now +    assert ((datetime - 1.hour)..datetime).step(1) {} +  end  end diff --git a/activesupport/test/core_ext/string_ext_test.rb b/activesupport/test/core_ext/string_ext_test.rb index f74b1c8078..d77e6be595 100644 --- a/activesupport/test/core_ext/string_ext_test.rb +++ b/activesupport/test/core_ext/string_ext_test.rb @@ -775,6 +775,14 @@ class OutputSafetyTest < ActiveSupport::TestCase      string = "<b>hello</b>".html_safe      assert_equal string, ERB::Util.html_escape(string)    end + +  test "ERB::Util.html_escape_once only escapes once" do +    string = '1 < 2 & 3' +    escaped_string = "1 < 2 & 3" + +    assert_equal escaped_string, ERB::Util.html_escape_once(string) +    assert_equal escaped_string, ERB::Util.html_escape_once(escaped_string) +  end  end  class StringExcludeTest < ActiveSupport::TestCase diff --git a/activesupport/test/core_ext/time_with_zone_test.rb b/activesupport/test/core_ext/time_with_zone_test.rb index 75599a71c3..3000da8da4 100644 --- a/activesupport/test/core_ext/time_with_zone_test.rb +++ b/activesupport/test/core_ext/time_with_zone_test.rb @@ -367,6 +367,7 @@ class TimeWithZoneTest < ActiveSupport::TestCase    end    def test_acts_like_time +    assert @twz.acts_like_time?      assert @twz.acts_like?(:time)      assert ActiveSupport::TimeWithZone.new(DateTime.civil(2000), @time_zone).acts_like?(:time)    end diff --git a/activesupport/test/core_ext/uri_ext_test.rb b/activesupport/test/core_ext/uri_ext_test.rb index 03e388dd7a..43a5997ddd 100644 --- a/activesupport/test/core_ext/uri_ext_test.rb +++ b/activesupport/test/core_ext/uri_ext_test.rb @@ -7,7 +7,7 @@ class URIExtTest < ActiveSupport::TestCase    def test_uri_decode_handle_multibyte      str = "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E" # Ni-ho-nn-go in UTF-8, means Japanese. -    parser = URI::Parser.new +    parser = URI.parser      assert_equal str, parser.unescape(parser.escape(str))    end  end diff --git a/activesupport/test/key_generator_test.rb b/activesupport/test/key_generator_test.rb index 525082d313..f7e8e9a795 100644 --- a/activesupport/test/key_generator_test.rb +++ b/activesupport/test/key_generator_test.rb @@ -29,4 +29,34 @@ class KeyGeneratorTest < ActiveSupport::TestCase    end  end +class CachingKeyGeneratorTest < ActiveSupport::TestCase +  def setup +    @secret    = SecureRandom.hex(64) +    @generator = ActiveSupport::KeyGenerator.new(@secret, :iterations=>2) +    @caching_generator = ActiveSupport::CachingKeyGenerator.new(@generator) +  end + +  test "Generating a cached key for same salt and key size" do +    derived_key = @caching_generator.generate_key("some_salt", 32) +    cached_key = @caching_generator.generate_key("some_salt", 32) + +    assert_equal derived_key, cached_key +    assert_equal derived_key.object_id, cached_key.object_id +  end + +  test "Does not cache key for different salt" do +    derived_key = @caching_generator.generate_key("some_salt", 32) +    different_salt_key = @caching_generator.generate_key("other_salt", 32) + +    assert_not_equal derived_key, different_salt_key +  end + +  test "Does not cache key for different length" do +    derived_key = @caching_generator.generate_key("some_salt", 32) +    different_length_key = @caching_generator.generate_key("some_salt", 64) + +    assert_not_equal derived_key, different_length_key +  end +end +  end diff --git a/activesupport/test/multibyte_proxy_test.rb b/activesupport/test/multibyte_proxy_test.rb new file mode 100644 index 0000000000..d8ffd7ca9c --- /dev/null +++ b/activesupport/test/multibyte_proxy_test.rb @@ -0,0 +1,34 @@ +# encoding: utf-8 + +require 'abstract_unit' + +class MultibyteProxyText < ActiveSupport::TestCase +  class AsciiOnlyEncoder +    attr_reader :wrapped_string +    alias to_s wrapped_string + +    def initialize(string) +      @wrapped_string = string.gsub(/[^\u0000-\u007F]/, '?') +    end +  end + +  def with_custom_encoder(encoder) +    original_proxy_class = ActiveSupport::Multibyte.proxy_class + +    begin +      ActiveSupport::Multibyte.proxy_class = encoder + +      yield +    ensure +      ActiveSupport::Multibyte.proxy_class = original_proxy_class +    end +  end + +  test "custom multibyte encoder" do +    with_custom_encoder(AsciiOnlyEncoder) do +      assert_equal "s?me string 123", "søme string 123".mb_chars.to_s +    end + +    assert_equal "søme string 123", "søme string 123".mb_chars.to_s +  end +end | 
