diff --git a/spec/ameba/rule/lint/spec_filename_spec.cr b/spec/ameba/rule/lint/spec_filename_spec.cr index 44d51dc8e..30a2c57de 100644 --- a/spec/ameba/rule/lint/spec_filename_spec.cr +++ b/spec/ameba/rule/lint/spec_filename_spec.cr @@ -4,6 +4,16 @@ module Ameba::Rule::Lint subject = SpecFilename.new describe SpecFilename do + it "passes if relative file path does not start with `spec/`" do + expect_no_issues subject, code: "", path: "src/spec/foo.cr" + expect_no_issues subject, code: "", path: "src/spec/foo/bar.cr" + end + + it "passes if file extension is not `.cr`" do + expect_no_issues subject, code: "", path: "spec/foo.json" + expect_no_issues subject, code: "", path: "spec/foo/bar.json" + end + it "passes if filename is correct" do expect_no_issues subject, code: "", path: "spec/foo_spec.cr" expect_no_issues subject, code: "", path: "spec/foo/bar_spec.cr" diff --git a/src/ameba/rule/lint/spec_filename.cr b/src/ameba/rule/lint/spec_filename.cr index 9711806f7..32492a6fa 100644 --- a/src/ameba/rule/lint/spec_filename.cr +++ b/src/ameba/rule/lint/spec_filename.cr @@ -8,6 +8,8 @@ module Ameba::Rule::Lint # ``` # Lint/SpecFilename: # Enabled: true + # IgnoredDirs: [spec/support spec/fixtures spec/data] + # IgnoredFilenames: [spec_helper] # ``` class SpecFilename < Base properties do @@ -26,8 +28,10 @@ module Ameba::Rule::Lint name = path_.stem path = path_.to_s - # check files only within spec/ directory + # check only files within spec/ directory return unless path.starts_with?("spec/") + # check only files with `.cr` extension + return unless path.ends_with?(".cr") # ignore files having `_spec` suffix return if name.ends_with?("_spec")