Skip to content

Commit ca7caf2

Browse files
committed
marks: move functions into marks.jl
1 parent b9e1bbf commit ca7caf2

File tree

2 files changed

+93
-93
lines changed

2 files changed

+93
-93
lines changed

src/ReTest.jl

Lines changed: 1 addition & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ function setresult! end
4343
# * includes
4444

4545
include("utils.jl")
46+
include("marks.jl")
4647
include("testset.jl")
4748
include("hijack.jl")
4849
include("watch.jl")
@@ -104,99 +105,6 @@ function tsdepth(ts::Union{TestsetExpr,Testset.ReTestSet})
104105
d
105106
end
106107

107-
const _pass = :__pass__
108-
const _fail = :__fail__
109-
110-
# marks contains at most one of _pass, _fail
111-
112-
# return true (pass), false (fail), or nothing (unrun)
113-
function pastresult(marks::Dict, subject)
114-
ms = get(marks, subject, Symbol())
115-
sym::Symbol = ms isa Symbol ? ms : isempty(ms) ? Symbol() : ms[1]
116-
sym === _pass ? true : sym === _fail ? false : nothing
117-
end
118-
119-
function setresult!(marks::Dict, subject, success::Bool)
120-
ms = get(marks, subject, Symbol())
121-
res = success ? _pass : _fail
122-
if ms isa Symbol
123-
# ms could be Symbol() from get's default or delmark!
124-
if ms (_pass, _fail, Symbol())
125-
marks[subject] = res
126-
else
127-
# res always in first position
128-
marks[subject] = [res, ms]
129-
end
130-
else # ms isa Vector
131-
if !isempty(ms) && ms[1] (_pass, _fail)
132-
ms[1] = res
133-
else
134-
pushfirst!(ms, res)
135-
end
136-
end
137-
end
138-
139-
function markiter(marks, subject, skipres::Bool)
140-
ms = get(marks, subject, Symbol())
141-
if ms isa Symbol
142-
if ms === Symbol() || skipres && ms (_pass, _fail)
143-
()
144-
else
145-
(ms,)
146-
end
147-
else
148-
if skipres
149-
Iterators.filter(m -> m (_pass, _fail), ms)
150-
else
151-
ms
152-
end
153-
end
154-
end
155-
156-
function addmark!(marks, subject, m::Symbol)
157-
ms = get(marks, subject, Symbol())
158-
if ms isa Symbol
159-
if ms === m
160-
false
161-
elseif ms === Symbol()
162-
marks[subject] = m
163-
true
164-
else
165-
marks[subject] = [ms, m]
166-
true
167-
end
168-
elseif findfirst(==(m), ms) === nothing
169-
push!(ms, m)
170-
true
171-
else
172-
false
173-
end
174-
end
175-
176-
function delmark!(marks, subject, m::Symbol)
177-
ms = get(marks, subject, Symbol())
178-
if ms isa Symbol
179-
if ms === m
180-
marks[subject] = Symbol()
181-
end
182-
else
183-
p = findfirst(==(m), ms)
184-
if p !== nothing
185-
deleteat!(ms, p)
186-
end
187-
end
188-
nothing
189-
end
190-
191-
function hasmark(marks, subject, m::Symbol)
192-
ms = get(marks, subject, Symbol())
193-
if ms isa Symbol
194-
ms === m
195-
else
196-
m ms
197-
end
198-
end
199-
200108

201109
struct _Invalid
202110
global const invalid = _Invalid.instance

src/marks.jl

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
const _pass = :__pass__
2+
const _fail = :__fail__
3+
4+
# marks contains at most one of _pass, _fail
5+
6+
# return true (pass), false (fail), or nothing (unrun)
7+
function pastresult(marks::Dict, subject)
8+
ms = get(marks, subject, Symbol())
9+
sym::Symbol = ms isa Symbol ? ms : isempty(ms) ? Symbol() : ms[1]
10+
sym === _pass ? true : sym === _fail ? false : nothing
11+
end
12+
13+
function setresult!(marks::Dict, subject, success::Bool)
14+
ms = get(marks, subject, Symbol())
15+
res = success ? _pass : _fail
16+
if ms isa Symbol
17+
# ms could be Symbol() from get's default or delmark!
18+
if ms (_pass, _fail, Symbol())
19+
marks[subject] = res
20+
else
21+
# res always in first position
22+
marks[subject] = [res, ms]
23+
end
24+
else # ms isa Vector
25+
if !isempty(ms) && ms[1] (_pass, _fail)
26+
ms[1] = res
27+
else
28+
pushfirst!(ms, res)
29+
end
30+
end
31+
end
32+
33+
function markiter(marks, subject, skipres::Bool)
34+
ms = get(marks, subject, Symbol())
35+
if ms isa Symbol
36+
if ms === Symbol() || skipres && ms (_pass, _fail)
37+
()
38+
else
39+
(ms,)
40+
end
41+
else
42+
if skipres
43+
Iterators.filter(m -> m (_pass, _fail), ms)
44+
else
45+
ms
46+
end
47+
end
48+
end
49+
50+
function addmark!(marks, subject, m::Symbol)
51+
ms = get(marks, subject, Symbol())
52+
if ms isa Symbol
53+
if ms === m
54+
false
55+
elseif ms === Symbol()
56+
marks[subject] = m
57+
true
58+
else
59+
marks[subject] = [ms, m]
60+
true
61+
end
62+
elseif findfirst(==(m), ms) === nothing
63+
push!(ms, m)
64+
true
65+
else
66+
false
67+
end
68+
end
69+
70+
function delmark!(marks, subject, m::Symbol)
71+
ms = get(marks, subject, Symbol())
72+
if ms isa Symbol
73+
if ms === m
74+
marks[subject] = Symbol()
75+
end
76+
else
77+
p = findfirst(==(m), ms)
78+
if p !== nothing
79+
deleteat!(ms, p)
80+
end
81+
end
82+
nothing
83+
end
84+
85+
function hasmark(marks, subject, m::Symbol)
86+
ms = get(marks, subject, Symbol())
87+
if ms isa Symbol
88+
ms === m
89+
else
90+
m ms
91+
end
92+
end

0 commit comments

Comments
 (0)