diff options
Diffstat (limited to '')
-rw-r--r-- | dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/modgraphviz/main_test.go | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/modgraphviz/main_test.go b/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/modgraphviz/main_test.go new file mode 100644 index 0000000..bec88cf --- /dev/null +++ b/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/modgraphviz/main_test.go @@ -0,0 +1,116 @@ +// Copyright 2019 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 main + +import ( + "bytes" + "fmt" + "reflect" + "testing" +) + +func TestRun(t *testing.T) { + out := &bytes.Buffer{} + in := bytes.NewBuffer([]byte(` +test.com/A@v1.0.0 test.com/B@v1.2.3 +test.com/B@v1.0.0 test.com/C@v4.5.6 +`)) + if err := modgraphviz(in, out); err != nil { + t.Fatal(err) + } + + gotGraph := string(out.Bytes()) + wantGraph := `digraph gomodgraph { + node [ shape=rectangle fontsize=12 ] + "test.com/A@v1.0.0" -> "test.com/B@v1.2.3" + "test.com/B@v1.0.0" -> "test.com/C@v4.5.6" + "test.com/A@v1.0.0" [style = filled, fillcolor = green] + "test.com/B@v1.2.3" [style = filled, fillcolor = green] + "test.com/C@v4.5.6" [style = filled, fillcolor = green] + "test.com/B@v1.0.0" [style = filled, fillcolor = gray] +} +` + if gotGraph != wantGraph { + t.Fatalf("\ngot: %s\nwant: %s", gotGraph, wantGraph) + } +} + +func TestMVSPicking(t *testing.T) { + for _, tc := range []struct { + name string + in []string + wantPicked []string + wantUnpicked []string + }{ + { + name: "single node", + in: []string{"foo@v0.0.1"}, + wantPicked: []string{"foo@v0.0.1"}, + wantUnpicked: nil, + }, + { + name: "duplicate same node", + in: []string{"foo@v0.0.1", "foo@v0.0.1"}, + wantPicked: []string{"foo@v0.0.1"}, + wantUnpicked: nil, + }, + { + name: "multiple semver - same major", + in: []string{"foo@v1.0.0", "foo@v1.3.7", "foo@v1.2.0", "foo@v1.0.1"}, + wantPicked: []string{"foo@v1.3.7"}, + wantUnpicked: []string{"foo@v1.0.0", "foo@v1.2.0", "foo@v1.0.1"}, + }, + { + name: "multiple semver - multiple major", + in: []string{"foo@v1.0.0", "foo@v1.3.7", "foo/v2@v2.2.0", "foo/v2@v2.0.1", "foo@v1.1.1"}, + wantPicked: []string{"foo/v2@v2.2.0", "foo@v1.3.7"}, + wantUnpicked: []string{"foo@v1.0.0", "foo/v2@v2.0.1", "foo@v1.1.1"}, + }, + { + name: "semver and pseudo version", + in: []string{"foo@v1.0.0", "foo@v1.3.7", "foo/v2@v2.2.0", "foo/v2@v2.0.1", "foo@v1.1.1", "foo@v0.0.0-20190311183353-d8887717615a"}, + wantPicked: []string{"foo/v2@v2.2.0", "foo@v1.3.7"}, + wantUnpicked: []string{"foo@v1.0.0", "foo/v2@v2.0.1", "foo@v1.1.1", "foo@v0.0.0-20190311183353-d8887717615a"}, + }, + { + name: "multiple pseudo version", + in: []string{ + "foo@v0.0.0-20190311183353-d8887717615a", + "foo@v0.0.0-20190227222117-0694c2d4d067", + "foo@v0.0.0-20190312151545-0bb0c0a6e846", + }, + wantPicked: []string{"foo@v0.0.0-20190312151545-0bb0c0a6e846"}, + wantUnpicked: []string{ + "foo@v0.0.0-20190227222117-0694c2d4d067", + "foo@v0.0.0-20190311183353-d8887717615a", + }, + }, + { + name: "semver and suffix", + in: []string{"foo@v1.0.0", "foo@v1.3.8-rc1", "foo@v1.3.7"}, + wantPicked: []string{"foo@v1.3.8-rc1"}, + wantUnpicked: []string{"foo@v1.0.0", "foo@v1.3.7"}, + }, + } { + t.Run(tc.name, func(t *testing.T) { + buf := bytes.Buffer{} + for _, node := range tc.in { + fmt.Fprintf(&buf, "A %s\n", node) + } + + g, err := convert(&buf) + if err != nil { + t.Fatal(err) + } + + if !reflect.DeepEqual(g.mvsPicked, tc.wantPicked) { + t.Fatalf("picked: got %v, want %v", g.mvsPicked, tc.wantPicked) + } + if !reflect.DeepEqual(g.mvsUnpicked, tc.wantUnpicked) { + t.Fatalf("unpicked: got %v, want %v", g.mvsUnpicked, tc.wantUnpicked) + } + }) + } +} |