diff --git a/lib/parallel_tests/tasks.rb b/lib/parallel_tests/tasks.rb index ceda83c5..fa665652 100644 --- a/lib/parallel_tests/tasks.rb +++ b/lib/parallel_tests/tasks.rb @@ -7,8 +7,12 @@ def rails_env ENV['RAILS_ENV'] || 'test' end + def purge_before_load? + ENV.fetch('PURGE_BEFORE_LOAD', 'TRUE').downcase == 'false' ? false : true + end + def purge_before_load - "db:test:purge" if Gem::Version.new(Rails.version) > Gem::Version.new('4.2.0') + "db:test:purge" if purge_before_load? && Gem::Version.new(Rails.version) > Gem::Version.new('4.2.0') end def run_in_parallel(cmd, options={}) diff --git a/spec/parallel_tests/tasks_spec.rb b/spec/parallel_tests/tasks_spec.rb index 0136069c..2f77bbf0 100644 --- a/spec/parallel_tests/tasks_spec.rb +++ b/spec/parallel_tests/tasks_spec.rb @@ -29,6 +29,42 @@ end end + describe '.purge_before_load?' do + subject { ParallelTests::Tasks.purge_before_load? } + context "PURGE_BEFORE_LOAD is set to 'false'" do + before { expect(ENV).to receive(:fetch).with('PURGE_BEFORE_LOAD', 'TRUE').and_return('false') } + + it 'returns false' do + expect(subject).to be_falsey + end + end + + context 'PURGE_BEFORE_LOAD is not set' do + + it 'defaults to true' do + expect(subject).to be_truthy + end + end + end + + describe '.purge_before_load' do + subject { ParallelTests::Tasks.purge_before_load } + context 'Rails version is 4.3.1' do + before do + class Rails; end + allow(Rails).to receive(:version).and_return('4.3.1') + end + + context "PURGE_BEFORE_LOAD is set to 'false'" do + before { expect(ENV).to receive(:fetch).with('PURGE_BEFORE_LOAD', 'TRUE').and_return('false') } + + it 'returns nil' do + expect(subject).to be_nil + end + end + end + end + describe ".rails_env" do it "should be test when nothing was set" do expect(ParallelTests::Tasks.rails_env).to eq("test")