spec/cc/engine/file_list_resolver_spec.rb (51 lines of code) (raw):

require "spec_helper" require "rubocop" require "cc/engine/file_list_resolver" module CC::Engine describe FileListResolver do include FilesystemHelpers before { @code = Dir.mktmpdir } let(:rubocop_config) { RuboCop::ConfigStore.new } it "uses default include path" do Dir.chdir(@code) do create_source_file("a.rb", "def a; true; end") create_source_file("not_ruby.txt", "some text") resolver = FileListResolver.new(root: @code, engine_config: {}, config_store: rubocop_config) expect(resolver.expanded_list).to eq [Pathname.new("a.rb").realpath.to_s] end end it "finds ruby scripts without extensions" do Dir.chdir(@code) do create_source_file("a.rb", "def a; true; end") create_source_file("bin/some_script", "#!/usr/bin/env ruby") resolver = FileListResolver.new(root: @code, engine_config: {}, config_store: rubocop_config) expect(resolver.expanded_list).to eq %w[a.rb bin/some_script].map { |fn| Pathname.new(fn).realpath.to_s } end end it "respects engine config include_paths" do Dir.chdir(@code) do create_source_file("a.rb", "def a; true; end") create_source_file("src/b.rb", "def a; true; end") resolver = FileListResolver.new(root: @code, engine_config: { "include_paths" => %w[src/] }, config_store: rubocop_config) expect(resolver.expanded_list).to eq [Pathname.new("src/b.rb").realpath.to_s] end end it "respects rubocop excludes" do Dir.chdir(@code) do create_source_file("Gemfile", "source 'https://rubygems.org'") create_source_file("src/b.rb", "def a; true; end") create_source_file("src/c.rb", "def a; true; end") create_source_file(".rubocop.yml", "AllCops:\n Exclude:\n - src/c.rb\n - Gemfile\n") resolver = FileListResolver.new(root: @code, engine_config: { "include_paths" => %w[Gemfile src/] }, config_store: rubocop_config) expect(resolver.expanded_list).to eq [Pathname.new("src/b.rb").realpath.to_s] end end it "handles missing files" do Dir.chdir(@code) do create_source_file("src/b.rb", "def a; true; end") resolver = FileListResolver.new(root: @code, engine_config: { "include_paths" => %w[src/ public/assets] }, config_store: rubocop_config) expect(resolver.expanded_list).to eq [Pathname.new("src/b.rb").realpath.to_s] end end end end