Skip to content

Commit 7d4d8fb

Browse files
authored
Handle corrupt status files (#10)
* Handle corrupt status files Do not error if the Status.properties file is corrupt. Instead, we display a warning that the status information may be incorrect, keep calm, and carry-on.
1 parent 097c5b3 commit 7d4d8fb

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/teaseisio.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,10 @@ function get_status(io::IOStream)
608608
for ln in eachline(io)
609609
if ln[1] != '#'
610610
x = split(ln, '=')
611+
if length(x) < 2
612+
warn("Corrupt status information. Status information, i.e. \"has traces\", may be incorrect.")
613+
return false
614+
end
611615
if chomp(x[2]) == "true"
612616
return true
613617
end

test/test_teaseisio.jl

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
using TeaSeis, Base.Test
22

3+
# macro for compatability with julia 0.5
4+
macro mytest_warn(msg, expr)
5+
if VERSION >= v"0.6.0"
6+
return :(@test_warn $msg $expr)
7+
else
8+
return :(nothing)
9+
end
10+
end
11+
312
ENV["JAVASEIS_DATA_HOME"] = ""
413
ENV["PROMAX_DATA_HOME"] = ""
514

@@ -146,6 +155,23 @@ mkdir(rundir)
146155
@test fold(io, 3) == 0
147156
rm(jsopen(joinpath(rundir,"data.js")))
148157

158+
# don't fail on a corrupt status file
159+
io = jsopen(joinpath(rundir, "data.js"), "w", axis_lengths=[10,11,12])
160+
io = open(joinpath(rundir, "data.js", "Status.properties"))
161+
lines = readlines(io)
162+
close(io)
163+
io = open(joinpath(rundir,"data.js", "Status.properties"),"w")
164+
for line in lines
165+
if !startswith(line,"#")
166+
write(io,split(line,'=')[1]*"\n")
167+
else
168+
write(io,line*"\n")
169+
end
170+
end
171+
close(io)
172+
@mytest_warn "Corrupt" jsopen(joinpath(rundir,"data.js")) # see top of file for @mytest_warn macro (for compatability with julia 0.5)
173+
rm(jsopen(joinpath(rundir,"data.js")))
174+
149175
@testset "lstrt=$(lstrt),lincrs=$(lincrs),sz=$(sz),second=$(second),T=$(T)" for lstrt in ([1,1,1,1,1], [10,20,30,40,50]), lincrs in ([1,1,1,1,1],[1,2,3,4,5]), sz in ([5,6,7], [5,6,7,8], [5,6,7,8,9]), second in (["."],["$(rundir)/second"]), T in (Float32, Int16)
150176
write(STDOUT, "lstrt=$(lstrt),lincrs=$(lincrs),sz=$(sz),second=$(second),T=$(T)\n")
151177
labls = ["SAMPLE", "TRACE", "FRAME", "VOLUME", "HYPRCUBE"]

0 commit comments

Comments
 (0)