Skip to content

Commit d4477fa

Browse files
fix(lint): resolve govet, wrapcheck, and wsl issues
- Fix variable shadowing in test files (err -> mkdirErr/writeErr) - Wrap errors from external packages with fmt.Errorf - Add blank lines between statements per wsl requirements - Fix ineffectual assignment in root.go 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent c23286f commit d4477fa

5 files changed

Lines changed: 37 additions & 15 deletions

File tree

internal/cmd/root.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ func helpDescription() string {
173173
configLine = configPath
174174
}
175175

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

internal/config/config.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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: 11 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,25 @@ 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 mkdirErr := os.MkdirAll(filepath.Dir(path), 0o700); mkdirErr != nil {
55+
t.Fatalf("mkdir: %v", mkdirErr)
5256
}
57+
5358
data := `{
5459
// allow comments + trailing commas
5560
keyring_backend: "file",
5661
}`
57-
if err := os.WriteFile(path, []byte(data), 0o600); err != nil {
58-
t.Fatalf("write config: %v", err)
62+
63+
if writeErr := os.WriteFile(path, []byte(data), 0o600); writeErr != nil {
64+
t.Fatalf("write config: %v", writeErr)
5965
}
6066

6167
cfg, err := ReadConfig()
6268
if err != nil {
6369
t.Fatalf("ReadConfig: %v", err)
6470
}
71+
6572
if got := strings.TrimSpace(cfg.KeyringBackend); got != "file" {
6673
t.Fatalf("expected keyring_backend=file, got %q", got)
6774
}

internal/secrets/store.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ func ResolveKeyringBackendInfo() (KeyringBackendInfo, error) {
6767

6868
cfg, err := config.ReadConfig()
6969
if err != nil {
70-
return KeyringBackendInfo{}, err
70+
return KeyringBackendInfo{}, fmt.Errorf("read config: %w", err)
7171
}
72+
7273
if cfg.KeyringBackend != "" {
7374
return KeyringBackendInfo{Value: cfg.KeyringBackend, Source: keyringBackendSourceConfig}, nil
7475
}

internal/secrets/store_test.go

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ func TestResolveKeyringBackendInfo_Default(t *testing.T) {
1919
if err != nil {
2020
t.Fatalf("ResolveKeyringBackendInfo: %v", err)
2121
}
22+
2223
if info.Value != "auto" {
2324
t.Fatalf("expected auto, got %q", info.Value)
2425
}
26+
2527
if info.Source != keyringBackendSourceDefault {
2628
t.Fatalf("expected source default, got %q", info.Source)
2729
}
@@ -37,20 +39,24 @@ func TestResolveKeyringBackendInfo_Config(t *testing.T) {
3739
if err != nil {
3840
t.Fatalf("ConfigPath: %v", err)
3941
}
40-
if err := os.MkdirAll(filepath.Dir(path), 0o700); err != nil {
41-
t.Fatalf("mkdir: %v", err)
42+
43+
if mkdirErr := os.MkdirAll(filepath.Dir(path), 0o700); mkdirErr != nil {
44+
t.Fatalf("mkdir: %v", mkdirErr)
4245
}
43-
if err := os.WriteFile(path, []byte(`{ keyring_backend: "file" }`), 0o600); err != nil {
44-
t.Fatalf("write config: %v", err)
46+
47+
if writeErr := os.WriteFile(path, []byte(`{ keyring_backend: "file" }`), 0o600); writeErr != nil {
48+
t.Fatalf("write config: %v", writeErr)
4549
}
4650

4751
info, err := ResolveKeyringBackendInfo()
4852
if err != nil {
4953
t.Fatalf("ResolveKeyringBackendInfo: %v", err)
5054
}
55+
5156
if info.Value != "file" {
5257
t.Fatalf("expected file, got %q", info.Value)
5358
}
59+
5460
if info.Source != keyringBackendSourceConfig {
5561
t.Fatalf("expected source config, got %q", info.Source)
5662
}
@@ -66,20 +72,24 @@ func TestResolveKeyringBackendInfo_EnvOverridesConfig(t *testing.T) {
6672
if err != nil {
6773
t.Fatalf("ConfigPath: %v", err)
6874
}
69-
if err := os.MkdirAll(filepath.Dir(path), 0o700); err != nil {
70-
t.Fatalf("mkdir: %v", err)
75+
76+
if mkdirErr := os.MkdirAll(filepath.Dir(path), 0o700); mkdirErr != nil {
77+
t.Fatalf("mkdir: %v", mkdirErr)
7178
}
72-
if err := os.WriteFile(path, []byte(`{ keyring_backend: "file" }`), 0o600); err != nil {
73-
t.Fatalf("write config: %v", err)
79+
80+
if writeErr := os.WriteFile(path, []byte(`{ keyring_backend: "file" }`), 0o600); writeErr != nil {
81+
t.Fatalf("write config: %v", writeErr)
7482
}
7583

7684
info, err := ResolveKeyringBackendInfo()
7785
if err != nil {
7886
t.Fatalf("ResolveKeyringBackendInfo: %v", err)
7987
}
88+
8089
if info.Value != "keychain" {
8190
t.Fatalf("expected keychain, got %q", info.Value)
8291
}
92+
8393
if info.Source != keyringBackendSourceEnv {
8494
t.Fatalf("expected source env, got %q", info.Source)
8595
}
@@ -90,6 +100,7 @@ func TestAllowedBackends_Invalid(t *testing.T) {
90100
if err == nil {
91101
t.Fatalf("expected error")
92102
}
103+
93104
if !errors.Is(err, errInvalidKeyringBackend) {
94105
t.Fatalf("expected invalid backend error, got %v", err)
95106
}

0 commit comments

Comments
 (0)