diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-02 23:15:08 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-02 23:15:08 +0000 |
commit | 33af94015b62d791d8ca8f1cdf355e153a1c6be5 (patch) | |
tree | 5298effdb2cf62ab20ee87923fe6c7c8601978e1 | |
parent | f6a67b6760ca53a592a793bfe6541bff653c7ce9 (diff) |
* ext/syck/emitter.c (syck_scan_scalar): set SCAN_WHITEEDGE flag
when scalar begins with newline. patches from Dave B <daz AT
d10.karoo.co.uk> at [ruby-core:23019] and caleb clausen at
[ruby-core:25851]. [ruby-core:23006][ruby-core:29925]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@27591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ext/syck/emitter.c | 4 | ||||
-rw-r--r-- | test/yaml/test_yaml.rb | 116 | ||||
-rw-r--r-- | version.h | 6 |
4 files changed, 105 insertions, 28 deletions
@@ -1,3 +1,10 @@ +Mon May 3 08:15:05 2010 Nobuyoshi Nakada <[email protected]> + + * ext/syck/emitter.c (syck_scan_scalar): set SCAN_WHITEEDGE flag + when scalar begins with newline. patches from Dave B <daz AT + d10.karoo.co.uk> at [ruby-core:23019] and caleb clausen at + [ruby-core:25851]. [ruby-core:23006][ruby-core:29925] + Sun May 2 13:39:31 2010 Nobuyoshi Nakada <[email protected]> * lib/cgi.rb (CGI::NEEDS_BINMODE): check if O_BINARY is defined. diff --git a/ext/syck/emitter.c b/ext/syck/emitter.c index 8e30b0acc5..5510064aa6 100644 --- a/ext/syck/emitter.c +++ b/ext/syck/emitter.c @@ -570,8 +570,8 @@ syck_scan_scalar( int req_width, const char *cursor, long len ) } else if ( len > 1 && cursor[len-2] == '\n' ) { flags |= SCAN_MANYNL_E; } - if ( - ( len > 0 && ( cursor[0] == ' ' || cursor[0] == '\t' ) ) || + if ( + ( len > 0 && ( cursor[0] == ' ' || cursor[0] == '\t' || cursor[0] == '\n' || cursor[0] == '\r' ) ) || ( len > 1 && ( cursor[len-1] == ' ' || cursor[len-1] == '\t' ) ) ) { flags |= SCAN_WHITEEDGE; diff --git a/test/yaml/test_yaml.rb b/test/yaml/test_yaml.rb index 39b752af1e..c429631a9c 100644 --- a/test/yaml/test_yaml.rb +++ b/test/yaml/test_yaml.rb @@ -1,4 +1,4 @@ -# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- +# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4; indent-tabs-mode: t -*- # vim:sw=4:ts=4 # $Id$ # @@ -15,31 +15,31 @@ class YAML_Unit_Tests < Test::Unit::TestCase # Convert between YAML and the object to verify correct parsing and # emitting # - def assert_to_yaml( obj, yaml ) - assert_equal( obj, YAML::load( yaml ) ) - assert_equal( obj, YAML::parse( yaml ).transform ) - assert_equal( obj, YAML::load( obj.to_yaml ) ) - assert_equal( obj, YAML::parse( obj.to_yaml ).transform ) + def assert_to_yaml( obj, yaml, msg = nil ) + assert_equal( obj, YAML::load( yaml ), msg ) + assert_equal( obj, YAML::parse( yaml ).transform, msg ) + assert_equal( obj, YAML::load( obj.to_yaml ), msg ) + assert_equal( obj, YAML::parse( obj.to_yaml ).transform, msg ) assert_equal( obj, YAML::load( obj.to_yaml( :UseVersion => true, :UseHeader => true, :SortKeys => true ) - ) ) + ), msg ) end # # Test parser only # - def assert_parse_only( obj, yaml ) - assert_equal( obj, YAML::load( yaml ) ) - assert_equal( obj, YAML::parse( yaml ).transform ) + def assert_parse_only( obj, yaml, msg = nil ) + assert_equal( obj, YAML::load( yaml ), msg ) + assert_equal( obj, YAML::parse( yaml ).transform, msg ) end - def assert_cycle( obj ) - assert_equal( obj, YAML::load( obj.to_yaml ) ) + def assert_cycle( obj, msg = nil ) + assert_equal( obj, YAML::load( obj.to_yaml ), msg ) end - def assert_path_segments( path, segments ) + def assert_path_segments( path, segments, msg = nil ) YAML::YPath.each_path( path ) { |choice| - assert_equal( choice.segments, segments.shift ) + assert_equal( choice.segments, segments.shift, msg ) } assert_equal( segments.length, 0, "Some segments leftover: #{ segments.inspect }" ) end @@ -427,6 +427,85 @@ EOY ) end + # + # Reports from N.Easterly & J.Trupiano : Tests with patch from daz + # [ruby-core:23006] [Bug #1311] http://redmine.ruby-lang.org/issues/show/1311 + # + def test_scan_scalar_nl + bug1311 = '[ruby-core:23006]' + assert_cycle(<<EoY, bug1311) + + a +b +EoY + assert_cycle(<<EoY, bug1311) + + a + b +c +EoY + assert_cycle(<<EoY, bug1311) + + a + b +EoY + assert_cycle(" Do I work?\nNo indent", bug1311) + assert_cycle(" \n Do I work?\nNo indent", bug1311) + assert_cycle("\n Do I work?\nNo indent", bug1311) + assert_cycle("\n", bug1311) + assert_cycle("\n\n", bug1311) + assert_cycle("\r\n", bug1311) + + assert_cycle <<EoY, '[ruby-core:28777]' + Domain name: + ckgteam.co.uk + + Registrant: + James Gregory + + Registrant type: + UK Individual + + Registrant's address: + The registrant is a non-trading individual who has opted to have their + address omitted from the WHOIS service. + + Registrar: + Webfusion Ltd t/a 123-Reg.co.uk [Tag = 123-REG] + URL: http://www.123-reg.co.uk + + Relevant dates: + Registered on: 16-Nov-2009 + Renewal date: 16-Nov-2011 + Last updated: 25-Nov-2009 + + Registration status: + Registered until renewal date. + + Name servers: + ns1.slicehost.net + ns2.slicehost.net + ns3.slicehost.net + + WHOIS lookup made at 11:56:46 19-Mar-2010 + +-- +This WHOIS information is provided for free by Nominet UK the central registry +for .uk domain names. This information and the .uk WHOIS are: + + Copyright Nominet UK 1996 - 2010. + +You may not access the .uk WHOIS or use any data from it except as permitted +by the terms of use available in full at http://www.nominet.org.uk/whois, which +includes restrictions on: (A) use of the data for advertising, or its +repackaging, recompilation, redistribution or reuse (B) obscuring, removing +or hiding any or all of this notice and (C) exceeding query rate or volume +limits. The data is provided on an 'as-is' basis and may lag behind the +register. Access may be withdrawn or restricted at any time. +EoY + + end + def test_spec_multiline_scalars # Multiline flow scalars assert_parse_only( @@ -1281,12 +1360,3 @@ EOY raise "id collision in ordered map" if omap.to_yaml =~ /id\d+/ end end - -if $0 == __FILE__ - suite = Test::Unit::TestSuite.new('YAML') - ObjectSpace.each_object(Class) do |klass| - suite << klass.suite if (Test::Unit::TestCase > klass) - end - require 'test/unit/ui/console/testrunner' - Test::Unit::UI::Console::TestRunner.run(suite).passed? -end @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.8.8" -#define RUBY_RELEASE_DATE "2010-05-02" +#define RUBY_RELEASE_DATE "2010-05-03" #define RUBY_VERSION_CODE 188 -#define RUBY_RELEASE_CODE 20100502 +#define RUBY_RELEASE_CODE 20100503 #define RUBY_PATCHLEVEL -1 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 8 #define RUBY_RELEASE_YEAR 2010 #define RUBY_RELEASE_MONTH 5 -#define RUBY_RELEASE_DAY 2 +#define RUBY_RELEASE_DAY 3 #define NO_STRING_LITERAL_CONCATENATION 1 #ifdef RUBY_EXTERN |