Sha256: 848be270c0db38575b56f4ece030bec57c29d99f4f0d30d53e7ace762678beaa

Contents?: true

Size: 1.46 KB

Versions: 12

Compression:

Stored size: 1.46 KB

Contents

module UnitTests
  module Matchers
    def deprecate(old_method, new_method)
      DeprecateMatcher.new(old_method, new_method)
    end

    class DeprecateMatcher
      def initialize(old_method, new_method)
        @old_method = old_method
        @new_method = new_method
      end

      def matches?(block)
        @captured_stderr = capture(:stderr, &block).gsub(/\n+/, ' ')
        captured_stderr.include?(expected_message)
      end

      def failure_message
        "Expected block to #{expectation}, but it did not.\nActual warning: #{actual_warning}"
      end
      alias_method :failure_message_for_should, :failure_message

      def failure_message_when_negated
        "Expected block not to #{expectation}, but it did."
      end
      alias_method :failure_message_for_should_not,
        :failure_message_when_negated

      def description
        "should #{expectation}"
      end

      def supports_block_expectations?
        true
      end

      protected

      attr_reader :old_method, :new_method, :captured_stderr

      private

      def expected_message
        "#{old_method} is deprecated and will be removed in the next major release. Please use #{new_method} instead."
      end

      def expectation
        "print a warning deprecating #{old_method} in favor of #{new_method}"
      end

      def actual_warning
        if captured_stderr.empty?
          "nothing"
        else
          "\n  #{captured_stderr}"
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
shoulda-matchers-3.1.3 spec/support/unit/matchers/deprecate.rb
shoulda-matchers-4.0.0.rc1 spec/support/unit/matchers/deprecate.rb
shoulda-matchers-3.1.2 spec/support/unit/matchers/deprecate.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/shoulda-matchers-2.8.0/spec/support/unit/matchers/deprecate.rb
shoulda-matchers-3.1.1 spec/support/unit/matchers/deprecate.rb
shoulda-matchers-3.1.0 spec/support/unit/matchers/deprecate.rb
shoulda-matchers-3.0.1 spec/support/unit/matchers/deprecate.rb
shoulda-matchers-3.0.0 spec/support/unit/matchers/deprecate.rb
shoulda-matchers-3.0.0.rc1 spec/support/unit/matchers/deprecate.rb
shoulda-matchers-2.8.0 spec/support/unit/matchers/deprecate.rb
shoulda-matchers-2.8.0.rc2 spec/support/unit/matchers/deprecate.rb
shoulda-matchers-2.8.0.rc1 spec/support/unit/matchers/deprecate.rb