From 236d227dd71d2de42a14ff3cd4700f9f0d6a6761 Mon Sep 17 00:00:00 2001 From: Nils Mueller Date: Fri, 7 Oct 2016 17:41:19 +0200 Subject: [PATCH 1/5] Add option to disable call to purge_before_load --- lib/parallel_tests/tasks.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/parallel_tests/tasks.rb b/lib/parallel_tests/tasks.rb index ceda83c5..07fc227a 100644 --- a/lib/parallel_tests/tasks.rb +++ b/lib/parallel_tests/tasks.rb @@ -115,15 +115,17 @@ def parse_args(args) # just load the schema (good for integration server <-> no development db) desc "load dumped schema for test databases via db:schema:load --> parallel:load_schema[num_cpus]" - task :load_schema, :count do |_,args| - command = "rake #{ParallelTests::Tasks.purge_before_load} db:schema:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1" + task :load_schema, [:count, :purge] do |_,args| + purge = ['no', 'false'].exclude?(args[:purge]) + command = "rake #{ParallelTests::Tasks.purge_before_load if purge} db:schema:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1" ParallelTests::Tasks.run_in_parallel(ParallelTests::Tasks.suppress_schema_load_output(command), args) end # load the structure from the structure.sql file desc "load structure for test databases via db:structure:load --> parallel:load_structure[num_cpus]" - task :load_structure, :count do |_,args| - ParallelTests::Tasks.run_in_parallel("rake #{ParallelTests::Tasks.purge_before_load} db:structure:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1", args) + task :load_structure, [:count, :purge] do |_,args| + purge = ['no', 'false'].exclude?(args[:purge]) + ParallelTests::Tasks.run_in_parallel("rake #{ParallelTests::Tasks.purge_before_load if purge} db:structure:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1", args) end desc "load the seed data from db/seeds.rb via db:seed --> parallel:seed[num_cpus]" From 22747d4e79f846538c69fd410b29707abe92a1bf Mon Sep 17 00:00:00 2001 From: Nils Mueller Date: Mon, 10 Oct 2016 06:41:54 +0200 Subject: [PATCH 2/5] Disable purge_before_load via env setting --- lib/parallel_tests/tasks.rb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/parallel_tests/tasks.rb b/lib/parallel_tests/tasks.rb index 07fc227a..e25b7e32 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['PURGE_BEFORE_LOAD'].inspect.lowercase == '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={}) @@ -115,17 +119,15 @@ def parse_args(args) # just load the schema (good for integration server <-> no development db) desc "load dumped schema for test databases via db:schema:load --> parallel:load_schema[num_cpus]" - task :load_schema, [:count, :purge] do |_,args| - purge = ['no', 'false'].exclude?(args[:purge]) - command = "rake #{ParallelTests::Tasks.purge_before_load if purge} db:schema:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1" + task :load_schema, :count do |_,args| + command = "rake #{ParallelTests::Tasks.purge_before_load} db:schema:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1" ParallelTests::Tasks.run_in_parallel(ParallelTests::Tasks.suppress_schema_load_output(command), args) end # load the structure from the structure.sql file desc "load structure for test databases via db:structure:load --> parallel:load_structure[num_cpus]" - task :load_structure, [:count, :purge] do |_,args| - purge = ['no', 'false'].exclude?(args[:purge]) - ParallelTests::Tasks.run_in_parallel("rake #{ParallelTests::Tasks.purge_before_load if purge} db:structure:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1", args) + task :load_structure, :count do |_,args| + ParallelTests::Tasks.run_in_parallel("rake #{ParallelTests::Tasks.purge_before_load} db:structure:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1", args) end desc "load the seed data from db/seeds.rb via db:seed --> parallel:seed[num_cpus]" From 3e316b51675734b0eb93e8c3fe10f9242f570958 Mon Sep 17 00:00:00 2001 From: Nils Mueller Date: Mon, 10 Oct 2016 17:55:11 +0200 Subject: [PATCH 3/5] Fix undefined method error --- lib/parallel_tests/tasks.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/parallel_tests/tasks.rb b/lib/parallel_tests/tasks.rb index e25b7e32..61ca741f 100644 --- a/lib/parallel_tests/tasks.rb +++ b/lib/parallel_tests/tasks.rb @@ -8,7 +8,7 @@ def rails_env end def purge_before_load? - ENV['PURGE_BEFORE_LOAD'].inspect.lowercase == 'false' ? false : true + ENV['PURGE_BEFORE_LOAD'].inspect.downcase == 'false' ? false : true end def purge_before_load From c0d3344774529700ca902109ee9e0bfc2328e4f1 Mon Sep 17 00:00:00 2001 From: Nils Mueller Date: Tue, 11 Oct 2016 14:03:21 +0200 Subject: [PATCH 4/5] Use fetch for better default handling --- lib/parallel_tests/tasks.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/parallel_tests/tasks.rb b/lib/parallel_tests/tasks.rb index 61ca741f..fa665652 100644 --- a/lib/parallel_tests/tasks.rb +++ b/lib/parallel_tests/tasks.rb @@ -8,7 +8,7 @@ def rails_env end def purge_before_load? - ENV['PURGE_BEFORE_LOAD'].inspect.downcase == 'false' ? false : true + ENV.fetch('PURGE_BEFORE_LOAD', 'TRUE').downcase == 'false' ? false : true end def purge_before_load From da1ece1a7a9d48a3606c1aee533785a93d950f7c Mon Sep 17 00:00:00 2001 From: Nils Mueller Date: Tue, 11 Oct 2016 14:05:10 +0200 Subject: [PATCH 5/5] Add tests for purge_before_load --- spec/parallel_tests/tasks_spec.rb | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) 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")