module Minitest::Tagz::Patcher

Public Class Methods

patch(state_machine) click to toggle source
# File lib/minitest/tagz/patcher.rb, line 6
def patch(state_machine)
  patch_minitest_test(state_machine)
  patch_minitest_spec(state_machine) if spec_included?
end
unpatch() click to toggle source
# File lib/minitest/tagz/patcher.rb, line 11
def unpatch
  unpatch_minitest_test
  unpatch_minitest_spec if spec_included?
end

Private Class Methods

patch_minitest_spec(state_machine) click to toggle source
# File lib/minitest/tagz/patcher.rb, line 52
def patch_minitest_spec(state_machine)
  Kernel.module_eval do
    alias :old_describe :describe

    define_method(:describe) do |*args, &block|
      state_machine.handle_initial_test_definition! do
        old_describe(*args, &block)
      end
    end
  end
end
patch_minitest_test(state_machine) click to toggle source
# File lib/minitest/tagz/patcher.rb, line 22
def patch_minitest_test(state_machine)
  Minitest::Test.class_eval do
    self.singleton_class.class_eval do
      alias :old_method_added :method_added

      define_method(:method_added) do |name|
        if name[/^test_/]
          state_machine.handle_initial_test_definition! do
            Tagz.tag_map ||= {}
            Tagz.tag_map[Tagz.serialize(self, name)] ||= []
            Tagz.tag_map[Tagz.serialize(self, name)] += state_machine.pending_tags
            old_method_added(name)
          end
        else
          old_method_added(name)
        end
      end
    end
  end
end
spec_included?() click to toggle source
# File lib/minitest/tagz/patcher.rb, line 18
def spec_included?
  !defined?(::Minitest::Spec).nil?
end
unpatch_minitest_spec() click to toggle source
# File lib/minitest/tagz/patcher.rb, line 64
def unpatch_minitest_spec
  Kernel.module_eval do
    undef_method :describe
    alias :describe :old_describe
  end
end
unpatch_minitest_test() click to toggle source
# File lib/minitest/tagz/patcher.rb, line 43
def unpatch_minitest_test
  Minitest::Test.class_eval do
    self.singleton_class.class_eval do
      undef_method :method_added
      alias :method_added :old_method_added
    end
  end
end