From e749badfd974de42fe8d7cdbe2bfa4fa3e0771b2 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 15 Jun 2026 23:53:57 -0500 Subject: fix(api): signal missing-key as user-error with mode-aware advice A missing API key raised a raw `error`, so it backtraced under `debug-on-error`, and the stale advice pointed at customizing `pearl-api-key`. Now `pearl--headers` signals a `user-error` and branches the advice by mode: accounts mode points at `pearl-accounts` and `pearl-switch-account`, legacy mode at `pearl-api-key` and `pearl-load-api-key-from-env`. The credential-source resolver's three failure paths become `user-error` too, since a bad credential is a config problem, not a bug. --- tests/test-pearl-accounts.el | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'tests/test-pearl-accounts.el') diff --git a/tests/test-pearl-accounts.el b/tests/test-pearl-accounts.el index 7994905..4de9c2f 100644 --- a/tests/test-pearl-accounts.el +++ b/tests/test-pearl-accounts.el @@ -78,6 +78,13 @@ "An unrecognized source tag errors rather than silently yielding nil." (should-error (pearl--resolve-api-key-source '(:bogus "x") "work") :type 'error)) +(ert-deftest test-pearl-resolve-api-key-source-missing-is-user-error () + "A missing credential is a user-config problem, surfaced as a `user-error'." + (cl-letf (((symbol-function 'auth-source-search) (lambda (&rest _) nil))) + (should-error (pearl--resolve-api-key-source + '(:auth-source :host "api.linear.app" :user "work") "work") + :type 'user-error))) + ;;; pearl--resolve-account (ert-deftest test-pearl-resolve-account-returns-full-context () -- cgit v1.2.3