Skip to content

Commit 7e6dbdb

Browse files
committed
internal/gocompat: slight cleanup
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
1 parent 3c80631 commit 7e6dbdb

File tree

2 files changed

+23
-26
lines changed

2 files changed

+23
-26
lines changed

internal/gocompat/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
.PHONY: verify
22
verify: generate
3+
echo "module github.com/docker/cli" > ../../go.mod
34
GO111MODULE=on go test -v
5+
rm ../../go.mod
46

57
.PHONY: generate
68
generate: clean

internal/gocompat/modulegenerator.go

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
//go:build ignore
2+
// +build ignore
23

34
package main
45

56
import (
67
"bytes"
8+
"errors"
79
"fmt"
810
"log"
911
"os"
1012
"os/exec"
13+
"path/filepath"
1114
"strings"
1215
"text/template"
1316

@@ -18,7 +21,8 @@ func main() {
1821
if err := generateApp(); err != nil {
1922
log.Fatal(err)
2023
}
21-
if err := generateModule(); err != nil {
24+
rootDir := "../../"
25+
if err := generateModule(rootDir); err != nil {
2226
log.Fatal(err)
2327
}
2428
}
@@ -51,42 +55,33 @@ func generateApp() error {
5155
return os.WriteFile("main_test.go", buf.Bytes(), 0o644)
5256
}
5357

54-
func generateModule() error {
55-
content, err := os.ReadFile("../../go.mod")
56-
if err != nil {
57-
if !os.IsNotExist(err) {
58-
return err
59-
}
60-
content = []byte("module github.com/docker/cli\n")
61-
if err := os.WriteFile("../../go.mod", content, 0o644); err != nil {
62-
return err
63-
}
64-
// Let's be nice, and remove the go.mod if we created it.
65-
// FIXME(thaJeztah): we need to clean up the go.mod after running the test, but need to know if we created it (or if it was an existing go.mod)
66-
// defer os.Remove("../../go.mod")
67-
} else {
68-
log.Println("WARN: go.mod exists in the repository root!")
69-
log.Println("WARN: Using your go.mod instead of our generated version -- this may misbehave!")
70-
}
71-
mod, err := modfile.Parse("../../go.mod", content, nil)
72-
if err != nil {
73-
return err
58+
func generateModule(rootDir string) error {
59+
modFile := filepath.Join(rootDir, "go.mod")
60+
_, err := os.Stat(modFile)
61+
if err == nil {
62+
return errors.New("go.mod exists in the repository root")
7463
}
75-
if mod.Go != nil && mod.Go.Version != "" {
76-
return fmt.Errorf("main go.mod must not contain a go version")
64+
65+
// create an empty go.mod without go version.
66+
//
67+
// this go.mod must exist when running the test.
68+
err = os.WriteFile(modFile, []byte("module github.com/docker/cli\n"), 0o644)
69+
if err != nil {
70+
return fmt.Errorf("failed to write go.mod: %w", err)
7771
}
78-
content, err = os.ReadFile("../../vendor.mod")
72+
73+
content, err := os.ReadFile(filepath.Join(rootDir, "vendor.mod"))
7974
if err != nil {
8075
return err
8176
}
82-
mod, err = modfile.Parse("../../vendor.mod", content, nil)
77+
mod, err := modfile.Parse(filepath.Join(rootDir, "vendor.mod"), content, nil)
8378
if err != nil {
8479
return err
8580
}
8681
if err := mod.AddModuleStmt("example.com/gocompat"); err != nil {
8782
return err
8883
}
89-
if err := mod.AddReplace("github.com/docker/cli", "", "../../", ""); err != nil {
84+
if err := mod.AddReplace("github.com/docker/cli", "", rootDir, ""); err != nil {
9085
return err
9186
}
9287
if err := mod.AddGoStmt("1.24"); err != nil {

0 commit comments

Comments
 (0)