Fix importing of GPX traces with a leading byte order marker

Fixes #2258
This commit is contained in:
Tom Hughes 2019-06-14 18:49:04 +01:00
parent 399ade116a
commit 26cbdcf71a
5 changed files with 16 additions and 5 deletions

View file

@ -51,7 +51,7 @@ module GPX
rescue Archive::Error
io = ::File.open(@file)
case MimeMagic.by_magic(io).type
case MimeMagic.by_magic(io)&.type
when "application/gzip" then io = Zlib::GzipReader.open(@file)
when "application/x-bzip" then io = Bzip2::FFI::Reader.open(@file)
end

View file

@ -153,7 +153,7 @@ module Api
# And finally we should be able to do it with the owner of the trace
basic_authorization anon_trace_file.user.display_name, "test"
get :data, :params => { :id => anon_trace_file.id }
check_trace_data anon_trace_file, "66179ca44f1e93d8df62e2b88cbea732"
check_trace_data anon_trace_file, "db4cb5ed2d7d2b627b3b504296c4f701"
end
# Test downloading a trace that doesn't exist through the api

View file

@ -388,7 +388,7 @@ class TracesControllerTest < ActionController::TestCase
# And finally we should be able to do it with the owner of the trace
get :data, :params => { :display_name => anon_trace_file.user.display_name, :id => anon_trace_file.id }, :session => { :user => anon_trace_file.user }
check_trace_data anon_trace_file, "66179ca44f1e93d8df62e2b88cbea732"
check_trace_data anon_trace_file, "db4cb5ed2d7d2b627b3b504296c4f701"
end
# Test downloading a trace that doesn't exist

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<gpx
version="1.0"
creator="GPSBabel - http://www.gpsbabel.org"

View file

@ -146,7 +146,7 @@ class TraceTest < ActiveSupport::TestCase
def test_xml_file
check_xml_file("a", "848caa72f2f456d1bd6a0fdf228aa1b9")
check_xml_file("b", "66179ca44f1e93d8df62e2b88cbea732")
check_xml_file("b", "db4cb5ed2d7d2b627b3b504296c4f701")
check_xml_file("c", "848caa72f2f456d1bd6a0fdf228aa1b9")
check_xml_file("d", "abd6675fdf3024a84fc0a1deac147c0d")
check_xml_file("f", "a7c05d676c77dc14369c21be216a3713")
@ -263,6 +263,17 @@ class TraceTest < ActiveSupport::TestCase
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")