diff options
author | Jakub Jirutka <jakub@jirutka.cz> | 2018-04-02 23:38:36 +0200 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2018-04-02 23:39:59 +0200 |
commit | 63900f59e4fd1c6d98030562281626efabe4c08f (patch) | |
tree | bb7e11b6b0641794bc36116800719af4f2056605 /community/crystal/disable-specs-using-GB2312-encoding.patch | |
parent | ba92e1b07a254797cd28ebc642e921691e0e8db3 (diff) | |
download | aports-63900f59e4fd1c6d98030562281626efabe4c08f.tar.bz2 aports-63900f59e4fd1c6d98030562281626efabe4c08f.tar.xz |
community/crystal: move from testing
Diffstat (limited to 'community/crystal/disable-specs-using-GB2312-encoding.patch')
-rw-r--r-- | community/crystal/disable-specs-using-GB2312-encoding.patch | 282 |
1 files changed, 282 insertions, 0 deletions
diff --git a/community/crystal/disable-specs-using-GB2312-encoding.patch b/community/crystal/disable-specs-using-GB2312-encoding.patch new file mode 100644 index 0000000000..74d244cca8 --- /dev/null +++ b/community/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 |