]> Cypherpunks repositories - gostls13.git/commit
cmd/go: search breadth-first instead of depth-first for test dependency cycles
authorBryan C. Mills <bcmills@google.com>
Wed, 23 Jun 2021 19:28:37 +0000 (15:28 -0400)
committerBryan C. Mills <bcmills@google.com>
Thu, 24 Jun 2021 02:25:23 +0000 (02:25 +0000)
commit44a12e5f33bed2189735d8466b38fe455fe9b752
tree84a5cfb36d15331265d9d7727aed75f19e1a6092
parent73496e0df0ba4284f460d1955ddf6bb096957c9f
cmd/go: search breadth-first instead of depth-first for test dependency cycles

When we are looking for a dependency cycle involving a specific
package, we need to keep track of visited packages in order to avoid
repeatedly traversing a cycle that does not involve that package.

If we're keeping track of all visited packages anyway, we're already
spending O(N) memory on the traversal, so we may as well use
breadth-first search. That not only keeps the bookkeeping simple, but
also guarantees that we will find a shortest path (rather than a
completely arbitrary one).

Fixes #45863

Change-Id: I810c7337857e42dcb83630abbdea75021554be45
Reviewed-on: https://go-review.googlesource.com/c/go/+/330430
Trust: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/go/internal/load/test.go
src/cmd/go/testdata/script/mod_list_test_cycle.txt [new file with mode: 0644]