mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/csv.rb (CSV#init_separators): use IO#gets with length
parameter to get rid of wrong convertion. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9a907880f0
commit
9c017ca5fb
3 changed files with 25 additions and 40 deletions
|
@ -238,12 +238,28 @@ class TestCSV::Encodings < TestCSV
|
|||
|
||||
def assert_parses(fields, encoding, options = { })
|
||||
encoding = Encoding.find(encoding) unless encoding.is_a? Encoding
|
||||
orig_fields = fields
|
||||
fields = encode_ary(fields, encoding)
|
||||
parsed = CSV.parse(ary_to_data(fields, options), options)
|
||||
data = ary_to_data(fields, options)
|
||||
parsed = CSV.parse(data, options)
|
||||
assert_equal(fields, parsed)
|
||||
parsed.flatten.each_with_index do |field, i|
|
||||
assert_equal(encoding, field.encoding, "Field[#{i + 1}] was transcoded.")
|
||||
end
|
||||
File.open(@temp_csv_path, "wb") {|f| f.print(data)}
|
||||
CSV.open(@temp_csv_path, "rb:#{encoding}", options) do |csv|
|
||||
csv.each_with_index do |row, i|
|
||||
assert_equal(fields[i], row)
|
||||
end
|
||||
end
|
||||
begin
|
||||
CSV.open(@temp_csv_path, "rb:#{encoding}:#{__ENCODING__}", options) do |csv|
|
||||
csv.each_with_index do |row, i|
|
||||
assert_equal(orig_fields[i], row)
|
||||
end
|
||||
end unless encoding == __ENCODING__
|
||||
rescue Encoding::ConverterNotFoundError
|
||||
end
|
||||
end
|
||||
|
||||
def encode_ary(ary, encoding)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue