From 327682cb698a4da770e0667ac549fdee0af522a8 Mon Sep 17 00:00:00 2001 From: tariq1890 Date: Mon, 30 Jul 2018 00:12:37 -0700 Subject: [PATCH] Fixing an edge case in lockdiff where all the projects may be removed from the lock file. --- gps/verify/lockdiff.go | 7 +++++++ gps/verify/lockdiff_test.go | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/gps/verify/lockdiff.go b/gps/verify/lockdiff.go index 525a46db0e..6618e336c7 100644 --- a/gps/verify/lockdiff.go +++ b/gps/verify/lockdiff.go @@ -95,6 +95,13 @@ func DiffLocks(l1, l2 gps.Lock) LockDelta { Name: pr1, } + // Edge case: If there are no lockedProjects on the RHS, they have most probably been removed from the lock file. + if len(p2) == 0 { + lpd.ProjectRemoved = true + diff.ProjectDeltas[pr1] = lpd + continue + } + for i2 := i2next; i2 < len(p2); i2++ { lp2 := p2[i2] pr2 := lp2.Ident().ProjectRoot diff --git a/gps/verify/lockdiff_test.go b/gps/verify/lockdiff_test.go index 52955a392d..a368f8c76c 100644 --- a/gps/verify/lockdiff_test.go +++ b/gps/verify/lockdiff_test.go @@ -118,6 +118,10 @@ func TestLockDelta(t *testing.T) { lt: dup.addII("other.org").rmII("baz.com/qux").addDumbProject("zebrafun.org").rmProject("foo.com/bar"), delta: InputImportsChanged | ProjectRemoved | ProjectAdded, }, + "remove all projects and imports": { + lt: dup.rmII("baz.com/qux").rmII("foo.com/bar").rmProject("baz.com/qux").rmProject("foo.com/bar").rmProject("transitive.com/dependency"), + delta: InputImportsChanged | ProjectRemoved, + }, } for name, fix := range tt {