mirror of
https://github.com/thoughtbot/factory_bot_rails.git
synced 2022-11-09 11:49:18 -05:00
Only add exist paths to reloading target
Currently, `factories`, `test/factories` and `spec/factories` are specified by default as reload watching paths. In many applications, there are directories which do not exist (perhaps do not have` spec` if using minitest and do not have` spec` if using minitest). In Rails 5 series, if specify a path that does not exist in `EventedFileUpdateChecker`, its parent is added to the watching path. As a result, `node_modules` is also included in the watching path, and unexpectedly many directories and files are included in listen's watching targets. Also, if symlink is included in `node_modules`, it also causes warning of listen. This issue is solved in Rails 6. However, since many applications use this gem in Rails 5 and below, it is good not to add directories that do not exist on the gem side. Ref: https://github.com/rails/rails/issues/32700
This commit is contained in:
parent
e6509920a6
commit
f718048aa8
2 changed files with 16 additions and 11 deletions
|
@ -2,8 +2,6 @@
|
||||||
|
|
||||||
module FactoryBotRails
|
module FactoryBotRails
|
||||||
class DefinitionFilePaths
|
class DefinitionFilePaths
|
||||||
attr_reader :files, :directories
|
|
||||||
|
|
||||||
def initialize(definition_file_paths)
|
def initialize(definition_file_paths)
|
||||||
@files = []
|
@files = []
|
||||||
@directories = {}
|
@directories = {}
|
||||||
|
@ -13,5 +11,13 @@ module FactoryBotRails
|
||||||
@directories[path.to_s] = [:rb]
|
@directories[path.to_s] = [:rb]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def directories
|
||||||
|
@directories.select { |path| Dir.exist?(path) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def files
|
||||||
|
@files.select { |file| File.exist?(file) }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,33 +2,32 @@
|
||||||
|
|
||||||
describe FactoryBotRails::DefinitionFilePaths do
|
describe FactoryBotRails::DefinitionFilePaths do
|
||||||
describe "#files" do
|
describe "#files" do
|
||||||
it "returns a list of definition files" do
|
it "returns a list of definition files that only exist" do
|
||||||
definition_file_paths = ["definition_path", "another_definition_path"]
|
definition_file_paths = ["spec/fixtures/factories", "not_exist_directory"]
|
||||||
|
|
||||||
files = described_class.new(definition_file_paths).files
|
files = described_class.new(definition_file_paths).files
|
||||||
|
|
||||||
expect(files).to eq ["definition_path.rb", "another_definition_path.rb"]
|
expect(files).to eq ["spec/fixtures/factories.rb"]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#directories" do
|
describe "#directories" do
|
||||||
it "returns a hash of definition directories" do
|
it "returns a hash of definition directories that only exist" do
|
||||||
definition_file_paths = ["definition_path", "another_definition_path"]
|
definition_file_paths = ["spec/fixtures/factories", "not_exist_directory"]
|
||||||
|
|
||||||
directories = described_class.new(definition_file_paths).directories
|
directories = described_class.new(definition_file_paths).directories
|
||||||
|
|
||||||
expect(directories).to eq(
|
expect(directories).to eq(
|
||||||
"definition_path" => [:rb],
|
"spec/fixtures/factories" => [:rb],
|
||||||
"another_definition_path" => [:rb],
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "converts Pathname objects to strings" do
|
it "converts Pathname objects to strings" do
|
||||||
definition_file_paths = [Pathname.new("definition_path")]
|
definition_file_paths = [Pathname.new("spec/fixtures/factories")]
|
||||||
|
|
||||||
directories = described_class.new(definition_file_paths).directories
|
directories = described_class.new(definition_file_paths).directories
|
||||||
|
|
||||||
expect(directories).to eq("definition_path" => [:rb])
|
expect(directories).to eq("spec/fixtures/factories" => [:rb])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue