lib/minitest/utils/extension.rb in minitest-utils-0.4.4 vs lib/minitest/utils/extension.rb in minitest-utils-0.4.5
- old
+ new
@@ -1,5 +1,7 @@
+# frozen_string_literal: true
+
module Minitest
module Utils
module Assertions
def assert(test, message = nil)
message ||= "expected: truthy value\ngot: #{mu_pp(test)}"
@@ -15,11 +17,11 @@
class Test
include ::Minitest::Utils::Assertions
def self.test(name, &block)
- test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
+ test_name = "test_#{name.gsub(/\s+/, '_')}".to_sym
defined = method_defined? test_name
raise "#{test_name} is already defined in #{self}" if defined
if block_given?
@@ -53,15 +55,26 @@
end
include mod
end
- def self.let(name, &block)
- target = instance_method(name) rescue nil
+ def self.let(name, &block) # rubocop:disable Metrics/MethodLength
+ target = begin
+ instance_method(name)
+ rescue StandardError
+ nil
+ end
+
message = "Cannot define let(:#{name});"
- raise ArgumentError, "#{message} method cannot begin with 'test'." if name.to_s.start_with?("test")
- raise ArgumentError, "#{message} method already defined by #{target.owner}." if target
+ if name.to_s.start_with?("test")
+ raise ArgumentError, "#{message} method cannot begin with 'test'."
+ end
+
+ if target
+ raise ArgumentError,
+ "#{message} method already defined by #{target.owner}."
+ end
define_method(name) do
@_memoized ||= {}
@_memoized.fetch(name) {|k| @_memoized[k] = instance_eval(&block) }
end