From dcce5db8a653a099d3c9a18cb84baa7b989199fd Mon Sep 17 00:00:00 2001 From: Ryan Winograd Date: Thu, 20 Aug 2020 19:14:02 -0500 Subject: Fix for older rubies? --- test/tc_package.rb | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/test/tc_package.rb b/test/tc_package.rb index a6e31f88..1574c8b8 100644 --- a/test/tc_package.rb +++ b/test/tc_package.rb @@ -165,15 +165,21 @@ class TestPackage < Test::Unit::TestCase end def capture_warnings(&block) - original_warn = Kernel.method(:warn) - warnings = [] - Kernel.define_method(:warn){ |string| warnings << string } - block.call - original_verbose = $VERBOSE - $VERBOSE = nil - Kernel.define_method(:warn, &original_warn) - $VERBOSE = original_verbose - warnings + # Only capture warnings on versions of ruby that expose `:define_method` as + # a public method + if Kernel.respond_to?(:define_method) + original_warn = Kernel.method(:warn) + warnings = [] + Kernel.define_method(:warn){ |string| warnings << string } + block.call + original_verbose = $VERBOSE + $VERBOSE = nil + Kernel.define_method(:warn, &original_warn) + $VERBOSE = original_verbose + warnings + else + &block.call + end end # See comment for Package#zip_entry_for_part -- cgit v1.2.3