| // Copyright 2024 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package goreviews |
| |
| import ( |
| "context" |
| "slices" |
| "testing" |
| |
| "golang.org/x/oscar/internal/gerrit" |
| "golang.org/x/oscar/internal/secret" |
| "golang.org/x/oscar/internal/storage" |
| "golang.org/x/oscar/internal/testutil" |
| ) |
| |
| func TestCollectChanges(t *testing.T) { |
| check := testutil.Checker(t) |
| |
| lg := testutil.Slogger(t) |
| db := storage.MemDB() |
| sdb := secret.Empty() |
| gc := gerrit.New("goreviews-test", lg, db, sdb, nil) |
| |
| tc := gc.Testing() |
| |
| check(tc.LoadTxtar("testdata/changes.txt")) |
| |
| ctx := context.Background() |
| cps, err := collectChanges(ctx, lg, gc, []string{"test"}) |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| type changePredNames struct { |
| changeID string |
| preds []string |
| } |
| |
| var got []changePredNames |
| for _, cp := range cps { |
| cpn := changePredNames{ |
| changeID: cp.Change.ID(), |
| } |
| for _, pred := range cp.Predicates { |
| cpn.preds = append(cpn.preds, pred.Name) |
| } |
| slices.Sort(cpn.preds) |
| got = append(got, cpn) |
| } |
| |
| want := []changePredNames{ |
| { |
| changeID: "2", |
| preds: []string{ |
| "hasPlusOne", |
| "hasPlusTwo", |
| }, |
| }, |
| { |
| changeID: "4", |
| preds: []string{ |
| "authorMaintainer", |
| "noMaintainerReviews", |
| }, |
| }, |
| { |
| changeID: "1", |
| preds: []string{ |
| "hasPlusTwo", |
| }, |
| }, |
| { |
| changeID: "5", |
| preds: []string{ |
| "authorReviewer", |
| "noMaintainerReviews", |
| }, |
| }, |
| { |
| changeID: "17", |
| preds: []string{ |
| "authorContributor", |
| "noMaintainerReviews", |
| }, |
| }, |
| { |
| changeID: "20", |
| preds: []string{ |
| "authorContributor", |
| "noMaintainerReviews", |
| }, |
| }, |
| { |
| changeID: "22", |
| preds: []string{ |
| "noMaintainerReviews", |
| "trybotsPassed", |
| }, |
| }, |
| { |
| changeID: "21", |
| preds: []string{ |
| "hasUnresolvedComments", |
| "noMaintainerReviews", |
| }, |
| }, |
| { |
| changeID: "23", |
| preds: []string{ |
| "noMaintainerReviews", |
| "trybotsFailed", |
| }, |
| }, |
| } |
| |
| eqChangePredNames := func(a, b changePredNames) bool { |
| return a.changeID == b.changeID && slices.Equal(a.preds, b.preds) |
| } |
| |
| if !slices.EqualFunc(got, want, eqChangePredNames) { |
| t.Errorf("collectChanges returned %v, want %v", got, want) |
| } |
| } |