class RuboCop::Cop::Minitest::NonExecutableTestMethod


end
end
def test_method_should_be_inside_test_class
class FooTest < Minitest::Test
# good
end
def test_method_should_be_inside_test_class
end
class FooTest < Minitest::Test
# bad
@example
“‘Test`” are test classes, in order to prevent false positives.
NOTE: This cop assumes that classes whose superclass name includes the word
Test methods should be defined within a test class to ensure their execution.
Checks for the use of test methods outside of a test class.

def on_def(node)

def on_def(node)
  return if !test_method?(node) || !use_test_class?
  return if node.left_siblings.none? { |sibling| possible_test_class?(sibling) }
  add_offense(node)
end

def possible_test_class?(node)

def possible_test_class?(node)
  node.is_a?(AST::ClassNode) && test_class?(node) && node.parent_class.source.include?('Test')
end

def use_test_class?

def use_test_class?
  root_node = processed_source.ast
  root_node.each_descendant(:class).any? { |class_node| test_class?(class_node) }
end