mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Improve yaml fixtures error reporting. Closes #6205.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5104 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
9aeddc5538
commit
5589c734a8
2 changed files with 18 additions and 13 deletions
|
@ -1,5 +1,7 @@
|
||||||
*SVN*
|
*SVN*
|
||||||
|
|
||||||
|
* Improve yaml fixtures error reporting. #6205 [Bruce Williams]
|
||||||
|
|
||||||
* Rename AR::Base#quote so people can use that name in their models. #3628 [Koz]
|
* Rename AR::Base#quote so people can use that name in their models. #3628 [Koz]
|
||||||
|
|
||||||
* Add deprecation warning for inferred foreign key. #6029 [Josh Susser]
|
* Add deprecation warning for inferred foreign key. #6029 [Josh Susser]
|
||||||
|
|
|
@ -294,22 +294,25 @@ class Fixtures < YAML::Omap
|
||||||
def read_fixture_files
|
def read_fixture_files
|
||||||
if File.file?(yaml_file_path)
|
if File.file?(yaml_file_path)
|
||||||
# YAML fixtures
|
# YAML fixtures
|
||||||
|
yaml_string = ""
|
||||||
|
Dir["#{@fixture_path}/**/*.yml"].select {|f| test(?f,f) }.each do |subfixture_path|
|
||||||
|
yaml_string << IO.read(subfixture_path)
|
||||||
|
end
|
||||||
|
yaml_string << IO.read(yaml_file_path)
|
||||||
begin
|
begin
|
||||||
yaml_string = ""
|
yaml = YAML::load(erb_render(yaml_string))
|
||||||
Dir["#{@fixture_path}/**/*.yml"].select {|f| test(?f,f) }.each do |subfixture_path|
|
|
||||||
yaml_string << IO.read(subfixture_path)
|
|
||||||
end
|
|
||||||
yaml_string << IO.read(yaml_file_path)
|
|
||||||
|
|
||||||
if yaml = YAML::load(erb_render(yaml_string))
|
|
||||||
yaml = yaml.value if yaml.respond_to?(:type_id) and yaml.respond_to?(:value)
|
|
||||||
yaml.each do |name, data|
|
|
||||||
self[name] = Fixture.new(data, @class_name)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
rescue Exception=>boom
|
rescue Exception=>boom
|
||||||
raise Fixture::FormatError, "a YAML error occurred parsing #{yaml_file_path}. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html\nThe exact error was:\n #{boom.class}: #{boom}"
|
raise Fixture::FormatError, "a YAML error occurred parsing #{yaml_file_path}. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html\nThe exact error was:\n #{boom.class}: #{boom}"
|
||||||
end
|
end
|
||||||
|
if yaml
|
||||||
|
yaml = yaml.value if yaml.respond_to?(:type_id) and yaml.respond_to?(:value)
|
||||||
|
yaml.each do |name, data|
|
||||||
|
unless data
|
||||||
|
raise Fixture::FormatError, "Bad data for #{@class_name} fixture named #{name} (nil)"
|
||||||
|
end
|
||||||
|
self[name] = Fixture.new(data, @class_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
elsif File.file?(csv_file_path)
|
elsif File.file?(csv_file_path)
|
||||||
# CSV fixtures
|
# CSV fixtures
|
||||||
reader = CSV::Reader.create(erb_render(IO.read(csv_file_path)))
|
reader = CSV::Reader.create(erb_render(IO.read(csv_file_path)))
|
||||||
|
@ -368,7 +371,7 @@ class Fixture #:nodoc:
|
||||||
when String
|
when String
|
||||||
@fixture = read_fixture_file(fixture)
|
@fixture = read_fixture_file(fixture)
|
||||||
else
|
else
|
||||||
raise ArgumentError, "Bad fixture argument #{fixture.inspect}"
|
raise ArgumentError, "Bad fixture argument #{fixture.inspect} during creation of #{class_name} fixture"
|
||||||
end
|
end
|
||||||
|
|
||||||
@class_name = class_name
|
@class_name = class_name
|
||||||
|
|
Loading…
Reference in a new issue