diff --git a/ChangeLog.rdoc b/ChangeLog.rdoc index a7d3f79..23af4f9 100644 --- a/ChangeLog.rdoc +++ b/ChangeLog.rdoc @@ -8,6 +8,7 @@ * Skip :until_valid is now fast for :asserted_value. * Added Section - a way to transform the data stream. * Added transforms for brotli, lz4, xor, zlib, zstd. +* Updated to current minitest == Version 2.4.15 (2023-02-07) diff --git a/bindata.gemspec b/bindata.gemspec index 81d9f40..dabf93d 100644 --- a/bindata.gemspec +++ b/bindata.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |s| s.required_ruby_version = ">= 2.5.0" s.add_development_dependency('rake') - s.add_development_dependency('minitest', "> 5.0.0", "< 5.12.0") + s.add_development_dependency('minitest', "> 5.0.0") s.add_development_dependency('simplecov') s.description = <<-END.gsub(/^ +/, "") BinData is a declarative way to read and write binary file formats. diff --git a/lib/bindata/registry.rb b/lib/bindata/registry.rb index f33650c..fa98665 100644 --- a/lib/bindata/registry.rb +++ b/lib/bindata/registry.rb @@ -123,7 +123,7 @@ def register_dynamic_class(name) def warn_if_name_is_already_registered(name, class_to_register) prev_class = @registry[name] if prev_class && prev_class != class_to_register - warn "warning: replacing registered class #{prev_class} " \ + Kernel.warn "warning: replacing registered class #{prev_class} " \ "with #{class_to_register}" end end diff --git a/lib/bindata/string.rb b/lib/bindata/string.rb index 795f8c5..0a4d50c 100644 --- a/lib/bindata/string.rb +++ b/lib/bindata/string.rb @@ -125,7 +125,7 @@ def sensible_default # Warns when reading if :value && no :read_length module WarnNoReadLengthPlugin def read_and_return_value(io) - warn "#{debug_name} does not have a :read_length parameter - returning empty string" + Kernel.warn "#{debug_name} does not have a :read_length parameter - returning empty string" "" end end diff --git a/test/array_test.rb b/test/array_test.rb index 76ebe19..afec8ad 100755 --- a/test/array_test.rb +++ b/test/array_test.rb @@ -18,17 +18,15 @@ end it "warns about :length" do - Kernel.must_warn ":length is not used with BinData::Array. You probably want to change this to :initial_length" do - obj = BinData::Array.new(type: :uint8, length: 3) - obj.read "123" - end + _ { + obj = BinData::Array.new(type: :uint8, length: 3) + }.must_warn ":length is not used with BinData::Array. You probably want to change this to :initial_length" end it "warns about :read_length" do - Kernel.must_warn ":read_length is not used with BinData::Array. You probably want to change this to :initial_length" do - obj = BinData::Array.new(type: :uint8, read_length: 3) - obj.read "123" - end + _ { + obj = BinData::Array.new(type: :uint8, read_length: 3) + }.must_warn ":read_length is not used with BinData::Array. You probably want to change this to :initial_length" end it "fails if a given type is unknown" do diff --git a/test/string_test.rb b/test/string_test.rb index ad432e0..4793301 100755 --- a/test/string_test.rb +++ b/test/string_test.rb @@ -298,15 +298,15 @@ def snapshot describe BinData::String, "warnings" do it "warns if has :asserted_value but no :length" do obj = BinData::String.new(asserted_value: "ABC") - obj.must_warn "obj does not have a :read_length parameter - returning empty string" do + _ { _ { obj.read("abcde") }.must_raise BinData::ValidityError - end + }.must_warn "obj does not have a :read_length parameter - returning empty string" end it "warns if has :value but no :read_length" do obj = BinData::String.new(value: "ABC") - obj.must_warn "obj does not have a :read_length parameter - returning empty string" do + _ { obj.read("abcde") - end + }.must_warn "obj does not have a :read_length parameter - returning empty string" end end diff --git a/test/test_helper.rb b/test/test_helper.rb index c1ec64b..29089e6 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -32,32 +32,41 @@ def expose_methods_for_testing def value_read_from_written self.class.read(self.to_binary_s) end +end - def must_equal_binary(expected) - must_equal expected.dup.force_encoding(Encoding::BINARY) +module Minitest::Assertions + def assert_equals_binary(expected, actual) + assert_equal expected.dup.force_encoding(Encoding::BINARY), actual end - def must_raise_on_line(exp, line, msg = nil) - ex = self.must_raise exp - (ex.message).must_equal msg if msg + def assert_raises_on_line(exp, line, msg = nil, &block) + ex = assert_raises(exp, &block) + assert_equal(msg, ex.message) if msg - idx = ex.backtrace.find_index { |bt| /:in `must_raise_on_line'$/ =~ bt } + idx = ex.backtrace.find_index { |bt| /:in `assert_raises_on_line'$/ =~ bt } line_num_regex = /.*:(\d+)(:.*|$)/ err_line = line_num_regex.match(ex.backtrace[0])[1].to_i - ref_line = line_num_regex.match(ex.backtrace[idx + 1])[1].to_i + ref_line = line_num_regex.match(ex.backtrace[idx + 2])[1].to_i - (err_line - ref_line).must_equal line + assert_equal((err_line - ref_line), line) end - def must_warn(msg, &block) + def assert_warns(msg, &block) result = "" callable = proc { |str| result = str } - self.stub(:warn, callable) do + Kernel.stub(:warn, callable) do block.call end - (result).must_equal msg + + assert_equal msg, result end end + +module Minitest::Expectations + infect_an_assertion :assert_equals_binary, :must_equal_binary + infect_an_assertion :assert_raises_on_line, :must_raise_on_line, :block + infect_an_assertion :assert_warns, :must_warn, :block +end