Skip to content

Commit 4cb50be

Browse files
chore: resolve lint findings across packages
1 parent 7b7b3a6 commit 4cb50be

18 files changed

Lines changed: 98 additions & 44 deletions

cmd/gog/main_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"context"
45
"errors"
56
"os"
67
"os/exec"
@@ -24,7 +25,7 @@ func TestMainExitOnError(t *testing.T) {
2425
return
2526
}
2627

27-
cmd := exec.Command(os.Args[0], "-test.run", "^TestMainExitOnError$")
28+
cmd := exec.CommandContext(context.Background(), os.Args[0], "-test.run", "^TestMainExitOnError$")
2829
cmd.Env = append(os.Environ(), "GOGCLI_TEST_CHILD=1")
2930
err := cmd.Run()
3031
if err == nil {

internal/cmd/calendar_working_location_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func TestBuildWorkingLocationProperties(t *testing.T) {
3131
}
3232

3333
cmd = &CalendarWorkingLocationCmd{Type: "custom"}
34-
if _, err := cmd.buildWorkingLocationProperties(); err == nil {
34+
if _, buildErr := cmd.buildWorkingLocationProperties(); buildErr == nil {
3535
t.Fatalf("expected error for missing custom label")
3636
}
3737

@@ -45,7 +45,7 @@ func TestBuildWorkingLocationProperties(t *testing.T) {
4545
}
4646

4747
cmd = &CalendarWorkingLocationCmd{Type: "invalid"}
48-
if _, err := cmd.buildWorkingLocationProperties(); err == nil {
48+
if _, buildErr := cmd.buildWorkingLocationProperties(); buildErr == nil {
4949
t.Fatalf("expected error for invalid type")
5050
}
5151
}

internal/cmd/gmail_send.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@ func (c *GmailSendCmd) Run(ctx context.Context, flags *RootFlags) error {
122122
var trackingID string
123123
htmlBody := c.BodyHTML
124124
if c.Track {
125-
trackingCfg, err := tracking.LoadConfig()
126-
if err != nil {
127-
return fmt.Errorf("load tracking config: %w", err)
125+
trackingCfg, cfgErr := tracking.LoadConfig()
126+
if cfgErr != nil {
127+
return fmt.Errorf("load tracking config: %w", cfgErr)
128128
}
129129
if !trackingCfg.IsConfigured() {
130130
return fmt.Errorf("tracking not configured; run 'gog gmail track setup' first")
@@ -135,15 +135,15 @@ func (c *GmailSendCmd) Run(ctx context.Context, flags *RootFlags) error {
135135

136136
// Use first resolved recipient for tracking
137137
firstRecipient := toRecipients[0]
138-
pixelURL, blob, err := tracking.GeneratePixelURL(trackingCfg, strings.TrimSpace(firstRecipient), c.Subject)
139-
if err != nil {
140-
return fmt.Errorf("generate tracking pixel: %w", err)
138+
pixelURL, blob, pixelErr := tracking.GeneratePixelURL(trackingCfg, strings.TrimSpace(firstRecipient), c.Subject)
139+
if pixelErr != nil {
140+
return fmt.Errorf("generate tracking pixel: %w", pixelErr)
141141
}
142142
trackingID = blob
143143

144144
// Inject pixel at end of HTML body
145145
pixelHTML := tracking.GeneratePixelHTML(pixelURL)
146-
htmlBody = htmlBody + pixelHTML
146+
htmlBody += pixelHTML
147147
}
148148

149149
raw, err := buildRFC822(mailOptions{

internal/cmd/gmail_track_opens.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,18 @@ func (c *GmailTrackOpensCmd) Run(ctx context.Context, flags *RootFlags) error {
3737
}
3838

3939
// Query via admin endpoint
40-
return c.queryAdmin(ctx, cfg, u, flags)
40+
return c.queryAdmin(ctx, cfg, u)
4141
}
4242

4343
func (c *GmailTrackOpensCmd) queryByTrackingID(ctx context.Context, cfg *tracking.Config, u *ui.UI) error {
4444
reqURL := fmt.Sprintf("%s/q/%s", cfg.WorkerURL, c.TrackingID)
4545

46-
resp, err := http.Get(reqURL)
46+
req, err := http.NewRequestWithContext(ctx, http.MethodGet, reqURL, nil)
47+
if err != nil {
48+
return fmt.Errorf("build request: %w", err)
49+
}
50+
51+
resp, err := http.DefaultClient.Do(req)
4752
if err != nil {
4853
return fmt.Errorf("query tracker: %w", err)
4954
}
@@ -88,7 +93,7 @@ func (c *GmailTrackOpensCmd) queryByTrackingID(ctx context.Context, cfg *trackin
8893
return nil
8994
}
9095

91-
func (c *GmailTrackOpensCmd) queryAdmin(ctx context.Context, cfg *tracking.Config, u *ui.UI, flags *RootFlags) error {
96+
func (c *GmailTrackOpensCmd) queryAdmin(ctx context.Context, cfg *tracking.Config, u *ui.UI) error {
9297
reqURL, _ := url.Parse(cfg.WorkerURL + "/opens")
9398
q := reqURL.Query()
9499
if c.To != "" {

internal/cmd/root.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ func helpDescription() string {
174174
}
175175

176176
backendInfo, err := secrets.ResolveKeyringBackendInfo()
177-
backendLine := "unknown"
177+
var backendLine string
178178
if err != nil {
179179
backendLine = fmt.Sprintf("error: %v", err)
180180
} else {

internal/config/config.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type File struct {
1616
func ConfigPath() (string, error) {
1717
dir, err := Dir()
1818
if err != nil {
19-
return "", err
19+
return "", fmt.Errorf("config dir: %w", err)
2020
}
2121

2222
return filepath.Join(dir, "config.json"), nil
@@ -32,7 +32,8 @@ func ConfigExists() (bool, error) {
3232
if os.IsNotExist(statErr) {
3333
return false, nil
3434
}
35-
return false, statErr
35+
36+
return false, fmt.Errorf("stat config: %w", statErr)
3637
}
3738

3839
return true, nil
@@ -49,6 +50,7 @@ func ReadConfig() (File, error) {
4950
if os.IsNotExist(err) {
5051
return File{}, nil
5152
}
53+
5254
return File{}, fmt.Errorf("read config: %w", err)
5355
}
5456

@@ -58,5 +60,6 @@ func ReadConfig() (File, error) {
5860
}
5961

6062
cfg.KeyringBackend = strings.ToLower(strings.TrimSpace(cfg.KeyringBackend))
63+
6164
return cfg, nil
6265
}

internal/config/config_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ func TestConfigPath(t *testing.T) {
1616
if err != nil {
1717
t.Fatalf("ConfigPath: %v", err)
1818
}
19+
1920
if filepath.Base(path) != "config.json" {
2021
t.Fatalf("unexpected config file: %q", filepath.Base(path))
2122
}
23+
2224
if filepath.Base(filepath.Dir(path)) != AppName {
2325
t.Fatalf("unexpected config dir: %q", filepath.Dir(path))
2426
}
@@ -33,6 +35,7 @@ func TestReadConfig_Missing(t *testing.T) {
3335
if err != nil {
3436
t.Fatalf("ReadConfig: %v", err)
3537
}
38+
3639
if cfg.KeyringBackend != "" {
3740
t.Fatalf("expected empty config, got %q", cfg.KeyringBackend)
3841
}
@@ -47,21 +50,24 @@ func TestReadConfig_JSON5(t *testing.T) {
4750
if err != nil {
4851
t.Fatalf("ConfigPath: %v", err)
4952
}
50-
if err := os.MkdirAll(filepath.Dir(path), 0o700); err != nil {
51-
t.Fatalf("mkdir: %v", err)
53+
54+
if mkErr := os.MkdirAll(filepath.Dir(path), 0o700); mkErr != nil {
55+
t.Fatalf("mkdir: %v", mkErr)
5256
}
5357
data := `{
5458
// allow comments + trailing commas
5559
keyring_backend: "file",
5660
}`
57-
if err := os.WriteFile(path, []byte(data), 0o600); err != nil {
58-
t.Fatalf("write config: %v", err)
61+
62+
if writeErr := os.WriteFile(path, []byte(data), 0o600); writeErr != nil {
63+
t.Fatalf("write config: %v", writeErr)
5964
}
6065

6166
cfg, err := ReadConfig()
6267
if err != nil {
6368
t.Fatalf("ReadConfig: %v", err)
6469
}
70+
6571
if got := strings.TrimSpace(cfg.KeyringBackend); got != "file" {
6672
t.Fatalf("expected keyring_backend=file, got %q", got)
6773
}

internal/googleauth/accounts_server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func StartManageServer(ctx context.Context, opts ManageServerOptions) error {
6161
return fmt.Errorf("failed to generate CSRF token: %w", err)
6262
}
6363

64-
ln, err := net.Listen("tcp", "127.0.0.1:0")
64+
ln, err := (&net.ListenConfig{}).Listen(ctx, "tcp", "127.0.0.1:0")
6565
if err != nil {
6666
return fmt.Errorf("failed to start listener: %w", err)
6767
}

internal/googleauth/accounts_server_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ func TestManageServer_HandleOAuthCallback_ErrorAndValidation(t *testing.T) {
187187
oauthState: "state1",
188188
}
189189
// Need a listener for redirectURI generation even though we don't reach exchange.
190-
ln, err := net.Listen("tcp", "127.0.0.1:0")
190+
ln, err := (&net.ListenConfig{}).Listen(context.Background(), "tcp", "127.0.0.1:0")
191191
if err != nil {
192192
t.Fatalf("listen: %v", err)
193193
}
@@ -408,7 +408,7 @@ func TestManageServer_HandleAuthStart(t *testing.T) {
408408
randomStateFn = func() (string, error) { return "state123", nil }
409409
oauthEndpoint = oauth2.Endpoint{AuthURL: "http://example.com/auth", TokenURL: "http://example.com/token"}
410410

411-
ln, err := net.Listen("tcp", "127.0.0.1:0")
411+
ln, err := (&net.ListenConfig{}).Listen(context.Background(), "tcp", "127.0.0.1:0")
412412
if err != nil {
413413
t.Fatalf("listen: %v", err)
414414
}
@@ -506,7 +506,7 @@ func TestManageServer_HandleOAuthCallback_Success(t *testing.T) {
506506

507507
oauthEndpoint = oauth2.Endpoint{AuthURL: "http://example.com/auth", TokenURL: srv.URL}
508508

509-
ln, err := net.Listen("tcp", "127.0.0.1:0")
509+
ln, err := (&net.ListenConfig{}).Listen(context.Background(), "tcp", "127.0.0.1:0")
510510
if err != nil {
511511
t.Fatalf("listen: %v", err)
512512
}

internal/googleauth/oauth_flow.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ func Authorize(ctx context.Context, opts AuthorizeOptions) (string, error) {
131131
return tok.RefreshToken, nil
132132
}
133133

134-
ln, err := net.Listen("tcp", "127.0.0.1:0")
134+
ln, err := (&net.ListenConfig{}).Listen(ctx, "tcp", "127.0.0.1:0")
135135
if err != nil {
136136
return "", fmt.Errorf("listen for callback: %w", err)
137137
}

0 commit comments

Comments
 (0)