Skip to content

Commit 62e25ed

Browse files
committed
Fix flaky specs
Signed-off-by: Lovro Bikic <[email protected]>
1 parent ae0b79c commit 62e25ed

File tree

1 file changed

+35
-15
lines changed

1 file changed

+35
-15
lines changed

spec/lib/annotate/annotate_models_spec.rb

+35-15
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,11 @@ def mock_column(name, type, options = {})
153153
end
154154

155155
before :each do
156-
AnnotateModels.send(:parse_options, options)
156+
AnnotateModels.parse_options(options)
157+
end
158+
159+
after :each do
160+
AnnotateModels.parse_options({ skip_subdirectory_model_load: false })
157161
end
158162

159163
describe '@root_dir' do
@@ -1647,6 +1651,10 @@ def mock_column(name, type, options = {})
16471651
Annotate::Helpers.true?(ENV['show_complete_foreign_keys'])
16481652
end
16491653

1654+
after :each do
1655+
ENV.delete('show_complete_foreign_keys')
1656+
end
1657+
16501658
context 'when default value of "show_complete_foreign_keys" is not set' do
16511659
it 'returns false' do
16521660
is_expected.to be(false)
@@ -1658,14 +1666,14 @@ def mock_column(name, type, options = {})
16581666
Annotate.set_defaults('show_complete_foreign_keys' => 'true')
16591667
end
16601668

1669+
after do
1670+
Annotate.instance_variable_set('@has_set_defaults', false)
1671+
end
1672+
16611673
it 'returns true' do
16621674
is_expected.to be(true)
16631675
end
16641676
end
1665-
1666-
after :each do
1667-
ENV.delete('show_complete_foreign_keys')
1668-
end
16691677
end
16701678

16711679
describe '.get_patterns' do
@@ -1815,8 +1823,14 @@ def mock_column(name, type, options = {})
18151823
end
18161824

18171825
describe '.get_model_class' do
1818-
before :all do
1819-
AnnotateModels.model_dir = Dir.mktmpdir('annotate_models')
1826+
before :each do
1827+
@model_dir = Dir.mktmpdir('annotate_models')
1828+
AnnotateModels.model_dir = @model_dir
1829+
create(filename, file_content)
1830+
end
1831+
1832+
after :each do
1833+
FileUtils.remove_dir(@model_dir, true)
18201834
end
18211835

18221836
# TODO: use 'files' gem instead
@@ -1829,10 +1843,6 @@ def create(filename, file_content)
18291843
end
18301844
end
18311845

1832-
before :each do
1833-
create(filename, file_content)
1834-
end
1835-
18361846
let :klass do
18371847
AnnotateModels.get_model_class(File.join(AnnotateModels.model_dir[0], filename))
18381848
end
@@ -2113,7 +2123,9 @@ class Foo < ActiveRecord::Base
21132123

21142124
let :file_content_2 do
21152125
<<-EOS
2116-
class Bar::Foo < ActiveRecord::Base
2126+
module Bar
2127+
class Foo < ActiveRecord::Base
2128+
end
21172129
end
21182130
EOS
21192131
end
@@ -2146,7 +2158,9 @@ class Foo < ActiveRecord::Base
21462158

21472159
let :file_content_2 do
21482160
<<-EOS
2149-
class Bar::Foo < ActiveRecord::Base
2161+
module Bar
2162+
class Foo < ActiveRecord::Base
2163+
end
21502164
end
21512165
EOS
21522166
end
@@ -2163,6 +2177,7 @@ class Bar::Foo < ActiveRecord::Base
21632177
it 'attempts to load the model path without expanding if skip_subdirectory_model_load is false' do
21642178
allow(AnnotateModels).to receive(:skip_subdirectory_model_load).and_return(false)
21652179
full_path = File.join(AnnotateModels.model_dir[0], filename_2)
2180+
Kernel.load(full_path)
21662181
expect(File).to_not receive(:expand_path).with(full_path)
21672182
AnnotateModels.get_model_class(full_path)
21682183
end
@@ -2171,6 +2186,7 @@ class Bar::Foo < ActiveRecord::Base
21712186
$LOAD_PATH.unshift(AnnotateModels.model_dir[0])
21722187
allow(AnnotateModels).to receive(:skip_subdirectory_model_load).and_return(true)
21732188
full_path = File.join(AnnotateModels.model_dir[0], filename_2)
2189+
Kernel.load(full_path)
21742190
expect(File).to receive(:expand_path).with(full_path).and_call_original
21752191
AnnotateModels.get_model_class(full_path)
21762192
end
@@ -2502,7 +2518,7 @@ class Foo < ActiveRecord::Base
25022518
end
25032519

25042520
describe 'annotating a file' do
2505-
before do
2521+
before :each do
25062522
@model_dir = Dir.mktmpdir('annotate_models')
25072523
(@model_file_name, @file_content) = write_model 'user.rb', <<~EOS
25082524
class User < ActiveRecord::Base
@@ -2519,6 +2535,10 @@ class User < ActiveRecord::Base
25192535
Annotate::Helpers.reset_options(Annotate::Constants::ALL_ANNOTATE_OPTIONS)
25202536
end
25212537

2538+
after :each do
2539+
FileUtils.remove_dir(@model_dir, true)
2540+
end
2541+
25222542
def write_model(file_name, file_content)
25232543
fname = File.join(@model_dir, file_name)
25242544
FileUtils.mkdir_p(File.dirname(fname))
@@ -2531,7 +2551,7 @@ def annotate_one_file(options = {})
25312551
Annotate.set_defaults(options)
25322552
options = Annotate.setup_options(options)
25332553
AnnotateModels.annotate_one_file(@model_file_name, @schema_info, :position_in_class, options)
2534-
2554+
ensure
25352555
# Wipe settings so the next call will pick up new values...
25362556
Annotate.instance_variable_set('@has_set_defaults', false)
25372557
Annotate::Constants::POSITION_OPTIONS.each { |key| ENV[key.to_s] = '' }

0 commit comments

Comments
 (0)