aboutsummaryrefslogtreecommitdiffstats
path: root/testing/crystal/disable-specs-using-GB2312-encoding.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/crystal/disable-specs-using-GB2312-encoding.patch')
-rw-r--r--testing/crystal/disable-specs-using-GB2312-encoding.patch282
1 files changed, 282 insertions, 0 deletions
diff --git a/testing/crystal/disable-specs-using-GB2312-encoding.patch b/testing/crystal/disable-specs-using-GB2312-encoding.patch
new file mode 100644
index 0000000000..74d244cca8
--- /dev/null
+++ b/testing/crystal/disable-specs-using-GB2312-encoding.patch
@@ -0,0 +1,282 @@
+From 774c93390cfa5af0675b398b308f90cd692b4af6 Mon Sep 17 00:00:00 2001
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Mon, 26 Mar 2018 02:20:06 +0200
+Subject: [PATCH] Disable specs using GB2312 encoding on musl
+
+Musl libc does not support GB2312 encoding.
+
+Fixes #3976
+
+Upstream-Issue: https://github.com/crystal-lang/crystal/pull/5867
+---
+ spec/std/io/buffered_spec.cr | 19 ++++---
+ spec/std/io/io_spec.cr | 133 +++++++++++++++++++++++--------------------
+ spec/std/string_spec.cr | 41 ++++++-------
+ 3 files changed, 104 insertions(+), 89 deletions(-)
+
+diff --git a/spec/std/io/buffered_spec.cr b/spec/std/io/buffered_spec.cr
+index 1e4d4a473f..6e34c994ea 100644
+--- a/spec/std/io/buffered_spec.cr
++++ b/spec/std/io/buffered_spec.cr
+@@ -374,15 +374,18 @@ describe "IO::Buffered" do
+ end
+ end
+
+- it "gets big GB2312 string" do
+- str = ("你好我是人\n" * 1000).encode("GB2312")
+- base_io = IO::Memory.new(str)
+- io = BufferedWrapper.new(base_io)
+- io.set_encoding("GB2312")
+- 1000.times do
+- io.gets(chomp: false).should eq("你好我是人\n")
++ # Musl does not support GB2312 encoding.
++ {% unless flag?(:musl) %}
++ it "gets big GB2312 string" do
++ str = ("你好我是人\n" * 1000).encode("GB2312")
++ base_io = IO::Memory.new(str)
++ io = BufferedWrapper.new(base_io)
++ io.set_encoding("GB2312")
++ 1000.times do
++ io.gets(chomp: false).should eq("你好我是人\n")
++ end
+ end
+- end
++ {% end %}
+
+ it "reads char" do
+ str = "x\nHello world" + ("1234567890" * 1000)
+diff --git a/spec/std/io/io_spec.cr b/spec/std/io/io_spec.cr
+index 01e829c800..946bfa70ac 100644
+--- a/spec/std/io/io_spec.cr
++++ b/spec/std/io/io_spec.cr
+@@ -550,16 +550,19 @@ describe IO do
+ end
+ end
+
+- it "gets big GB2312 string" do
+- 2.times do
+- str = ("你好我是人\n" * 1000).encode("GB2312")
+- io = SimpleIOMemory.new(str)
+- io.set_encoding("GB2312")
+- 1000.times do
+- io.gets.should eq("你好我是人")
++ # Musl does not support GB2312 encoding.
++ {% unless flag?(:musl) %}
++ it "gets big GB2312 string" do
++ 2.times do
++ str = ("你好我是人\n" * 1000).encode("GB2312")
++ io = SimpleIOMemory.new(str)
++ io.set_encoding("GB2312")
++ 1000.times do
++ io.gets.should eq("你好我是人")
++ end
+ end
+ end
+- end
++ {% end %}
+
+ it "does gets on unicode with char and limit without off-by-one" do
+ io = SimpleIOMemory.new("test\nabc".encode("UCS-2LE"))
+@@ -635,51 +638,54 @@ describe IO do
+ io.read_utf8_byte.should be_nil
+ end
+
+- it "reads utf8" do
+- io = IO::Memory.new("你".encode("GB2312"))
+- io.set_encoding("GB2312")
++ # Musl does not support GB2312 encoding.
++ {% unless flag?(:musl) %}
++ it "reads utf8" do
++ io = IO::Memory.new("你".encode("GB2312"))
++ io.set_encoding("GB2312")
+
+- buffer = uninitialized UInt8[1024]
+- bytes_read = io.read_utf8(buffer.to_slice) # => 3
+- bytes_read.should eq(3)
+- buffer.to_slice[0, bytes_read].to_a.should eq("你".bytes)
+- end
++ buffer = uninitialized UInt8[1024]
++ bytes_read = io.read_utf8(buffer.to_slice) # => 3
++ bytes_read.should eq(3)
++ buffer.to_slice[0, bytes_read].to_a.should eq("你".bytes)
++ end
+
+- it "raises on incomplete byte sequence" do
+- io = SimpleIOMemory.new("好".byte_slice(0, 1))
+- io.set_encoding("GB2312")
+- expect_raises ArgumentError, "Incomplete multibyte sequence" do
+- io.read_char
++ it "raises on incomplete byte sequence" do
++ io = SimpleIOMemory.new("好".byte_slice(0, 1))
++ io.set_encoding("GB2312")
++ expect_raises ArgumentError, "Incomplete multibyte sequence" do
++ io.read_char
++ end
+ end
+- end
+
+- it "says invalid byte sequence" do
+- io = SimpleIOMemory.new(Slice.new(1, 140_u8))
+- io.set_encoding("GB2312")
+- expect_raises ArgumentError, "Invalid multibyte sequence" do
+- io.read_char
++ it "says invalid byte sequence" do
++ io = SimpleIOMemory.new(Slice.new(1, 140_u8))
++ io.set_encoding("GB2312")
++ expect_raises ArgumentError, "Invalid multibyte sequence" do
++ io.read_char
++ end
+ end
+- end
+
+- it "skips invalid byte sequences" do
+- string = String.build do |str|
+- str.write "好".encode("GB2312")
+- str.write_byte 140_u8
+- str.write "是".encode("GB2312")
++ it "skips invalid byte sequences" do
++ string = String.build do |str|
++ str.write "好".encode("GB2312")
++ str.write_byte 140_u8
++ str.write "是".encode("GB2312")
++ end
++ io = SimpleIOMemory.new(string)
++ io.set_encoding("GB2312", invalid: :skip)
++ io.read_char.should eq('好')
++ io.read_char.should eq('是')
++ io.read_char.should be_nil
+ end
+- io = SimpleIOMemory.new(string)
+- io.set_encoding("GB2312", invalid: :skip)
+- io.read_char.should eq('好')
+- io.read_char.should eq('是')
+- io.read_char.should be_nil
+- end
+
+- it "says invalid 'invalid' option" do
+- io = SimpleIOMemory.new
+- expect_raises ArgumentError, "Valid values for `invalid` option are `nil` and `:skip`, not :foo" do
+- io.set_encoding("GB2312", invalid: :foo)
++ it "says invalid 'invalid' option" do
++ io = SimpleIOMemory.new
++ expect_raises ArgumentError, "Valid values for `invalid` option are `nil` and `:skip`, not :foo" do
++ io.set_encoding("GB2312", invalid: :foo)
++ end
+ end
+- end
++ {% end %}
+
+ it "says invalid encoding" do
+ io = SimpleIOMemory.new("foo")
+@@ -803,28 +809,31 @@ describe IO do
+ slice.should eq("hi-123-45.67".encode("UCS-2LE"))
+ end
+
+- it "raises on invalid byte sequence" do
+- io = SimpleIOMemory.new
+- io.set_encoding("GB2312")
+- expect_raises ArgumentError, "Invalid multibyte sequence" do
+- io.print "ñ"
++ # Musl does not support GB2312 encoding.
++ {% unless flag?(:musl) %}
++ it "raises on invalid byte sequence" do
++ io = SimpleIOMemory.new
++ io.set_encoding("GB2312")
++ expect_raises ArgumentError, "Invalid multibyte sequence" do
++ io.print "ñ"
++ end
+ end
+- end
+
+- it "skips on invalid byte sequence" do
+- io = SimpleIOMemory.new
+- io.set_encoding("GB2312", invalid: :skip)
+- io.print "ñ"
+- io.print "foo"
+- end
++ it "skips on invalid byte sequence" do
++ io = SimpleIOMemory.new
++ io.set_encoding("GB2312", invalid: :skip)
++ io.print "ñ"
++ io.print "foo"
++ end
+
+- it "raises on incomplete byte sequence" do
+- io = SimpleIOMemory.new
+- io.set_encoding("GB2312")
+- expect_raises ArgumentError, "Incomplete multibyte sequence" do
+- io.print "好".byte_slice(0, 1)
++ it "raises on incomplete byte sequence" do
++ io = SimpleIOMemory.new
++ io.set_encoding("GB2312")
++ expect_raises ArgumentError, "Incomplete multibyte sequence" do
++ io.print "好".byte_slice(0, 1)
++ end
+ end
+- end
++ {% end %}
+
+ it "says invalid encoding" do
+ io = SimpleIOMemory.new
+diff --git a/spec/std/string_spec.cr b/spec/std/string_spec.cr
+index 6fbdebc7d0..761398fb8f 100644
+--- a/spec/std/string_spec.cr
++++ b/spec/std/string_spec.cr
+@@ -2285,35 +2285,38 @@ describe "String" do
+ end
+ end
+
+- it "raises if illegal byte sequence" do
+- expect_raises ArgumentError, "Invalid multibyte sequence" do
+- "ñ".encode("GB2312")
++ # Musl does not support GB2312 encoding.
++ {% unless flag?(:musl) %}
++ it "raises if illegal byte sequence" do
++ expect_raises ArgumentError, "Invalid multibyte sequence" do
++ "ñ".encode("GB2312")
++ end
+ end
+- end
+
+- it "doesn't raise on invalid byte sequence" do
+- "好ñ是".encode("GB2312", invalid: :skip).to_a.should eq([186, 195, 202, 199])
+- end
++ it "doesn't raise on invalid byte sequence" do
++ "好ñ是".encode("GB2312", invalid: :skip).to_a.should eq([186, 195, 202, 199])
++ end
+
+- it "raises if incomplete byte sequence" do
+- expect_raises ArgumentError, "Incomplete multibyte sequence" do
+- "好".byte_slice(0, 1).encode("GB2312")
++ it "raises if incomplete byte sequence" do
++ expect_raises ArgumentError, "Incomplete multibyte sequence" do
++ "好".byte_slice(0, 1).encode("GB2312")
++ end
+ end
+- end
+
+- it "doesn't raise if incomplete byte sequence" do
+- ("好".byte_slice(0, 1) + "是").encode("GB2312", invalid: :skip).to_a.should eq([202, 199])
+- end
++ it "doesn't raise if incomplete byte sequence" do
++ ("好".byte_slice(0, 1) + "是").encode("GB2312", invalid: :skip).to_a.should eq([202, 199])
++ end
++
++ it "decodes with skip" do
++ bytes = Bytes[186, 195, 140, 202, 199]
++ String.new(bytes, "GB2312", invalid: :skip).should eq("好是")
++ end
++ {% end %}
+
+ it "decodes" do
+ bytes = "Hello".encode("UTF-16LE")
+ String.new(bytes, "UTF-16LE").should eq("Hello")
+ end
+-
+- it "decodes with skip" do
+- bytes = Bytes[186, 195, 140, 202, 199]
+- String.new(bytes, "GB2312", invalid: :skip).should eq("好是")
+- end
+ end
+
+ it "inserts" do