test: mock the OS keyring in the cli package TestMain · Entire

test: mock the OS keyring in the cli package TestMain

1ea54e2→main·

Soph·1mo ago·1 file·+9 added/-0 removed

The cli package's TestMain never routed go-keyring to its in-memory mock, unlike the auth subpackage. The default tokenstore backend is the real OS keychain, so any cli test that reaches a credential path without UseFileBackendForTesting — or runs in the window after such a test restores the global backend — would read the developer's real keychain and trigger a macOS unlock prompt during mise run test:ci.

Call keyring.MockInit() once in TestMain so no cli test can touch the real keychain, mirroring cmd/entire/cli/auth's TestMain.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Sessions

eb9e9029effeView transcript

Changes

1

6 unmodified lines

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

6 unmodified lines

"github.com/go-git/go-git/v6/x/plugin"
    "github.com/go-git/go-git/v6/x/plugin/config"
    "github.com/zalando/go-keyring"

func TestMain(m *testing.M) {
    // Route the OS keyring to an in-memory mock for the whole package. The
    // default tokenstore backend is the real OS keychain, so any test that
    // reaches a credential path without UseFileBackendForTesting — or in the
    // window after such a test restores the backend — would otherwise read the
    // developer's real keychain and trigger a macOS unlock prompt. Mirrors the
    // auth subpackage's TestMain.
    keyring.MockInit()

// Register a default ConfigSource so tests that call ConfigScoped
    // (directly or indirectly via Commit/CreateTag) don't fail with
    // "no config loader registered".