Commit graph

5659 commits

Author SHA1 Message Date
F. Jason Park
9ba65aa965 Fix missing margin face on display prop in erc-stamp
* lisp/erc/erc-stamp.el (erc-insert-timestamp-right): Explicitly add
face to right-hand stamp's `display' margin string.  Commit d24b10ca
"Introduce 'margin' face for window margin background" did away with the
"fall-through" behavior in which a margin spec's string that lacks its
own face property inherited whatever the associated `display' char
happened to have.  (Bug#80693)

;; The old language in "(elisp) Display Margins" said "if the
;; string to be displayed in the margin doesn't specify a face, its
;; face is determined using the same rules and priorities as it is
;; for strings displayed in the text area (see Displaying Faces),"
;; and that "if this results in undesirable 'leaking' of faces into
;; the margin, make sure the string has an explicit face specified
;; for it."  It seems ERC and likely more than a few other packages
;; never came to heed this guidance and have erroneously depended
;; on such behavior for years if not decades.
;;
;; * test/lisp/erc/resources/fill/snapshots/merge-01-start.eld:
;; * test/lisp/erc/resources/fill/snapshots/merge-02-right.eld:
;; * test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld:
;; * test/lisp/erc/resources/fill/snapshots/merge-wrap-indicator-pre-01.eld:
;; * test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld:
;; * test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld:
;; * test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld:
;; * test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld:
;; * test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld: Update
;; snapshot.
2026-05-18 15:07:34 -07:00
João Távora
6bd73af241 ; * test/lisp/jsonrpc-tests.el: Adjust timeouts for CI EMBA testing 2026-05-18 17:22:30 +01:00
João Távora
36036e71c0 Jsonrpc: migrate more tests to Python subprocess fixtures
All tests now use 'jsonrpc--with-python-fixture' with a Python3
subprocess instead of the in-Emacs TCP server.  Changed the "harakiri"
method to be a request instead of a notification for to reduce chance of
"Sentinel hasn't run" warning.

The two in-Emacs-RPC-specific error tests ('errors-with--32601' and
'signals-an--32603-JSONRPC-error') are dropped with the fixture itself,
as the error paths they exercise are internal to the Emacs Lisp
dispatcher and have no direct Python equivalent.  They will have to be
re-done later on in other form.

* test/lisp/jsonrpc-resources/server-emacsrpc.py: New file.

* test/lisp/jsonrpc-resources/server-anxious-nested.py: Use new
  harakiri.

* test/lisp/jsonrpc-resources/server-emacsrpc.py: Use new harakiri.

* test/lisp/jsonrpc-resources/server-harakiri.py: Use new harakiri.

* test/lisp/jsonrpc-resources/server-remote-during-sync-1.py: Use new
  harakiri.

* test/lisp/jsonrpc-resources/server-remote-during-sync-2.py: Use new
  harakiri.

* test/lisp/jsonrpc-resources/server-remote-error.py: Use new harakiri.

* test/lisp/jsonrpc-resources/common.py (harakiri): New definition.

* test/lisp/jsonrpc-tests.el
(jsonrpc--with-python-fixture): Rework, move up.
(jsonrpc-connection-ready-p): Move up.
(jsonrpc--call-with-emacsrpc-fixture)
(jsonrpc--with-emacsrpc-fixture)
(errors-with--32601)
(signals-an--32603-JSONRPC-error): Remove.
(returns-3, times-out, doesnt-time-out, stretching-it-but-works)
(deferred-action-toolate, deferred-action-intime)
(deferred-action-complex-tests): Migrate to Python fixture.
(scontrol-remote-during-sync-1, scontrol-remote-during-sync-2)
(scontrol-anxious-nested, scontrol-remote-error)
(shutdown-clean-after-notification): Tweak.
2026-05-17 19:28:07 +01:00
Michael Albinus
d0d657fa90 ; Minor Tramp cleanup
* lisp/net/tramp.el (tramp-unquote-shell-quote-argument): Do not
expand remote file names w/o a localname.

* test/lisp/net/tramp-tests.el
(tramp--test-supports-environment-variables-p): New defun.
(tramp-test33-environment-variables): Use it.
2026-05-14 12:31:04 +02:00
Michael Albinus
2e71d2c709 Propagate EMACSCLIENT_TRAMP to remote hosts with Tramp
* doc/misc/tramp.texi (Remote processes):
Explain `tramp-propagate-emacsclient-tramp'.

* lisp/net/tramp.el (tramp-remote-process-environment): Adapt docstring.
(tramp-propagate-emacsclient-tramp): New defcustom.
(tramp-handle-make-process):
* lisp/net/tramp-sh.el (tramp-sh-handle-make-process)
(tramp-sh-handle-process-file): Use it.

* test/lisp/net/tramp-tests.el (tramp-test33-environment-variables):
Adapt test.
2026-05-13 18:39:04 +02:00
Pip Cet
5323eebcff Test read-passwd behavior (bug#80838)
* test/lisp/auth-source-tests.el (auth-source-test--displayed-string):
(auth-source-test-read-passwd):
(auth-source-test-read-passwd-revealed):
(auth-source-test-read-passwd-nested): New.
2026-05-10 20:00:41 +00:00
Michael Albinus
eae96d9fcb Handle long environment variables in Tramp oricesses
* lisp/net/tramp-sh.el (tramp-sh-handle-make-process):
Handle loooong environment variables.  (Bug#80783)

* test/lisp/net/tramp-tests.el (tramp-test33-environment-variables):
Adapt test.
2026-05-06 16:06:50 +02:00
Michael Albinus
9c0a699c59 Adaot tramp-tests.el
* test/lisp/net/tramp-tests.el (ert-remote-temporary-file-directory):
Ensure that it is expanded.
2026-05-04 16:09:10 +02:00
João Távora
e24d9232e0 Jsonrpc: add new tests using Python subprocesses
Most of these tests are for the scontrol/"anxious continuation"
mechanism (bug#80623)

The new ERT tests use Python subprocesses via stdin/stdout pipe as
JSONRPC endpoints.  A shared framing library lives in
jsonrpc-resources/common.py.

* test/lisp/jsonrpc-tests.el (jsonrpc--test-dir): New constant.
(jsonrpc--with-python-fixture): New macro.
(scontrol-remote-during-sync-1)
(scontrol-remote-during-sync-2)
(scontrol-anxious-nested)
(scontrol-remote-error)
(shutdown-clean-after-notification): New tests.

* test/lisp/jsonrpc-resources/common.py: New file.

* test/lisp/jsonrpc-resources/server-remote-during-sync-1.py: New file.

* test/lisp/jsonrpc-resources/server-remote-during-sync-2.py: New file.

* test/lisp/jsonrpc-resources/server-anxious-nested.py: New file.

* test/lisp/jsonrpc-resources/server-remote-error.py: New file.

* test/lisp/jsonrpc-resources/server-harakiri.py: New file.
2026-05-04 13:32:37 +01:00
F. Jason Park
cf9728c4be Only perform erc-log-insert-log-on-open setup once
* etc/ERC-NEWS: Add entry for option `erc-log-insert-log-on-open'.
Mention deprecation of `erc-log-setup-logging'.
* lisp/erc/erc-log.el (erc-log-insert-log-on-open): Expand type from
boolean to choice of boolean, predicate, and new function item
`erc-log-new-target-buffer-p'.
(erc-log-mode, erc-log-enable, erc-log-disable): Replace
`erc-log-setup-logging' on `erc-connect-pre-hook' with
`erc-log--insert-log-on-open' at depth 80.  Replace calls to
`erc-log-setup-logging' with ones to `erc-log--setup'.
(erc-log-new-target-buffer-p): New function.  While the name could
perhaps do more to indicate that it's only useful when called from
`erc-open', that's the only place ERC typically sets up new target
buffers.
(erc-log-setup-logging): Deprecate and replace body with adapter that
calls `erc-log--setup' and `erc-log--insert-log-on-open'.
(erc-log--setup): New function whose body is mostly from the
"nondestructive" portion of `erc-log-setup-logging'.  Instead of moving
the `erc-saved-last-position' marker to the old value, expect it not to
have been initialized by `erc-initialize-log-marker' because
`erc-connect-pre-hook' now runs after this code, which is now
incorporated more judiciously into the module's "enable body".
(erc-log--insert-log-on-open): New function whose body is mostly from
the "destructive" portion of the previous incarnation of
`erc-log-setup-logging'.  Unlike the original, if option
`erc-log-insert-log-on-open' is a function, call it to decide whether to
insert a log file atop its buffer.  Also, don't advance the marker
`erc-last-saved-position' to the prompt area, where it can get stuck and
prevent logs from being saved when `erc-log-insert-log-on-open' is
non-nil.  Thanks to Libera user Lionyx for reporting the bug, which has
been around since at least ERC 5.4 and Emacs 28.1.
(erc-log-disable-logging): Remove `erc-save-buffer-in-logs' from
`write-file-functions' to undo its buffer-local addition in what is now
`erc--log-setup'.
* test/lisp/erc/erc-scenarios-log-options.el: New file.  (Bug#79665)
2026-04-30 15:46:42 -07:00
F. Jason Park
ba2a150740 Restore erc-last-saved-position from previous session
* lisp/erc/erc-log.el (erc-log-setup-logging): Restore
`erc-last-saved-position' from previous session.  By default, a
non-/QUIT disconnect does not write out any remaining buffer text to
logs, instead leaving it until the buffer or Emacs is killed.  But if a
successful reconnect occurs beforehand, the uncommitted portion must be
seen to somehow.  Before this change, it would be lost because the
function `erc-initialize-log-marker' remakes the marker at the prompt
instead of recovering the previous value as now done here.  Moreover,
the traditional workaround of customizing `erc-log-write-after-insert'
and `erc-log-write-after-send' to t should not be required to prevent
gaps in any decent IRC client.
* test/lisp/erc/erc-scenarios-log.el (erc-scenarios-log--reconnect): New
function.
(erc-scenarios-log--reconnect/auto, erc-scenarios-log--reconnect/manual):
New tests.
;; * test/lisp/erc/resources/join/reconnect/foonet-again.eld: Add QUIT.
2026-04-30 15:46:38 -07:00
F. Jason Park
40b6f0180b ; Tweak some ERC tests and related utilities
* test/lisp/erc/erc-scenarios-keep-place-indicator.el
(erc-scenarios-keep-place-indicator--follow): Intersperse more
`redisplay' calls to update the indicator's overlay.
* test/lisp/erc/erc-tests.el (erc-tests--assert-printed-in-subprocess):
Wrap CODE form in keyword sentinel.
(erc--find-mode, erc--essential-hook-ordering): Use modified interface.
(erc--find-group--real, erc--find-group/realistic): Rename former to
latter and run in subprocess.
(erc--update-modules/realistic): Redo to run in subprocess instead of
mocking.
* test/lisp/erc/resources/erc-d/erc-d-t.el
(erc-d-t-kill-related-buffers): Don't bother canceling
`erc-server-flood-timer', even in an actual ERC buffer, since
`erc-server-send-queue' first checks whether its BUFFER argument is
still live before sending anything to the process.  Also, don't bother
collecting buffers only to immediately kill them.
* test/lisp/erc/resources/erc-d/erc-d.el (erc-d--filter): Always clear
remainder.  Otherwise, partial emissions from the peer that aren't
terminated by a newline will confuse subsequent processing.
* test/lisp/erc/resources/erc-scenarios-common.el
(erc-scenarios-common--run-in-term): Look for a library called
`erc-tests-compat', which ERC uses in its external CI to provide
compatibility shims of definitions too obscure or unfit for inclusion in
the Compat package on ELPA.
* test/lisp/erc/resources/erc-tests-common.el
(erc-tests-common-kill-buffers): Also kill non-`erc-mode' buffers whose
names match a scheme used by ERC for work buffers.  Allow for the
EXTRA-BUFFERS argument to possibly contain killed and null buffers.
2026-04-30 15:46:29 -07:00
Paul Eggert
4fcc8a473a ; Spelling fixes. 2026-04-29 22:45:51 -07:00
Eli Zaretskii
7017fcc4c5 ; Add new test to files-tests
* test/lisp/files-tests.el
(files-tests-directory-files-recursively-w32): New test.
2026-04-29 18:04:48 +03:00
Eli Zaretskii
08a22b8965 ; Don't skip 'vc-test-src-version-diff' test
* test/lisp/vc/vc-tests/vc-tests.el (vc-test-src-version-diff):
Don't skip, it passes.
2026-04-27 15:47:57 +03:00
Eli Zaretskii
8d4c47c880 Fix vc-tests for SRC
* lisp/vc/vc-src.el (vc-src-register): Support "registering"
directories in FILES.
(vc-src-rename-file): Fix implementation and support renaming
directories.

* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-file)
(vc-test-src-version-diff): Skip parts that don't work with SRC.
(Bug#80862)
2026-04-27 15:41:27 +03:00
Philip Kaludercic
e83052c095
Add lexical-binding cookies to multi-file-0.2.3.tar
* test/lisp/emacs-lisp/package-resources/multi-file-0.2.3.tar:
Update multi-file.el and multi-file-sub.el files.
2026-04-27 11:48:58 +02:00
Stefan Monnier
4bd5608513 (register--get-method-type): Fix one more case (bug#80894)
* lisp/register.el (register--get-method-type): Refine the cl-generic hack
yet a but further.
* test/lisp/register-tests.el (register--jumpable-p): Fix the test.
2026-04-26 12:18:44 -04:00
Eli Zaretskii
bbdab523b4 Fix renaming files and directories under RCS
* lisp/vc/vc-rcs.el (vc-rcs-register): Filter out directories from
FILES.
(vc-rcs-rename-file): Support OLD being a directory.

* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-file)
(vc-test--rename-directory): Re-enable these tests for RCS.
(vc-test--rename-directory): Disable 'yes-or-no-p' questions that
RCS asks when it needs to create the RCS/ subdirectory: this lets
the test run without user interaction.
2026-04-26 14:20:56 +03:00
Eli Zaretskii
6a39de6ee5 ; Add more register tests
* test/lisp/register-tests.el (register--jumpable-p): Add tests
for more register types.  (Bug#80894)
2026-04-26 11:34:39 +03:00
Stefan Monnier
28f828e8a6 register.el: Allow jumping to kmacros again (bug#80894)
* lisp/register.el (register--get-method-type): Fix handling for
OClosure args.
* test/lisp/register-tests.el (register--jumpable-p): New test.
2026-04-25 10:41:16 -04:00
Michael Albinus
aa067441d6 Some minor Tramp fixes
* doc/misc/tramp.texi (Customizing Methods): Add comment.

* lisp/net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
Comment out setting `command-line-max-length', it doesn't work reliably.

* test/lisp/net/tramp-tests.el (tramp-test03-file-error)
(tramp-test26-file-name-completion-boundaries): Adapt tests.
2026-04-25 10:01:37 +02:00
Sean Whitton
0a04a4bc7a vc-hg-after-dir-status: Rewrite to handle current 'hg status' output
* lisp/vc/vc-hg.el (vc-hg-after-dir-status): Rewrite to handle
renames where the "R" line comes arbitrarily later in the
output.
* test/lisp/vc/vc-hg-tests.el
(vc-hg-test--after-dir-status-expect): New function.
(vc-hg-after-dir-status): New test.
2026-04-23 15:27:20 +01:00
Philip Kaludercic
986892fe30
; Adjust package tests for 789e98e54f
* test/lisp/emacs-lisp/package-tests.el (package-test-get-deps):
Replace test with an analogous test for 'package--dependencies'.
2026-04-22 20:46:33 +02:00
Roi Martin
7f1e54c61a Test that ERT creates a list of executed tests from erts files
* test/lisp/emacs-lisp/ert-resources/erts-file-test-list-fail.erts:
* test/lisp/emacs-lisp/ert-resources/erts-file-test-list.erts: New erts
files.
* test/lisp/emacs-lisp/ert-tests.el (ert-test-list-of-erts-file-tests):
New test.
2026-04-22 18:03:47 +02:00
Eli Zaretskii
6f15481be5 ; Fix files-tests on MS-Windows
* test/lisp/files-tests.el
(files-tests-file-name-non-special--temp-file-prefixes): Don't use
a file name with '*' on MS-Windows.
2026-04-22 08:48:49 +03:00
Michael Albinus
901d4fe32a Improve files-tests.el for quoted file names
* test/lisp/files-tests.el
(files-tests-file-name-non-special--temp-file-prefixes): New defconst.
(files-tests-file-name-non-special--subprocess)
(files-tests-file-name-non-special--buffers): Loop over it.
(files-tests--with-temp-non-special)
(files-tests--with-temp-non-special-and-file-name-handler): Simplify.
(files-tests-file-name-non-special-make-symbolic-link):
Pacify compiler warning.
2026-04-21 19:23:21 +02:00
Stephen Berman
abde2d1ed3 Restrict Dired handling of newlines in file names
* lisp/dired.el (dired--ls-accept-b-switch-p): New function.
(dired-internal-noselect): Use it in the condition on displaying
warning about filenames with newlines.
(dired--set-auto-toggle-b-switch): Use it to conditionalize
calling 'dired--toggle-b-switch'.
(dired-auto-toggle-b-switch, dired--toggle-b-switch): Improve doc
string.

* test/lisp/dired-tests.el (dired-test-filename-with-newline-1)
(dired-test-filename-with-newline-2): Skip unless Dired uses an
'ls' that supports the '-b' switch.

* etc/NEWS: Adjust accordingly the announcements of the Dired
warning and the new user option for file names with newlines.
2026-04-17 19:26:37 +02:00
Michael Albinus
00b767089e Extend integration of external operations in Tramp
* doc/misc/tramp.texi (Extension packages): Use another format
char in example.
(New operations): Document different argument types.  Extend example.

* lisp/net/tramp.el: Use consequently `eq', `assq', `memq'.
(tramp-file-name-for-operation-external): Extend docstring.
(tramp-file-name-for-operation): Make more use of
`tramp-file-name-for-operation-external'.
(tramp-add-external-operation): New optional argument `arg-type'.

* test/lisp/net/tramp-tests.el (tramp--handle-test-operation):
Rename from `tramp--handler-for-test-operation'.
(tramp--handle-process-id)
(tramp--test-operation-file-name-for-operation): New defuns.
(tramp-test49-external-backend-function): Extend test.
2026-04-17 16:48:16 +02:00
Sean Whitton
792fef0583 vc-rename-file: Fix skipping calling into the backend
* lisp/vc/vc.el (vc-rename-file): Replace broken attempted use
of vc-dir-status-files with walking OLD using vc-file-tree-walk.
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-directory):
Assert that the files are registered or not as appropriate.  New
test case in which there are only registered files.
2026-04-16 14:36:45 -04:00
Vincent Belaïche
5b6fc8ebfc ert-play-keys function
* lisp/emacs-lisp/ert-x.el (ert-play-keys): new defun.

* test/lisp/simple-tests.el (undo-test-kill-c-a-then-undo)
(undo-test-point-after-forward-kill): Use new function
`ert-play-keys' and `(ert-with-test-buffer (:selected t) ...)'
rather (with-temp-buffer (switch-to-buffer (current-buffer) ...)'.

* test/lisp/erc/erc-scenarios-spelling.el
(erc-scenarios-spelling--auto-correct): Use new function
`ert-play-keys' and `(ert-with-buffer-selected ...)' rather than
`execute-kbd-macro' and `(with-current-buffer
... (set-window-buffer nil (current-buffer) ...)'.

* doc/misc/ert.texi (Helper Functions): Document ert-play-keys,
and differences between ert-simulate-command, ert-simulate-keys
& ert-play-keys.

* test/lisp/emacs-lisp/ert-x-tests.el
(ert-x-tests-play-keys)
(ert-x-tests-simulate-command, ert-x-tests-simulate-keys): New
tests.
2026-04-16 13:30:42 +02:00
Toby Dylan Hocking
eb4835e521 Make | optional for 'gnu' regexp in compilation-mode (bug#80681)
* lisp/progmodes/compile.el
(compilation-error-regexp-alist-alist): Make leading '|'
optional when there are leading spaces (bug#80681).
* etc/compilation.txt (GNU style): New error with two leading
spaces.
* test/lisp/progmodes/compile-tests.el
(compile-test-error-regexps): Increment expected
compilation-num-errors-found.
(compile-tests--test-regexps-data): New error test case for
'gnu' with two leading spaces.  Change expected match for
'cucumber' to match again 'gnu'.

Copyright-paperwork-exempt: yes
2026-04-15 18:11:00 -04:00
Sean Whitton
5045394694 vc-rename-file: Fix case of directory with only untracked files
* lisp/vc/vc.el (vc-rename-file): Don't call into the backend if
moving a directory containing only untracked files.
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-directory):
New test for this case.
2026-04-15 17:59:10 -04:00
Sean Whitton
324e5b4177 ; * test/lisp/vc/vc-tests/vc-tests.el: Disable new tests on RCS. 2026-04-15 13:53:58 -04:00
Sean Whitton
43f0da207e Fix renaming whole directories with Mercurial
* lisp/vc/vc-hg.el (vc-hg-rename-file): Use 'hg mv --after'.
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-directory):
New test.
2026-04-15 10:06:48 -04:00
Sean Whitton
5347b221da vc-rename-file: New OK-IF-ALREADY-EXISTS parameter
* lisp/vc/vc.el (vc-delete-file): New NOCONFIRM parameter.
(vc-rename-file): New OK-IF-ALREADY-EXISTS parameter.
* lisp/dired-aux.el (dired-rename-file): Pass it.
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-file): Test
it.  Also test moving files into an existing directory.
2026-04-15 10:06:20 -04:00
Sean Whitton
8b823737ff ; vc-test--working-revision: Update for vc-hg change
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--working-revision):
Recognize '0000000000000000000000000000000000000000' now that
vc-hg-working-revision returns changeset hashes.
2026-04-15 10:02:16 -04:00
Richard Lawrence
6eea015337 Improve performance of icalendar-recur.el and its tests
As discussed in Bug#80520.

* test/lisp/calendar/icalendar-recur-tests.el
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/3)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/29)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/30)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/31)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/33)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/34)
(icalendar-test-rrule-test-rfc5545-sec3.8.5.3/38): Mark tests expensive.

Abstract the implementation of intervals in icalendar-recur.el.  Don't
store interval NEXT-LOW when it's the same as HIGH.  This reduces
allocations, and shaves about ~20% off the full test suite.

* lisp/calendar/icalendar-recur.el
(icalendar-recur-make-interval)
(icalendar-recur-interval-low)
(icalendar-recur-interval-high)
(icalendar-recur-interval-next): Implement intervals and subintervals as
vectors.  Only store NEXT-LOW when it's non-nil.
(icalendar-recur-find-absolute-interval)
(icalendar-recur-find-daily-interval)
(icalendar-recur-find-weekly-interval)
(icalendar-recur-find-monthly-interval)
(icalendar-recur-find-yearly-interval)
(icalendar-recur-next-interval)
(icalendar-recur-previous-interval)
(icalendar-recur-refine-byyearday)
(icalendar-recur-refine-byweekno)
(icalendar-recur-refine-bymonth)
(icalendar-recur-refine-bymonthday)
(icalendar-recur-refine-byday)
(icalendar-recur-refine-byhour)
(icalendar-recur-refine-byminute)
(icalendar-recur-refine-bysecond)
(icalendar-recur-subintervals-to-date-times)
(icalendar-recur-subintervals-to-dates)
(icalendar-recur-recurrences-in-interval)
(icalendar-recur-recurrences-in-window)
(icalendar-recur--key-from-interval): Use new interval constructor and
accessors.  Don't generate NEXT-LOW when it's the same as HIGH.
* lisp/calendar/icalendar-utils.el (icalendar-dates-until): Use new
interval constructor and accessors.
* test/lisp/calendar/icalendar-recur-tests.el
(icalendar-test-recur-find-secondly-interval)
(icalendar-test-recur-find-minutely-interval)
(icalendar-test-recur-find-hourly-interval)
(icalendar-test-recur-find-daily-interval-w/date)
(icalendar-test-recur-find-daily-interval-w/date-time)
(icalendar-test-recur-find-weekly-interval-w/date)
(icalendar-test-recur-find-weekly-interval-w/date-time)
(icalendar-test-recur-find-monthly-interval)
(icalendar-test-recur-find-yearly-interval)
(icalendar-test-recur-refine-byyearday)
(icalendar-test-recur-refine-bymonth)
(icalendar-test-recur-refine-bymonthday)
(icalendar-test-recur-refine-byday)
(icalendar-test-recur-refine-byhour)
(icalendar-test-recur-refine-byminute)
(icalendar-test-recur-refine-bysecond)
(icalendar-test-recur-subintervals-to-dates)
(icalendar-test-recur-subintervals-to-date-times)
(icalendar-test-rrule-test): Use new interval constructor and accessors.

Rearrange loops when refining subintervals, so that the loop always runs
once but doesn't run a second no-op iteration.  Astonishingly this cuts
the running time of the full test suite by almost 50%.

* lisp/calendar/icalendar-recur.el (icalendar-recur-refine-byyearday)
(icalendar-recur-refine-byweekno)
(icalendar-recur-refine-bymonth)
(icalendar-recur-refine-bymonthday)
(icalendar-recur-refine-byday)
(icalendar-recur-refine-byhour)
(icalendar-recur-refine-byminute)
(icalendar-recur-refine-bysecond): Tighten up loop bounds when refining
subintervals.

Improve performance of `icalendar-recur-tz-observance-on'.  This also
brings about a ~20% performance gain.

* lisp/calendar/icalendar-recur.el
(icalendar-recur-tz-observance-on): Eliminate calculation of previous
interval recurrences when it's unnecessary.  Add a cheap upper bound check to
prevent fully computing recurrences for irrelevant observances.
(icalendar-recur--w/in-locally-p):
(icalendar-recur--w/in-abs-p): New helper functions for the upper bound check.

Other more minor changes:

Improve performance in `icalendar-recur-refine-byday'

* lisp/calendar/icalendar-recur.el (icalendar-recur-refine-byday): Avoid
calculating Gregorian from absolute date unless it's necessary.

Improve performance of BYSETPOS filtering in icalendar-recur.el:
η-reduce `icalendar-recur-make-bysetpos-filter'.
Thanks to Mattias Engdegård for the suggestion and implementation.

* lisp/calendar/icalendar-recur.el
(icalendar-recur-make-bysetpos-filter): Rename to
`icalendar-recur-bysetpos-filter' and avoid `seq-map-indexed'.
(icalendar-recur-recurrences-in-interval): Use new function.
* test/lisp/calendar/icalendar-recur-tests.el
(icalendar-test-recur-bysetpos-filter): Use new function.

Improve sorting performance:
Thanks to Mattias Engdegård for the suggestion and implementation.

* lisp/calendar/icalendar-recur.el (icalendar-recur-refine-byyearday):
(icalendar-recur-refine-byweekno):
(icalendar-recur-refine-bymonthday):
(icalendar-recur-refine-byday): Use :key instead of :lessp in `sort'
calls.

Eliminate `apply-partially' and `seq-take':
Thanks to Mattias Engdegård for the suggestion and implementation.

* lisp/calendar/icalendar-recur.el
(icalendar-recur-recurrences-in-window): Eliminate `apply-partially'.
(icalendar-recur-recurrences-in-interval): Eliminate
`apply-partially' and replace `seq-take' with `take'.

Reduce consing:

* lisp/calendar/icalendar-recur.el
(icalendar-recur-subintervals-to-dates):
(icalendar-recur-recurrences-in-window):
(icalendar-recur-recurrences-in-window-w/end-times):
(icalendar-recur-recurrences-to-count): Replace `append' with `nconc'.

Avoid a few uses of `seq-filter' in common functions in icalendar-ast.el:

* lisp/calendar/icalendar-ast.el (icalendar-ast-node-children-of):
Reimplement filter imperatively.
2026-04-12 12:05:44 +03:00
Stephen Berman
ee9b2db1cf ; Fix last change to 'ls' error message tests
* test/lisp/dired-tests.el (dired-test-ls-error-message):
* test/lisp/files-tests.el
(files-tests-file-name-non-special-insert-directory): Use
`string-match-p' instead of `equal' because the error message may
report e.g. "/bin/ls" even though the value of
`insert-directory-program' is "ls".
2026-04-11 15:40:40 +02:00
Stephen Berman
adfa1e969f Improve tests involving 'ls' error message
* test/lisp/dired-tests.el (dired-test-ls-error-message):
* test/lisp/files-tests.el
(files-tests-file-name-non-special-insert-directory): Make test
comparing the expected 'ls' error message with the string in the
'ls' error buffer more robust (bug#80499).
2026-04-11 12:09:42 +02:00
Stefan Monnier
72ba149cfa (listify-key-sequence): Fix breakage with unibyte chars
* lisp/subr.el (listify-key-sequence): The funny
"7th bit is Meta" applies only to unibyte strings.

* test/lisp/subr-tests.el (subr-listify-key-sequence): New test.
2026-04-09 12:23:26 -04:00
Stephen Gildea
5d9b6c8262 ; time-stamp: rename some internal functions to include "--"
* lisp/time-stamp.el (time-stamp--zformat-from-parsed-options)
(time-stamp--string-internal) (time-stamp--do-letter-case)
(time-stamp--do-number) (time-stamp--filtered-buffer-file-name)
(time-stamp--conv-warn) (time-stamp--once-internal): New names.
* test/lisp/time-stamp-tests.el (define-formatz-tests)
(formatz-find-test-def-function):
Give generated test names "time-stamp-" prefix.
2026-04-07 09:28:32 -07:00
Michael Albinus
5003f5e6e4 * test/lisp/net/tramp-tests.el (tramp-test21-file-links): Extend test. 2026-04-06 10:57:35 +02:00
Philip Kaludercic
9425610ac3
Disable 'package-review-policy' during package-tests
* test/lisp/emacs-lisp/package-tests.el (with-package-test):
Disable package reviewing during testing to not require manual
user input during tests.
2026-04-05 18:29:12 +02:00
Stéphane Marks
e9a51f0819 ; Fix cus-edit setopt test
* test/lisp/cus-edit-tests.el (test-setopt): Change
'test-setopt' message text.
2026-04-03 12:44:54 +02:00
Stefan Monnier
8485e49680 python-tests.el: Fix test failures introduced by commit c1c08f3c9f
* test/lisp/progmodes/python-tests.el (python-ts-mode-dotted-decorator-face-2)
(python-ts-mode-builtin-call-face)
(python-ts-mode-level-fontification-wo-interpolation)
(python-ts-mode-disabled-string-interpolation): Call `font-lock-ensure`
after setting a var that may flush the font-locking.
2026-03-31 09:45:42 -04:00
Stephen Berman
0c961b7778 ; Improve check of 'ls' error message in files-tests.el
* test/lisp/files-tests.el
(files-tests-file-name-non-special-insert-directory): Account for
'ls' error messages which designate 'ls' differently, e.g. as
'gls' or '/bin/ls' and which use different or no quoting of the
file name.
2026-03-28 20:55:53 +01:00
Richard Lawrence
5346417d16 Update gnus-icalendar to use new iCalendar library
This change updates gnus-icalendar.el to use the new iCalendar
library instead of obsolete functions from icalendar.el.
* lisp/gnus/gnus-icalendar.el
(gnus-icalendar-event)
(gnus-icalendar-event:recurring-p)
(gnus-icalendar-event:recurring-interval)
(gnus-icalendar-event:recurring-days)
(gnus-icalendar-event--find-attendee)
(gnus-icalendar-event-from-ical)
(gnus-icalendar-event-from-buffer)
(gnus-icalendar-event--build-reply)
(gnus-icalendar-event-reply-from-buffer)
(gnus-icalendar-event:org-repeat): Reimplement using new iCalendar functions.
(gnus-icalendar-event--attendees-by-type): Rename from
`gnus-icalendar-event--get-attendee-names'.
(gnus-icalendar-event--build-reply): Rename from
`gnus-icalendar-event--build-reply-event-body'.
(gnus-icalendar--format-participant-list): Expect list of
`icalendar-attendee's.  Add docstring.
(Bug#80426)

* test/lisp/gnus/gnus-icalendar-tests.el: Update tests.
2026-03-28 15:43:16 +03:00
Michael Albinus
0de3844f80 Fix file-name-all-completions for symlinked directories in Tramp
* lisp/net/tramp.el (tramp-skeleton-file-name-all-completions):
* lisp/net/tramp-adb.el (tramp-adb-handle-file-name-all-completions):
* lisp/net/tramp-crypt.el (tramp-crypt-handle-file-name-all-completions):
* lisp/net/tramp-fuse.el (tramp-fuse-handle-file-name-all-completions):
* lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-name-all-completions):
* lisp/net/tramp-sh.el (tramp-sh-handle-file-name-all-completions):
* lisp/net/tramp-smb.el (tramp-smb-handle-file-name-all-completions):
* lisp/net/tramp-sudoedit.el
(tramp-sudoedit-handle-file-name-all-completions): Simplify.
* tramp-tests.el (tramp-test32-shell-command): Adapt test.

* lisp/net/tramp-ftp.el (tramp-disable-ange-ftp): Use `seq-difference'.

* lisp/net/tramp-gvfs.el (tramp-gvfs-monitor-process-filter):
Use `thread-last'.

* lisp/net/tramp-sh.el (tramp-sh-handle-insert-directory):
Use `seq-difference'.
(tramp-sh-gio-monitor-process-filter): Use `thread-last'.

* lisp/net/tramp-smb.el (tramp-smb-get-file-entries): Do not add
virtual entry ""; it isn't needed anymore.

* lisp/net/tramp.el (tramp-make-tramp-hop-name): Use `thread-last'.
(tramp-completion-handle-file-directory-p): Use `tramp-prefix-format'.
(tramp-fnac-add-trailing-slash): New defvar.
(tramp-skeleton-file-name-all-completions): Handle also symlinked
directories.
(tramp-skeleton-directory-files): Use `tramp-fnac-add-trailing-slash'.
(tramp-handle-file-name-completion): Use `seq-difference'.
(tramp-handle-make-process): Handle "%w" format specifier.

* test/lisp/net/tramp-tests.el (tramp-test26-file-name-completion)
(tramp-test32-shell-command, tramp-test36-vc-registered): Adapt tests.
2026-03-28 10:03:22 +01:00
Eli Zaretskii
5ec2940e38 ; Another fix fore dired-tests.el 2026-03-28 09:32:27 +03:00