Commit 6c70d7f9 authored by Stan Hu's avatar Stan Hu

Merge branch 'bw-fix-sha-attribute' into 'master'

ShaAttribute crashes with ArgumentError if column doesn't exist

See merge request gitlab-org/gitlab-ce!18880
parents 0afcfd31 42d27f0b
...@@ -22,7 +22,8 @@ module ShaAttribute ...@@ -22,7 +22,8 @@ module ShaAttribute
column = columns.find { |c| c.name == name.to_s } column = columns.find { |c| c.name == name.to_s }
unless column unless column
raise ArgumentError.new("sha_attribute #{name.inspect} is invalid since the column doesn't exist") warn "WARNING: sha_attribute #{name.inspect} is invalid since the column doesn't exist - you may need to run database migrations"
return
end end
unless column.type == :binary unless column.type == :binary
......
...@@ -36,24 +36,26 @@ describe ShaAttribute do ...@@ -36,24 +36,26 @@ describe ShaAttribute do
end end
context 'when the table does not exist' do context 'when the table does not exist' do
it 'allows the attribute to be added' do it 'allows the attribute to be added and issues a warning' do
allow(model).to receive(:table_exists?).and_return(false) allow(model).to receive(:table_exists?).and_return(false)
expect(model).not_to receive(:columns) expect(model).not_to receive(:columns)
expect(model).to receive(:attribute) expect(model).to receive(:attribute)
expect(model).to receive(:warn)
model.sha_attribute(:name) model.sha_attribute(:name)
end end
end end
context 'when the column does not exist' do context 'when the column does not exist' do
it 'raises ArgumentError' do it 'allows the attribute to be added and issues a warning' do
allow(model).to receive(:table_exists?).and_return(true) allow(model).to receive(:table_exists?).and_return(true)
expect(model).to receive(:columns) expect(model).to receive(:columns)
expect(model).not_to receive(:attribute) expect(model).to receive(:attribute)
expect(model).to receive(:warn)
expect { model.sha_attribute(:no_name) }.to raise_error(ArgumentError) model.sha_attribute(:no_name)
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment