lib/rubocop/cop/rspec/spec_file_path_suffix.rb
# frozen_string_literal: true
module RuboCop
module Cop
module RSpec
# Checks that spec file paths suffix are consistent and well-formed.
#
# @example
# # bad
# my_class/foo_specorb.rb # describe MyClass
# spec/models/user.rb # describe User
# spec/models/user_specxrb # describe User
#
# # good
# my_class_spec.rb # describe MyClass
#
# # good - shared examples are allowed
# spec/models/user.rb # shared_examples_for 'foo'
#
class SpecFilePathSuffix < Base
include TopLevelGroup
include FileHelp
MSG = 'Spec path should end with `_spec.rb`.'
def on_top_level_example_group(node)
example_group?(node) do
add_global_offense(MSG) unless correct_path?
end
end
private
def correct_path?
expanded_file_path.end_with?('_spec.rb')
end
end
end
end
end