1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Fixtures: removed support for the ancient pre-YAML file format. Closes #10736.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8594 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jeremy Kemper 2008-01-08 03:54:40 +00:00
parent ce84cebc0e
commit 8f7fa55e8d
14 changed files with 12 additions and 75 deletions

View file

@ -1,5 +1,7 @@
*SVN*
* Fixtures: removed support for the ancient pre-YAML file format. #10736 [John Barnette]
* More thoroughly quote table names. #10698 [dimdenis, lotswholetime, Jeremy Kemper]
* update_all ignores scoped :order and :limit, so post.comments.update_all doesn't try to include the comment order in the update statement. #10686 [Brendan Ribera]
@ -80,7 +82,7 @@ so newlines etc are escaped #10385 [Norbert Crombach]
* Dynamic finders on association collections respect association :order and :limit. #10211, #10227 [Patrick Joyce, Rick Olson, Jack Danger Canty]
* Add 'foxy' support for fixtures of polymorphic associations. #10183 [jbarnette, David Lowenfels]
* Add 'foxy' support for fixtures of polymorphic associations. #10183 [John Barnette, David Lowenfels]
* validates_inclusion_of and validates_exclusion_of allow formatted :message strings. #8132 [devrieda, Mike Naberezny]
@ -128,7 +130,7 @@ so newlines etc are escaped #10385 [Norbert Crombach]
- autofill timestamp columns
- support YAML defaults
- fixture label interpolation
Enabled for fixtures that correspond to a model class and don't specify a primary key value. #9981 [jbarnette]
Enabled for fixtures that correspond to a model class and don't specify a primary key value. #9981 [John Barnette]
* Add docs explaining how to protect all attributes using attr_accessible with no arguments. Closes #9631 [boone, rmm5t]

View file

@ -687,14 +687,6 @@ class Fixtures < (RUBY_VERSION < '1.9' ? YAML::Omap : Hash)
read_yaml_fixture_files
elsif File.file?(csv_file_path)
read_csv_fixture_files
else
# Standard fixtures
Dir.entries(@fixture_path).each do |file|
path = File.join(@fixture_path, file)
if File.file?(path) and file !~ @file_filter
self[file] = Fixture.new(path, model_class)
end
end
end
end
@ -773,15 +765,7 @@ class Fixture #:nodoc:
attr_reader :model_class
def initialize(fixture, model_class)
case fixture
when Hash, YAML::Omap
@fixture = fixture
when String
@fixture = read_fixture_file(fixture)
else
raise ArgumentError, "Bad fixture argument #{fixture.inspect} during creation of #{class_name} fixture"
end
@model_class = model_class.is_a?(Class) ? model_class : model_class.constantize rescue nil
end
@ -821,25 +805,6 @@ class Fixture #:nodoc:
raise FixtureClassNotFound, "No class attached to find."
end
end
private
def read_fixture_file(fixture_file_path)
IO.readlines(fixture_file_path).inject({}) do |fixture, line|
# Mercifully skip empty lines.
next if line =~ /^\s*$/
# Use the same regular expression for attributes as Active Record.
unless md = /^\s*([a-zA-Z][-_\w]*)\s*=>\s*(.+)\s*$/.match(line)
raise FormatError, "#{fixture_file_path}: fixture format error at '#{line}'. Expecting 'key => value'."
end
key, value = md.captures
# Disallow duplicate keys to catch typos.
raise FormatError, "#{fixture_file_path}: duplicate '#{key}' in fixture." if fixture[key]
fixture[key] = value.strip
fixture
end
end
end
module Test #:nodoc:

View file

@ -1 +0,0 @@
a b => 1

View file

@ -1,3 +0,0 @@
a => 1
b => 2

View file

@ -1,3 +0,0 @@
a => 1
b => 2
a => 3

View file

@ -1 +0,0 @@
a =>

View file

@ -1,3 +0,0 @@
developer_id => 1
project_id => 2
joined_on => 2004-10-10

View file

@ -1,3 +0,0 @@
developer_id => 1
project_id => 1
joined_on => 2004-10-10

View file

@ -1,2 +0,0 @@
developer_id => 2
project_id => 1

View file

@ -0,0 +1,7 @@
first:
nick: alterself
name: Luke Holden
second:
nick: webster132
name: David Heinemeier Hansson

View file

@ -1,2 +0,0 @@
nick => alterself
name => Luke Holden

View file

@ -1,2 +0,0 @@
nick => webster132
name => David Heinemeier Hansson

View file

@ -113,22 +113,6 @@ class FixturesTest < ActiveSupport::TestCase
assert first
end
def test_bad_format
path = File.join(File.dirname(__FILE__), 'fixtures', 'bad_fixtures')
Dir.entries(path).each do |file|
next unless File.file?(file) and file !~ Fixtures::DEFAULT_FILTER_RE
assert_raise(Fixture::FormatError) {
Fixture.new(bad_fixtures_path, file)
}
end
end
def test_deprecated_yaml_extension
assert_raise(Fixture::FormatError) {
Fixtures.new(nil, 'bad_extension', 'BadExtension', File.join(File.dirname(__FILE__), 'fixtures'))
}
end
def test_logger_level_invariant
level = ActiveRecord::Base.logger.level
create_fixtures('topics')