Skip to content
This repository was archived by the owner on Mar 6, 2018. It is now read-only.

Commit 2952a71

Browse files
committed
/squash2
1 parent 791f6fc commit 2952a71

File tree

3 files changed

+160
-176
lines changed

3 files changed

+160
-176
lines changed

foo.txt

Lines changed: 0 additions & 27 deletions
This file was deleted.

squash.js

Lines changed: 160 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var squash = module.exports = function squash(patch) {
1919
// if current op overrides previous operations, remove them
2020
if (['add', 'replace', 'remove', 'move', 'copy'].indexOf(op.op) !== -1) {
2121
squashed.forEach(function (prev, idx) {
22+
if (prev.op === 'test') return
2223
if (prev.path === op.path) { // same path - FIXME children/parents ?
2324
if (wasModified(squashed, op.path)) {
2425
squashed[idx] = undefined
@@ -103,17 +104,17 @@ equal(
103104
{"path": "/foo", "op": "move", "from": "/bar"}
104105
]
105106
)
106-
// // add - move from // FIXME
107-
// equal(
108-
// [
109-
// {"path": "/foo", "op": "add", "value": "foo"},
110-
// {"path": "/bar", "op": "move", "from": "/foo"}
111-
// ],
112-
// [
113-
// {"path": "/foo", "op": "add", "value": "foo"},
114-
// {"path": "/bar", "op": "move", "from": "/foo"}
115-
// ],
116-
// )
107+
// // add - move from // FIXME this could resolve to [{"op": "add", "path": "/bar", "value": "foo"}]
108+
equal(
109+
[
110+
{"path": "/foo", "op": "add", "value": "foo"},
111+
{"path": "/bar", "op": "move", "from": "/foo"}
112+
],
113+
[
114+
{"path": "/foo", "op": "add", "value": "foo"},
115+
{"path": "/bar", "op": "move", "from": "/foo"}
116+
]
117+
)
117118
// add - copy to
118119
equal(
119120
[
@@ -135,6 +136,17 @@ equal(
135136
{"path": "/bar", "op": "copy", "from": "/foo"}
136137
]
137138
)
139+
// add - test
140+
equal(
141+
[
142+
{"path": "/foo", "op": "add", "value": "foo"},
143+
{"path": "/foo", "op": "test", "value": "foo"}
144+
],
145+
[
146+
{"path": "/foo", "op": "add", "value": "foo"},
147+
{"path": "/foo", "op": "test", "value": "foo"}
148+
]
149+
)
138150

139151
/*
140152
* remove
@@ -212,6 +224,17 @@ equal(
212224
// {"path": "/bar", "op": "copy", "from": "/foo"}
213225
// ]
214226
// )
227+
// remove - test // FIXME invalid patch
228+
equal(
229+
[
230+
{"path": "/foo", "op": "remove"},
231+
{"path": "/foo", "op": "test", "value": "foo"}
232+
],
233+
[
234+
{"path": "/foo", "op": "remove"},
235+
{"path": "/foo", "op": "test", "value": "foo"}
236+
]
237+
)
215238

216239

217240
/*
@@ -255,16 +278,6 @@ equal(
255278
{"path": "/foo", "op": "move", "from": "/bar"}
256279
]
257280
)
258-
// replace - move to
259-
equal(
260-
[
261-
{"path": "/foo", "op": "replace", "value": "foo"},
262-
{"path": "/foo", "op": "move", "from": "/bar"}
263-
],
264-
[
265-
{"path": "/foo", "op": "move", "from": "/bar"}
266-
]
267-
)
268281
// replace - move from
269282
equal(
270283
[
@@ -297,7 +310,17 @@ equal(
297310
{"path": "/bar", "op": "copy", "from": "/foo"}
298311
]
299312
)
300-
313+
// replace - test
314+
equal(
315+
[
316+
{"path": "/foo", "op": "replace", "value": "foo"},
317+
{"path": "/foo", "op": "test", "value": "foo"}
318+
],
319+
[
320+
{"path": "/foo", "op": "replace", "value": "foo"},
321+
{"path": "/foo", "op": "test", "value": "foo"}
322+
]
323+
)
301324

302325
/*
303326
* move // FIXME maybe add move from/to for each
@@ -340,16 +363,6 @@ equal(
340363
{"path": "/foo", "op": "move", "from": "/bar"}
341364
]
342365
)
343-
// move - move to
344-
equal(
345-
[
346-
{"path": "/foo", "op": "move", "from": "/bar"},
347-
{"path": "/foo", "op": "move", "from": "/bar"}
348-
],
349-
[
350-
{"path": "/foo", "op": "move", "from": "/bar"}
351-
]
352-
)
353366
// move - move from // FIXME this could resolve to [] but that's a pretty edge case
354367
equal(
355368
[
@@ -382,6 +395,17 @@ equal(
382395
{"path": "/bar", "op": "copy", "from": "/foo"}
383396
]
384397
)
398+
// move - test
399+
equal(
400+
[
401+
{"path": "/foo", "op": "move", "from": "/bar"},
402+
{"path": "/foo", "op": "test", "value": "foo"}
403+
],
404+
[
405+
{"path": "/foo", "op": "move", "from": "/bar"},
406+
{"path": "/foo", "op": "test", "value": "foo"}
407+
]
408+
)
385409

386410

387411
/*
@@ -457,3 +481,107 @@ equal(
457481
{"path": "/bar", "op": "copy", "from": "/foo"}
458482
]
459483
)
484+
// copy - test
485+
equal(
486+
[
487+
{"path": "/foo", "op": "copy", "from": "/bar"},
488+
{"path": "/foo", "op": "test", "value": "foo"}
489+
],
490+
[
491+
{"path": "/foo", "op": "copy", "from": "/bar"},
492+
{"path": "/foo", "op": "test", "value": "foo"}
493+
]
494+
)
495+
496+
497+
/*
498+
* test
499+
*/
500+
// test - add
501+
equal(
502+
[
503+
{"path": "/foo", "op": "test", "value": "foo"},
504+
{"path": "/foo", "op": "add", "value": "bar"}
505+
],
506+
[
507+
{"path": "/foo", "op": "test", "value": "foo"},
508+
{"path": "/foo", "op": "add", "value": "bar"}
509+
]
510+
)
511+
// test - remove
512+
equal(
513+
[
514+
{"path": "/foo", "op": "test", "value": "foo"},
515+
{"path": "/foo", "op": "remove"}
516+
],
517+
[
518+
{"path": "/foo", "op": "test", "value": "foo"},
519+
{"path": "/foo", "op": "remove"}
520+
]
521+
)
522+
// test - replace
523+
equal(
524+
[
525+
{"path": "/foo", "op": "test", "value": "foo"},
526+
{"path": "/foo", "op": "replace", "value": "bar"}
527+
],
528+
[
529+
{"path": "/foo", "op": "test", "value": "foo"},
530+
{"path": "/foo", "op": "replace", "value": "bar"}
531+
]
532+
)
533+
// test - move to
534+
equal(
535+
[
536+
{"path": "/foo", "op": "test", "value": "foo"},
537+
{"path": "/foo", "op": "move", "from": "/bar"}
538+
],
539+
[
540+
{"path": "/foo", "op": "test", "value": "foo"},
541+
{"path": "/foo", "op": "move", "from": "/bar"}
542+
]
543+
)
544+
// test - move from
545+
equal(
546+
[
547+
{"path": "/foo", "op": "test", "value": "foo"},
548+
{"path": "/bar", "op": "move", "from": "/foo"}
549+
],
550+
[
551+
{"path": "/foo", "op": "test", "value": "foo"},
552+
{"path": "/bar", "op": "move", "from": "/foo"}
553+
]
554+
)
555+
// test - copy to
556+
equal(
557+
[
558+
{"path": "/foo", "op": "test", "value": "foo"},
559+
{"path": "/foo", "op": "copy", "from": "/bar"}
560+
],
561+
[
562+
{"path": "/foo", "op": "test", "value": "foo"},
563+
{"path": "/foo", "op": "copy", "from": "/bar"}
564+
]
565+
)
566+
// test - copy from
567+
equal(
568+
[
569+
{"path": "/foo", "op": "test", "value": "foo"},
570+
{"path": "/bar", "op": "copy", "from": "/foo"}
571+
],
572+
[
573+
{"path": "/foo", "op": "test", "value": "foo"},
574+
{"path": "/bar", "op": "copy", "from": "/foo"}
575+
]
576+
)
577+
// test - test
578+
equal(
579+
[
580+
{"path": "/foo", "op": "test", "value": "foo"},
581+
{"path": "/foo", "op": "test", "value": "foo"}
582+
],
583+
[
584+
{"path": "/foo", "op": "test", "value": "foo"},
585+
{"path": "/foo", "op": "test", "value": "foo"}
586+
]
587+
)

test/squash_tests.json

Lines changed: 0 additions & 117 deletions
This file was deleted.

0 commit comments

Comments
 (0)