diff --git a/spec/ameba/cli/cmd_spec.cr b/spec/ameba/cli/cmd_spec.cr index f02707ea..c0206848 100644 --- a/spec/ameba/cli/cmd_spec.cr +++ b/spec/ameba/cli/cmd_spec.cr @@ -5,7 +5,7 @@ module Ameba::Cli describe "Cmd" do describe ".run" do it "runs ameba" do - r = Cli.run %w[-f silent -c spec/fixtures/config.yml spec/fixtures/source.cr] + r = Cli.run %w[-f silent file.cr] r.should be_nil end end @@ -43,12 +43,12 @@ module Ameba::Cli end it "defaults rules? flag to false" do - c = Cli.parse_args %w[spec/fixtures/source.cr] + c = Cli.parse_args %w[file.cr] c.rules?.should be_false end it "defaults skip_reading_config? flag to false" do - c = Cli.parse_args %w[spec/fixtures/source.cr] + c = Cli.parse_args %w[file.cr] c.skip_reading_config?.should be_false end @@ -58,7 +58,7 @@ module Ameba::Cli end it "defaults all? flag to false" do - c = Cli.parse_args %w[spec/fixtures/source.cr] + c = Cli.parse_args %w[file.cr] c.all?.should be_false end @@ -95,35 +95,35 @@ module Ameba::Cli describe "-e/--explain" do it "configures file/line/column" do - c = Cli.parse_args %w[--explain spec/fixtures/source.cr:3:5] + c = Cli.parse_args %w[--explain src/file.cr:3:5] location_to_explain = c.location_to_explain.should_not be_nil - location_to_explain[:file].should eq "spec/fixtures/source.cr" + location_to_explain[:file].should eq "src/file.cr" location_to_explain[:line].should eq 3 location_to_explain[:column].should eq 5 end it "raises an error if location is not valid" do expect_raises(Exception, "location should have PATH:line:column") do - Cli.parse_args %w[--explain spec/fixtures/source.cr:3] + Cli.parse_args %w[--explain src/file.cr:3] end end it "raises an error if line number is not valid" do expect_raises(Exception, "location should have PATH:line:column") do - Cli.parse_args %w[--explain spec/fixtures/source.cr:a:3] + Cli.parse_args %w[--explain src/file.cr:a:3] end end it "raises an error if column number is not valid" do expect_raises(Exception, "location should have PATH:line:column") do - Cli.parse_args %w[--explain spec/fixtures/source.cr:3:&] + Cli.parse_args %w[--explain src/file.cr:3:&] end end it "raises an error if line/column are missing" do expect_raises(Exception, "location should have PATH:line:column") do - Cli.parse_args %w[--explain spec/fixtures/source.cr] + Cli.parse_args %w[--explain src/file.cr] end end end diff --git a/spec/ameba/config_spec.cr b/spec/ameba/config_spec.cr index bfc9994c..4d6f95f0 100644 --- a/spec/ameba/config_spec.cr +++ b/spec/ameba/config_spec.cr @@ -9,21 +9,10 @@ module Ameba end describe ".new" do - context "when config is empty" do - it "loads default globs" do - yml = YAML.parse "{}" - config = Config.new(yml) - config.globs.should eq ["**/*.cr"] - end - - it "sets !lib as a default glob when there are .cr files in lib" do - File.touch "lib/shard.cr" - yml = YAML.parse "{}" - config = Config.new(yml) - config.globs.should eq ["**/*.cr", "!lib"] - ensure - File.delete "lib/shard.cr" - end + it "loads default globs when config is empty" do + yml = YAML.parse "{}" + config = Config.new(yml) + config.globs.should eq Config::DEFAULT_GLOBS end it "initializes globs as string" do @@ -113,7 +102,7 @@ module Ameba config = Config.load config_sample it "holds source globs" do - config.globs.should eq ["**/*.cr"] + config.globs.should eq Config::DEFAULT_GLOBS end it "allows to set globs" do diff --git a/spec/ameba/glob_utils_spec.cr b/spec/ameba/glob_utils_spec.cr index fc47bacd..41309195 100644 --- a/spec/ameba/glob_utils_spec.cr +++ b/spec/ameba/glob_utils_spec.cr @@ -45,30 +45,6 @@ module Ameba subject.expand(["**/#{current_file_basename}", "**/#{current_file_basename}"]) .should eq [current_file_path] end - - it "raises an ArgumentError when the glob doesn't match any files" do - expect_raises(ArgumentError, "No files found matching foo/*") do - subject.expand(["foo/*"]) - end - end - - it "raises an ArgumentError when given a missing file" do - expect_raises(ArgumentError, "No files found matching foo.cr") do - subject.expand(["foo.cr"]) - end - end - - it "raises an ArgumentError when given a missing directory" do - expect_raises(ArgumentError, "No files found matching foo/") do - subject.expand(["foo/"]) - end - end - - it "raises an ArgumentError when given multiple arguments, one of which is missing" do - expect_raises(ArgumentError, "No files found matching foo.cr") do - subject.expand(["**/#{current_file_basename}", "foo.cr"]) - end - end end end end diff --git a/spec/fixtures/config.yml b/spec/fixtures/config.yml index 4cc49722..c5394b90 100644 --- a/spec/fixtures/config.yml +++ b/spec/fixtures/config.yml @@ -1,4 +1,2 @@ -Ameba/PerfRule: - Enabled: false -Ameba/ErrorRule: - Enabled: false +Lint/ComparisonToBoolean: + Enabled: true diff --git a/spec/fixtures/source.cr b/spec/fixtures/source.cr deleted file mode 100644 index e69de29b..00000000 diff --git a/src/ameba/config.cr b/src/ameba/config.cr index 428b89ec..49802a70 100644 --- a/src/ameba/config.cr +++ b/src/ameba/config.cr @@ -55,7 +55,10 @@ class Ameba::Config Path[XDG_CONFIG_HOME] / "ameba/config.yml", } - SOURCES_GLOB = "**/*.cr" + DEFAULT_GLOBS = %w( + **/*.cr + !lib + ) getter rules : Array(Rule::Base) property severity = Severity::Convention @@ -92,7 +95,7 @@ class Ameba::Config @rules = Rule.rules.map &.new(config).as(Rule::Base) @rule_groups = @rules.group_by &.group @excluded = load_array_section(config, "Excluded") - @globs = load_array_section(config, "Globs", default_globs) + @globs = load_array_section(config, "Globs", DEFAULT_GLOBS) return unless formatter_name = load_formatter_name(config) self.formatter = formatter_name @@ -236,12 +239,6 @@ class Ameba::Config end end - private def default_globs - [SOURCES_GLOB].tap do |globs| - globs.push("!lib") unless Dir["lib/**/*.cr"].empty? - end - end - # :nodoc: module RuleConfig # Define rule properties diff --git a/src/ameba/glob_utils.cr b/src/ameba/glob_utils.cr index df4e80bd..71cd0cb5 100644 --- a/src/ameba/glob_utils.cr +++ b/src/ameba/glob_utils.cr @@ -22,7 +22,6 @@ module Ameba def expand(globs) globs.flat_map do |glob| glob += "/**/*.cr" if File.directory?(glob) - raise ArgumentError.new("No files found matching #{glob}") if Dir[glob].empty? Dir[glob] end.uniq! end