summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/-ext-/symbol/test_inadvertent_creation.rb43
-rw-r--r--test/json/json_parser_test.rb4
-rw-r--r--test/ruby/test_io_buffer.rb41
3 files changed, 87 insertions, 1 deletions
diff --git a/test/-ext-/symbol/test_inadvertent_creation.rb b/test/-ext-/symbol/test_inadvertent_creation.rb
index 995e01ee15..44705e10c7 100644
--- a/test/-ext-/symbol/test_inadvertent_creation.rb
+++ b/test/-ext-/symbol/test_inadvertent_creation.rb
@@ -489,5 +489,48 @@ module Test_Symbol
Bug::Symbol.iv_get(obj, name)
end
end
+
+ def assert_io_buffer_no_immortal_symbol_created(buffer = IO::Buffer.new(128))
+ assert_no_immortal_symbol_created("io_buffer") do |name|
+ yield buffer, name.to_sym
+ end
+ end
+
+ def test_io_buffer_size_of_inadvertent_id_creation
+ assert_io_buffer_no_immortal_symbol_created(nil) do |_, name|
+ assert_raise(ArgumentError) {IO::Buffer.size_of(name)}
+ assert_raise(ArgumentError) {IO::Buffer.size_of([name])}
+ end
+ end
+
+ def test_io_buffer_each_inadvertent_id_creation
+ assert_io_buffer_no_immortal_symbol_created do |buffer, name|
+ assert_raise(ArgumentError) {buffer.each(name, 0, 1) {}}
+ end
+ end
+
+ def test_io_buffer_get_value_inadvertent_id_creation
+ assert_io_buffer_no_immortal_symbol_created do |buffer, name|
+ assert_raise(ArgumentError) {buffer.get_value(name, 0)}
+ end
+ end
+
+ def test_io_buffer_get_values_inadvertent_id_creation
+ assert_io_buffer_no_immortal_symbol_created do |buffer, name|
+ assert_raise(ArgumentError) {buffer.get_values([name], 0)}
+ end
+ end
+
+ def test_io_buffer_set_value_inadvertent_id_creation
+ assert_io_buffer_no_immortal_symbol_created do |buffer, name|
+ assert_raise(ArgumentError) {buffer.set_value(name, 0, 0)}
+ end
+ end
+
+ def test_io_buffer_set_values_inadvertent_id_creation
+ assert_io_buffer_no_immortal_symbol_created do |buffer, name|
+ assert_raise(ArgumentError) {buffer.set_values([name], 0, [0])}
+ end
+ end
end
end
diff --git a/test/json/json_parser_test.rb b/test/json/json_parser_test.rb
index 943d932851..a4292871ae 100644
--- a/test/json/json_parser_test.rb
+++ b/test/json/json_parser_test.rb
@@ -219,7 +219,9 @@ class JSONParserTest < Test::Unit::TestCase
def test_parse_json_primitive_values
assert_raise(JSON::ParserError) { parse('') }
assert_raise(TypeError) { parse(nil) }
- assert_raise(JSON::ParserError) { parse(' /* foo */ ') }
+ EnvUtil.suppress_warning do # still no warning in JRuby verions
+ assert_raise(JSON::ParserError) { parse(' /* foo */ ') }
+ end
assert_equal nil, parse('null')
assert_equal false, parse('false')
assert_equal true, parse('true')
diff --git a/test/ruby/test_io_buffer.rb b/test/ruby/test_io_buffer.rb
index 327a3ece9c..fdf99589ef 100644
--- a/test/ruby/test_io_buffer.rb
+++ b/test/ruby/test_io_buffer.rb
@@ -242,6 +242,16 @@ class TestIOBuffer < Test::Unit::TestCase
end
end
+ def test_resize_invalidated_slice
+ inner = IO::Buffer.new(IO::Buffer::PAGE_SIZE)
+ slice = inner.slice(0, 8)
+ inner.free
+
+ assert_raise(IO::Buffer::InvalidatedError) do
+ slice.resize(16)
+ end
+ end
+
def test_compare_same_size
buffer1 = IO::Buffer.new(1)
assert_equal buffer1, buffer1
@@ -376,6 +386,17 @@ class TestIOBuffer < Test::Unit::TestCase
assert_raise_with_message(ArgumentError, /Offset can't be negative/) do
buffer.get_string(-1)
end
+
+ encoding = Struct.new(:buffer) do
+ def to_str
+ buffer.free
+ "BINARY"
+ end
+ end.new(buffer.dup)
+ slice = encoding.buffer.slice(0, 8)
+ assert_raise(IO::Buffer::InvalidatedError) do
+ slice.get_string(0, 8, encoding)
+ end
end
def test_zero_length_get_string
@@ -449,6 +470,26 @@ class TestIOBuffer < Test::Unit::TestCase
end
end
+ def test_set_values_invalidated_slice
+ to_int = Struct.new(:buffer) do
+ def to_int
+ buffer.free
+ 0x41
+ end
+ end
+ buffer = IO::Buffer.new(128)
+ slice = buffer.slice(0, 8)
+ value = to_int.new(buffer)
+ assert_raise(IO::Buffer::InvalidatedError) {slice.set_value(:U8, 0, value)}
+
+ buffer = IO::Buffer.new(128)
+ slice = buffer.slice(0, 8)
+ value = to_int.new(buffer)
+ assert_raise(IO::Buffer::InvalidatedError) {
+ slice.set_values([:U8, :U8], 0, [0, value])
+ }
+ end
+
def test_zero_length_get_set_values
buffer = IO::Buffer.new(0)