Skip to content

Commit d4d42e5

Browse files
authored
Bugfix and test _sourcetrait (#870)
* bugfix and test sourcetrait better * actually run sources tests * more tests
1 parent b55b28f commit d4d42e5

File tree

3 files changed

+91
-4
lines changed

3 files changed

+91
-4
lines changed

src/sources/sources.jl

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,27 @@ function Base.showerror(io::IO, e::BackendException)
6565
end
6666

6767
# Get the source backend for a file extension, falling back to GDALsource
68+
_sourcetrait(filename::AbstractString, s::Symbol) = _sourcetrait(s)
6869
_sourcetrait(filename::AbstractString, s::Source) = s
69-
_sourcetrait(filename::AbstractString, s) = _sourcetrait(s)
70+
_sourcetrait(filename::AbstractString, ::Type{S}) where S<:Source = S()
7071
_sourcetrait(filename::AbstractString, ::Union{Nothing,NoKW}) = _sourcetrait(filename)
71-
_sourcetrait(filename::AbstractString) = get(EXT2SOURCE, splitext(filename)[2], GDALsource())
72+
_sourcetrait(filename::AbstractString, ext::AbstractString) = get(EXT2SOURCE, ext, GDALsource())
73+
function _sourcetrait(filename::AbstractString)
74+
default = GDALsource()
75+
stem, ext = splitext(filename)
76+
str = if ext == ""
77+
# Handle e.g. "x.zarr/" directories
78+
if isdirpath(stem)
79+
return _sourcetrait(dirname(stem))
80+
else
81+
stem
82+
end
83+
else
84+
ext
85+
end
86+
return get(EXT2SOURCE, str, default)
87+
end
7288
_sourcetrait(filenames::NamedTuple) = _sourcetrait(first(filenames))
73-
_sourcetrait(filename, ext) = get(EXT2SOURCE, ext, GDALsource())
7489
_sourcetrait(source::Source) = source
7590
_sourcetrait(source::Type{<:Source}) = source()
7691
function _sourcetrait(name::Symbol)

test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ end
2626
@time @safetestset "warp" begin include("warp.jl") end
2727
@time @safetestset "cellarea" begin include("cellarea.jl") end
2828

29-
# CommondataModel sources
29+
@time @safetestset "sources" begin include("sources/sources.jl") end
3030
@time @safetestset "commondatamodel" begin include("sources/commondatamodel.jl") end
3131
@time @safetestset "ncdatasets" begin include("sources/ncdatasets.jl") end
3232
@time @safetestset "zarr" begin include("sources/zarr.jl") end

test/sources/sources.jl

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using Rasters, Test
2+
using Rasters: _sourcetrait
3+
4+
@test _sourcetrait("x", ".nc") == Rasters.NCDsource()
5+
@test _sourcetrait("x", ".nc4") == Rasters.NCDsource()
6+
@test _sourcetrait("x", ".h5") == Rasters.NCDsource()
7+
@test _sourcetrait("x", ".grd") == Rasters.GRDsource()
8+
@test _sourcetrait("x", ".gri") == Rasters.GRDsource()
9+
@test _sourcetrait("x", ".grib") == Rasters.GRIBsource()
10+
@test _sourcetrait("x", ".tif") == Rasters.GDALsource()
11+
@test _sourcetrait("x", ".zarr") == Rasters.Zarrsource()
12+
13+
@test _sourcetrait("x", :netcdf) == Rasters.NCDsource()
14+
@test _sourcetrait("x", :grd) == Rasters.GRDsource()
15+
@test _sourcetrait("x", :grib) == Rasters.GRIBsource()
16+
@test _sourcetrait("x", :gdal) == Rasters.GDALsource()
17+
@test _sourcetrait("x", :zarr) == Rasters.Zarrsource()
18+
19+
@test _sourcetrait("x", Rasters.NCDsource()) == Rasters.NCDsource()
20+
@test _sourcetrait("x", Rasters.GRDsource()) == Rasters.GRDsource()
21+
@test _sourcetrait("x", Rasters.GRIBsource()) == Rasters.GRIBsource()
22+
@test _sourcetrait("x", Rasters.GDALsource()) == Rasters.GDALsource()
23+
@test _sourcetrait("x", Rasters.Zarrsource()) == Rasters.Zarrsource()
24+
25+
@test _sourcetrait("x", Rasters.NCDsource) == Rasters.NCDsource()
26+
@test _sourcetrait("x", Rasters.GRDsource) == Rasters.GRDsource()
27+
@test _sourcetrait("x", Rasters.GRIBsource) == Rasters.GRIBsource()
28+
@test _sourcetrait("x", Rasters.GDALsource) == Rasters.GDALsource()
29+
@test _sourcetrait("x", Rasters.Zarrsource) == Rasters.Zarrsource()
30+
31+
@test _sourcetrait("x", :netcdf) == Rasters.NCDsource()
32+
@test _sourcetrait("x", :grd) == Rasters.GRDsource()
33+
@test _sourcetrait("x", :grib) == Rasters.GRIBsource()
34+
@test _sourcetrait("x", :gdal) == Rasters.GDALsource()
35+
@test _sourcetrait("x", :zarr) == Rasters.Zarrsource()
36+
37+
@test _sourcetrait(".nc") == Rasters.NCDsource()
38+
@test _sourcetrait(".nc4") == Rasters.NCDsource()
39+
@test _sourcetrait(".h5") == Rasters.NCDsource()
40+
@test _sourcetrait(".grd") == Rasters.GRDsource()
41+
@test _sourcetrait(".grib") == Rasters.GRIBsource()
42+
@test _sourcetrait(".tif") == Rasters.GDALsource()
43+
@test _sourcetrait(".zarr") == Rasters.Zarrsource()
44+
@test _sourcetrait(".zarr/") == Rasters.Zarrsource()
45+
46+
@test _sourcetrait("x.nc") == Rasters.NCDsource()
47+
@test _sourcetrait("x.nc4") == Rasters.NCDsource()
48+
@test _sourcetrait("x.h5") == Rasters.NCDsource()
49+
@test _sourcetrait("x.grd") == Rasters.GRDsource()
50+
@test _sourcetrait("x.gri") == Rasters.GRDsource()
51+
@test _sourcetrait("x.grib") == Rasters.GRIBsource()
52+
@test _sourcetrait("x.tif") == Rasters.GDALsource()
53+
@test _sourcetrait("x.zarr") == Rasters.Zarrsource()
54+
@test _sourcetrait("x.zarr/") == Rasters.Zarrsource()
55+
56+
@test _sourcetrait(:netcdf) == Rasters.NCDsource()
57+
@test _sourcetrait(:grd) == Rasters.GRDsource()
58+
@test _sourcetrait(:grib) == Rasters.GRIBsource()
59+
@test _sourcetrait(:gdal) == Rasters.GDALsource()
60+
@test _sourcetrait(:zarr) == Rasters.Zarrsource()
61+
62+
@test _sourcetrait(Rasters.NCDsource()) == Rasters.NCDsource()
63+
@test _sourcetrait(Rasters.GRDsource()) == Rasters.GRDsource()
64+
@test _sourcetrait(Rasters.GRIBsource()) == Rasters.GRIBsource()
65+
@test _sourcetrait(Rasters.GDALsource()) == Rasters.GDALsource()
66+
@test _sourcetrait(Rasters.Zarrsource()) == Rasters.Zarrsource()
67+
68+
@test _sourcetrait(Rasters.NCDsource) == Rasters.NCDsource()
69+
@test _sourcetrait(Rasters.GRDsource) == Rasters.GRDsource()
70+
@test _sourcetrait(Rasters.GRIBsource) == Rasters.GRIBsource()
71+
@test _sourcetrait(Rasters.GDALsource) == Rasters.GDALsource()
72+
@test _sourcetrait(Rasters.Zarrsource) == Rasters.Zarrsource()

0 commit comments

Comments
 (0)