From: Andy Allan Date: Wed, 18 Mar 2020 14:35:55 +0000 (+0100) Subject: Copy trace fixture files, rather than symlinking X-Git-Tag: live~2802^2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/1cb0767e3dae1312d0dfefe011f339d814eaf2d5 Copy trace fixture files, rather than symlinking Since we are using tmpdirs in order to enable parallel testing, we can go the full hog and drop the fakefs too and just copy all the files directly into the tmpdir. If a test makes changes (e.g. changing the icon file during an import) the copy in the tmpdir is thrown away at the end of the test anyway. --- diff --git a/Gemfile b/Gemfile index 9a3fb1f6b..95144d438 100644 --- a/Gemfile +++ b/Gemfile @@ -138,7 +138,6 @@ end # Gems needed for running tests group :test do - gem "fakefs", :require => "fakefs/safe" gem "minitest", "~> 5.1", :platforms => [:ruby_19, :ruby_20] gem "rails-controller-testing" gem "rubocop" diff --git a/Gemfile.lock b/Gemfile.lock index f4403e7a1..95fdf3569 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -206,7 +206,6 @@ GEM factory_bot_rails (5.1.1) factory_bot (~> 5.1.0) railties (>= 4.2.0) - fakefs (1.0.0) faraday (1.0.0) multipart-post (>= 1.2, < 3) ffi (1.12.2) @@ -496,7 +495,6 @@ DEPENDENCIES dynamic_form erb_lint factory_bot_rails - fakefs faraday ffi-libarchive gd2-ffij (>= 0.4.0) diff --git a/test/controllers/api/traces_controller_test.rb b/test/controllers/api/traces_controller_test.rb index be5cb16cf..88c6fa90f 100644 --- a/test/controllers/api/traces_controller_test.rb +++ b/test/controllers/api/traces_controller_test.rb @@ -1,5 +1,4 @@ require "test_helper" -require "minitest/mock" module Api class TracesControllerTest < ActionController::TestCase diff --git a/test/controllers/traces_controller_test.rb b/test/controllers/traces_controller_test.rb index 0f9a9c1db..72a375939 100644 --- a/test/controllers/traces_controller_test.rb +++ b/test/controllers/traces_controller_test.rb @@ -1,5 +1,4 @@ require "test_helper" -require "minitest/mock" class TracesControllerTest < ActionController::TestCase # Use temporary directories with unique names for each test diff --git a/test/factories/traces.rb b/test/factories/traces.rb index 458faca83..961d52988 100644 --- a/test/factories/traces.rb +++ b/test/factories/traces.rb @@ -19,12 +19,12 @@ FactoryBot.define do after(:create) do |trace, evaluator| if evaluator.fixture - File.symlink(Rails.root.join("test", "gpx", "fixtures", "#{evaluator.fixture}.gpx"), - File.join(Settings.gpx_trace_dir, "#{trace.id}.gpx")) - File.symlink(Rails.root.join("test", "gpx", "fixtures", "#{evaluator.fixture}.gif"), - File.join(Settings.gpx_image_dir, "#{trace.id}.gif")) - File.symlink(Rails.root.join("test", "gpx", "fixtures", "#{evaluator.fixture}_icon.gif"), - File.join(Settings.gpx_image_dir, "#{trace.id}_icon.gif")) + FileUtils.copy(Rails.root.join("test", "gpx", "fixtures", "#{evaluator.fixture}.gpx"), + File.join(Settings.gpx_trace_dir, "#{trace.id}.gpx")) + FileUtils.copy(Rails.root.join("test", "gpx", "fixtures", "#{evaluator.fixture}.gif"), + File.join(Settings.gpx_image_dir, "#{trace.id}.gif")) + FileUtils.copy(Rails.root.join("test", "gpx", "fixtures", "#{evaluator.fixture}_icon.gif"), + File.join(Settings.gpx_image_dir, "#{trace.id}_icon.gif")) end end end diff --git a/test/models/trace_test.rb b/test/models/trace_test.rb index b610a338a..2955be3ad 100644 --- a/test/models/trace_test.rb +++ b/test/models/trace_test.rb @@ -1,6 +1,5 @@ require "test_helper" require "gpx" -require "minitest/mock" class TraceTest < ActiveSupport::TestCase # Use temporary directories with unique names for each test @@ -189,166 +188,116 @@ class TraceTest < ActiveSupport::TestCase trace.destroy end - # When testing the trace.import method, care needs to be taken regarding the icon - # fixture files, since the fixtures could be overwritten by newly generated files. - # We use FakeFS to temporarily protect the real fixture files from being overwritten. - def test_import_removes_previous_tracepoints - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace = create(:trace, :fixture => "a") - # Tracepoints don't have a primary key, so we use a specific latitude to - # check for successful deletion - create(:tracepoint, :latitude => 54321, :trace => trace) - assert_equal 1, Tracepoint.where(:latitude => 54321).count + trace = create(:trace, :fixture => "a") + # Tracepoints don't have a primary key, so we use a specific latitude to + # check for successful deletion + create(:tracepoint, :latitude => 54321, :trace => trace) + assert_equal 1, Tracepoint.where(:latitude => 54321).count - trace.import + trace.import - assert_equal 0, Tracepoint.where(:latitude => 54321).count - end + assert_equal 0, Tracepoint.where(:latitude => 54321).count end def test_import_creates_tracepoints - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace = create(:trace, :fixture => "a") - assert_equal 0, Tracepoint.where(:gpx_id => trace.id).count + trace = create(:trace, :fixture => "a") + assert_equal 0, Tracepoint.where(:gpx_id => trace.id).count - trace.import + trace.import - trace.reload - assert_equal 1, Tracepoint.where(:gpx_id => trace.id).count + trace.reload + assert_equal 1, Tracepoint.where(:gpx_id => trace.id).count - # Check that the tile has been set prior to the bulk import - # i.e. that the callbacks have been run correctly - assert_equal 3221331576, Tracepoint.where(:gpx_id => trace.id).first.tile - end + # Check that the tile has been set prior to the bulk import + # i.e. that the callbacks have been run correctly + assert_equal 3221331576, Tracepoint.where(:gpx_id => trace.id).first.tile end def test_import_creates_icon - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace = create(:trace, :fixture => "a") - icon_path = File.join(Settings.gpx_image_dir, "#{trace.id}_icon.gif") - FileUtils.rm(icon_path) - assert_equal false, File.exist?(icon_path) + trace = create(:trace, :fixture => "a") + icon_path = File.join(Settings.gpx_image_dir, "#{trace.id}_icon.gif") + FileUtils.rm(icon_path) + assert_equal false, File.exist?(icon_path) - trace.import + trace.import - assert_equal true, File.exist?(icon_path) - end + assert_equal true, File.exist?(icon_path) end def test_import_creates_large_picture - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace = create(:trace, :fixture => "a") - large_picture_path = File.join(Settings.gpx_image_dir, "#{trace.id}.gif") - FileUtils.rm(large_picture_path) - assert_equal false, File.exist?(large_picture_path) + trace = create(:trace, :fixture => "a") + large_picture_path = File.join(Settings.gpx_image_dir, "#{trace.id}.gif") + FileUtils.rm(large_picture_path) + assert_equal false, File.exist?(large_picture_path) - trace.import + trace.import - assert_equal true, File.exist?(large_picture_path) - end + assert_equal true, File.exist?(large_picture_path) end def test_import_handles_bz2 - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace = create(:trace, :fixture => "c") + trace = create(:trace, :fixture => "c") - trace.import + trace.import - assert_equal 1, trace.size - end + assert_equal 1, trace.size end def test_import_handles_plain - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace = create(:trace, :fixture => "a") + trace = create(:trace, :fixture => "a") - trace.import + trace.import - assert_equal 1, trace.size - end + assert_equal 1, trace.size end def test_import_handles_plain_with_bom - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace = create(:trace, :fixture => "b") + trace = create(:trace, :fixture => "b") - trace.import + trace.import - assert_equal 1, trace.size - end + assert_equal 1, trace.size end def test_import_handles_gz trace = create(:trace, :fixture => "d") - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace.import + trace.import - assert_equal 1, trace.size - ensure - trace.destroy - end + assert_equal 1, trace.size end def test_import_handles_zip trace = create(:trace, :fixture => "f") - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace.import + trace.import - assert_equal 2, trace.size - ensure - trace.destroy - end + assert_equal 2, trace.size end def test_import_handles_tar trace = create(:trace, :fixture => "g") - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace.import + trace.import - assert_equal 2, trace.size - ensure - trace.destroy - end + assert_equal 2, trace.size end def test_import_handles_tar_gz trace = create(:trace, :fixture => "h") - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace.import + trace.import - assert_equal 2, trace.size - ensure - trace.destroy - end + assert_equal 2, trace.size end def test_import_handles_tar_bz2 trace = create(:trace, :fixture => "i") - FakeFS do - FakeFS::FileSystem.clone(Rails.root.join("test/gpx")) - trace.import + trace.import - assert_equal 2, trace.size - ensure - trace.destroy - end + assert_equal 2, trace.size end private