summaryrefslogtreecommitdiffstats
path: root/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/modgraphviz/main_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/modgraphviz/main_test.go')
-rw-r--r--dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/modgraphviz/main_test.go116
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)
+ }
+ })
+ }
+}