diff --git a/lib/annotate_rb/runner.rb b/lib/annotate_rb/runner.rb index 6feaa109..d1dc468c 100644 --- a/lib/annotate_rb/runner.rb +++ b/lib/annotate_rb/runner.rb @@ -31,13 +31,13 @@ def running? end def run(args, config_file_options: nil) - config_file_options ||= ConfigLoader.load_config parser = Parser.new(args, {}) parsed_options = parser.parse remaining_args = parser.remaining_args AnnotateRb::ConfigFinder.config_path = parsed_options[:config_path] if parsed_options[:config_path] + config_file_options = ConfigLoader.load_config if config_file_options.nil? options = config_file_options.merge(parsed_options) @options = Options.from(options, {working_args: remaining_args}) diff --git a/spec/lib/annotate_rb/runner_spec.rb b/spec/lib/annotate_rb/runner_spec.rb index aa81e051..417e4fe6 100644 --- a/spec/lib/annotate_rb/runner_spec.rb +++ b/spec/lib/annotate_rb/runner_spec.rb @@ -69,6 +69,30 @@ end end + describe "custom config path", :isolated_environment do + let(:command_double) { instance_double(AnnotateRb::Commands::AnnotateModels) } + + before do + File.write(".annotaterb.yml", "show_indexes: false\n") + File.write("custom_annotaterb.yml", "show_indexes: true\n") + + allow(AnnotateRb::Commands::AnnotateModels).to receive(:new).and_return(command_double) + allow(command_double).to receive(:call) + end + + after do + AnnotateRb::ConfigFinder.config_path = nil + end + + it "loads the config file specified by --config-path" do + runner.run(["models", "--config-path", "custom_annotaterb.yml"]) + + expect(command_double).to have_received(:call) do |options| + expect(options[:show_indexes]).to be(true) + end + end + end + describe "Annotating routes" do let(:args) { ["routes"] } let(:command_double) { instance_double(AnnotateRb::Commands::AnnotateRoutes) }