@@ -30,29 +30,53 @@ def test_rebase_resolve_path_traits():
30
30
a = rebase_path_traits (spec .trait ('a' ), v , '/some/path' )
31
31
assert a == Path ('f1.txt' )
32
32
33
+ # Idempotence
34
+ assert rebase_path_traits (spec .trait ('a' ), a , '/some/path' ) == a
35
+
33
36
a = resolve_path_traits (spec .trait ('a' ), a , '/some/path' )
34
37
assert a == Path (v )
35
38
39
+ # Idempotence
40
+ assert resolve_path_traits (spec .trait ('a' ), a , '/some/path' ) == a
41
+
36
42
a = rebase_path_traits (spec .trait ('a' ), v , '/some/other/path' )
37
43
assert a == Path (v )
38
44
45
+ # Idempotence
46
+ assert rebase_path_traits (spec .trait ('a' ), a , '/some/other/path' ) == a
47
+
39
48
a = resolve_path_traits (spec .trait ('a' ), a , '/some/path' )
40
49
assert a == Path (v )
41
50
51
+ # Idempotence
52
+ assert resolve_path_traits (spec .trait ('a' ), a , '/some/path' ) == a
53
+
42
54
v = ('/some/path/f1.txt' , '/some/path/f2.txt' )
43
55
b = rebase_path_traits (spec .trait ('b' ), v , '/some/path' )
44
56
assert b == (Path ('f1.txt' ), Path ('f2.txt' ))
45
57
58
+ # Idempotence
59
+ assert rebase_path_traits (spec .trait ('b' ), b , '/some/path' ) == b
60
+
46
61
b = resolve_path_traits (spec .trait ('b' ), b , '/some/path' )
47
62
assert b == (Path (v [0 ]), Path (v [1 ]))
48
63
64
+ # Idempotence
65
+ assert resolve_path_traits (spec .trait ('b' ), b , '/some/path' ) == b
66
+
49
67
v = ['/some/path/f1.txt' , '/some/path/f2.txt' , '/some/path/f3.txt' ]
50
68
c = rebase_path_traits (spec .trait ('c' ), v , '/some/path' )
51
69
assert c == [Path ('f1.txt' ), Path ('f2.txt' ), Path ('f3.txt' )]
52
70
71
+ # Idempotence
72
+ assert rebase_path_traits (spec .trait ('c' ), c , '/some/path' ) == c
73
+
53
74
c = resolve_path_traits (spec .trait ('c' ), c , '/some/path' )
54
75
assert c == [Path (vp ) for vp in v ]
55
76
77
+ # Idempotence
78
+ assert resolve_path_traits (spec .trait ('c' ), c , '/some/path' ) == c
79
+
56
80
v = 2.0
57
81
d = rebase_path_traits (spec .trait ('d' ), v , '/some/path' )
58
82
assert d == v
@@ -64,119 +88,215 @@ def test_rebase_resolve_path_traits():
64
88
d = rebase_path_traits (spec .trait ('d' ), v , '/some/path' )
65
89
assert d == Path ('either.txt' )
66
90
91
+ # Idempotence
92
+ assert rebase_path_traits (spec .trait ('d' ), d , '/some/path' ) == d
93
+
67
94
d = resolve_path_traits (spec .trait ('d' ), d , '/some/path' )
68
95
assert d == Path (v )
69
96
97
+ # Idempotence
98
+ assert resolve_path_traits (spec .trait ('d' ), d , '/some/path' ) == d
99
+
70
100
v = ['/some/path/f1.txt' , '/some/path/f2.txt' , '/some/path/f3.txt' ]
71
101
e = rebase_path_traits (spec .trait ('e' ), v , '/some/path' )
72
102
assert e == [Path ('f1.txt' ), Path ('f2.txt' ), Path ('f3.txt' )]
73
103
104
+ # Idempotence
105
+ assert rebase_path_traits (spec .trait ('e' ), e , '/some/path' ) == e
106
+
74
107
e = resolve_path_traits (spec .trait ('e' ), e , '/some/path' )
75
108
assert e == [Path (vp ) for vp in v ]
76
109
110
+ # Idempotence
111
+ assert resolve_path_traits (spec .trait ('e' ), e , '/some/path' ) == e
112
+
77
113
v = [['/some/path/f1.txt' , '/some/path/f2.txt' ], [['/some/path/f3.txt' ]]]
78
114
e = rebase_path_traits (spec .trait ('e' ), v , '/some/path' )
79
115
assert e == [[Path ('f1.txt' ), Path ('f2.txt' )], [[Path ('f3.txt' )]]]
80
116
117
+ # Idempotence
118
+ assert rebase_path_traits (spec .trait ('e' ), e , '/some/path' ) == e
119
+
81
120
e = resolve_path_traits (spec .trait ('e' ), e , '/some/path' )
82
121
assert e == [[[Path (vpp ) for vpp in vp ] if isinstance (vp , list ) else Path (vp ) for vp in inner ]
83
122
for inner in v ]
84
123
124
+ # Idempotence
125
+ assert resolve_path_traits (spec .trait ('e' ), e , '/some/path' ) == e
126
+
85
127
# These are Str - no rebasing/resolving should happen
86
128
v = [['/some/path/f1.txt' , '/some/path/f2.txt' ], [['/some/path/f3.txt' ]]]
87
129
ee = rebase_path_traits (spec .trait ('ee' ), v , '/some/path' )
88
130
assert ee == v
89
131
132
+ # Idempotence
133
+ assert rebase_path_traits (spec .trait ('ee' ), ee , '/some/path' ) == ee
134
+
90
135
ee = resolve_path_traits (spec .trait ('ee' ), [['f1.txt' , 'f2.txt' ], [['f3.txt' ]]], '/some/path' )
91
136
assert ee == [['f1.txt' , 'f2.txt' ], [['f3.txt' ]]]
92
137
138
+ # Idempotence
139
+ assert resolve_path_traits (spec .trait ('ee' ), ee , '/some/path' ) == ee
140
+
93
141
v = {'1' : '/some/path/f1.txt' }
94
142
f = rebase_path_traits (spec .trait ('f' ), v , '/some' )
95
143
assert f == {'1' : Path ('path/f1.txt' )}
96
144
145
+ # Idempotence
146
+ assert rebase_path_traits (spec .trait ('f' ), f , '/some' ) == f
147
+
97
148
f = resolve_path_traits (spec .trait ('f' ), f , '/some' )
98
149
assert f == {k : Path (val ) for k , val in v .items ()}
99
150
151
+ # Idempotence
152
+ assert resolve_path_traits (spec .trait ('f' ), f , '/some' ) == f
153
+
100
154
# Either(Str, File): passing in path-like apply manipulation
101
155
v = '/some/path/either.txt'
102
156
g = rebase_path_traits (spec .trait ('g' ), v , '/some/path' )
103
157
assert g == Path ('either.txt' )
104
158
159
+ # Idempotence
160
+ assert rebase_path_traits (spec .trait ('g' ), g , '/some/path' ) == g
161
+
105
162
g = resolve_path_traits (spec .trait ('g' ), g , '/some/path' )
106
163
assert g == Path (v )
107
164
165
+ # Idempotence
166
+ assert resolve_path_traits (spec .trait ('g' ), g , '/some/path' ) == g
167
+
108
168
g = rebase_path_traits (spec .trait ('g' ), v , '/some' )
109
169
assert g == Path ('path/either.txt' )
110
170
171
+ # Idempotence
172
+ assert rebase_path_traits (spec .trait ('g' ), g , '/some/path' ) == g
173
+
111
174
g = resolve_path_traits (spec .trait ('g' ), g , '/some' )
112
175
assert g == Path (v )
113
176
177
+ # Idempotence
178
+ assert resolve_path_traits (spec .trait ('g' ), g , '/some/path' ) == g
179
+
114
180
# Either(Str, File): passing str discards File
115
181
v = 'either.txt'
116
182
g = rebase_path_traits (spec .trait ('g' ), v , '/some/path' )
117
183
assert g == v
118
184
185
+ # Idempotence
186
+ assert rebase_path_traits (spec .trait ('g' ), g , '/some/path' ) == g
187
+
119
188
# This is a problematic case, it is impossible to know whether this
120
189
# was meant to be a string or a file.
121
190
# In this implementation, strings take precedence
122
191
g = resolve_path_traits (spec .trait ('g' ), g , '/some/path' )
123
192
assert g == v
124
193
194
+ # Idempotence
195
+ assert resolve_path_traits (spec .trait ('g' ), g , '/some/path' ) == g
196
+
125
197
v = 'string'
126
198
g = rebase_path_traits (spec .trait ('g' ), v , '/some' )
127
199
assert g == v
128
200
201
+ # Idempotence
202
+ assert rebase_path_traits (spec .trait ('g' ), g , '/some' ) == g
203
+
129
204
# This is a problematic case, it is impossible to know whether this
130
205
# was meant to be a string or a file.
131
206
g = resolve_path_traits (spec .trait ('g' ), v , '/some' )
132
207
assert g == v
133
208
209
+ # Idempotence
210
+ assert resolve_path_traits (spec .trait ('g' ), g , '/some' ) == g
211
+
134
212
v = v
135
213
g = rebase_path_traits (spec .trait ('g' ), v , '/some/path' )
136
214
assert g == v # You dont want this one to be a Path
137
215
216
+ # Idempotence
217
+ assert rebase_path_traits (spec .trait ('g' ), g , '/some/path' ) == g
218
+
138
219
# This is a problematic case, it is impossible to know whether this
139
220
# was meant to be a string or a file.
140
221
g = resolve_path_traits (spec .trait ('g' ), g , '/some/path' )
141
222
assert g == v # You dont want this one to be a Path
142
223
224
+ # Idempotence
225
+ assert resolve_path_traits (spec .trait ('g' ), g , '/some/path' ) == g
226
+
143
227
h = rebase_path_traits (spec .trait ('h' ), v , '/some/path' )
144
228
assert h == v
145
229
230
+ # Idempotence
231
+ assert rebase_path_traits (spec .trait ('h' ), h , '/some/path' ) == h
232
+
146
233
h = resolve_path_traits (spec .trait ('h' ), h , '/some/path' )
147
234
assert h == v
148
235
236
+ # Idempotence
237
+ assert resolve_path_traits (spec .trait ('h' ), h , '/some/path' ) == h
238
+
149
239
v = '/some/path/either/file.txt'
150
240
i = rebase_path_traits (spec .trait ('i' ), v , '/some/path' )
151
241
assert i == Path ('either/file.txt' )
152
242
243
+ # Idempotence
244
+ assert rebase_path_traits (spec .trait ('i' ), i , '/some/path' ) == i
245
+
153
246
i = resolve_path_traits (spec .trait ('i' ), i , '/some/path' )
154
247
assert i == Path (v )
155
248
249
+ # Idempotence
250
+ assert resolve_path_traits (spec .trait ('i' ), i , '/some/path' ) == i
251
+
156
252
v = ('/some/path/either/tuple/file.txt' , 2 )
157
253
i = rebase_path_traits (spec .trait ('i' ), v , '/some/path' )
158
254
assert i == (Path ('either/tuple/file.txt' ), 2 )
159
255
256
+ # Idempotence
257
+ assert rebase_path_traits (spec .trait ('i' ), i , '/some/path' ) == i
258
+
160
259
i = resolve_path_traits (spec .trait ('i' ), i , '/some/path' )
161
260
assert i == (Path (v [0 ]), v [1 ])
162
261
262
+ # Idempotence
263
+ assert resolve_path_traits (spec .trait ('i' ), i , '/some/path' ) == i
264
+
163
265
v = '/some/path/either/file.txt'
164
266
j = rebase_path_traits (spec .trait ('j' ), v , '/some/path' )
165
267
assert j == Path ('either/file.txt' )
166
268
269
+ # Idempotence
270
+ assert rebase_path_traits (spec .trait ('j' ), j , '/some/path' ) == j
271
+
167
272
j = resolve_path_traits (spec .trait ('j' ), j , '/some/path' )
168
273
assert j == Path (v )
169
274
275
+ # Idempotence
276
+ assert resolve_path_traits (spec .trait ('j' ), j , '/some/path' ) == j
277
+
170
278
v = ('/some/path/either/tuple/file.txt' , 2 )
171
279
j = rebase_path_traits (spec .trait ('j' ), ('/some/path/either/tuple/file.txt' , 2 ), '/some/path' )
172
280
assert j == (Path ('either/tuple/file.txt' ), 2 )
173
281
282
+ # Idempotence
283
+ assert rebase_path_traits (spec .trait ('j' ), j , '/some/path' ) == j
284
+
174
285
j = resolve_path_traits (spec .trait ('j' ), j , '/some/path' )
175
286
assert j == (Path (v [0 ]), v [1 ])
176
287
288
+ # Idempotence
289
+ assert resolve_path_traits (spec .trait ('j' ), j , '/some/path' ) == j
290
+
177
291
v = {'a' : '/some/path/either/dict/file.txt' }
178
292
j = rebase_path_traits (spec .trait ('j' ), v , '/some/path' )
179
293
assert j == {'a' : Path ('either/dict/file.txt' )}
180
294
295
+ # Idempotence
296
+ assert rebase_path_traits (spec .trait ('j' ), j , '/some/path' ) == j
297
+
181
298
j = resolve_path_traits (spec .trait ('j' ), j , '/some/path' )
182
299
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