Skip to content

Commit 6c98b0f

Browse files
test(update): exercise selective pinning through the command
1 parent 80bc794 commit 6c98b0f

2 files changed

Lines changed: 13 additions & 7 deletions

File tree

‎cmd/update/deps_selected_test.go‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,27 @@ func TestSelectedDependencyUpdatesIndirectWithoutMovingOthers(t *testing.T) {
1818
files := map[string]string{
1919
"go.mod": "module example.test/app\ngo 1.23\nrequire (\nexample.test/direct v1.0.0\nexample.test/indirect v1.0.0 // indirect\n)\nreplace example.test/direct => ./direct\nreplace example.test/indirect => ./indirect\n",
2020
"app.go": "package app\nimport \"example.test/direct\"\nvar Value = direct.Value\n",
21-
"direct/go.mod": "module example.test/direct\ngo 1.23\nrequire example.test/indirect v1.0.0\n",
21+
"direct/go.mod": "module example.test/direct\ngo 1.23\nrequire example.test/indirect v1.0.0\nreplace example.test/indirect => ../indirect\n",
2222
"direct/direct.go": "package direct\nimport \"example.test/indirect\"\nvar Value = indirect.Value\n",
2323
"indirect/go.mod": "module example.test/indirect\ngo 1.23\n",
2424
"indirect/indirect.go": "package indirect\nconst Value = 42\n",
2525
}
2626
for name, data := range files {
2727
path := filepath.Join(root, name)
28-
require.NoError(t, os.MkdirAll(filepath.Dir(path), 0755))
29-
require.NoError(t, os.WriteFile(path, []byte(data), 0644))
28+
require.NoError(t, os.MkdirAll(filepath.Dir(path), 0o755))
29+
require.NoError(t, os.WriteFile(path, []byte(data), 0o644))
3030
}
3131
// The existing module resolver is real; local replacements keep the fixture offline.
3232
pins, err := dependencypins.Plan([]string{root, filepath.Join(root, "indirect")}, []string{"example.test/indirect@v1.0.1"})
3333
require.NoError(t, err)
3434
require.Empty(t, pins[filepath.Join(root, "indirect")], "do not inject a requirement into a module that never used it")
35+
oldDir, oldAudit, oldSelections := depsDir, depsAudit, depsSelections
36+
t.Cleanup(func() { depsDir, depsAudit, depsSelections = oldDir, oldAudit, oldSelections })
37+
depsDir, depsAudit = root, false
38+
depsSelections = []string{"example.test/indirect@v1.0.1"}
3539
ctx, done := common.NewContext()
3640
defer done()
37-
require.NoError(t, updateModule(ctx, root, pins[root]...))
41+
require.NoError(t, DepsCmd.RunE(DepsCmd, nil))
3842
data, err := os.ReadFile(filepath.Join(root, "go.mod"))
3943
require.NoError(t, err)
4044
parsed, err := modfile.Parse("go.mod", data, nil)
@@ -48,7 +52,8 @@ func TestSelectedDependencyUpdatesIndirectWithoutMovingOthers(t *testing.T) {
4852
require.NoError(t, runGo(ctx, root, "build", "./..."))
4953
require.NoError(t, runGo(ctx, root, "mod", "tidy", "-diff"))
5054
before := string(data)
51-
_, err = dependencypins.Plan([]string{root}, []string{"example.test/indirect@v1.0.2", "example.test/missing@v1.0.1"})
55+
depsSelections = []string{"example.test/indirect@v1.0.2", "example.test/missing@v1.0.1"}
56+
err = DepsCmd.RunE(DepsCmd, nil)
5257
require.Error(t, err)
5358
data, err = os.ReadFile(filepath.Join(root, "go.mod"))
5459
require.NoError(t, err)

‎pkg/dependencypins/pins.go‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ package dependencypins
33

44
import (
55
"fmt"
6-
"golang.org/x/mod/modfile"
7-
"golang.org/x/mod/module"
86
"os"
97
"path/filepath"
108
"strings"
9+
10+
"golang.org/x/mod/modfile"
11+
"golang.org/x/mod/module"
1112
)
1213

1314
// Plan validates selections across every module before returning each module's pins.

0 commit comments

Comments
 (0)