1[
2 {
3 "name": "move out of a removed directory",
4 "before": {
5 "trash/keep": 5,
6 "trash/x": 7,
7 "o": 1
8 },
9 "ops": [
10 [
11 "renameSync",
12 "trash/keep",
13 "keep"
14 ],
15 [
16 "rmSync",
17 "trash",
18 {
19 "recursive": true
20 }
21 ]
22 ],
23 "diff": [
24 "R\tF\t/t/trash/keep\t/t/keep",
25 "-\tF\t/t/trash/x",
26 "-\t/\t/t/trash",
27 "M\t/\t/t"
28 ]
29 },
30 {
31 "name": "move into a new directory",
32 "before": {
33 "a": 5,
34 "o": 1
35 },
36 "ops": [
37 [
38 "mkdirSync",
39 "n"
40 ],
41 [
42 "renameSync",
43 "a",
44 "n/a"
45 ]
46 ],
47 "diff": [
48 "+\t/\t/t/n",
49 "R\tF\t/t/a\t/t/n/a",
50 "M\t/\t/t"
51 ]
52 },
53 {
54 "name": "rename a directory and a file inside it",
55 "before": {
56 "d/x": 5,
57 "d/z": 3
58 },
59 "ops": [
60 [
61 "renameSync",
62 "d",
63 "e"
64 ],
65 [
66 "renameSync",
67 "e/x",
68 "e/y"
69 ]
70 ],
71 "diff": [
72 "R\t/\t/t/d\t/t/e",
73 "R\tF\t/t/d/x\t/t/e/y",
74 "M\t/\t/t",
75 "M\t/\t/t/e"
76 ]
77 },
78 {
79 "name": "swap directories",
80 "before": {
81 "A/1": 5,
82 "B/2": 3
83 },
84 "ops": [
85 [
86 "renameSync",
87 "A",
88 "T"
89 ],
90 [
91 "renameSync",
92 "B",
93 "A"
94 ],
95 [
96 "renameSync",
97 "T",
98 "B"
99 ]
100 ],
101 "diff": [
102 "R\t/\t/t/A\t/t/B",
103 "R\t/\t/t/B\t/t/A",
104 "M\t/\t/t"
105 ]
106 },
107 {
108 "name": "invert nesting",
109 "before": {
110 "a/b/f": 5,
111 "a/g": 3
112 },
113 "ops": [
114 [
115 "renameSync",
116 "a/b",
117 "b"
118 ],
119 [
120 "renameSync",
121 "a",
122 "b/a"
123 ]
124 ],
125 "diff": [
126 "R\t/\t/t/a/b\t/t/b",
127 "R\t/\t/t/a\t/t/b/a",
128 "M\t/\t/t",
129 "M\t/\t/t/b"
130 ]
131 },
132 {
133 "name": "reuse a renamed directory's name",
134 "before": {
135 "d/x": 5
136 },
137 "ops": [
138 [
139 "renameSync",
140 "d",
141 "e"
142 ],
143 [
144 "mkdirSync",
145 "d"
146 ],
147 [
148 "writeFileSync",
149 "d/f",
150 9
151 ],
152 [
153 "writeFileSync",
154 "e/g",
155 4
156 ]
157 ],
158 "diff": [
159 "R\t/\t/t/d\t/t/e",
160 "+\t/\t/t/d",
161 "+\tF\t/t/d/f",
162 "+\tF\t/t/e/g",
163 "M\t/\t/t",
164 "M\t/\t/t/e"
165 ]
166 },
167 {
168 "name": "replace a file with a directory",
169 "before": {
170 "x": 5
171 },
172 "ops": [
173 [
174 "rmSync",
175 "x"
176 ],
177 [
178 "mkdirSync",
179 "x"
180 ],
181 [
182 "writeFileSync",
183 "x/f",
184 9
185 ]
186 ],
187 "diff": [
188 "-\tF\t/t/x",
189 "+\t/\t/t/x",
190 "+\tF\t/t/x/f",
191 "M\t/\t/t"
192 ]
193 },
194 {
195 "name": "rename over an empty directory",
196 "before": {
197 "x/f": 5,
198 "e/": 0
199 },
200 "ops": [
201 [
202 "rmSync",
203 "e",
204 {
205 "recursive": true
206 }
207 ],
208 [
209 "renameSync",
210 "x",
211 "e"
212 ]
213 ],
214 "diff": [
215 "-\t/\t/t/e",
216 "R\t/\t/t/x\t/t/e",
217 "M\t/\t/t"
218 ]
219 },
220 {
221 "name": "rename a directory onto a removed file's name",
222 "before": {
223 "x/f": 5,
224 "e": 3
225 },
226 "ops": [
227 [
228 "rmSync",
229 "e"
230 ],
231 [
232 "renameSync",
233 "x",
234 "e"
235 ]
236 ],
237 "diff": [
238 "-\tF\t/t/e",
239 "R\t/\t/t/x\t/t/e",
240 "M\t/\t/t"
241 ]
242 },
243 {
244 "name": "move a directory, then modify inside it",
245 "before": {
246 "m/a/f": 5
247 },
248 "ops": [
249 [
250 "renameSync",
251 "m/a",
252 "b"
253 ],
254 [
255 "writeFileSync",
256 "b/f",
257 50
258 ]
259 ],
260 "diff": [
261 "R\t/\t/t/m/a\t/t/b",
262 "M\tF\t/t/b/f",
263 "M\t/\t/t",
264 "M\t/\t/t/m"
265 ]
266 },
267 {
268 "name": "chain renames",
269 "before": {
270 "a": 1,
271 "b": 2,
272 "c": 3
273 },
274 "ops": [
275 [
276 "rmSync",
277 "c"
278 ],
279 [
280 "renameSync",
281 "b",
282 "c"
283 ],
284 [
285 "renameSync",
286 "a",
287 "b"
288 ]
289 ],
290 "diff": [
291 "-\tF\t/t/c",
292 "R\tF\t/t/b\t/t/c",
293 "R\tF\t/t/a\t/t/b",
294 "M\t/\t/t"
295 ]
296 },
297 {
298 "name": "remove a deep subtree",
299 "before": {
300 "a/b/c/d": 5,
301 "a/z": 1
302 },
303 "ops": [
304 [
305 "rmSync",
306 "a/b",
307 {
308 "recursive": true
309 }
310 ]
311 ],
312 "diff": [
313 "-\tF\t/t/a/b/c/d",
314 "-\t/\t/t/a/b/c",
315 "-\t/\t/t/a/b",
316 "M\t/\t/t/a"
317 ]
318 },
319 {
320 "name": "add a hard link",
321 "before": {
322 "a": 5,
323 "d/": 0
324 },
325 "ops": [
326 [
327 "linkSync",
328 "a",
329 "d/b"
330 ]
331 ],
332 "diff": [
333 "M\tF\t/t/a\t(+1)",
334 "M\t/\t/t/d"
335 ]
336 },
337 {
338 "name": "remove a hard link",
339 "before": {
340 "a": 5,
341 "d/b": "a"
342 },
343 "ops": [
344 [
345 "rmSync",
346 "d/b"
347 ]
348 ],
349 "diff": [
350 "M\tF\t/t/a\t(-1)",
351 "M\t/\t/t/d"
352 ]
353 },
354 {
355 "name": "rename a file and link it",
356 "before": {
357 "a": 5
358 },
359 "ops": [
360 [
361 "renameSync",
362 "a",
363 "b"
364 ],
365 [
366 "linkSync",
367 "b",
368 "c"
369 ]
370 ],
371 "diff": [
372 "M\tF\t/t/b\t(+1)",
373 "M\t/\t/t"
374 ]
375 },
376 {
377 "name": "link a new file into a new directory",
378 "before": {
379 "o": 1
380 },
381 "ops": [
382 [
383 "writeFileSync",
384 "n",
385 7
386 ],
387 [
388 "mkdirSync",
389 "d"
390 ],
391 [
392 "linkSync",
393 "n",
394 "d/m"
395 ]
396 ],
397 "diff": [
398 "+\tF\t/t/n",
399 "+\t/\t/t/d",
400 "M\t/\t/t"
401 ]
402 }
403]