[前][次][番号順一覧][スレッド一覧]

ruby-changes:54706

From: kou <ko1@a...>
Date: Fri, 25 Jan 2019 15:50:08 +0900 (JST)
Subject: [ruby-changes:54706] kou:r66922 (trunk): Upgrade CSV to 3.0.4

kou	2019-01-25 15:49:59 +0900 (Fri, 25 Jan 2019)

  New Revision: 66922

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=66922

  Log:
    Upgrade CSV to 3.0.4

  Added directories:
    trunk/test/csv/parse/
    trunk/test/csv/write/
  Added files:
    trunk/test/csv/helper.rb
    trunk/test/csv/parse/test_column_separator.rb
    trunk/test/csv/parse/test_convert.rb
    trunk/test/csv/parse/test_each.rb
    trunk/test/csv/parse/test_general.rb
    trunk/test/csv/parse/test_header.rb
    trunk/test/csv/parse/test_liberal_parsing.rb
    trunk/test/csv/parse/test_rewind.rb
    trunk/test/csv/parse/test_unconverted_fields.rb
    trunk/test/csv/write/test_general.rb
    trunk/test/csv/write/test_quote_empty.rb
  Removed files:
    trunk/test/csv/base.rb
    trunk/test/csv/test_csv_parsing.rb
    trunk/test/csv/test_csv_writing.rb
    trunk/test/csv/test_headers.rb
    trunk/test/csv/ts_all.rb
  Modified files:
    trunk/NEWS
    trunk/lib/csv/csv.gemspec
    trunk/lib/csv/parser.rb
    trunk/lib/csv/row.rb
    trunk/lib/csv/table.rb
    trunk/lib/csv/version.rb
    trunk/lib/csv/writer.rb
    trunk/lib/csv.rb
    trunk/test/csv/test_data_converters.rb
    trunk/test/csv/test_encodings.rb
    trunk/test/csv/test_features.rb
    trunk/test/csv/test_interface.rb
    trunk/test/csv/test_row.rb
    trunk/test/csv/test_table.rb
Index: test/csv/test_csv_parsing.rb
===================================================================
--- test/csv/test_csv_parsing.rb	(revision 66921)
+++ test/csv/test_csv_parsing.rb	(nonexistent)
@@ -1,267 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/test/csv/test_csv_parsing.rb#L0
-#!/usr/bin/env ruby -w
-# encoding: UTF-8
-# frozen_string_literal: false
-
-# tc_csv_parsing.rb
-#
-# Created by James Edward Gray II on 2005-10-31.
-
-require "timeout"
-
-require_relative "base"
-
-#
-# Following tests are my interpretation of the
-# {CSV RCF}[http://www.ietf.org/rfc/rfc4180.txt].  I only deviate from that
-# document in one place (intentionally) and that is to make the default row
-# separator <tt>$/</tt>.
-#
-class TestCSV::Parsing < TestCSV
-  extend DifferentOFS
-
-  BIG_DATA = "123456789\n" * 1024
-
-  def test_mastering_regex_example
-    ex = %Q{Ten Thousand,10000, 2710 ,,"10,000","It's ""10 Grand"", baby",10K}
-    assert_equal( [ "Ten Thousand", "10000", " 2710 ", nil, "10,000",
-                    "It's \"10 Grand\", baby", "10K" ],
-                  CSV.parse_line(ex) )
-  end
-
-  # Old Ruby 1.8 CSV library tests.
-  def test_std_lib_csv
-    [ ["\t", ["\t"]],
-      ["foo,\"\"\"\"\"\",baz", ["foo", "\"\"", "baz"]],
-      ["foo,\"\"\"bar\"\"\",baz", ["foo", "\"bar\"", "baz"]],
-      ["\"\"\"\n\",\"\"\"\n\"", ["\"\n", "\"\n"]],
-      ["foo,\"\r\n\",baz", ["foo", "\r\n", "baz"]],
-      ["\"\"", [""]],
-      ["foo,\"\"\"\",baz", ["foo", "\"", "baz"]],
-      ["foo,\"\r.\n\",baz", ["foo", "\r.\n", "baz"]],
-      ["foo,\"\r\",baz", ["foo", "\r", "baz"]],
-      ["foo,\"\",baz", ["foo", "", "baz"]],
-      ["\",\"", [","]],
-      ["foo", ["foo"]],
-      [",,", [nil, nil, nil]],
-      [",", [nil, nil]],
-      ["foo,\"\n\",baz", ["foo", "\n", "baz"]],
-      ["foo,,baz", ["foo", nil, "baz"]],
-      ["\"\"\"\r\",\"\"\"\r\"", ["\"\r", "\"\r"]],
-      ["\",\",\",\"", [",", ","]],
-      ["foo,bar,", ["foo", "bar", nil]],
-      [",foo,bar", [nil, "foo", "bar"]],
-      ["foo,bar", ["foo", "bar"]],
-      [";", [";"]],
-      ["\t,\t", ["\t", "\t"]],
-      ["foo,\"\r\n\r\",baz", ["foo", "\r\n\r", "baz"]],
-      ["foo,\"\r\n\n\",baz", ["foo", "\r\n\n", "baz"]],
-      ["foo,\"foo,bar\",baz", ["foo", "foo,bar", "baz"]],
-      [";,;", [";", ";"]] ].each do |csv_test|
-      assert_equal(csv_test.last, CSV.parse_line(csv_test.first))
-    end
-
-    [ ["foo,\"\"\"\"\"\",baz", ["foo", "\"\"", "baz"]],
-      ["foo,\"\"\"bar\"\"\",baz", ["foo", "\"bar\"", "baz"]],
-      ["foo,\"\r\n\",baz", ["foo", "\r\n", "baz"]],
-      ["\"\"", [""]],
-      ["foo,\"\"\"\",baz", ["foo", "\"", "baz"]],
-      ["foo,\"\r.\n\",baz", ["foo", "\r.\n", "baz"]],
-      ["foo,\"\r\",baz", ["foo", "\r", "baz"]],
-      ["foo,\"\",baz", ["foo", "", "baz"]],
-      ["foo", ["foo"]],
-      [",,", [nil, nil, nil]],
-      [",", [nil, nil]],
-      ["foo,\"\n\",baz", ["foo", "\n", "baz"]],
-      ["foo,,baz", ["foo", nil, "baz"]],
-      ["foo,bar", ["foo", "bar"]],
-      ["foo,\"\r\n\n\",baz", ["foo", "\r\n\n", "baz"]],
-      ["foo,\"foo,bar\",baz", ["foo", "foo,bar", "baz"]] ].each do |csv_test|
-      assert_equal(csv_test.last, CSV.parse_line(csv_test.first))
-    end
-  end
-
-  # From:  http://ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-core/6496
-  def test_aras_edge_cases
-    [ [%Q{a,b},               ["a", "b"]],
-      [%Q{a,"""b"""},         ["a", "\"b\""]],
-      [%Q{a,"""b"},           ["a", "\"b"]],
-      [%Q{a,"b"""},           ["a", "b\""]],
-      [%Q{a,"\nb"""},         ["a", "\nb\""]],
-      [%Q{a,"""\nb"},         ["a", "\"\nb"]],
-      [%Q{a,"""\nb\n"""},     ["a", "\"\nb\n\""]],
-      [%Q{a,"""\nb\n""",\nc}, ["a", "\"\nb\n\"", nil]],
-      [%Q{a,,,},              ["a", nil, nil, nil]],
-      [%Q{,},                 [nil, nil]],
-      [%Q{"",""},             ["", ""]],
-      [%Q{""""},              ["\""]],
-      [%Q{"""",""},           ["\"",""]],
-      [%Q{,""},               [nil,""]],
-      [%Q{,"\r"},             [nil,"\r"]],
-      [%Q{"\r\n,"},           ["\r\n,"]],
-      [%Q{"\r\n,",},          ["\r\n,", nil]] ].each do |edge_case|
-        assert_equal(edge_case.last, CSV.parse_line(edge_case.first))
-      end
-  end
-
-  def test_james_edge_cases
-    # A read at eof? should return nil.
-    assert_equal(nil, CSV.parse_line(""))
-    #
-    # With Ruby 1.8 CSV it's impossible to tell an empty line from a line
-    # containing a single +nil+ field.  The old CSV library returns
-    # <tt>[nil]</tt> in these cases, but <tt>Array.new</tt> makes more sense to
-    # me.
-    #
-    assert_equal(Array.new, CSV.parse_line("\n1,2,3\n"))
-  end
-
-  def test_rob_edge_cases
-    [ [%Q{"a\nb"},                         ["a\nb"]],
-      [%Q{"\n\n\n"},                       ["\n\n\n"]],
-      [%Q{a,"b\n\nc"},                     ['a', "b\n\nc"]],
-      [%Q{,"\r\n"},                        [nil,"\r\n"]],
-      [%Q{,"\r\n."},                       [nil,"\r\n."]],
-      [%Q{"a\na","one newline"},           ["a\na", 'one newline']],
-      [%Q{"a\n\na","two newlines"},        ["a\n\na", 'two newlines']],
-      [%Q{"a\r\na","one CRLF"},            ["a\r\na", 'one CRLF']],
-      [%Q{"a\r\n\r\na","two CRLFs"},       ["a\r\n\r\na", 'two CRLFs']],
-      [%Q{with blank,"start\n\nfinish"\n}, ['with blank', "start\n\nfinish"]],
-    ].each do |edge_case|
-      assert_equal(edge_case.last, CSV.parse_line(edge_case.first))
-    end
-  end
-
-  def test_non_regex_edge_cases
-    # An early version of the non-regex parser fails this test
-    [ [ "foo,\"foo,bar,baz,foo\",\"foo\"",
-        ["foo", "foo,bar,baz,foo", "foo"] ] ].each do |edge_case|
-      assert_equal(edge_case.last, CSV.parse_line(edge_case.first))
-    end
-
-    assert_raise(CSV::MalformedCSVError) do
-      CSV.parse_line("1,\"23\"4\"5\", 6")
-    end
-  end
-
-  def test_malformed_csv_cr_first_line
-    error = assert_raise(CSV::MalformedCSVError) do
-      CSV.parse_line("1,2\r,3", row_sep: "\n")
-    end
-    assert_equal("Unquoted fields do not allow \\r or \\n in line 1.",
-                 error.message)
-  end
-
-  def test_malformed_csv_cr_middle_line
-    csv = <<-CSV
-line,1,abc
-line,2,"def\nghi"
-
-line,4,some\rjunk
-line,5,jkl
-    CSV
-
-    error = assert_raise(CSV::MalformedCSVError) do
-      CSV.parse(csv)
-    end
-    assert_equal("Unquoted fields do not allow \\r or \\n in line 4.",
-                 error.message)
-  end
-
-  def test_malformed_csv_unclosed_quote
-    error = assert_raise(CSV::MalformedCSVError) do
-      CSV.parse_line('1,2,"3...')
-    end
-    assert_equal("Unclosed quoted field in line 1.",
-                 error.message)
-  end
-
-  def test_malformed_csv_illegal_quote_middle_line
-    csv = <<-CSV
-line,1,abc
-line,2,"def\nghi"
-
-line,4,8'10"
-line,5,jkl
-    CSV
-
-    error = assert_raise(CSV::MalformedCSVError) do
-      CSV.parse(csv)
-    end
-    assert_equal("Illegal quoting in line 4.",
-                 error.message)
-  end
-
-  def test_the_parse_fails_fast_when_it_can_for_unquoted_fields
-    assert_parse_errors_out('valid,fields,bad start"' + BIG_DATA)
-  end
-
-  def test_the_parse_fails_fast_when_it_can_for_unescaped_quotes
-    assert_parse_errors_out('valid,fields,"bad start"unescaped' + BIG_DATA)
-  end
-
-  def test_field_size_limit_controls_lookahead
-    assert_parse_errors_out( 'valid,fields,"' + BIG_DATA + '"',
-                             field_size_limit: 2048 )
-  end
-
-  def test_field_size_limit_in_extended_column_not_exceeding
-    data = <<~DATA
-      "a","b"
-      "
-      2
-      ",""
-    DATA
-    assert_nothing_raised(CSV::MalformedCSVError) do
-      CSV.parse(data, field_size_limit: 4)
-    end
-  end
-
-  def test_field_size_limit_in_extended_column_exceeding
-    data = <<~DATA
-      "a","b"
-      "
-      2345
-      ",""
-    DATA
-    assert_parse_errors_out(data, field_size_limit: 5)
-  end
-
-  def test_col_sep_comma
-    assert_equal([["a", "b", nil, "d"]],
-                 CSV.parse("a,b,,d", col_sep: ","))
-  end
-
-  def test_col_sep_space
-    assert_equal([["a", "b", nil, "d"]],
-                 CSV.parse("a b  d", col_sep: " "))
-  end
-
-  def test_row_sep_auto_cr
-    assert_equal([["a"]], CSV.parse("a\r"))
-  end
-
-  def test_row_sep_auto_lf
-    assert_equal([["a"]], CSV.parse("a\n"))
-  end
-
-  def test_row_sep_auto_cr_lf
-    assert_equal([["a"]], CSV.parse("a\r\n"))
-  end
-
-  def test_headers_empty_line
-    assert_equal(CSV::Table.new([CSV::Row.new(["header1"], [])],
-                                headers: ["header1"]),
-                 CSV.parse("\n", headers: "header1"))
-  end
-
-  private
-
-  def assert_parse_errors_out(*args)
-    assert_raise(CSV::MalformedCSVError) do
-      Timeout.timeout(0.2) do
-        CSV.parse(*args)
-        fail("Parse didn't error out")
-      end
-    end
-  end
-end

Property changes on: test/csv/test_csv_parsing.rb
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-LF
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: test/csv/test_csv_writing.rb
===================================================================
--- test/csv/test_csv_writing.rb	(revision 66921)
+++ test/csv/test_csv_writing.rb	(nonexistent)
@@ -1,95 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/test/csv/test_csv_writing.rb#L0
-#!/usr/bin/env ruby -w
-# encoding: UTF-8
-# frozen_string_literal: false
-
-# tc_csv_writing.rb
-#
-# Created by James Edward Gray II on 2005-10-31.
-require_relative "base"
-
-class TestCSV::Writing < TestCSV
-  extend DifferentOFS
-
-  def test_writing
-    [ ["\t",                      ["\t"]],
-      ["foo,\"\"\"\"\"\",baz",    ["foo", "\"\"", "baz"]],
-      ["foo,\"\"\"bar\"\"\",baz", ["foo", "\"bar\"", "baz"]],
-      ["\"\"\"\n\",\"\"\"\n\"",   ["\"\n", "\"\n"]],
-      ["foo,\"\r\n\",baz",        ["foo", "\r\n", "baz"]],
-      ["\"\"",                    [""]],
-      ["foo,\"\"\"\",baz",        ["foo", "\"", "baz"]],
-      ["foo,\"\r.\n\",baz",       ["foo", "\r.\n", "baz"]],
-      ["foo,\"\r\",baz",          ["foo", "\r", "baz"]],
-      ["foo,\"\",baz",            ["foo", "", "baz"]],
-      ["\",\"",                   [","]],
-      ["foo",                     ["foo"]],
-      [",,",                      [nil, nil, nil]],
-      [",",                       [nil, nil]],
-      ["foo,\"\n\",baz",          ["foo", "\n", "baz"]],
-      ["foo,,baz",                ["foo", nil, "baz"]],
-      ["\"\"\"\r\",\"\"\"\r\"",   ["\"\r", "\"\r"]],
-      ["\",\",\",\"",             [",", ","]],
-      ["foo,bar,",                ["foo", "bar", nil]],
-      [",foo,bar",                [nil, "foo", "bar"]],
-      ["foo,bar",                 ["foo", "bar"]],
-      [";",                       [";"]],
-      ["\t,\t",                   ["\t", "\t"]],
-      ["foo,\"\r\n\r\",baz",      ["foo", "\r\n\r", "baz"]],
-      ["foo,\"\r\n\n\",baz",      ["foo", "\r\n\n", "baz"]],
-      ["foo,\"foo,bar\",baz",     ["foo", "foo,bar", "baz"]],
-      [";,;",                     [";", ";"]],
-      ["foo,\"\"\"\"\"\",baz",    ["foo", "\"\"", "baz"]],
-      ["foo,\"\"\"bar\"\"\",baz", ["foo", "\"bar\"", "baz"]],
-      ["foo,\"\r\n\",baz",        ["foo", "\r\n", "baz"]],
-      ["\"\"",                    [""]],
-      ["foo,\"\"\"\",baz",        ["foo", "\"", "baz"]],
-      ["foo,\"\r.\n\",baz",       ["foo", "\r.\n", "baz"]],
-      ["foo,\"\r\",baz",          ["foo", "\r", "baz"]],
-      ["foo,\"\",baz",            ["foo", "", "baz"]],
-      ["foo",                     ["foo"]],
-      [",,",                      [nil, nil, nil]],
-      [",",                       [nil, nil]],
-      ["foo,\"\n\",baz",          ["foo", "\n", "baz"]],
-      ["foo,,baz",                ["foo", nil, "baz"]],
-      ["foo,bar",                 ["foo", "bar"]],
-      ["foo,\"\r\n\n\",baz",      ["foo", "\r\n\n", "baz"]],
-      ["foo,\"foo,bar\",baz",     ["foo", "foo,bar", "baz"]],
-      [%Q{a,b},                   ["a", "b"]],
-      [%Q{a,"""b"""},             ["a", "\"b\""]],
-      [%Q{a,"""b"},               ["a", "\"b"]],
-      [%Q{a,"b"""},               ["a", "b\""]],
-      [%Q{a,"\nb"""},             ["a", "\nb\""]],
-      [%Q{a,"""\nb"},             ["a", "\"\nb"]],
-      [%Q{a,"""\nb\n"""},         ["a", "\"\nb\n\""]],
-      [%Q{a,"""\nb\n""",},        ["a", "\"\nb\n\"", nil]],
-      [%Q{a,,,},                  ["a", nil, nil, nil]],
-      [%Q{,},                     [nil, nil]],
-      [%Q{"",""},                 ["", ""]],
-      [%Q{""""},                  ["\""]],
-      [%Q{"""",""},               ["\"",""]],
-      [%Q{,""},                   [nil,""]],
-      [%Q{,"\r"},                 [nil,"\r"]],
-      [%Q{"\r\n,"},               ["\r\n,"]],
-      [%Q{"\r\n,",},              ["\r\n,", nil]] ].each do |test_case|
-        assert_equal(test_case.first + $/, CSV.generate_line(test_case.last))
-      end
-  end
-
-  def test_col_sep
-    assert_equal( "a;b;;c\n", CSV.generate_line( ["a", "b", nil, "c"],
-                                                 col_sep: ";" ) )
-    assert_equal( "a\tb\t\tc\n", CSV.generate_line( ["a", "b", nil, "c"],
-                                                    col_sep: "\t" ) )
-  end
-
-  def test_row_sep
-    assert_equal( "a,b,,c\r\n", CSV.generate_line( ["a", "b", nil, "c"],
-                                                   row_sep: "\r\n" ) )
-  end
-
-  def test_force_quotes
-    assert_equal( %Q{"1","b","","already ""quoted"""\n},
-                  CSV.generate_line( [1, "b", nil, %Q{already "quoted"}],
-                                     force_quotes: true ) )
-  end
-end

Property changes on: test/csv/test_csv_writing.rb
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-LF
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: test/csv/ts_all.rb
===================================================================
--- test/csv/ts_all.rb	(revision 66921)
+++ test/csv/ts_all.rb	(nonexistent)
@@ -1,19 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/test/csv/ts_all.rb#L0
-#!/usr/bin/env ruby -w
-# encoding: UTF-8
-# frozen_string_literal: false
-
-# ts_all.rb
-#
-# Created by James Edward Gray II on 2005-10-31.
-
-require "test/unit"
-
-require "test_csv_parsing"
-require "test_features"
-require "test_interface"
-require "test_csv_writing"
-require "test_data_converters"
-require "test_row"
-require "test_table"
-require "test_headers"
-require "test_encodings"

Property changes on: test/csv/ts_all.rb
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-LF
\ No newline at end of property
Index: test/csv/base.rb
===================================================================
--- test/csv/base.rb	(revision 66921)
+++ test/csv/base.rb	(nonexistent)
@@ -1,9 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/test/csv/base.rb#L0
-# frozen_string_literal: false
-require "test/unit"
-
-require "csv"
-
-require_relative "../lib/with_different_ofs.rb"
-
-class TestCSV < Test::Unit::TestCase
-end

Property changes on: test/csv/base.rb
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-LF
\ No newline at end of property
Index: test/csv/test_headers.rb
===================================================================
--- test/csv/test_headers.rb	(revision 66921)
+++ test/csv/test_headers.rb	(nonexistent)
@@ -1,318 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/test/csv/test_headers.rb#L0
-#!/usr/bin/env ruby -w
-# encoding: UTF-8
-# frozen_string_literal: false
-
-# tc_headers.rb
-#
-# Created by James Edward Gray II on 2005-10-31.
-
-require_relative "base"
-
-class TestCSV::Headers < TestCSV
-  extend DifferentOFS
-
-  def setup
-    super
-    @data = <<-CSV
-first,second,third
-A,B,C
-1,2,3
-    CSV
-  end
-
-  def test_first_row
-    [:first_row, true].each do |setting|  # two names for the same setting
-      # activate headers
-      csv = nil
-      assert_nothing_raised(Exception) do
-        csv = CSV.parse(@data, headers: setting)
-      end
-
-      # first data row - skipping headers
-      row = csv[0]
-      assert_not_nil(row)
-      assert_instance_of(CSV::Row, row)
-      assert_equal([%w{first A}, %w{second B}, %w{third C}], row.to_a)
-
-      # second data row
-      row = csv[1]
-      assert_not_nil(row)
-      assert_instance_of(CSV::Row, row)
-      assert_equal([%w{first 1}, %w{second 2}, %w{third 3}], row.to_a)
-
-      # empty
-      assert_nil(csv[2])
-    end
-  end
-
-  def test_array_of_headers
-    # activate headers
-    csv = nil
-    assert_nothing_raised(Exception) do
-      csv = CSV.parse(@data, headers: [:my, :new, :headers])
-    end
-
-    # first data row - skipping headers
-    row = csv[0]
-    assert_not_nil(row)
-    assert_instance_of(CSV::Row, row)
-    assert_equal( [[:my, "first"], [:new, "second"], [:headers, "third"]],
-                  row.to_a )
-
-    # second data row
-    row = csv[1]
-    assert_not_nil(row)
-    assert_instance_of(CSV::Row, row)
-    assert_equal([[:my, "A"], [:new, "B"], [:headers, "C"]], row.to_a)
-
-    # third data row
-    row = csv[2]
-    assert_not_nil(row)
-    assert_instance_of(CSV::Row, row)
-    assert_equal([[:my, "1"], [:new, "2"], [:headers, "3"]], row.to_a)
-
-    # empty
-    assert_nil(csv[3])
-
-    # with return and convert
-    assert_nothing_raised(Exception) do
-      csv = CSV.parse( @data, headers:           [:my, :new, :headers],
-                              return_headers:    true,
-                              header_converters: lambda { |h| h.to_s } )
-    end
-    row = csv[0]
-    assert_not_nil(row)
-    assert_instance_of(CSV::Row, row)
-    assert_equal([["my", :my], ["new", :new], ["headers", :headers]], row.to_a)
-    assert_predicate(row, :header_row?)
-    assert_not_predicate(row, :field_row?)
-  end
-
-  def test_csv_header_string
-    # activate headers
-    csv = nil
-    assert_nothing_raised(Exception) do
-      csv = CSV.parse(@data, headers: "my,new,headers")
-    end
-
-    # first data row - skipping headers
-    row = csv[0]
-    assert_not_nil(row)
-    assert_instance_of(CSV::Row, row)
-    assert_equal([%w{my first}, %w{new second}, %w{headers third}], row.to_a)
-
-    # second data row
-    row = csv[1]
-    assert_not_nil(row)
-    assert_instance_of(CSV::Row, row)
-    assert_equal([%w{my A}, %w{new B}, %w{headers C}], row.to_a)
-
-    # third data row
-    row = csv[2]
-    assert_not_nil(row)
-    assert_instance_of(CSV::Row, row)
-    assert_equal([%w{my 1}, %w{new 2}, %w{headers 3}], row.to_a)
-
-    # empty
-    assert_nil(csv[3])
-
-    # with return and convert
-    assert_nothing_raised(Exception) do
-      csv = CSV.parse( @data, headers:           "my,new,headers",
-                              return_headers:    true,
-                              header_converters: :symbol )
-    end
-    row = csv[0]
-    assert_not_nil(row)
-    assert_instance_of(CSV::Row, row)
-    assert_equal([[:my, "my"], [:new, "new"], [:headers, "headers"]], row.to_a)
-    assert_predicate(row, :header_row?)
-    assert_not_predicate(row, :field_row?)
-  end
-
-  def test_csv_header_string_inherits_separators
-    # parse with custom col_sep
-    csv = nil
-    assert_nothing_raised(Exception) do
-      csv = CSV.parse( @data.tr(",", "|"), col_sep: "|",
-                                           headers: "my|new|headers" )
-    end
-
-    # verify headers were recognized
-    row = csv[0]
-    assert_not_nil(row)
-    assert_instance_of(CSV::Row, row)
-    assert_equal([%w{my first}, %w{new second}, %w{headers third}], row.to_a)
-  end
-
-  def test_return_headers
-    # activate headers and request they are returned
-    csv = nil
-    assert_nothing_raised(Exception) do
-      csv =  (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]