Skip to content

Commit b819505

Browse files
committed
tests: add real idempotence tests
1 parent 6065eb3 commit b819505

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed

nipype/interfaces/base/tests/test_traits_extension.py

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,53 @@ def test_rebase_resolve_path_traits():
3030
a = rebase_path_traits(spec.trait('a'), v, '/some/path')
3131
assert a == Path('f1.txt')
3232

33+
# Idempotence
34+
assert rebase_path_traits(spec.trait('a'), a, '/some/path') == a
35+
3336
a = resolve_path_traits(spec.trait('a'), a, '/some/path')
3437
assert a == Path(v)
3538

39+
# Idempotence
40+
assert resolve_path_traits(spec.trait('a'), a, '/some/path') == a
41+
3642
a = rebase_path_traits(spec.trait('a'), v, '/some/other/path')
3743
assert a == Path(v)
3844

45+
# Idempotence
46+
assert rebase_path_traits(spec.trait('a'), a, '/some/other/path') == a
47+
3948
a = resolve_path_traits(spec.trait('a'), a, '/some/path')
4049
assert a == Path(v)
4150

51+
# Idempotence
52+
assert resolve_path_traits(spec.trait('a'), a, '/some/path') == a
53+
4254
v = ('/some/path/f1.txt', '/some/path/f2.txt')
4355
b = rebase_path_traits(spec.trait('b'), v, '/some/path')
4456
assert b == (Path('f1.txt'), Path('f2.txt'))
4557

58+
# Idempotence
59+
assert rebase_path_traits(spec.trait('b'), b, '/some/path') == b
60+
4661
b = resolve_path_traits(spec.trait('b'), b, '/some/path')
4762
assert b == (Path(v[0]), Path(v[1]))
4863

64+
# Idempotence
65+
assert resolve_path_traits(spec.trait('b'), b, '/some/path') == b
66+
4967
v = ['/some/path/f1.txt', '/some/path/f2.txt', '/some/path/f3.txt']
5068
c = rebase_path_traits(spec.trait('c'), v, '/some/path')
5169
assert c == [Path('f1.txt'), Path('f2.txt'), Path('f3.txt')]
5270

71+
# Idempotence
72+
assert rebase_path_traits(spec.trait('c'), c, '/some/path') == c
73+
5374
c = resolve_path_traits(spec.trait('c'), c, '/some/path')
5475
assert c == [Path(vp) for vp in v]
5576

77+
# Idempotence
78+
assert resolve_path_traits(spec.trait('c'), c, '/some/path') == c
79+
5680
v = 2.0
5781
d = rebase_path_traits(spec.trait('d'), v, '/some/path')
5882
assert d == v
@@ -64,119 +88,215 @@ def test_rebase_resolve_path_traits():
6488
d = rebase_path_traits(spec.trait('d'), v, '/some/path')
6589
assert d == Path('either.txt')
6690

91+
# Idempotence
92+
assert rebase_path_traits(spec.trait('d'), d, '/some/path') == d
93+
6794
d = resolve_path_traits(spec.trait('d'), d, '/some/path')
6895
assert d == Path(v)
6996

97+
# Idempotence
98+
assert resolve_path_traits(spec.trait('d'), d, '/some/path') == d
99+
70100
v = ['/some/path/f1.txt', '/some/path/f2.txt', '/some/path/f3.txt']
71101
e = rebase_path_traits(spec.trait('e'), v, '/some/path')
72102
assert e == [Path('f1.txt'), Path('f2.txt'), Path('f3.txt')]
73103

104+
# Idempotence
105+
assert rebase_path_traits(spec.trait('e'), e, '/some/path') == e
106+
74107
e = resolve_path_traits(spec.trait('e'), e, '/some/path')
75108
assert e == [Path(vp) for vp in v]
76109

110+
# Idempotence
111+
assert resolve_path_traits(spec.trait('e'), e, '/some/path') == e
112+
77113
v = [['/some/path/f1.txt', '/some/path/f2.txt'], [['/some/path/f3.txt']]]
78114
e = rebase_path_traits(spec.trait('e'), v, '/some/path')
79115
assert e == [[Path('f1.txt'), Path('f2.txt')], [[Path('f3.txt')]]]
80116

117+
# Idempotence
118+
assert rebase_path_traits(spec.trait('e'), e, '/some/path') == e
119+
81120
e = resolve_path_traits(spec.trait('e'), e, '/some/path')
82121
assert e == [[[Path(vpp) for vpp in vp] if isinstance(vp, list) else Path(vp) for vp in inner]
83122
for inner in v]
84123

124+
# Idempotence
125+
assert resolve_path_traits(spec.trait('e'), e, '/some/path') == e
126+
85127
# These are Str - no rebasing/resolving should happen
86128
v = [['/some/path/f1.txt', '/some/path/f2.txt'], [['/some/path/f3.txt']]]
87129
ee = rebase_path_traits(spec.trait('ee'), v, '/some/path')
88130
assert ee == v
89131

132+
# Idempotence
133+
assert rebase_path_traits(spec.trait('ee'), ee, '/some/path') == ee
134+
90135
ee = resolve_path_traits(spec.trait('ee'), [['f1.txt', 'f2.txt'], [['f3.txt']]], '/some/path')
91136
assert ee == [['f1.txt', 'f2.txt'], [['f3.txt']]]
92137

138+
# Idempotence
139+
assert resolve_path_traits(spec.trait('ee'), ee, '/some/path') == ee
140+
93141
v = {'1': '/some/path/f1.txt'}
94142
f = rebase_path_traits(spec.trait('f'), v, '/some')
95143
assert f == {'1': Path('path/f1.txt')}
96144

145+
# Idempotence
146+
assert rebase_path_traits(spec.trait('f'), f, '/some') == f
147+
97148
f = resolve_path_traits(spec.trait('f'), f, '/some')
98149
assert f == {k: Path(val) for k, val in v.items()}
99150

151+
# Idempotence
152+
assert resolve_path_traits(spec.trait('f'), f, '/some') == f
153+
100154
# Either(Str, File): passing in path-like apply manipulation
101155
v = '/some/path/either.txt'
102156
g = rebase_path_traits(spec.trait('g'), v, '/some/path')
103157
assert g == Path('either.txt')
104158

159+
# Idempotence
160+
assert rebase_path_traits(spec.trait('g'), g, '/some/path') == g
161+
105162
g = resolve_path_traits(spec.trait('g'), g, '/some/path')
106163
assert g == Path(v)
107164

165+
# Idempotence
166+
assert resolve_path_traits(spec.trait('g'), g, '/some/path') == g
167+
108168
g = rebase_path_traits(spec.trait('g'), v, '/some')
109169
assert g == Path('path/either.txt')
110170

171+
# Idempotence
172+
assert rebase_path_traits(spec.trait('g'), g, '/some/path') == g
173+
111174
g = resolve_path_traits(spec.trait('g'), g, '/some')
112175
assert g == Path(v)
113176

177+
# Idempotence
178+
assert resolve_path_traits(spec.trait('g'), g, '/some/path') == g
179+
114180
# Either(Str, File): passing str discards File
115181
v = 'either.txt'
116182
g = rebase_path_traits(spec.trait('g'), v, '/some/path')
117183
assert g == v
118184

185+
# Idempotence
186+
assert rebase_path_traits(spec.trait('g'), g, '/some/path') == g
187+
119188
# This is a problematic case, it is impossible to know whether this
120189
# was meant to be a string or a file.
121190
# In this implementation, strings take precedence
122191
g = resolve_path_traits(spec.trait('g'), g, '/some/path')
123192
assert g == v
124193

194+
# Idempotence
195+
assert resolve_path_traits(spec.trait('g'), g, '/some/path') == g
196+
125197
v = 'string'
126198
g = rebase_path_traits(spec.trait('g'), v, '/some')
127199
assert g == v
128200

201+
# Idempotence
202+
assert rebase_path_traits(spec.trait('g'), g, '/some') == g
203+
129204
# This is a problematic case, it is impossible to know whether this
130205
# was meant to be a string or a file.
131206
g = resolve_path_traits(spec.trait('g'), v, '/some')
132207
assert g == v
133208

209+
# Idempotence
210+
assert resolve_path_traits(spec.trait('g'), g, '/some') == g
211+
134212
v = v
135213
g = rebase_path_traits(spec.trait('g'), v, '/some/path')
136214
assert g == v # You dont want this one to be a Path
137215

216+
# Idempotence
217+
assert rebase_path_traits(spec.trait('g'), g, '/some/path') == g
218+
138219
# This is a problematic case, it is impossible to know whether this
139220
# was meant to be a string or a file.
140221
g = resolve_path_traits(spec.trait('g'), g, '/some/path')
141222
assert g == v # You dont want this one to be a Path
142223

224+
# Idempotence
225+
assert resolve_path_traits(spec.trait('g'), g, '/some/path') == g
226+
143227
h = rebase_path_traits(spec.trait('h'), v, '/some/path')
144228
assert h == v
145229

230+
# Idempotence
231+
assert rebase_path_traits(spec.trait('h'), h, '/some/path') == h
232+
146233
h = resolve_path_traits(spec.trait('h'), h, '/some/path')
147234
assert h == v
148235

236+
# Idempotence
237+
assert resolve_path_traits(spec.trait('h'), h, '/some/path') == h
238+
149239
v = '/some/path/either/file.txt'
150240
i = rebase_path_traits(spec.trait('i'), v, '/some/path')
151241
assert i == Path('either/file.txt')
152242

243+
# Idempotence
244+
assert rebase_path_traits(spec.trait('i'), i, '/some/path') == i
245+
153246
i = resolve_path_traits(spec.trait('i'), i, '/some/path')
154247
assert i == Path(v)
155248

249+
# Idempotence
250+
assert resolve_path_traits(spec.trait('i'), i, '/some/path') == i
251+
156252
v = ('/some/path/either/tuple/file.txt', 2)
157253
i = rebase_path_traits(spec.trait('i'), v, '/some/path')
158254
assert i == (Path('either/tuple/file.txt'), 2)
159255

256+
# Idempotence
257+
assert rebase_path_traits(spec.trait('i'), i, '/some/path') == i
258+
160259
i = resolve_path_traits(spec.trait('i'), i, '/some/path')
161260
assert i == (Path(v[0]), v[1])
162261

262+
# Idempotence
263+
assert resolve_path_traits(spec.trait('i'), i, '/some/path') == i
264+
163265
v = '/some/path/either/file.txt'
164266
j = rebase_path_traits(spec.trait('j'), v, '/some/path')
165267
assert j == Path('either/file.txt')
166268

269+
# Idempotence
270+
assert rebase_path_traits(spec.trait('j'), j, '/some/path') == j
271+
167272
j = resolve_path_traits(spec.trait('j'), j, '/some/path')
168273
assert j == Path(v)
169274

275+
# Idempotence
276+
assert resolve_path_traits(spec.trait('j'), j, '/some/path') == j
277+
170278
v = ('/some/path/either/tuple/file.txt', 2)
171279
j = rebase_path_traits(spec.trait('j'), ('/some/path/either/tuple/file.txt', 2), '/some/path')
172280
assert j == (Path('either/tuple/file.txt'), 2)
173281

282+
# Idempotence
283+
assert rebase_path_traits(spec.trait('j'), j, '/some/path') == j
284+
174285
j = resolve_path_traits(spec.trait('j'), j, '/some/path')
175286
assert j == (Path(v[0]), v[1])
176287

288+
# Idempotence
289+
assert resolve_path_traits(spec.trait('j'), j, '/some/path') == j
290+
177291
v = {'a': '/some/path/either/dict/file.txt'}
178292
j = rebase_path_traits(spec.trait('j'), v, '/some/path')
179293
assert j == {'a': Path('either/dict/file.txt')}
180294

295+
# Idempotence
296+
assert rebase_path_traits(spec.trait('j'), j, '/some/path') == j
297+
181298
j = resolve_path_traits(spec.trait('j'), j, '/some/path')
182299
assert j == {k: Path(val) for k, val in v.items()}
300+
301+
# Idempotence
302+
assert resolve_path_traits(spec.trait('j'), j, '/some/path') == j

0 commit comments

Comments
 (0)