Subject: bug#74289: 30.0.92; `require-with-check' fails on non-existing files

From: Daniel Mendler <[email-masked]>
Date: Sun, 10 Nov 2024 09:43:29 +0100

`require-with-check' fails since
0aae02a3741c397d6952e3128d434827aca0f912 on non-existing files.

See the CI run of the Compat test suite:

https://github.com/emacs-compat/compat/actions/runs/11763132765/job/32766767667

This call fails:

(require-with-check 'compat-does-not-exist nil 'noerror)

Backtrace:

Test compat-require-with-check backtrace:
  string-match("\\(?:\\.\\(?:el\\(?:\\.gz\\|c\\(?:\\.gz\\)?\\)?\\|so\\
  require-with-check(compat-does-not-exist nil noerror)
  apply(require-with-check (compat-does-not-exist nil noerror))
  (setq value-7960 (apply fn-7958 args-7959))
  (unwind-protect (setq value-7960 (apply fn-7958 args-7959)) (setq fo
  (not (unwind-protect (setq value-7960 (apply fn-7958 args-7959)) (se
  (if (not (unwind-protect (setq value-7960 (apply fn-7958 args-7959))
  (let (form-description-7962) (if (not (unwind-protect (setq value-79
  (let ((value-7960 'ert-form-evaluation-aborted-7961)) (let (form-des
  (let* ((fn-7958 #'require-with-check) (args-7959 (condition-case err
  (progn (let ((tail (list dir1 dir2))) (while tail (let ((dir (car ta
  (unwind-protect (progn (let ((tail (list dir1 dir2))) (while tail (l
  (let* ((coding-system-for-write nil) (temp-file (file-name-as-direct
  (progn (let* ((coding-system-for-write nil) (temp-file (file-name-as
  (unwind-protect (progn (let* ((coding-system-for-write nil) (temp-fi
  (let* ((coding-system-for-write nil) (temp-file (file-name-as-direct
  #f(lambda () [compat-tests--unexist compat-tests--local compat-tests
  #f(compiled-function () #<bytecode -0x1bdb01a9e9be3603>)()
  handler-bind-1(#f(compiled-function () #<bytecode -0x1bdb01a9e9be360
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name compat-require-with-check :documentat
  ert-run-or-rerun-test(#s(ert--stats :selector t :tests ... :test-map
  ert-run-tests(t #f(compiled-function (event-type &rest event-args) #
  ert-run-tests-batch(nil)
  ert-run-tests-batch-and-exit()
  command-line-1(("-L" "." "-l" "compat-tests.el" "-f" "ert-run-tests-
  command-line()
  normal-top-level()
Test compat-require-with-check condition:
    (wrong-type-argument stringp nil)