GNU bug report logs - #76323
30.0.93; auth-source-pass: Annoying error when ~/.password-store doesn't exist

Previous Next

Package: emacs;

Reported by: Naofumi Yasufuku <naofumi <at> yasufuku.dev>

Date: Sun, 16 Feb 2025 05:31:02 UTC

Severity: minor

Found in version 30.0.93

To reply to this bug, email your comments to 76323 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Sun, 16 Feb 2025 05:31:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Naofumi Yasufuku <naofumi <at> yasufuku.dev>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 16 Feb 2025 05:31:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Naofumi Yasufuku <naofumi <at> yasufuku.dev>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.93; auth-source-pass: Annoying error when ~/.password-store
 doesn't exist
Date: Sun, 16 Feb 2025 14:30:27 +0900
[Message part 1 (text/plain, inline)]
Hello,

I'd like to avoid annoying "No such file or directory" error raised by
auth-source-pass-entries to share my init.el on machines which may have
no ~/.password-store setup.

- OK: Empty ~/.password-store/

  mkdir ~/.password-store
  ./src/emacs -Q

  (require 'auth-source-pass)
  (add-to-list 'auth-sources 'password-store)
  (auth-source-search :host "host.example.com" :user "user")
  => nil

- Error-1: No ~/.password-store/

  rmdir ~/.password-store
  ./src/emacs -Q

  (require 'auth-source-pass)
  (add-to-list 'auth-sources 'password-store)
  (auth-source-search :host "host.example.com" :user "user")
  => (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")

- Error-2: ~/.password-store is not a directory

  touch ~/.password-store
  ./src/emacs -Q

  (require 'auth-source-pass)
  (add-to-list 'auth-sources 'password-store)
  (auth-source-search :host "host.example.com" :user "user")
  => (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")

A small patch is attached.

Best regards,
  Naofumi
[0001-auth-source-pass-Don-t-raise-error-if-.password-stor.patch (text/x-patch, attachment)]
[Message part 3 (text/plain, inline)]


In GNU Emacs 30.0.93 (build 1, aarch64-apple-darwin24.3.0, NS
 appkit-2575.40 Version 15.3.1 (Build 24D70)) of 2025-02-16 built on
 mimas.local
Repository revision: e9c4f642b9dca399cbcab2ff59636d12b89cc8fc
Repository branch: emacs-30
Windowing system distributor 'Apple', version 10.3.2575
System Description:  macOS 15.3.1

Configured using:
 'configure 'CPPFLAGS=-DFD_SETSIZE=65536 -D_DARWIN_UNLIMITED_SELECT
 -I/opt/homebrew/include' 'CFLAGS=-g3 -O2' LDFLAGS=-L/opt/homebrew/lib
 TMPDIR=/Users/naofumi/tmp --prefix=/Users/naofumi/.local/emacs/emacs-30
 --with-ns --disable-ns-self-contained --without-dbus --with-mailutils
 --with-native-compilation --with-xwidgets'

Configured features:
ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY
KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP XIM XWIDGETS ZLIB

Important settings:
  value of $LC_MESSAGES: en_US.UTF-8
  value of $LC_TIME: C
  value of $LANG: ja_JP.UTF-8
  locale-coding-system: utf-8-hfs

Major mode: Magit

Minor modes in effect:
  delete-selection-mode: t
  display-time-mode: t
  recentf-mode: t
  global-whitespace-mode: t
  whitespace-mode: t
  winner-mode: t
  diff-hl-flydiff-mode: t
  diff-hl-margin-mode: t
  global-diff-hl-mode: t
  pyvenv-tracking-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  nerd-icons-completion-mode: t
  marginalia-mode: t
  vertico-multiform-mode: t
  vertico-mode: t
  savehist-mode: t
  corfu-history-mode: t
  corfu-indexed-mode: t
  corfu-terminal-mode: t
  windmove-mode: t
  global-dmacro-mode: t
  dmacro-mode: t
  which-key-mode: t
  doom-modeline-mode: t
  global-corfu-mode: t
  corfu-mode: t
  projectile-mode: t
  magit-wip-initial-backup-mode: t
  magit-wip-before-change-mode: t
  magit-wip-after-apply-mode: t
  magit-wip-after-save-mode: t
  magit-wip-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  global-auto-revert-mode: t
  repeat-mode: t
  server-mode: t
  key-chord-mode: t
  override-global-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  straight-live-modifications-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-history-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/Users/naofumi/.emacs.d/straight/build-30/transient/transient hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/transient
/Users/naofumi/.emacs.d/straight/build-30/org/ob-exp hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-exp
/Users/naofumi/.emacs.d/straight/build-30/org/ob-emacs-lisp hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-emacs-lisp
/Users/naofumi/.emacs.d/straight/build-30/org/oc hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/oc
/Users/naofumi/.emacs.d/straight/build-30/org/ob-css hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-css
/Users/naofumi/.emacs.d/straight/build-30/org/ob-lob hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-lob
/Users/naofumi/.emacs.d/straight/build-30/org/ol-irc hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-irc
/Users/naofumi/.emacs.d/straight/build-30/org/ob-forth hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-forth
/Users/naofumi/.emacs.d/straight/build-30/org/org-macs hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-macs
/Users/naofumi/.emacs.d/straight/build-30/org/ob hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob
/Users/naofumi/.emacs.d/straight/build-30/org/org-version hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-version
/Users/naofumi/.emacs.d/straight/build-30/org/ob-scheme hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-scheme
/Users/naofumi/.emacs.d/straight/build-30/org/ox hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox
/Users/naofumi/.emacs.d/straight/build-30/org/ob-C hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-C
/Users/naofumi/.emacs.d/straight/build-30/org/org-capture hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-capture
/Users/naofumi/.emacs.d/straight/build-30/org/ob-ref hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-ref
/Users/naofumi/.emacs.d/straight/build-30/org/ob-clojure hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-clojure
/Users/naofumi/.emacs.d/straight/build-30/org/org-mouse hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-mouse
/Users/naofumi/.emacs.d/straight/build-30/org/org-persist hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-persist
/Users/naofumi/.emacs.d/straight/build-30/org/org-ctags hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-ctags
/Users/naofumi/.emacs.d/straight/build-30/org/org-entities hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-entities
/Users/naofumi/.emacs.d/straight/build-30/org/org-archive hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-archive
/Users/naofumi/.emacs.d/straight/build-30/org/ob-screen hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-screen
/Users/naofumi/.emacs.d/straight/build-30/org/ol-bibtex hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-bibtex
/Users/naofumi/.emacs.d/straight/build-30/org/ob-haskell hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-haskell
/Users/naofumi/.emacs.d/straight/build-30/org/org-loaddefs hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-loaddefs
/Users/naofumi/.emacs.d/straight/build-30/org/org-table hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-table
/Users/naofumi/.emacs.d/straight/build-30/org/ol-eww hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-eww
/Users/naofumi/.emacs.d/straight/build-30/org/ol-man hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-man
/Users/naofumi/.emacs.d/straight/build-30/org/ox-org hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-org
/Users/naofumi/.emacs.d/straight/build-30/org/org-num hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-num
/Users/naofumi/.emacs.d/straight/build-30/org/org-plot hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-plot
/Users/naofumi/.emacs.d/straight/build-30/org/ol-rmail hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-rmail
/Users/naofumi/.emacs.d/straight/build-30/org/ob-awk hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-awk
/Users/naofumi/.emacs.d/straight/build-30/org/ob-groovy hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-groovy
/Users/naofumi/.emacs.d/straight/build-30/org/ob-octave hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-octave
/Users/naofumi/.emacs.d/straight/build-30/org/org-faces hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-faces
/Users/naofumi/.emacs.d/straight/build-30/org/oc-biblatex hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/oc-biblatex
/Users/naofumi/.emacs.d/straight/build-30/org/org-colview hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-colview
/Users/naofumi/.emacs.d/straight/build-30/org/ob-R hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-R
/Users/naofumi/.emacs.d/straight/build-30/org/org-refile hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-refile
/Users/naofumi/.emacs.d/straight/build-30/org/org-timer hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-timer
/Users/naofumi/.emacs.d/straight/build-30/org/org-mobile hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-mobile
/Users/naofumi/.emacs.d/straight/build-30/org/ob-fortran hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-fortran
/Users/naofumi/.emacs.d/straight/build-30/org/ob-shell hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-shell
/Users/naofumi/.emacs.d/straight/build-30/org/ob-perl hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-perl
/Users/naofumi/.emacs.d/straight/build-30/org/ob-sqlite hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-sqlite
/Users/naofumi/.emacs.d/straight/build-30/org/oc-basic hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/oc-basic
/Users/naofumi/.emacs.d/straight/build-30/org/ob-sed hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-sed
/Users/naofumi/.emacs.d/straight/build-30/org/org-list hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-list
/Users/naofumi/.emacs.d/straight/build-30/org/ob-ruby hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-ruby
/Users/naofumi/.emacs.d/straight/build-30/org/ob-eval hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-eval
/Users/naofumi/.emacs.d/straight/build-30/org/org-habit hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-habit
/Users/naofumi/.emacs.d/straight/build-30/org/org-clock hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-clock
/Users/naofumi/.emacs.d/straight/build-30/org/org-goto hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-goto
/Users/naofumi/.emacs.d/straight/build-30/org/ox-html hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-html
/Users/naofumi/.emacs.d/straight/build-30/org/org-src hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-src
/Users/naofumi/.emacs.d/straight/build-30/org/ob-lisp hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-lisp
/Users/naofumi/.emacs.d/straight/build-30/org/ol-eshell hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-eshell
/Users/naofumi/.emacs.d/straight/build-30/org/ob-ditaa hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-ditaa
/Users/naofumi/.emacs.d/straight/build-30/org/org-pcomplete hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-pcomplete
/Users/naofumi/.emacs.d/straight/build-30/org/org-lint hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-lint
/Users/naofumi/.emacs.d/straight/build-30/org/ox-latex hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-latex
/Users/naofumi/.emacs.d/straight/build-30/org/ob-sass hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-sass
/Users/naofumi/.emacs.d/straight/build-30/org/ob-tangle hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-tangle
/Users/naofumi/.emacs.d/straight/build-30/org/ob-calc hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-calc
/Users/naofumi/.emacs.d/straight/build-30/org/ob-java hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-java
/Users/naofumi/.emacs.d/straight/build-30/org/ox-icalendar hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-icalendar
/Users/naofumi/.emacs.d/straight/build-30/org/ol-mhe hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-mhe
/Users/naofumi/.emacs.d/straight/build-30/org/org-attach-git hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-attach-git
/Users/naofumi/.emacs.d/straight/build-30/org/ox-md hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-md
/Users/naofumi/.emacs.d/straight/build-30/org/ox-beamer hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-beamer
/Users/naofumi/.emacs.d/straight/build-30/org/org-element hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-element
/Users/naofumi/.emacs.d/straight/build-30/org/oc-natbib hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/oc-natbib
/Users/naofumi/.emacs.d/straight/build-30/org/org-protocol hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-protocol
/Users/naofumi/.emacs.d/straight/build-30/org/ob-gnuplot hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-gnuplot
/Users/naofumi/.emacs.d/straight/build-30/org/org-tempo hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-tempo
/Users/naofumi/.emacs.d/straight/build-30/org/ob-latex hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-latex
/Users/naofumi/.emacs.d/straight/build-30/org/ol-w3m hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-w3m
/Users/naofumi/.emacs.d/straight/build-30/org/org-id hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-id
/Users/naofumi/.emacs.d/straight/build-30/org/ox-man hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-man
/Users/naofumi/.emacs.d/straight/build-30/org/ol-doi hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-doi
/Users/naofumi/.emacs.d/straight/build-30/org/org-feed hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-feed
/Users/naofumi/.emacs.d/straight/build-30/org/org-fold-core hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-fold-core
/Users/naofumi/.emacs.d/straight/build-30/org/ob-julia hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-julia
/Users/naofumi/.emacs.d/straight/build-30/org/ob-lua hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-lua
/Users/naofumi/.emacs.d/straight/build-30/org/ob-table hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-table
/Users/naofumi/.emacs.d/straight/build-30/org/ob-ocaml hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-ocaml
/Users/naofumi/.emacs.d/straight/build-30/org/oc-csl hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/oc-csl
/Users/naofumi/.emacs.d/straight/build-30/org/ol-gnus hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-gnus
/Users/naofumi/.emacs.d/straight/build-30/org/org-indent hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-indent
/Users/naofumi/.emacs.d/straight/build-30/org/ob-lilypond hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-lilypond
/Users/naofumi/.emacs.d/straight/build-30/org/ob-matlab hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-matlab
/Users/naofumi/.emacs.d/straight/build-30/org/org-datetree hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-datetree
/Users/naofumi/.emacs.d/straight/build-30/org/ol-docview hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-docview
/Users/naofumi/.emacs.d/straight/build-30/org/oc-bibtex hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/oc-bibtex
/Users/naofumi/.emacs.d/straight/build-30/org/ob-python hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-python
/Users/naofumi/.emacs.d/straight/build-30/org/ob-makefile hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-makefile
/Users/naofumi/.emacs.d/straight/build-30/org/org-duration hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-duration
/Users/naofumi/.emacs.d/straight/build-30/org/org-agenda hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-agenda
/Users/naofumi/.emacs.d/straight/build-30/org/ob-dot hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-dot
/Users/naofumi/.emacs.d/straight/build-30/org/ob-js hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-js
/Users/naofumi/.emacs.d/straight/build-30/org/ox-publish hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-publish
/Users/naofumi/.emacs.d/straight/build-30/org/org-inlinetask hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-inlinetask
/Users/naofumi/.emacs.d/straight/build-30/org/ob-org hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-org
/Users/naofumi/.emacs.d/straight/build-30/org/org-keys hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-keys
/Users/naofumi/.emacs.d/straight/build-30/org/ob-core hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-core
/Users/naofumi/.emacs.d/straight/build-30/org/org-compat hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-compat
/Users/naofumi/.emacs.d/straight/build-30/org/ol hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol
/Users/naofumi/.emacs.d/straight/build-30/org/ox-odt hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-odt
/Users/naofumi/.emacs.d/straight/build-30/org/ol-info hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-info
/Users/naofumi/.emacs.d/straight/build-30/org/ob-plantuml hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-plantuml
/Users/naofumi/.emacs.d/straight/build-30/org/ob-eshell hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-eshell
/Users/naofumi/.emacs.d/straight/build-30/org/ox-ascii hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-ascii
/Users/naofumi/.emacs.d/straight/build-30/org/ox-koma-letter hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-koma-letter
/Users/naofumi/.emacs.d/straight/build-30/org/ob-maxima hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-maxima
/Users/naofumi/.emacs.d/straight/build-30/org/org hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org
/Users/naofumi/.emacs.d/straight/build-30/org/ol-bbdb hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ol-bbdb
/Users/naofumi/.emacs.d/straight/build-30/org/org-macro hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-macro
/Users/naofumi/.emacs.d/straight/build-30/org/org-fold hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-fold
/Users/naofumi/.emacs.d/straight/build-30/org/ob-sql hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-sql
/Users/naofumi/.emacs.d/straight/build-30/org/org-attach hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-attach
/Users/naofumi/.emacs.d/straight/build-30/org/org-cycle hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-cycle
/Users/naofumi/.emacs.d/straight/build-30/org/ob-processing hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-processing
/Users/naofumi/.emacs.d/straight/build-30/org/ox-texinfo hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ox-texinfo
/Users/naofumi/.emacs.d/straight/build-30/org/org-crypt hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-crypt
/Users/naofumi/.emacs.d/straight/build-30/org/org-footnote hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-footnote
/Users/naofumi/.emacs.d/straight/build-30/org/org-element-ast hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/org-element-ast
/Users/naofumi/.emacs.d/straight/build-30/org/ob-comint hides /Users/naofumi/.local/emacs/emacs-30/share/emacs/30.0.93/lisp/org/ob-comint

Features:
(shadow sort mail-extr emacsbug view reveal display-line-numbers
magit-patch goto-addr consult-imenu affe consult magit-bookmark bookmark
vc-git tramp-cmds magit-extras emacsql-sqlite-builtin sqlite
mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more sgml-mode
facemenu mc-cycle-cursors multiple-cursors-core rect help-fns cl-print
debug backtrace ispell cape wdired misearch multi-isearch skk-isearch
dired-aux gnus-dired vertico-directory vertico-repeat vertico-indexed
org-duration org-clock diary-lib diary-loaddefs org-superstar toc-org
org-indent org-num oc-basic pulse face-remap skk-cursor ccc skk-sticky
skk-dcomp skk-comp skk-look skk-server skk-version skk-study skk-hint
skk-cus skk-emacs skk-macs skk-vars skk delsel time recentf-ext recentf
tree-widget whitespace winner diff-hl-flydiff diff-hl-margin
diff-hl-dired diff-hl log-view vc-dir ewoc pyvenv eshell esh-cmd esh-ext
esh-opt esh-proc esh-io esh-arg esh-module esh-module-loaddefs esh-util
yasnippet nerd-icons-completion marginalia vertico-multiform
vertico-buffer vertico savehist corfu-history corfu-indexed
corfu-terminal win-switch windmove dmacro which-key doom-modeline
doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path
f nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon
nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon
nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon
nerd-icons-data-powerline nerd-icons-data-octicon
nerd-icons-data-pomicon nerd-icons-data-ipsicon
doom-tomorrow-night-theme doom-themes doom-themes-base
doom-themes-autoloads base16-tomorrow-night-theme base16-theme
base16-theme-autoloads doom-modeline-autoloads shrink-path-autoloads
nerd-icons-completion-autoloads nerd-icons-autoloads
all-the-icons-autoloads vlf-setup vlf-autoloads helpful-autoloads
elisp-refs-autoloads dmacro-autoloads multiple-cursors-autoloads
shell-pop term disp-table ehelp shell-pop-autoloads win-switch-autoloads
w3m-autoloads multi-vterm-autoloads vterm-autoloads multi-term-autoloads
ace-window ace-link avy ace-link-autoloads ace-jump-buffer-autoloads
affe-autoloads cape-autoloads kind-icon svg-lib kind-icon-autoloads
svg-lib-autoloads corfu-terminal-autoloads popon popon-autoloads
corfu-quick corfu-info corfu corfu-autoloads vertico-autoloads orderless
orderless-autoloads embark-consult-autoloads embark-autoloads
consult-yasnippet-autoloads consult-lsp-autoloads
consult-eglot-autoloads consult-dir-autoloads consult-ag-autoloads
consult-autoloads marginalia-autoloads migemo migemo-autoloads
visual-regexp-steroids-autoloads visual-regexp-autoloads
symbol-overlay-autoloads wgrep-ag-autoloads ag-autoloads rg rg-info-hack
rg-menu rg-ibuffer rg-result wgrep-rg wgrep rg-history rg-header
cus-edit cus-load rg-autoloads wgrep-autoloads smart-jump-python
smart-jump-lisp-mode smart-jump-elisp-mode smart-jump-csharp-mode
smart-jump-cc-mode smart-jump smart-jump-autoloads dumb-jump popup xref
hydra advice lv dumb-jump-autoloads popup-autoloads ellama spinner
llm-openai llm-provider-utils llm-models llm-request-plz
plz-event-source plz-media-type plz ellama-autoloads gptel gptel-org
gptel-openai gptel-autoloads llm llm-autoloads
plz-event-source-autoloads plz-media-type-autoloads plz-autoloads
dap-mode-autoloads lsp-docker-autoloads lsp-treemacs-autoloads
treemacs-autoloads cfrs-autoloads posframe-autoloads hydra-autoloads
pfuture-autoloads ace-window-autoloads avy-autoloads bui-autoloads
lsp-mode-autoloads lv-autoloads ht-autoloads cov-autoloads
elquery-autoloads imenu-list-autoloads yasnippet-autoloads
devdocs-autoloads mathjax-autoloads android-mode-autoloads
grip-mode-autoloads markdown-preview-mode-autoloads web-server-autoloads
markdown-toc-autoloads gradle-mode-autoloads ninja-mode-autoloads
meson-mode-autoloads cmake-mode-autoloads powershell-autoloads
csv-mode-autoloads toml-mode-autoloads yaml-mode-autoloads
groovy-mode-autoloads kotlin-mode-autoloads csharp-mode c-ts-common
cc-langs web-mode-autoloads php-mode-autoloads go-mode-autoloads
rustic-autoloads flycheck-autoloads xterm-color-autoloads
spinner-autoloads rust-mode-autoloads haskell-mode-autoloads
ein-autoloads polymode-autoloads deferred-autoloads request-autoloads
anaphora-autoloads websocket-autoloads pipenv-autoloads
load-env-vars-autoloads pyvenv-autoloads slime-autoloads
macrostep-autoloads org-projectile org-project-capture s
org-project-capture-backend org-category-capture org-capture projectile
grep compile ibuf-ext ibuffer ibuffer-loaddefs org-projectile-autoloads
org-project-capture-autoloads org-category-capture-autoloads
projectile-autoloads git-timemachine-autoloads git-modes-autoloads
diff-hl-autoloads orgit-forge orgit-forge-autoloads forge-repos
forge-tablist hl-line forge-topics forge-commands forge-semi
forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab glab
forge-github ghub-graphql treepy gsexp ghub let-alist forge-forgejo
forge-notify forge-revnote forge-pullreq forge-issue forge-topic yaml
eieio-custom bug-reference forge-post markdown-mode color forge-repo
forge forge-core forge-db closql emacsql-sqlite emacsql emacsql-compiler
eieio-base forge-autoloads yaml-autoloads markdown-mode-autoloads
ghub-autoloads treepy-autoloads orgit orgit-autoloads magit-submodule
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence
magit-notes magit-worktree magit-tag magit-merge magit-branch
magit-reset magit-files magit-refs magit-status magit magit-repos
magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode
diff diff-mode track-changes git-commit log-edit pcvs-util add-log
magit-core magit-autorevert autorevert magit-margin magit-transient
magit-process with-editor magit-mode benchmark magit-git magit-base
magit-section cursor-sensor crm llama magit-autoloads transient pp
transient-autoloads vc vc-dispatcher nhexl-mode-autoloads
notmuch-autoloads ob-plantuml plantuml-mode dash plantuml-mode-autoloads
ox-gfm ox-md ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util
rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex
ox-icalendar org-agenda ox-html table ox-ascii ox-publish ox
ox-gfm-autoloads org-tree-slide-autoloads toc-org-autoloads
org-roam-autoloads magit-section-autoloads org-download org-element
org-persist avl-tree generator org-attach org-id org-refile
org-element-ast inline url-http url-auth url-gw nsm async
org-download-autoloads async-autoloads org-superstar-autoloads ob-shell
ob-screen ob-python python project compat ob-C cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ol-eww eww
url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range message sendmail yank-media puny rfc822
mml mml-sec epa derived epg rfc6068 mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus nnheader gnus-util text-property-search
mail-utils range mm-util mail-prsvr wid-edit ol-docview doc-view
filenotify jka-compr image-mode exif dired dired-loaddefs ol-bibtex
bibtex ol-bbdb ol-w3m ol-doi org-link-doi org-tempo tempo org-contrib
org-contrib-autoloads org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-src sh-script smie treesit executable ob-comint
org-pcomplete org-list org-footnote org-faces org-entities noutline
outline ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold
org-fold-core org-keys oc org-loaddefs find-func org-version org-compat
org-macs japanese-holidays holidays holiday-loaddefs
japanese-holidays-autoloads finder-inf cal-iso cal-menu calendar
cal-loaddefs pass-autoloads f-autoloads dash-autoloads
password-store-otp-autoloads s-autoloads password-store-autoloads
with-editor-autoloads auth-source-pass epg-config sr-speedbar-autoloads
recentf-ext-autoloads cua-base dabbrev repeat tramp trampver
tramp-integration files-x tramp-message tramp-compat xdg shell pcomplete
comint ansi-osc ring parse-time iso8601 time-date format-spec ansi-color
tramp-loaddefs ffap thingatpt ddskk-autoloads cdb-autoloads
ccc-autoloads edmacro kmacro exec-path-from-shell
exec-path-from-shell-autoloads epkg-autoloads llama-autoloads
closql-autoloads emacsql-autoloads sqlite3-autoloads package-utils
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util mailcap url-handlers
url-parse auth-source eieio eieio-core password-cache json map url-vars
package-utils-autoloads restart-emacs desktop frameset server
restart-emacs-autoloads use-package-chords bind-chord
use-package-chords-autoloads bind-chord-autoloads key-chord comp
comp-cstr warnings icons comp-run comp-common rx key-chord-autoloads
diminish diminish-autoloads use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
use-package-core straight-x straight-autoloads cl-extra help-mode
straight info loaddefs-gen generate-lisp-file lisp-mnt radix-tree
easy-mmode cl-seq pcase subr-x byte-opt cl-macs gv bytecomp byte-compile
cl-loaddefs cl-lib japan-util rmc iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads xwidget-internal kqueue cocoa
ns lcms2 multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 1066983 1414690) (symbols 48 61265 9)
 (strings 32 268937 87377) (string-bytes 1 10805502)
 (vectors 16 132271) (vector-slots 8 2278992 447862)
 (floats 8 1542 9526) (intervals 56 24911 5422) (buffers 992 60))

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Sun, 16 Feb 2025 09:18:01 GMT) Full text and rfc822 format available.

Message #8 received at 76323 <at> debbugs.gnu.org (full text, mbox):

From: "Basil L. Contovounesios" <basil <at> contovou.net>
To: Naofumi Yasufuku <naofumi <at> yasufuku.dev>
Cc: 76323 <at> debbugs.gnu.org
Subject: Re: bug#76323: 30.0.93; auth-source-pass: Annoying error when
 ~/.password-store doesn't exist
Date: Sun, 16 Feb 2025 10:17:18 +0100
[Message part 1 (text/plain, inline)]
Naofumi Yasufuku [2025-02-16 14:30 +0900] wrote:

> @@ -236,9 +236,10 @@ auth-source-pass--do-debug
>  (defun auth-source-pass-entries ()
>    "Return a list of all password store entries."
>    (let ((store-dir (expand-file-name auth-source-pass-filename)))
> -    (mapcar
> -     (lambda (file) (file-name-sans-extension (file-relative-name file store-dir)))
> -     (directory-files-recursively store-dir "\\.gpg\\'"))))
> +    (when (file-directory-p store-dir)
> +      (mapcar
> +       (lambda (file) (file-name-sans-extension (file-relative-name file store-dir)))
> +       (directory-files-recursively store-dir "\\.gpg\\'")))))

Would it be any better to have the filesystem read and error check in a
single atomic step?  For example:

[file-missing.diff (text/x-diff, inline)]
diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
index b0b32ca263b..80e412e1697 100644
--- a/lisp/auth-source-pass.el
+++ b/lisp/auth-source-pass.el
@@ -243,7 +243,8 @@ auth-source-pass-entries
   (let ((store-dir (expand-file-name auth-source-pass-filename)))
     (mapcar
      (lambda (file) (file-name-sans-extension (file-relative-name file store-dir)))
-     (directory-files-recursively store-dir "\\.gpg\\'"))))
+     (ignore-error file-missing
+       (directory-files-recursively store-dir "\\.gpg\\'")))))
 
 (defun auth-source-pass--find-match (hosts user port)
   "Return password-store entry data matching HOSTS, USER and PORT.
[Message part 3 (text/plain, inline)]
Thanks,
-- 
Basil

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Sun, 16 Feb 2025 13:58:01 GMT) Full text and rfc822 format available.

Message #11 received at 76323 <at> debbugs.gnu.org (full text, mbox):

From: Naofumi Yasufuku <naofumi <at> yasufuku.dev>
To: "Basil L. Contovounesios" <basil <at> contovou.net>
Cc: 76323 <at> debbugs.gnu.org
Subject: Re: bug#76323: 30.0.93; auth-source-pass: Annoying error when
 ~/.password-store doesn't exist
Date: Sun, 16 Feb 2025 22:57:01 +0900
[Message part 1 (text/plain, inline)]
Hi, Basil,

"Basil L. Contovounesios" <basil <at> contovou.net> writes:

> Naofumi Yasufuku [2025-02-16 14:30 +0900] wrote:
>
>> @@ -236,9 +236,10 @@ auth-source-pass--do-debug
>>  (defun auth-source-pass-entries ()
>>    "Return a list of all password store entries."
>>    (let ((store-dir (expand-file-name auth-source-pass-filename)))
>> -    (mapcar
>> -     (lambda (file) (file-name-sans-extension (file-relative-name file store-dir)))
>> -     (directory-files-recursively store-dir "\\.gpg\\'"))))
>> +    (when (file-directory-p store-dir)
>> +      (mapcar
>> +       (lambda (file) (file-name-sans-extension (file-relative-name file store-dir)))
>> +       (directory-files-recursively store-dir "\\.gpg\\'")))))
>
> Would it be any better to have the filesystem read and error check in a
> single atomic step?  For example:
>
> diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
> index b0b32ca263b..80e412e1697 100644
> --- a/lisp/auth-source-pass.el
> +++ b/lisp/auth-source-pass.el
> @@ -243,7 +243,8 @@ auth-source-pass-entries
>    (let ((store-dir (expand-file-name auth-source-pass-filename)))
>      (mapcar
>       (lambda (file) (file-name-sans-extension (file-relative-name file store-dir)))
> -     (directory-files-recursively store-dir "\\.gpg\\'"))))
> +     (ignore-error file-missing
> +       (directory-files-recursively store-dir "\\.gpg\\'")))))
>  
>  (defun auth-source-pass--find-match (hosts user port)
>    "Return password-store entry data matching HOSTS, USER and PORT.
>

Certainly.  I noticed that auth-source-pass-entries is called many times
for each search pattern, so as you mentioned, additional filesystem read
should be avoided as much as possible.

- Error-1: No ~/.password-store/

  rmdir ~/.password-store
  ./src/emacs -Q

  (setq auth-source-debug t)       ; enable debugging
  (require 'auth-source-pass)
  (add-to-list 'auth-sources 'password-store)
  (auth-source-search :host "host.example.com" :user "user")

-----------------------------------------------
diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
index 33786a14a87..64774739f09 100644
--- a/lisp/auth-source-pass.el
+++ b/lisp/auth-source-pass.el
@@ -241,7 +241,8 @@ auth-source-pass-entries
   (let ((store-dir (expand-file-name auth-source-pass-filename)))
     (mapcar
      (lambda (file) (file-name-sans-extension (file-relative-name file store-dir)))
-     (directory-files-recursively store-dir "\\.gpg\\'"))))
+     (with-demoted-errors "auth-source-pass: %S"
+       (directory-files-recursively store-dir "\\.gpg\\'")))))
 
 (defun auth-source-pass--find-match (hosts user port)
   "Return password-store entry data matching HOSTS, USER and PORT.
-----------------------------------------------

*Messages*
-----------------------------------------------
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: searching for entries matching hostname="host.example.com", user="user", port="443"
auth-source-pass: corresponding suffixes to search for: ("user <at> host.example.com:443" "host.example.com:443/user" "user <at> host.example.com" "host.example.com/user" "host.example.com:443" "host.example.com" "user <at> example.com:443" "example.com:443/user" "user <at> example.com" "example.com/user" "example.com:443" "example.com" "user <at> com:443" "com:443/user" "user <at> com" "com/user" "com:443" "com")
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "user <at> host.example.com:443"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "host.example.com:443/user"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "user <at> host.example.com"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "host.example.com/user"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "host.example.com:443"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "host.example.com"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "user <at> example.com:443"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "example.com:443/user"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "user <at> example.com"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "example.com/user"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "example.com:443"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "example.com"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "user <at> com:443"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "com:443/user"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "user <at> com"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "com/user"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "com:443"
auth-source-pass: (file-missing "Opening directory" "No such file or directory" "/Users/naofumi/.password-store")
auth-source-pass: found no entries matching "com"
auth-source-search: found 0 results (max 1) matching (:host "host.example.com" :user "user")
-----------------------------------------------


I think it would be better to have just one additional dir check on
auth-source-pass-search instead of auth-source-pass-entries.
auth-source-pass backend just does nothing if password-store dir is not
available.  Could it be relatively reasonable cost?

-----------------------------------------------
diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
index 80ddb38fa88..33786a14a87 100644
--- a/lisp/auth-source-pass.el
+++ b/lisp/auth-source-pass.el
@@ -85,6 +85,9 @@ auth-source-pass-search
         ((null host)
          ;; Do not build a result, as none will match when HOST is nil
          nil)
+        ((not (file-directory-p (expand-file-name auth-source-pass-filename)))
+         ;; Do nothing if the password-store folder doesn't exist.
+         nil)
         (auth-source-pass-extra-query-keywords
          (auth-source-pass--build-result-many host port user require max))
         (t
-----------------------------------------------

*Messages*
-----------------------------------------------
auth-source-search: found 0 results (max 1) matching (:host "host.example.com" :user "user")
-----------------------------------------------

New patch file is also attached.

Best regards,
  Naofumi

[0001-auth-source-pass-Don-t-raise-errors-if-.password-sto.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Sun, 16 Feb 2025 16:48:02 GMT) Full text and rfc822 format available.

Message #14 received at 76323 <at> debbugs.gnu.org (full text, mbox):

From: "Basil L. Contovounesios" <basil <at> contovou.net>
To: Naofumi Yasufuku <naofumi <at> yasufuku.dev>
Cc: 76323 <at> debbugs.gnu.org, Damien Cassou <damien <at> cassou.me>,
 "F. Jason Park" <jp <at> neverwas.me>
Subject: Re: bug#76323: 30.0.93; auth-source-pass: Annoying error when
 ~/.password-store doesn't exist
Date: Sun, 16 Feb 2025 17:47:14 +0100
Naofumi Yasufuku [2025-02-16 22:57 +0900] wrote:

> I noticed that auth-source-pass-entries is called many times
> for each search pattern

Ouch!

> I think it would be better to have just one additional dir check on
> auth-source-pass-search instead of auth-source-pass-entries.
> auth-source-pass backend just does nothing if password-store dir is not
> available.  Could it be relatively reasonable cost?

Sounds even better to me.

[ I can imagine external users of auth-source-pass-entries also
  benefitting from the filesystem guard, but I think we can leave it up
  to them to decide if/when/how they need it. ]

CCing some of the recent auth-source-pass (and ERC) contributors in case
they have any comments on the patch below.

[ The original attachment and the rest of the discussion can be found
  here: https://bugs.gnu.org/76323#11 ]

If there are no objections, I think this can be applied soon.

Yasufuku-san, do you have a copyright assignment to the FSF?
I think this contribution is still well within the limits for being
exempt, but for future contributions perhaps you would be interested in
starting the process now, if you haven't already?

> From c42a3abeb04b7c28f8532497fe9c9f0e50521a27 Mon Sep 17 00:00:00 2001
> From: Naofumi Yasufuku <naofumi <at> yasufuku.dev>
> Date: Sun, 16 Feb 2025 21:12:17 +0900
> Subject: [PATCH] auth-source-pass: Don't raise errors if ~/.password-store
>  doesn't exist
>
> * lisp/auth-source-pass.el (auth-source-pass-search):
> If auth-source-pass-filename is not a directory, just do nothing to
> avoid repeated errors raised by directory-files-recursively in
> auth-source-pass-entries which is called for each search pattern.
> (Bug#76323)
> ---
>  lisp/auth-source-pass.el | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
> index 80ddb38fa88..33786a14a87 100644
> --- a/lisp/auth-source-pass.el
> +++ b/lisp/auth-source-pass.el
> @@ -85,6 +85,9 @@ auth-source-pass-search
>          ((null host)
>           ;; Do not build a result, as none will match when HOST is nil
>           nil)
> +        ((not (file-directory-p (expand-file-name auth-source-pass-filename)))
> +         ;; Do nothing if the password-store folder doesn't exist.
> +         nil)
>          (auth-source-pass-extra-query-keywords
>           (auth-source-pass--build-result-many host port user require max))
>          (t

Thanks,
-- 
Basil




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Sun, 16 Feb 2025 19:36:02 GMT) Full text and rfc822 format available.

Message #17 received at 76323 <at> debbugs.gnu.org (full text, mbox):

From: "J.P." <jp <at> neverwas.me>
To: "Basil L. Contovounesios" <basil <at> contovou.net>
Cc: 76323 <at> debbugs.gnu.org, Damien Cassou <damien <at> cassou.me>,
 Naofumi Yasufuku <naofumi <at> yasufuku.dev>
Subject: Re: bug#76323: 30.0.93; auth-source-pass: Annoying error when
 ~/.password-store doesn't exist
Date: Sun, 16 Feb 2025 11:35:02 -0800
"Basil L. Contovounesios" <basil <at> contovou.net> writes:

> Naofumi Yasufuku [2025-02-16 22:57 +0900] wrote:
>
>> I noticed that auth-source-pass-entries is called many times
>> for each search pattern
>
> Ouch!
>
>> I think it would be better to have just one additional dir check on
>> auth-source-pass-search instead of auth-source-pass-entries.
>> auth-source-pass backend just does nothing if password-store dir is not
>> available.  Could it be relatively reasonable cost?
>
> Sounds even better to me.
>
> [ I can imagine external users of auth-source-pass-entries also
>   benefitting from the filesystem guard, but I think we can leave it up
>   to them to decide if/when/how they need it. ]
>
> CCing some of the recent auth-source-pass (and ERC) contributors in case
> they have any comments on the patch below.

Hi Basil and everyone,

I appreciate the shout but unfortunately can't claim to have ever used
the password store. My experience is limited to attempting to make
portions of auth-source-pass behave more like other back ends for the
purpose of improving its integration with ERC, the result being the
option `auth-source-pass-extra-query-keywords'. However, the patch seems
to make sense from a layman's perspective, for whatever that's worth.

Cheers,
J.P.

>
> [ The original attachment and the rest of the discussion can be found
>   here: https://bugs.gnu.org/76323#11 ]
>
> If there are no objections, I think this can be applied soon.
>
> Yasufuku-san, do you have a copyright assignment to the FSF?
> I think this contribution is still well within the limits for being
> exempt, but for future contributions perhaps you would be interested in
> starting the process now, if you haven't already?
>
>> From c42a3abeb04b7c28f8532497fe9c9f0e50521a27 Mon Sep 17 00:00:00 2001
>> From: Naofumi Yasufuku <naofumi <at> yasufuku.dev>
>> Date: Sun, 16 Feb 2025 21:12:17 +0900
>> Subject: [PATCH] auth-source-pass: Don't raise errors if ~/.password-store
>>  doesn't exist
>>
>> * lisp/auth-source-pass.el (auth-source-pass-search):
>> If auth-source-pass-filename is not a directory, just do nothing to
>> avoid repeated errors raised by directory-files-recursively in
>> auth-source-pass-entries which is called for each search pattern.
>> (Bug#76323)
>> ---
>>  lisp/auth-source-pass.el | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
>> index 80ddb38fa88..33786a14a87 100644
>> --- a/lisp/auth-source-pass.el
>> +++ b/lisp/auth-source-pass.el
>> @@ -85,6 +85,9 @@ auth-source-pass-search
>>          ((null host)
>>           ;; Do not build a result, as none will match when HOST is nil
>>           nil)
>> +        ((not (file-directory-p (expand-file-name auth-source-pass-filename)))
>> +         ;; Do nothing if the password-store folder doesn't exist.
>> +         nil)
>>          (auth-source-pass-extra-query-keywords
>>           (auth-source-pass--build-result-many host port user require max))
>>          (t
>
> Thanks,




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Mon, 17 Feb 2025 22:37:02 GMT) Full text and rfc822 format available.

Message #20 received at 76323 <at> debbugs.gnu.org (full text, mbox):

From: Naofumi Yasufuku <naofumi <at> yasufuku.dev>
To: "Basil L. Contovounesios" <basil <at> contovou.net>
Cc: 76323 <at> debbugs.gnu.org, Damien Cassou <damien <at> cassou.me>,
 "F. Jason Park" <jp <at> neverwas.me>
Subject: Re: bug#76323: 30.0.93; auth-source-pass: Annoying error when
 ~/.password-store doesn't exist
Date: Tue, 18 Feb 2025 07:35:40 +0900
Hi Basil and everyone,

"Basil L. Contovounesios" <basil <at> contovou.net> writes:

>> I think it would be better to have just one additional dir check on
>> auth-source-pass-search instead of auth-source-pass-entries.
>> auth-source-pass backend just does nothing if password-store dir is not
>> available.  Could it be relatively reasonable cost?
>
> Sounds even better to me.
>
> [ I can imagine external users of auth-source-pass-entries also
>   benefitting from the filesystem guard, but I think we can leave it up
>   to them to decide if/when/how they need it. ]
>

I think so too.  Introduced tiny patch is just about removing small
frustrations of, e.g. auth-sources setup via custom, but still.

> CCing some of the recent auth-source-pass (and ERC) contributors in case
> they have any comments on the patch below.
>
> [ The original attachment and the rest of the discussion can be found
>   here: https://bugs.gnu.org/76323#11 ]
>
> If there are no objections, I think this can be applied soon.
>

Thanks.  

> Yasufuku-san, do you have a copyright assignment to the FSF?

No, I haven’t signed it yet.

> I think this contribution is still well within the limits for being
> exempt, but for future contributions perhaps you would be interested in
> starting the process now, if you haven't already?
>

I'm interested in that.  I'd like to proceed with the copyright assignment process.
Could you send the copyright assignment forms to me?

Best Regards,
  Naofumi




Severity set to 'minor' from 'normal' Request was from Stefan Kangas <stefankangas <at> gmail.com> to control <at> debbugs.gnu.org. (Wed, 19 Feb 2025 02:10:05 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Wed, 19 Feb 2025 21:01:04 GMT) Full text and rfc822 format available.

Message #25 received at 76323 <at> debbugs.gnu.org (full text, mbox):

From: "Basil L. Contovounesios" <basil <at> contovou.net>
To: Naofumi Yasufuku <naofumi <at> yasufuku.dev>
Cc: 76323 <at> debbugs.gnu.org
Subject: Re: bug#76323: 30.0.93; auth-source-pass: Annoying error when
 ~/.password-store doesn't exist
Date: Wed, 19 Feb 2025 22:00:27 +0100
Naofumi Yasufuku [2025-02-18 07:35 +0900] wrote:
> "Basil L. Contovounesios" <basil <at> contovou.net> writes:
>> Yasufuku-san, do you have a copyright assignment to the FSF?
>
> No, I haven’t signed it yet.
>
>> I think this contribution is still well within the limits for being
>> exempt, but for future contributions perhaps you would be interested in
>> starting the process now, if you haven't already?
>
> I'm interested in that.  I'd like to proceed with the copyright assignment process.
> Could you send the copyright assignment forms to me?

Sent off-list.
Thanks,
-- 
Basil




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Fri, 28 Feb 2025 12:24:03 GMT) Full text and rfc822 format available.

Message #28 received at 76323 <at> debbugs.gnu.org (full text, mbox):

From: Damien Cassou <damien <at> cassou.me>
To: "Basil L. Contovounesios" <basil <at> contovou.net>, Naofumi Yasufuku
 <naofumi <at> yasufuku.dev>
Cc: 76323 <at> debbugs.gnu.org, "F. Jason Park" <jp <at> neverwas.me>
Subject: Re: bug#76323: 30.0.93; auth-source-pass: Annoying error when
 ~/.password-store doesn't exist
Date: Fri, 28 Feb 2025 13:23:36 +0100
"Basil L. Contovounesios" <basil <at> contovou.net> writes:
> If there are no objections, I think this can be applied soon.

ok for me. Thank you.

-- 
Damien Cassou

"Success is the ability to go from one failure to another without
losing enthusiasm." --Winston Churchill




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Sat, 08 Mar 2025 09:50:02 GMT) Full text and rfc822 format available.

Message #31 received at 76323 <at> debbugs.gnu.org (full text, mbox):

From: "Basil L. Contovounesios" <basil <at> contovou.net>
To: Naofumi Yasufuku <naofumi <at> yasufuku.dev>
Cc: Damien Cassou <damien <at> cassou.me>, 76323 <at> debbugs.gnu.org, "F. Jason
 Park" <jp <at> neverwas.me>
Subject: Re: bug#76323: 30.0.93; auth-source-pass: Annoying error when
 ~/.password-store doesn't exist
Date: Sat, 08 Mar 2025 10:48:58 +0100
[Message part 1 (text/plain, inline)]
Damien Cassou [2025-02-28 13:23 +0100] wrote:

> "Basil L. Contovounesios" <basil <at> contovou.net> writes:
>> If there are no objections, I think this can be applied soon.
> ok for me. Thank you.

Thank you for confirming.

Applying the patch leads to the attached test failures.  It looks like
the tests did not require an existing auth-source-pass-filename until
now.  Perhaps the following fix is sufficient?

[tmp.diff (text/x-diff, inline)]
diff --git a/test/lisp/auth-source-pass-tests.el b/test/lisp/auth-source-pass-tests.el
index ac88f3de030..48796086970 100644
--- a/test/lisp/auth-source-pass-tests.el
+++ b/test/lisp/auth-source-pass-tests.el
@@ -92,7 +92,8 @@ auth-source-pass--with-store
      (let ((auth-source-debug #'auth-source-pass--debug)
            (auth-source-pass--debug-log nil)
            (auth-source-pass--parse-log nil))
-       ,@body)))
+       (ert-with-temp-directory auth-source-pass-filename
+         ,@body))))
 
 (defun auth-source-pass--explain-match-entry-p (entry hostname &optional user port)
   "Explainer function for `auth-source-pass-match-entry-p'.
[Message part 3 (text/plain, inline)]
Yasufuku-san, would you like to provide an updated patch?

Thanks,
-- 
Basil

[auth-source-pass-tests.log (text/plain, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#76323; Package emacs. (Tue, 11 Mar 2025 13:12:02 GMT) Full text and rfc822 format available.

Message #34 received at 76323 <at> debbugs.gnu.org (full text, mbox):

From: Damien Cassou <damien <at> cassou.me>
To: "Basil L. Contovounesios" <basil <at> contovou.net>, Naofumi Yasufuku
 <naofumi <at> yasufuku.dev>
Cc: 76323 <at> debbugs.gnu.org, "F. Jason
 Park" <jp <at> neverwas.me>
Subject: Re: bug#76323: 30.0.93; auth-source-pass: Annoying error when
 ~/.password-store doesn't exist
Date: Tue, 11 Mar 2025 14:11:30 +0100
"Basil L. Contovounesios" <basil <at> contovou.net> writes:
> Applying the patch leads to the attached test failures.  It looks like
> the tests did not require an existing auth-source-pass-filename until
> now.  Perhaps the following fix is sufficient?


I find it a bit annoying to create a directory on the file system for
each test that executes, especially as I wrote the test suite in a way
that the filesystem is never necessary :-). Another approach would be to
temporarily bind `file-directory-p` to a function that always return a
non-nil value but this is a bit too white-box testing for my taste. I
suggest merging your fix as it is.

Thank you for your work


> diff --git a/test/lisp/auth-source-pass-tests.el b/test/lisp/auth-source-pass-tests.el
> index ac88f3de030..48796086970 100644
> --- a/test/lisp/auth-source-pass-tests.el
> +++ b/test/lisp/auth-source-pass-tests.el
> @@ -92,7 +92,8 @@ auth-source-pass--with-store
>       (let ((auth-source-debug #'auth-source-pass--debug)
>             (auth-source-pass--debug-log nil)
>             (auth-source-pass--parse-log nil))
> -       ,@body)))
> +       (ert-with-temp-directory auth-source-pass-filename
> +         ,@body))))
>  
>  (defun auth-source-pass--explain-match-entry-p (entry hostname &optional user port)
>    "Explainer function for `auth-source-pass-match-entry-p'.
>
> Yasufuku-san, would you like to provide an updated patch?
>
> Thanks,
> -- 
> Basil
>
> -*- mode: compilation; default-directory: "~/.local/src/emacs/" -*-
> Compilation started at Sat Mar  8 10:44:00
>
> make TEST_LOAD_EL=no test/auth-source-pass-tests
> make -C test auth-source-pass-tests
> make[1]: Entering directory '/home/blc/.local/src/emacs/test'
> make[2]: Entering directory '/home/blc/.local/src/emacs/test'
>   ELC      lisp/auth-source-pass-tests.elc
>   GEN      lisp/auth-source-pass-tests.log
> Running 50 tests (2025-03-08 10:44:01+0100, selector `(not (or (tag :unstable) (tag :nativecomp)))')
>    passed   1/50  auth-source-pass--disambiguate-extract-host-from-hostname (0.026075 sec)
>    passed   2/50  auth-source-pass--disambiguate-extract-port-from-hostname (0.000242 sec)
>    passed   3/50  auth-source-pass--disambiguate-extract-user-from-hostname (0.000220 sec)
>    passed   4/50  auth-source-pass--disambiguate-prefer-port-parameter (0.000211 sec)
>    passed   5/50  auth-source-pass--disambiguate-prefer-user-parameter (0.000212 sec)
>    passed   6/50  auth-source-pass--find-match-return-parsed-data (0.000242 sec)
>    passed   7/50  auth-source-pass--matching-entries (0.000390 sec)
>    passed   8/50  auth-source-pass--matching-entries-find-entries-with-a-port (0.000080 sec)
>    passed   9/50  auth-source-pass--matching-entries-find-entries-with-a-port-when-passed-multiple-ports (0.000157 sec)
>    passed  10/50  auth-source-pass--matching-entries-find-entries-with-a-username (0.000266 sec)
>    passed  11/50  auth-source-pass--matching-entries-find-entries-with-slash (0.000243 sec)
>    passed  12/50  auth-source-pass--matching-entries-sort-results (0.000470 sec)
>    passed  13/50  auth-source-pass-all-supported-organizations (0.001892 sec)
>    passed  14/50  auth-source-pass-any-host (0.003013 sec)
>    passed  15/50  auth-source-pass-build-result-entry-takes-precedence (0.000277 sec)
>    passed  16/50  auth-source-pass-build-result-return-entry-values (0.000154 sec)
>    passed  17/50  auth-source-pass-build-result-return-parameters (0.000171 sec)
>    passed  18/50  auth-source-pass-build-result-with-multiple-hosts (0.000267 sec)
>    passed  19/50  auth-source-pass-build-result-with-multiple-hosts-no-match (0.000237 sec)
> Test auth-source-pass-can-start-from-auth-source-search backtrace:
>   signal(ert-test-failed (((should (equal (plist-get result :user) "so
>   ert-fail(((should (equal (plist-get result :user) "someone")) :form 
>   #f(compiled-function () #<bytecode -0xb7974fe07c738cf>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-can-start-from-auth-
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-can-start-from-auth-source-search condition:
>     (ert-test-failed
>      ((should (equal (plist-get result :user) "someone")) :form
>       (equal nil "someone") :value nil :explanation
>       (different-types nil "someone")))
>    FAILED  20/50  auth-source-pass-can-start-from-auth-source-search (0.000538 sec) at lisp/auth-source-pass-tests.el:467
> Test auth-source-pass-extra-query-keywords--akib backtrace:
>   signal(ert-test-failed (((should (equal results '((:host "disroot.or
>   ert-fail(((should (equal results '((:host "disroot.org" :user "akib"
>   #f(compiled-function () #<bytecode -0x83ca3c541d1f226>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--akib condition:
>     (ert-test-failed
>      ((should (equal results '(...))) :form
>       (equal nil ((:host "disroot.org" :user "akib" :secret "b"))) :value
>       nil :explanation
>       (different-types nil
> 		       ((:host "disroot.org" :user "akib" :secret "b")))))
>    FAILED  21/50  auth-source-pass-extra-query-keywords--akib (0.000824 sec) at lisp/auth-source-pass-tests.el:630
> Test auth-source-pass-extra-query-keywords--ambiguous-user-host backtrace:
>   signal(ert-test-failed (((should (equal results '((:host "bar.org" :
>   ert-fail(((should (equal results '((:host "bar.org" :secret "c")))) 
>   #f(compiled-function () #<bytecode -0x83ca3c541d1f226>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--ambiguous-user-host condition:
>     (ert-test-failed
>      ((should (equal results '(...))) :form
>       (equal nil ((:host "bar.org" :secret "c"))) :value nil :explanation
>       (different-types nil ((:host "bar.org" :secret "c")))))
>    FAILED  22/50  auth-source-pass-extra-query-keywords--ambiguous-user-host (0.000462 sec) at lisp/auth-source-pass-tests.el:731
> Test auth-source-pass-extra-query-keywords--baseline backtrace:
>   signal(ert-test-failed (((should (equal (auth-source-search :host "f
>   ert-fail(((should (equal (auth-source-search :host "foo") '((:host "
>   #f(compiled-function () #<bytecode 0x6738477e320d0d>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--baseline condition:
>     (ert-test-failed
>      ((should (equal (auth-source-search :host "foo") '(...))) :form
>       (equal nil ((:host "foo"))) :value nil :explanation
>       (different-types nil ((:host "foo")))))
>    FAILED  23/50  auth-source-pass-extra-query-keywords--baseline (0.000457 sec) at lisp/auth-source-pass-tests.el:681
> Test auth-source-pass-extra-query-keywords--host backtrace:
>   signal(ert-test-failed (((should (equal results '((:host "Libera.Cha
>   ert-fail(((should (equal results '((:host "Libera.Chat" :secret "b")
>   #f(compiled-function () #<bytecode -0x83ca3c541d1f226>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--host condition:
>     (ert-test-failed
>      ((should (equal results '(...))) :form
>       (equal nil ((:host "Libera.Chat" :secret "b"))) :value nil
>       :explanation
>       (different-types nil ((:host "Libera.Chat" :secret "b")))))
>    FAILED  24/50  auth-source-pass-extra-query-keywords--host (0.000535 sec) at lisp/auth-source-pass-tests.el:658
> Test auth-source-pass-extra-query-keywords--hosts-first backtrace:
>   signal(ert-test-failed (((should (equal results '((:host "x.com" :se
>   ert-fail(((should (equal results '((:host "x.com" :secret "c") (:hos
>   #f(compiled-function () #<bytecode -0x83ca3c541d1f226>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--hosts-first condition:
>     (ert-test-failed
>      ((should (equal results '(... ... ...))) :form
>       (equal nil
> 	     ((:host "x.com" :secret "c")
> 	      (:host "x.com" :user "bar" :port "42" :secret "a")
> 	      (:host "x.com" :user "foo" :secret "e")))
>       :value nil :explanation
>       (different-types nil
> 		       ((:host "x.com" :secret "c")
> 			(:host "x.com" :user "bar" :port "42" :secret "a")
> 			(:host "x.com" :user "foo" :secret "e")))))
>    FAILED  25/50  auth-source-pass-extra-query-keywords--hosts-first (0.000443 sec) at lisp/auth-source-pass-tests.el:712
>    passed  26/50  auth-source-pass-extra-query-keywords--netrc-akib (0.001084 sec)
>    passed  27/50  auth-source-pass-extra-query-keywords--netrc-baseline (0.000452 sec)
>    passed  28/50  auth-source-pass-extra-query-keywords--netrc-host (0.000537 sec)
> Test auth-source-pass-extra-query-keywords--port-type backtrace:
>   signal(ert-test-failed (((should (equal (mapcar f (auth-source-searc
>   ert-fail(((should (equal (mapcar f (auth-source-search :host "x.com"
>   #f(compiled-function () #<bytecode 0x90b1b551d420e86>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--port-type condition:
>     (ert-test-failed
>      ((should (equal (mapcar f ...) '(...))) :form
>       (equal nil ((:host "x.com" :port 42 :secret "a"))) :value nil
>       :explanation
>       (different-types nil ((:host "x.com" :port 42 :secret "a")))))
>    FAILED  29/50  auth-source-pass-extra-query-keywords--port-type (0.000405 sec) at lisp/auth-source-pass-tests.el:689
>    passed  30/50  auth-source-pass-extra-query-keywords--req-noparam-miss (0.000422 sec)
>    passed  31/50  auth-source-pass-extra-query-keywords--req-noparam-miss-netrc (0.000653 sec)
> Test auth-source-pass-extra-query-keywords--req-param backtrace:
>   signal(ert-test-failed (((should (equal results '((:host "foo" :user
>   ert-fail(((should (equal results '((:host "foo" :user "bob" :secret 
>   #f(compiled-function () #<bytecode -0x1a53c7eb5556092f>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--req-param condition:
>     (ert-test-failed
>      ((should (equal results '(...))) :form
>       (equal nil ((:host "foo" :user "bob" :secret "a"))) :value nil
>       :explanation
>       (different-types nil ((:host "foo" :user "bob" :secret "a")))))
>    FAILED  32/50  auth-source-pass-extra-query-keywords--req-param (0.000367 sec) at lisp/auth-source-pass-tests.el:580
>    passed  33/50  auth-source-pass-extra-query-keywords--req-param-netrc (0.000600 sec)
> Test auth-source-pass-extra-query-keywords--suffixed-user backtrace:
>   signal(ert-test-failed (((should (equal results '((:host "x.com" :us
>   ert-fail(((should (equal results '((:host "x.com" :user "s p <at> m" :sec
>   #f(compiled-function () #<bytecode -0x5cca815e832d3b8>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--suffixed-user condition:
>     (ert-test-failed
>      ((should (equal results '(... ... ... ... ...))) :form
>       (equal nil
> 	     ((:host "x.com" :user "s p <at> m" :secret "b")
> 	      (:host "x.com" :user "s p <at> m" :port "42" :secret "a")
> 	      (:host "fa ke" :user "s p <at> m" :secret "e")
> 	      (:host "fa ke" :user "s p <at> m" :secret "d")
> 	      (:host "y.org" :user "s p <at> m" :secret "c")))
>       :value nil :explanation
>       (different-types nil
> 		       ((:host "x.com" :user "s p <at> m" :secret "b")
> 			(:host "x.com" :user "s p <at> m" :port "42" :secret
> 			       "a")
> 			(:host "fa ke" :user "s p <at> m" :secret "e")
> 			(:host "fa ke" :user "s p <at> m" :secret "d")
> 			(:host "y.org" :user "s p <at> m" :secret "c")))))
>    FAILED  34/50  auth-source-pass-extra-query-keywords--suffixed-user (0.000252 sec) at lisp/auth-source-pass-tests.el:746
> Test auth-source-pass-extra-query-keywords--user-priorities backtrace:
>   signal(ert-test-failed (((should (equal results '((:host "h" :user "
>   ert-fail(((should (equal results '((:host "h" :user "u" :port 2 :sec
>   #f(compiled-function () #<bytecode 0x1a7d46adbe651f58>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--user-priorities condition:
>     (ert-test-failed
>      ((should (equal results '(... ... ... ...))) :form
>       (equal nil
> 	     ((:host "h" :user "u" :port 2 :secret "@")
> 	      (:host "h" :user "u" :port 2 :secret "/")
> 	      (:host "g" :user "u" :port 2 :secret "@")
> 	      (:host "g" :user "u" :port 2 :secret "/")))
>       :value nil :explanation
>       (different-types nil
> 		       ((:host "h" :user "u" :port 2 :secret "@")
> 			(:host "h" :user "u" :port 2 :secret "/")
> 			(:host "g" :user "u" :port 2 :secret "@")
> 			(:host "g" :user "u" :port 2 :secret "/")))))
>    FAILED  35/50  auth-source-pass-extra-query-keywords--user-priorities (0.000273 sec) at lisp/auth-source-pass-tests.el:777
> Test auth-source-pass-extra-query-keywords--wild-port-hit backtrace:
>   signal(ert-test-failed (((should (equal results '((:host "x.com" :se
>   ert-fail(((should (equal results '((:host "x.com" :secret "a") (:hos
>   #f(compiled-function () #<bytecode -0xf92c73a98c86423>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--wild-port-hit condition:
>     (ert-test-failed
>      ((should (equal results '(... ...))) :form
>       (equal nil
> 	     ((:host "x.com" :secret "a")
> 	      (:host "x.com" :port 42 :secret "b")))
>       :value nil :explanation
>       (different-types nil
> 		       ((:host "x.com" :secret "a")
> 			(:host "x.com" :port 42 :secret "b")))))
>    FAILED  36/50  auth-source-pass-extra-query-keywords--wild-port-hit (0.000264 sec) at lisp/auth-source-pass-tests.el:539
>    passed  37/50  auth-source-pass-extra-query-keywords--wild-port-hit-netrc (0.000582 sec)
> Test auth-source-pass-extra-query-keywords--wild-port-miss backtrace:
>   signal(ert-test-failed (((should (equal results '((:host "x.com" :se
>   ert-fail(((should (equal results '((:host "x.com" :secret "a")))) :f
>   #f(compiled-function () #<bytecode -0xf92c73a98c86423>)()
>   #f(compiled-function () #<bytecode 0x84afd65454f8ec7>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0x84afd65454f8ec7>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name auth-source-pass-extra-query-keywords
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test auth-source-pass-extra-query-keywords--wild-port-miss condition:
>     (ert-test-failed
>      ((should (equal results '(...))) :form
>       (equal nil ((:host "x.com" :secret "a"))) :value nil :explanation
>       (different-types nil ((:host "x.com" :secret "a")))))
>    FAILED  38/50  auth-source-pass-extra-query-keywords--wild-port-miss (0.000203 sec) at lisp/auth-source-pass-tests.el:513
>    passed  39/50  auth-source-pass-extra-query-keywords--wild-port-miss-netrc (0.000588 sec)
>    passed  40/50  auth-source-pass-extra-query-keywords--wild-port-req-miss (0.000201 sec)
>    passed  41/50  auth-source-pass-extra-query-keywords--wild-port-req-miss-netrc (0.000256 sec)
>    passed  42/50  auth-source-pass-find-match-minimal-parsing (0.000427 sec)
>    passed  43/50  auth-source-pass-matching-entries-with-custom-separator (0.000095 sec)
>    passed  44/50  auth-source-pass-not-found (0.000052 sec)
>    passed  45/50  auth-source-pass-parse-simple (0.000047 sec)
>    passed  46/50  auth-source-pass-parse-with-colons-in-data (0.000034 sec)
>    passed  47/50  auth-source-pass-parse-with-dash-line (0.000033 sec)
>    passed  48/50  auth-source-pass-parse-with-trailing-spaces (0.000031 sec)
>    passed  49/50  auth-source-pass-prints-meaningful-debug-log (0.000192 sec)
>    passed  50/50  auth-source-pass-undefined-host (0.000024 sec)
>
> Ran 50 tests, 38 results as expected, 12 unexpected (2025-03-08 10:44:02+0100, 1.325117 sec)
>
> 12 unexpected results:
>    FAILED  auth-source-pass-can-start-from-auth-source-search
>    FAILED  auth-source-pass-extra-query-keywords--akib
>    FAILED  auth-source-pass-extra-query-keywords--ambiguous-user-host
>    FAILED  auth-source-pass-extra-query-keywords--baseline
>    FAILED  auth-source-pass-extra-query-keywords--host
>    FAILED  auth-source-pass-extra-query-keywords--hosts-first
>    FAILED  auth-source-pass-extra-query-keywords--port-type
>    FAILED  auth-source-pass-extra-query-keywords--req-param
>    FAILED  auth-source-pass-extra-query-keywords--suffixed-user
>    FAILED  auth-source-pass-extra-query-keywords--user-priorities
>    FAILED  auth-source-pass-extra-query-keywords--wild-port-hit
>    FAILED  auth-source-pass-extra-query-keywords--wild-port-miss
>
> make[2]: *** [Makefile:185: lisp/auth-source-pass-tests.log] Error 1
> make[2]: Leaving directory '/home/blc/.local/src/emacs/test'
> make[1]: *** [Makefile:251: lisp/auth-source-pass-tests] Error 2
> make[1]: Leaving directory '/home/blc/.local/src/emacs/test'
> make: *** [Makefile:1137: test/auth-source-pass-tests] Error 2
>
> Compilation exited abnormally with code 2 at Sat Mar  8 10:44:02, duration 2.54 s

-- 
Damien Cassou

"Success is the ability to go from one failure to another without
losing enthusiasm." --Winston Churchill




This bug report was last modified 95 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.