@@ -2,6 +2,7 @@ package common
22
33import (
44 "fmt"
5+ "iter"
56 "slices"
67 "sort"
78 "strings"
@@ -334,7 +335,7 @@ func TestChanges(t *testing.T) {
334335 }
335336 }
336337
337- actual , err := ch .AsRevisionChanges (revisions .TransactionIDKeyLessThanFunc )
338+ actual , err := collectChanges ( ch .AsRevisionChanges (revisions .TransactionIDKeyLessThanFunc ) )
338339 require .NoError (err )
339340
340341 require .Equal (
@@ -370,7 +371,7 @@ func TestChanges(t *testing.T) {
370371 }
371372 }
372373
373- actual , err := ch .AsRevisionChanges (revisions .TransactionIDKeyLessThanFunc )
374+ actual , err := collectChanges ( ch .AsRevisionChanges (revisions .TransactionIDKeyLessThanFunc ) )
374375 require .NoError (err )
375376
376377 require .Equal (
@@ -399,7 +400,7 @@ func TestAddMetadata(t *testing.T) {
399400 require .NoError (t , err )
400401 require .False (t , ch .IsEmpty ())
401402
402- results , err := ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 )
403+ results , err := collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 ) )
403404 require .NoError (t , err )
404405 require .Equal (t , 1 , len (results ))
405406 require .True (t , ch .IsEmpty ())
@@ -439,7 +440,7 @@ func TestAddRevisionMetadataComprehensive(t *testing.T) {
439440 err = ch .AddRevisionMetadata (ctx , rev1 , map [string ]any {"operation" : "create" , "user_id" : "123" })
440441 require .NoError (t , err )
441442
442- results , err := ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 )
443+ results , err := collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 ) )
443444 require .NoError (t , err )
444445 require .Equal (t , 1 , len (results ))
445446 require .Equal (t , 1 , len (results [0 ].Metadatas ))
@@ -462,7 +463,7 @@ func TestAddRevisionMetadataComprehensive(t *testing.T) {
462463 err = ch .AddRevisionMetadata (ctx , rev1 , metadata3 )
463464 require .NoError (t , err )
464465
465- results , err := ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 )
466+ results , err := collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 ) )
466467 require .NoError (t , err )
467468 require .Equal (t , 1 , len (results ))
468469 require .Equal (t , 3 , len (results [0 ].Metadatas ))
@@ -502,7 +503,7 @@ func TestAddRevisionMetadataComprehensive(t *testing.T) {
502503 })
503504 require .NoError (t , err )
504505
505- results , err := ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 )
506+ results , err := collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 ) )
506507 require .NoError (t , err )
507508 require .Equal (t , 1 , len (results ))
508509 require .Equal (t , 1 , len (results [0 ].Metadatas ))
@@ -523,7 +524,7 @@ func TestAddRevisionMetadataComprehensive(t *testing.T) {
523524 err = ch .AddRevisionMetadata (ctx , rev2 , metadata2 )
524525 require .NoError (t , err )
525526
526- results , err := ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev3 )
527+ results , err := collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev3 ) )
527528 require .NoError (t , err )
528529 require .Equal (t , 2 , len (results ))
529530
@@ -546,7 +547,7 @@ func TestAddRevisionMetadataComprehensive(t *testing.T) {
546547 err = ch .AddRevisionMetadata (ctx , rev1 , metadata2 )
547548 require .NoError (t , err )
548549
549- results , err := ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 )
550+ results , err := collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 ) )
550551 require .NoError (t , err )
551552 require .Equal (t , 1 , len (results ))
552553 require .Equal (t , 2 , len (results [0 ].Metadatas ))
@@ -575,7 +576,7 @@ func TestAddRevisionMetadataComprehensive(t *testing.T) {
575576 err = ch .AddRevisionMetadata (ctx , rev1 , metadata5 )
576577 require .NoError (t , err )
577578
578- results , err := ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 )
579+ results , err := collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 ) )
579580 require .NoError (t , err )
580581 require .Equal (t , 1 , len (results ))
581582 require .Equal (t , 4 , len (results [0 ].Metadatas ))
@@ -600,7 +601,7 @@ func TestAddRevisionMetadataComprehensive(t *testing.T) {
600601 err = ch .AddRevisionMetadata (ctx , rev1 , metadata1 )
601602 require .NoError (t , err )
602603
603- results , err := ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 )
604+ results , err := collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev2 ) )
604605 require .NoError (t , err )
605606 require .Equal (t , 1 , len (results ))
606607 require .Equal (t , 3 , len (results [0 ].Metadatas ))
@@ -638,7 +639,7 @@ func TestFilterAndRemoveRevisionChanges(t *testing.T) {
638639
639640 require .False (t , ch .IsEmpty ())
640641
641- results , err := ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev3 )
642+ results , err := collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , rev3 ) )
642643 require .NoError (t , err )
643644 require .Equal (t , 2 , len (results ))
644645 require .False (t , ch .IsEmpty ())
@@ -658,7 +659,7 @@ func TestFilterAndRemoveRevisionChanges(t *testing.T) {
658659 },
659660 }, results )
660661
661- remaining , err := ch .AsRevisionChanges (revisions .TransactionIDKeyLessThanFunc )
662+ remaining , err := collectChanges ( ch .AsRevisionChanges (revisions .TransactionIDKeyLessThanFunc ) )
662663 require .Equal (t , 1 , len (remaining ))
663664 require .NoError (t , err )
664665
@@ -671,12 +672,12 @@ func TestFilterAndRemoveRevisionChanges(t *testing.T) {
671672 },
672673 }, remaining )
673674
674- results , err = ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , revOneMillion )
675+ results , err = collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , revOneMillion ) )
675676 require .NoError (t , err )
676677 require .Equal (t , 1 , len (results ))
677678 require .True (t , ch .IsEmpty ())
678679
679- results , err = ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , revOneMillionOne )
680+ results , err = collectChanges ( ch .FilterAndRemoveRevisionChanges (revisions .TransactionIDKeyLessThanFunc , revOneMillionOne ) )
680681 require .NoError (t , err )
681682 require .Equal (t , 0 , len (results ))
682683 require .True (t , ch .IsEmpty ())
@@ -700,7 +701,7 @@ func TestHLCOrdering(t *testing.T) {
700701 err = ch .AddRelationshipChange (ctx , rev0 , tuple .MustParse ("document:foo#viewer@user:tom" ), tuple .UpdateOperationTouch )
701702 require .NoError (t , err )
702703
703- remaining , err := ch .AsRevisionChanges (revisions .HLCKeyLessThanFunc )
704+ remaining , err := collectChanges ( ch .AsRevisionChanges (revisions .HLCKeyLessThanFunc ) )
704705 require .NoError (t , err )
705706 require .Equal (t , 2 , len (remaining ))
706707
@@ -744,7 +745,7 @@ func TestHLCSameRevision(t *testing.T) {
744745 err = ch .AddRelationshipChange (ctx , rev0again , tuple .MustParse ("document:foo#viewer@user:sarah" ), tuple .UpdateOperationTouch )
745746 require .NoError (t , err )
746747
747- remaining , err := ch .AsRevisionChanges (revisions .HLCKeyLessThanFunc )
748+ remaining , err := collectChanges ( ch .AsRevisionChanges (revisions .HLCKeyLessThanFunc ) )
748749 require .NoError (t , err )
749750 require .Equal (t , 1 , len (remaining ))
750751
@@ -968,3 +969,14 @@ func canonicalize(in []datastore.RevisionChanges) []datastore.RevisionChanges {
968969
969970 return out
970971}
972+
973+ func collectChanges (changes iter.Seq2 [datastore.RevisionChanges , error ]) ([]datastore.RevisionChanges , error ) {
974+ out := make ([]datastore.RevisionChanges , 0 , 10 )
975+ for change , err := range changes {
976+ if err != nil {
977+ return nil , err
978+ }
979+ out = append (out , change )
980+ }
981+ return out , nil
982+ }
0 commit comments