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.
This commit is contained in:
parent
0e612ea99a
commit
1cb0767e3d
6 changed files with 52 additions and 108 deletions
1
Gemfile
1
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"
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
require "test_helper"
|
||||
require "minitest/mock"
|
||||
|
||||
module Api
|
||||
class TracesControllerTest < ActionController::TestCase
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
require "test_helper"
|
||||
require "minitest/mock"
|
||||
|
||||
class TracesControllerTest < ActionController::TestCase
|
||||
# Use temporary directories with unique names for each test
|
||||
|
|
|
@ -19,11 +19,11 @@ FactoryBot.define do
|
|||
|
||||
after(:create) do |trace, evaluator|
|
||||
if evaluator.fixture
|
||||
File.symlink(Rails.root.join("test", "gpx", "fixtures", "#{evaluator.fixture}.gpx"),
|
||||
FileUtils.copy(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"),
|
||||
FileUtils.copy(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"),
|
||||
FileUtils.copy(Rails.root.join("test", "gpx", "fixtures", "#{evaluator.fixture}_icon.gif"),
|
||||
File.join(Settings.gpx_image_dir, "#{trace.id}_icon.gif"))
|
||||
end
|
||||
end
|
||||
|
|
|
@ -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,13 +188,7 @@ 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
|
||||
|
@ -206,11 +199,8 @@ class TraceTest < ActiveSupport::TestCase
|
|||
|
||||
assert_equal 0, Tracepoint.where(:latitude => 54321).count
|
||||
end
|
||||
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
|
||||
|
||||
|
@ -223,11 +213,8 @@ class TraceTest < ActiveSupport::TestCase
|
|||
# i.e. that the callbacks have been run correctly
|
||||
assert_equal 3221331576, Tracepoint.where(:gpx_id => trace.id).first.tile
|
||||
end
|
||||
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)
|
||||
|
@ -237,11 +224,8 @@ class TraceTest < ActiveSupport::TestCase
|
|||
|
||||
assert_equal true, File.exist?(icon_path)
|
||||
end
|
||||
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)
|
||||
|
@ -251,104 +235,69 @@ class TraceTest < ActiveSupport::TestCase
|
|||
|
||||
assert_equal true, File.exist?(large_picture_path)
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_handles_bz2
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test/gpx"))
|
||||
trace = create(:trace, :fixture => "c")
|
||||
|
||||
trace.import
|
||||
|
||||
assert_equal 1, trace.size
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_handles_plain
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test/gpx"))
|
||||
trace = create(:trace, :fixture => "a")
|
||||
|
||||
trace.import
|
||||
|
||||
assert_equal 1, trace.size
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_handles_plain_with_bom
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test/gpx"))
|
||||
trace = create(:trace, :fixture => "b")
|
||||
|
||||
trace.import
|
||||
|
||||
assert_equal 1, trace.size
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_handles_gz
|
||||
trace = create(:trace, :fixture => "d")
|
||||
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test/gpx"))
|
||||
trace.import
|
||||
|
||||
assert_equal 1, trace.size
|
||||
ensure
|
||||
trace.destroy
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_handles_zip
|
||||
trace = create(:trace, :fixture => "f")
|
||||
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test/gpx"))
|
||||
trace.import
|
||||
|
||||
assert_equal 2, trace.size
|
||||
ensure
|
||||
trace.destroy
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_handles_tar
|
||||
trace = create(:trace, :fixture => "g")
|
||||
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test/gpx"))
|
||||
trace.import
|
||||
|
||||
assert_equal 2, trace.size
|
||||
ensure
|
||||
trace.destroy
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_handles_tar_gz
|
||||
trace = create(:trace, :fixture => "h")
|
||||
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test/gpx"))
|
||||
trace.import
|
||||
|
||||
assert_equal 2, trace.size
|
||||
ensure
|
||||
trace.destroy
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_handles_tar_bz2
|
||||
trace = create(:trace, :fixture => "i")
|
||||
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test/gpx"))
|
||||
trace.import
|
||||
|
||||
assert_equal 2, trace.size
|
||||
ensure
|
||||
trace.destroy
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
|
Loading…
Add table
Reference in a new issue