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