emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

fix/bug-48598 2c50987050 3/3: [CATCH-UP] Synchronize with patch set on t


From: F. Jason Park
Subject: fix/bug-48598 2c50987050 3/3: [CATCH-UP] Synchronize with patch set on tracker
Date: Sat, 28 May 2022 18:23:23 -0400 (EDT)

branch: fix/bug-48598
commit 2c50987050a867dc352a5f2f754b6a1c78760151
Author: F. Jason Park <jp@neverwas.me>
Commit: F. Jason Park <jp@neverwas.me>

    [CATCH-UP] Synchronize with patch set on tracker
---
 etc/ERC-NEWS                                       | 50 ++++++++++++----------
 lisp/erc/erc-backend.el                            |  3 +-
 lisp/erc/erc.el                                    |  3 +-
 .../erc-scenarios-auth-source.el                   |  0
 .../erc-scenarios-base-association-nick.el         |  9 ++--
 .../erc-scenarios-base-association-samenet.el      |  4 +-
 .../erc-scenarios-base-association.el              | 12 ++----
 .../erc-scenarios-base-compat-rename-bouncer.el    | 14 +++---
 .../erc-scenarios-base-misc-regressions.el         |  8 +---
 .../erc-scenarios-base-netid-bouncer-id.el         |  0
 .../erc-scenarios-base-netid-bouncer-recon-base.el |  0
 .../erc-scenarios-base-netid-bouncer-recon-both.el |  0
 .../erc-scenarios-base-netid-bouncer-recon-id.el   |  0
 .../erc-scenarios-base-netid-bouncer.el            |  0
 .../erc-scenarios-base-netid-samenet.el            |  2 +-
 .../erc-scenarios-base-reconnect.el                |  5 +--
 .../erc-scenarios-base-renick.el                   |  5 ---
 .../erc-scenarios-base-reuse-buffers.el            | 18 +++-----
 .../erc-scenarios-base-unstable.el                 |  5 +--
 .../erc-scenarios-base-upstream-recon-soju.el      |  1 +
 .../erc-scenarios-base-upstream-recon-znc.el       |  1 +
 .../{erc-scenarios => }/erc-scenarios-internal.el  |  0
 .../erc-scenarios-join-auth-source.el              |  0
 .../erc-scenarios-join-netid-newcmd-id.el          |  0
 .../erc-scenarios-join-netid-newcmd.el             |  0
 .../erc-scenarios-join-netid-recon-id.el           |  0
 .../erc-scenarios-join-netid-recon.el              |  0
 .../erc/{erc-scenarios => }/erc-scenarios-misc.el  |  6 +--
 .../erc-scenarios-services-misc.el                 |  0
 .../base/assoc}/bouncer-history/barnet.eld         |  0
 .../base/assoc}/bouncer-history/foonet.eld         |  0
 .../base/assoc/bumped/again.eld}                   |  0
 .../base/assoc/bumped/foisted.eld}                 |  0
 .../base/assoc/bumped/refoisted.eld}               |  0
 .../base/assoc/bumped}/renicked.eld                |  0
 .../base/assoc}/multi-net/barnet.eld               |  0
 .../base/assoc}/multi-net/foonet.eld               |  0
 .../base/assoc/reconplay/again.eld}                |  0
 .../base/assoc/reconplay}/foonet.eld               |  0
 .../base/assoc/samenet}/chester.eld                |  0
 .../base/assoc/samenet}/tester.eld                 |  0
 .../base/assoc/samenet/tester2.eld}                |  0
 .../resources/base/auth-source/foonet.eld          |  0
 .../resources/base/auth-source/nopass.eld          |  0
 .../base/channel-buffer-revival/foonet.eld         |  0
 .../resources/base/flood/soju.eld                  |  0
 .../resources/base/gapless-connect/barnet.eld      |  0
 .../resources/base/gapless-connect/foonet.eld      |  0
 .../resources/base/gapless-connect/pass-stub.eld   |  0
 .../resources/base/mask-target-routing/foonet.eld  |  0
 .../base/netid}/bouncer/barnet-again.eld           |  2 +-
 .../base/netid}/bouncer/barnet-drop.eld            |  0
 .../base/netid}/bouncer/barnet.eld                 |  0
 .../base/netid}/bouncer/foonet-again.eld           |  2 +-
 .../base/netid}/bouncer/foonet-drop.eld            |  0
 .../base/netid}/bouncer/foonet.eld                 |  0
 .../base/netid}/bouncer/stub-again.eld             |  0
 .../base/netid/samenet}/chester.eld                |  0
 .../base/netid/samenet}/tester.eld                 |  0
 .../resources/base/reconnect/aborted-dupe.eld      |  0
 .../resources/base/reconnect/aborted.eld           |  0
 .../resources/base/reconnect/options-again.eld     |  0
 .../resources/base/reconnect/options.eld           |  0
 .../resources/base/reconnect/timer-last.eld        |  1 +
 .../resources/base/reconnect/timer.eld             |  0
 .../base/renick/queries/bouncer-barnet.eld         |  0
 .../base/renick/queries/bouncer-foonet.eld         |  0
 .../resources/base/renick/queries/solo.eld         |  0
 .../resources/base/renick/self/auto.eld            |  0
 .../resources/base/renick/self/manual.eld          |  0
 .../resources/base/renick/self/qual-chester.eld    |  0
 .../resources/base/renick/self/qual-tester.eld     |  0
 .../base/reuse-buffers/channel}/barnet.eld         |  0
 .../base/reuse-buffers/channel}/foonet.eld         |  0
 .../base/reuse-buffers/server}/barnet.eld          |  0
 .../base/reuse-buffers/server}/foonet.eld          |  0
 .../base/upstream-reconnect/soju-barnet.eld        |  0
 .../base/upstream-reconnect/soju-foonet.eld        |  0
 .../base/upstream-reconnect/znc-barnet.eld         |  0
 .../base/upstream-reconnect/znc-foonet.eld         |  0
 .../{erc-scenarios => }/resources/erc-d/erc-d-i.el |  0
 .../{erc-scenarios => }/resources/erc-d/erc-d-t.el |  0
 .../resources/erc-d/erc-d-tests.el                 | 25 +++++++++++
 .../{erc-scenarios => }/resources/erc-d/erc-d-u.el |  0
 .../{erc-scenarios => }/resources/erc-d/erc-d.el   |  0
 .../resources/erc-d/resources/basic.eld            |  0
 .../resources/erc-d/resources/depleted.eld         |  0
 .../resources/erc-d/resources/drop-a.eld           |  0
 .../resources/erc-d/resources/drop-b.eld           |  0
 .../resources/erc-d/resources/dynamic-barnet.eld   |  0
 .../resources/erc-d/resources/dynamic-foonet.eld   |  0
 .../resources/erc-d/resources/dynamic-stub.eld     |  0
 .../resources/erc-d/resources/dynamic.eld          |  0
 .../resources/erc-d/resources/eof.eld              |  0
 .../resources/erc-d/resources/fuzzy.eld            |  0
 .../resources/erc-d/resources/incremental.eld      |  0
 .../resources/erc-d/resources/irc-parser-tests.eld |  0
 .../resources/erc-d/resources/linger-multi-a.eld   |  0
 .../resources/erc-d/resources/linger-multi-b.eld   |  0
 .../resources/erc-d/resources/linger.eld           |  0
 .../resources/erc-d/resources/no-block.eld         |  0
 .../resources/erc-d/resources/no-match.eld         |  0
 .../resources/erc-d/resources/no-pong.eld          |  0
 .../resources/erc-d/resources/nonstandard.eld      |  0
 .../resources/erc-d/resources/proxy-barnet.eld     |  0
 .../resources/erc-d/resources/proxy-foonet.eld     |  0
 .../resources/erc-d/resources/proxy-solo.eld       |  0
 .../resources/erc-d/resources/proxy-subprocess.el  |  0
 .../resources/erc-d/resources/timeout.eld          |  0
 .../resources/erc-d/resources/unexpected.eld       |  0
 .../resources/erc-scenarios-common.el              | 30 +++++--------
 .../resources/join/auth-source/foonet.eld          |  0
 .../resources/join/legacy/foonet.eld               |  0
 .../resources/join/network-id/barnet.eld           |  0
 .../resources/join/network-id/foonet-again.eld     |  0
 .../resources/join/network-id/foonet.eld           |  0
 .../resources/join/reconnect/foonet-again.eld      |  0
 .../resources/join/reconnect/foonet.eld            |  0
 .../networks/announced-missing/foonet.eld          |  0
 .../resources/services/auth-source/libera.eld      |  0
 .../resources/services/password/libera.eld         |  0
 121 files changed, 101 insertions(+), 105 deletions(-)

diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index 0ac3df1ba1..b97cdfed52 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -24,9 +24,10 @@ confusion remain but will die out with the adoption of 
emerging
 protocol extensions.
 
 ** Option 'erc-rename-buffers' deprecated.
-The promise of its old "on" state are now fully realized and enabled
-permanently by default.  Its old behavior when disabled has been
-preserved and will remain available (with warnings) for years to come.
+The promises made by its old "on" state are now fully realized and
+enabled permanently by default.  Its old behavior when disabled has
+been preserved and will remain available (with warnings) for years to
+come.
 
 ** Option 'erc-reuse-buffers' deprecated.
 This ancient option has been a constant source of confusion, as
@@ -52,13 +53,15 @@ transition to SASL-based authentication still underway, 
users may feel
 left in the lurch to endure yet another release cycle of backtick
 hell.  For some, auth-source may provide a workaround in the form of
 nonstandard server passwords.  See the "Connection" node in the manual
-under the subheading "Password".  If you require SASL immediately,
-please participate in ERC development by volunteering to try (and give
-feedback on) edge features, one of which is SASL.  All known external
-offerings, past and present, are makeshift efforts whose use is
-discouraged.  This includes the instructions on Libera.Chat's website.
+under the subheading "Password".
 
-** Username argument for entry point commands.
+If you require SASL immediately, please participate in ERC development
+by volunteering to try (and give feedback on) edge features, one of
+which is SASL.  All known external offerings, past and present, are
+makeshift efforts whose use is discouraged.  This includes the
+instructions on Libera.Chat's website.
+
+** Username argument for entry-point commands.
 Commands 'erc' and 'erc-tls' now accept a ':user' keyword argument,
 which, when present, becomes the first argument passed to the "USER"
 IRC command.  The traditional way of setting this globally, via
@@ -70,8 +73,8 @@ of newly created target buffers, especially during 
reconnection.
 
 ** Miscellaneous behavioral changes impacting the user experience.
 A bug has been fixed that saw prompts being mangled, doubled, or
-erased in server buffers upon disconnection.  Instead, prompts now
-collapse into an alternate form designated by the option
+erased in server buffers upon disconnection.  Instead, input prompts
+now collapse into an alternate form designated by the option
 'erc-prompt-hidden'.  Behavior differs for query and channel buffers
 but can be fine-tuned via the repurposed, formerly abandoned option
 'erc-hide-prompt'.
@@ -85,17 +88,20 @@ correctly.
 ** Miscellaneous behavioral changes in the library API.
 The function 'erc-network' always returns non-nil in server and target
 buffers belonging to a successfully established IRC connection, even
-after that connection is closed.  In 5.4, support for network symbols
-as keys was added for 'erc-autojoin-channels-alist'.  This has been
-extended to include explicit symbols passed to 'erc-tls' and 'erc' as
-so-called network-context identifiers via a new ':id' keyword.  The
-latter carries wider significance beyond autojoin and can be used for
-uniquely and unequivocally identifying a connection.  The function
-'erc-auto-query', unused internally, and basically inscrutable when
-read, has been deprecated with no public replacement.  Which raises
-the issue: if you use ERC as a library and need something that's only
-offered internally, please lobby for its exporting by writing to
-emacs-erc@gnu.org.
+after that connection has been closed.
+
+In 5.4, support for network symbols as keys was added for
+'erc-autojoin-channels-alist'.  This has been extended to include
+explicit symbols passed to 'erc-tls' and 'erc' as so-called
+network-context identifiers via a new ':id' keyword.  The latter
+carries wider significance beyond autojoin and can be used for
+unequivocally identifying a connection in a human-readable way.
+
+The function 'erc-auto-query', unused internally, and basically
+inscrutable when read, has been deprecated with no public replacement.
+Which raises the issue: if you use ERC as a library and need something
+only offered internally, please lobby to have it exported by writing
+to emacs-erc@gnu.org.
 
 
 * Changes in ERC 5.4.1
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 7e174a6fd1..362828a861 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -328,8 +328,7 @@ This will only be consulted if the coding system in
   :version "24.1"
   :type '(repeat coding-system))
 
-(defcustom erc-server-coding-system (if (and (fboundp 'coding-system-p)
-                                             (coding-system-p 'undecided)
+(defcustom erc-server-coding-system (if (and (coding-system-p 'undecided)
                                              (coding-system-p 'utf-8))
                                         '(utf-8 . undecided)
                                       nil)
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index c2b7dacf84..8c78a653ec 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1439,7 +1439,8 @@ if ARG is omitted or nil.
 (defvar-local erc--target nil
   "Info about a buffer's target, if any.")
 
-;; Temporary internal getter to ease transition to `erc--target' everywhere.
+;; Temporary internal getter to ease transition to `erc--target'
+;; everywhere.  Will be replaced by updated `erc-default-target'.
 (defun erc--default-target ()
   "Return target string or nil."
   (when erc--target
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-auth-source.el 
b/test/lisp/erc/erc-scenarios-auth-source.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-auth-source.el
rename to test/lisp/erc/erc-scenarios-auth-source.el
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-association-nick.el 
b/test/lisp/erc/erc-scenarios-base-association-nick.el
similarity index 95%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-association-nick.el
rename to test/lisp/erc/erc-scenarios-base-association-nick.el
index 75b0e8d654..b75fa85e11 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-association-nick.el
+++ b/test/lisp/erc/erc-scenarios-base-association-nick.el
@@ -36,8 +36,8 @@
 (ert-deftest erc-scenarios-base-association-nick-bumped ()
   :tags '(:expensive-test)
   (erc-scenarios-common-with-cleanup
-      ((erc-scenarios-common-dialog "base/association/nick-bump")
-       (dumb-server (erc-d-run "localhost" t 'renicked 'renicked-again))
+      ((erc-scenarios-common-dialog "base/assoc/bumped")
+       (dumb-server (erc-d-run "localhost" t 'renicked 'again))
        (port (process-contact dumb-server :service))
        (expect (erc-d-t-make-expecter))
        (erc-server-flood-penalty 0.5)
@@ -102,9 +102,8 @@
 (ert-deftest erc-scenarios-base-association-nick-bumped-mandated-renick ()
   :tags '(:expensive-test)
   (erc-scenarios-common-with-cleanup
-      ((erc-scenarios-common-dialog "base/association/nick-bump")
-       (dumb-server (erc-d-run "localhost" t
-                               'renicked-foisted 'renicked-foisted-again))
+      ((erc-scenarios-common-dialog "base/assoc/bumped")
+       (dumb-server (erc-d-run "localhost" t 'foisted 'refoisted))
        (port (process-contact dumb-server :service))
        (expect (erc-d-t-make-expecter))
        (erc-server-flood-penalty 0.5)
diff --git 
a/test/lisp/erc/erc-scenarios/erc-scenarios-base-association-samenet.el 
b/test/lisp/erc/erc-scenarios-base-association-samenet.el
similarity index 98%
rename from 
test/lisp/erc/erc-scenarios/erc-scenarios-base-association-samenet.el
rename to test/lisp/erc/erc-scenarios-base-association-samenet.el
index f7b0553ee3..b7c7079df3 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-association-samenet.el
+++ b/test/lisp/erc/erc-scenarios-base-association-samenet.el
@@ -33,8 +33,8 @@
 
 (defun erc-scenarios-common--base-association-samenet (after)
   (erc-scenarios-common-with-cleanup
-      ((erc-scenarios-common-dialog "base/association/same-network")
-       (dumb-server (erc-d-run "localhost" t 'tester 'chester 'tester-again))
+      ((erc-scenarios-common-dialog "base/assoc/samenet")
+       (dumb-server (erc-d-run "localhost" t 'tester 'chester 'tester2))
        (port (process-contact dumb-server :service))
        (expect (erc-d-t-make-expecter))
        (erc-server-flood-penalty 0.5)
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-association.el 
b/test/lisp/erc/erc-scenarios-base-association.el
similarity index 94%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-association.el
rename to test/lisp/erc/erc-scenarios-base-association.el
index 47fc4eed17..acc679cd51 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-association.el
+++ b/test/lisp/erc/erc-scenarios-base-association.el
@@ -35,9 +35,8 @@
 
 (defun erc-scenarios-common--base-association-multi-net (second-join)
   (erc-scenarios-common-with-cleanup
-      ((erc-scenarios-common-dialog "base/association/multi-net")
+      ((erc-scenarios-common-dialog "base/assoc/multi-net")
        (erc-server-flood-penalty 0.1)
-       (erc-d-linger-secs 1)
        (dumb-server-foonet-buffer (get-buffer-create "*server-foonet*"))
        (dumb-server-barnet-buffer (get-buffer-create "*server-barnet*"))
        (dumb-server-foonet (erc-d-run "localhost" t "server-foonet" 'foonet))
@@ -118,9 +117,8 @@
 (ert-deftest erc-scenarios-base-association-bouncer-history ()
   :tags '(:expensive-test)
   (erc-scenarios-common-with-cleanup
-      ((erc-scenarios-common-dialog "base/association/bouncer-history")
+      ((erc-scenarios-common-dialog "base/assoc/bouncer-history")
        (erc-d-t-cleanup-sleep-secs 1)
-       (erc-d-linger-secs 2)
        (dumb-server (erc-d-run "localhost" t 'foonet 'barnet))
        (port (process-contact dumb-server :service))
        (erc-server-flood-penalty 0.5)
@@ -187,10 +185,8 @@
 
     (ert-info ("All output sent")
       (with-current-buffer "#chan@foonet"
-        (while (accept-process-output erc-server-process-foo))
-        (erc-d-t-search-for 3 "please your lordship"))
+        (erc-d-t-search-for 10 "please your lordship"))
       (with-current-buffer "#chan@barnet"
-        (while (accept-process-output erc-server-process-bar))
-        (erc-d-t-search-for 30 "I'll bid adieu")))))
+        (erc-d-t-search-for 10 "I'll bid adieu")))))
 
 ;;; erc-scenarios-base-association.el ends here
diff --git 
a/test/lisp/erc/erc-scenarios/erc-scenarios-base-compat-rename-bouncer.el 
b/test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el
similarity index 93%
rename from 
test/lisp/erc/erc-scenarios/erc-scenarios-base-compat-rename-bouncer.el
rename to test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el
index 9adc402e0a..474739d01b 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-compat-rename-bouncer.el
+++ b/test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el
@@ -34,7 +34,7 @@
   (erc-scenarios-common-with-cleanup
       ;; These actually *are* (assigned-)network-id related because
       ;; our kludge assigns one after the fact.
-      ((erc-scenarios-common-dialog "base/network-id/bouncer")
+      ((erc-scenarios-common-dialog "base/netid/bouncer")
        (erc-d-t-cleanup-sleep-secs 1)
        (erc-server-flood-penalty 0.1)
        (dumb-server (apply #'erc-d-run "localhost" t dialogs))
@@ -98,18 +98,16 @@
         (erc-d-t-search-for 1 "<bob>")
         (erc-d-t-absent-for 0.1 "<joe>")
         (should (eq erc-server-process erc-server-process-foo))
-        (while (accept-process-output erc-server-process-foo))
-        (erc-d-t-search-for 1 "ape is dead")
-        (should-not (erc-server-process-alive))))
+        (erc-d-t-search-for 10 "ape is dead")
+        (erc-d-t-wait-for 5 (not (erc-server-process-alive)))))
 
     (ert-info ("#chan@127.0.0.1:$port<2> is exclusive to barnet")
       (with-current-buffer chan-buf-bar
         (erc-d-t-search-for 1 "<joe>")
         (erc-d-t-absent-for 0.1 "<bob>")
         (should (eq erc-server-process erc-server-process-bar))
-        (while (accept-process-output erc-server-process-bar))
-        (erc-d-t-search-for 1 "keeps you from dishonour")
-        (should-not (erc-server-process-alive))))
+        (erc-d-t-search-for 10 "keeps you from dishonour")
+        (erc-d-t-wait-for 5 (not (erc-server-process-alive)))))
 
     (when more (funcall more))))
 
@@ -149,14 +147,12 @@
                (with-current-buffer  (format "#chan@127.0.0.1:%d" port)
                  (erc-d-t-search-for 1 "<alice>")
                  (erc-d-t-absent-for 0.1 "<joe>")
-                 (while (accept-process-output erc-server-process))
                  (erc-d-t-search-for 10 "please your lordship")))
 
              (ert-info ("#chan@barnet is exclusive to barnet")
                (with-current-buffer  (format "#chan@127.0.0.1:%d<2>" port)
                  (erc-d-t-search-for 1 "<joe>")
                  (erc-d-t-absent-for 0.1 "<bob>")
-                 (while (accept-process-output erc-server-process))
                  (erc-d-t-search-for 1 "much in private")))
 
              ;; Ordering deterministic here even though not so for reconnect
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-misc-regressions.el 
b/test/lisp/erc/erc-scenarios-base-misc-regressions.el
similarity index 95%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-misc-regressions.el
rename to test/lisp/erc/erc-scenarios-base-misc-regressions.el
index 70214a92f7..8f5700df14 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-misc-regressions.el
+++ b/test/lisp/erc/erc-scenarios-base-misc-regressions.el
@@ -40,7 +40,6 @@ Originally from scenario rebuffed/gapless as explained in 
Bug#48598:
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/gapless-connect")
        (erc-server-flood-penalty 0.1)
-       (erc-d-linger-secs 4)
        (erc-server-flood-penalty erc-server-flood-penalty)
        (erc-d-tmpl-vars '((token . (group (| "barnet" "foonet")))))
        (erc-d-match-handlers
@@ -76,13 +75,11 @@ Originally from scenario rebuffed/gapless as explained in 
Bug#48598:
       (funcall expect 2 "marked as being away"))
 
     (with-current-buffer (erc-d-t-wait-for 20 (get-buffer "#bar"))
-      (while (accept-process-output erc-server-process))
-      (funcall expect 2 "was created on")
+      (funcall expect 10 "was created on")
       (funcall expect 2 "his second fit"))
 
     (with-current-buffer (erc-d-t-wait-for 20 (get-buffer "#foo"))
-      (while (accept-process-output erc-server-process))
-      (funcall expect 2 "was created on")
+      (funcall expect 10 "was created on")
       (funcall expect 2 "no use of him"))))
 
 ;; This defends against a regression in `erc-server-PRIVMSG' caused by
@@ -95,7 +92,6 @@ Originally from scenario rebuffed/gapless as explained in 
Bug#48598:
 
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/channel-buffer-revival")
-       (erc-d-linger-secs 0.5)
        (dumb-server (erc-d-run "localhost" t 'foonet))
        (port (process-contact dumb-server :service))
        erc-autojoin-channels-alist
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer-id.el 
b/test/lisp/erc/erc-scenarios-base-netid-bouncer-id.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer-id.el
rename to test/lisp/erc/erc-scenarios-base-netid-bouncer-id.el
diff --git 
a/test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer-recon-base.el 
b/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer-recon-base.el
rename to test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el
diff --git 
a/test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer-recon-both.el 
b/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer-recon-both.el
rename to test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el
diff --git 
a/test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer-recon-id.el 
b/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer-recon-id.el
rename to test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer.el 
b/test/lisp/erc/erc-scenarios-base-netid-bouncer.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-bouncer.el
rename to test/lisp/erc/erc-scenarios-base-netid-bouncer.el
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-samenet.el 
b/test/lisp/erc/erc-scenarios-base-netid-samenet.el
similarity index 98%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-samenet.el
rename to test/lisp/erc/erc-scenarios-base-netid-samenet.el
index d028fefd72..248144d6f9 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-netid-samenet.el
+++ b/test/lisp/erc/erc-scenarios-base-netid-samenet.el
@@ -31,7 +31,7 @@
      (&key nick id server chan
            &aux (nick-b nick) (id-b id) (serv-buf-b server) (chan-buf-b chan)))
   (erc-scenarios-common-with-cleanup
-      ((erc-scenarios-common-dialog "base/network-id/same-network")
+      ((erc-scenarios-common-dialog "base/netid/samenet")
        (dumb-server (erc-d-run "localhost" t 'tester 'chester))
        (port (process-contact dumb-server :service))
        (expect (erc-d-t-make-expecter))
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-reconnect.el 
b/test/lisp/erc/erc-scenarios-base-reconnect.el
similarity index 98%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-reconnect.el
rename to test/lisp/erc/erc-scenarios-base-reconnect.el
index 06143a7a0c..30d692058d 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-reconnect.el
+++ b/test/lisp/erc/erc-scenarios-base-reconnect.el
@@ -161,11 +161,10 @@
 (ert-deftest erc-scenarios-base-association-reconnect-playback ()
   :tags '(:expensive-test)
   (erc-scenarios-common-with-cleanup
-      ((erc-scenarios-common-dialog "base/association/reconnect-playback")
-       (erc-d-linger-secs 0.5)
+      ((erc-scenarios-common-dialog "base/assoc/reconplay")
        (erc-server-flood-penalty 0.1)
        (erc-server-flood-margin 30)
-       (dumb-server (erc-d-run "localhost" t 'foonet 'foonet-again))
+       (dumb-server (erc-d-run "localhost" t 'foonet 'again))
        (port (process-contact dumb-server :service))
        (expect (erc-d-t-make-expecter))
        erc-autojoin-channels-alist
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-renick.el 
b/test/lisp/erc/erc-scenarios-base-renick.el
similarity index 98%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-renick.el
rename to test/lisp/erc/erc-scenarios-base-renick.el
index 7daf4567b2..a69310a368 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-renick.el
+++ b/test/lisp/erc/erc-scenarios-base-renick.el
@@ -31,7 +31,6 @@
   :tags '(:expensive-test)
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/renick/self")
-       (erc-d-linger-secs 0.1)
        (erc-server-flood-penalty 0.1)
        (dumb-server (erc-d-run "localhost" t 'auto))
        (port (process-contact dumb-server :service))
@@ -62,7 +61,6 @@
   :tags '(:expensive-test)
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/renick/self")
-       (erc-d-linger-secs 0.1)
        (erc-server-flood-penalty 0.1)
        (dumb-server (erc-d-run "localhost" t 'manual))
        (port (process-contact dumb-server :service))
@@ -158,7 +156,6 @@
 
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/renick/queries")
-       (erc-d-linger-secs 0.1)
        (erc-server-flood-penalty 0.1)
        (erc-server-flood-margin 20)
        (dumb-server (erc-d-run "localhost" t 'solo))
@@ -214,7 +211,6 @@
 
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/renick/queries")
-       (erc-d-linger-secs 1.5)
        (erc-server-flood-penalty 0.1)
        (erc-server-flood-margin 30)
        (dumb-server (erc-d-run "localhost" t 'bouncer-foonet 'bouncer-barnet))
@@ -304,7 +300,6 @@
     (with-current-buffer "#chan@barnet"
       (funcall expect 10 "is now known as frenemy")
       (should-not (search-forward "now known as frenemy" nil t))
-      (while (accept-process-output erc-server-process))
       (erc-d-t-search-for 25 "I have lost"))))
 
 ;;; erc-scenarios-base-renick.el ends here
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-reuse-buffers.el 
b/test/lisp/erc/erc-scenarios-base-reuse-buffers.el
similarity index 95%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-reuse-buffers.el
rename to test/lisp/erc/erc-scenarios-base-reuse-buffers.el
index 57b0a29c15..a453e5d170 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-reuse-buffers.el
+++ b/test/lisp/erc/erc-scenarios-base-reuse-buffers.el
@@ -31,8 +31,7 @@ Overlaps some with `clash-of-chans/uniquify'.  Adapted from
 rebuffed/reuseless, described in Bug#48598: 28.0.50; buffer-naming
 collisions involving bouncers in ERC.  Run EXTRA."
   (erc-scenarios-common-with-cleanup
-      ((erc-d-linger-secs 1)
-       (dumb-server (erc-d-run "localhost" t 'foonet 'barnet))
+      ((dumb-server (erc-d-run "localhost" t 'foonet 'barnet))
        (port (process-contact dumb-server :service))
        erc-autojoin-channels-alist)
 
@@ -68,10 +67,9 @@ collisions involving bouncers in ERC.  Run EXTRA."
   :tags '(:expensive-test)
   (with-suppressed-warnings ((obsolete erc-reuse-buffers))
     (should erc-reuse-buffers))
-  (let ((erc-scenarios-common-dialog "base/reuse-buffers/server-buffers"))
+  (let ((erc-scenarios-common-dialog "base/reuse-buffers/server"))
     (erc-scenarios-common-with-cleanup
-        ((erc-d-linger-secs 1)
-         (dumb-server (erc-d-run "localhost" t 'foonet 'barnet))
+        ((dumb-server (erc-d-run "localhost" t 'foonet 'barnet))
          (port (process-contact dumb-server :service))
          erc-autojoin-channels-alist)
 
@@ -105,7 +103,7 @@ collisions involving bouncers in ERC.  Run EXTRA."
   :tags '(:expensive-test)
   (with-suppressed-warnings ((obsolete erc-reuse-buffers))
     (should erc-reuse-buffers)
-    (let ((erc-scenarios-common-dialog "base/reuse-buffers/server-buffers")
+    (let ((erc-scenarios-common-dialog "base/reuse-buffers/server")
           erc-reuse-buffers)
       (erc-scenarios-common--base-reuse-buffers-server-buffers nil))))
 
@@ -214,11 +212,9 @@ Adapted from scenario clash-of-chans/uniquify described in 
Bug#48598:
 
     (ert-info ("All output sent")
       (with-current-buffer "#chan/127.0.0.1<3>"
-        (while (accept-process-output server-process-foo))
-        (funcall expect 3 "most lively"))
+        (funcall expect 10 "most lively"))
       (with-current-buffer "#chan/127.0.0.1<4>"
-        (while (accept-process-output server-process-bar))
-        (funcall expect 3 "soul black")))
+        (funcall expect 10 "soul black")))
 
     ;; TODO ensure the exact <N>'s aren't reassigned during killing as
     ;; they are when the option is on.
@@ -233,7 +229,7 @@ Adapted from scenario clash-of-chans/uniquify described in 
Bug#48598:
   :tags '(:expensive-test)
   (with-suppressed-warnings ((obsolete erc-reuse-buffers))
     (should erc-reuse-buffers)
-    (let ((erc-scenarios-common-dialog "base/reuse-buffers/channel-buffers")
+    (let ((erc-scenarios-common-dialog "base/reuse-buffers/channel")
           (erc-server-flood-penalty 0.1)
           erc-reuse-buffers)
       (erc-scenarios-common--base-reuse-buffers-server-buffers
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-base-unstable.el 
b/test/lisp/erc/erc-scenarios-base-unstable.el
similarity index 96%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-unstable.el
rename to test/lisp/erc/erc-scenarios-base-unstable.el
index e389619ddc..82de3c19aa 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-unstable.el
+++ b/test/lisp/erc/erc-scenarios-base-unstable.el
@@ -32,11 +32,9 @@
   (skip-unless (featurep 'make-network-process '(:family local)))
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/renick/self")
-       (erc-d-linger-secs 0.1)
        (erc-server-flood-penalty 0.1)
        (sock (expand-file-name "erc-d.sock" temporary-file-directory))
-       (erc-scenarios-common-extra-teardown (lambda ()
-                                              (delete-file sock)))
+       (erc-scenarios-common-extra-teardown (lambda () (delete-file sock)))
        (erc-server-connect-function
         (lambda (n b _ p &rest r)
           (apply #'make-network-process
@@ -70,7 +68,6 @@
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/reconnect")
        (erc-d-t-cleanup-sleep-secs 1)
-       (erc-d-linger-secs 0.5)
        (dumb-server (erc-d-run "localhost" t 'aborted 'aborted-dupe))
        (port (process-contact dumb-server :service))
        erc-autojoin-channels-alist
diff --git 
a/test/lisp/erc/erc-scenarios/erc-scenarios-base-upstream-recon-soju.el 
b/test/lisp/erc/erc-scenarios-base-upstream-recon-soju.el
similarity index 98%
rename from 
test/lisp/erc/erc-scenarios/erc-scenarios-base-upstream-recon-soju.el
rename to test/lisp/erc/erc-scenarios-base-upstream-recon-soju.el
index a3b2865542..5a5b363f31 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-upstream-recon-soju.el
+++ b/test/lisp/erc/erc-scenarios-base-upstream-recon-soju.el
@@ -28,6 +28,7 @@
     (require 'erc-scenarios-common)))
 
 (ert-deftest erc-scenarios-upstream-recon--soju ()
+  :tags '(:expensive-test)
   (erc-scenarios-common--upstream-reconnect
    (lambda ()
      (with-current-buffer "foonet"
diff --git 
a/test/lisp/erc/erc-scenarios/erc-scenarios-base-upstream-recon-znc.el 
b/test/lisp/erc/erc-scenarios-base-upstream-recon-znc.el
similarity index 98%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-base-upstream-recon-znc.el
rename to test/lisp/erc/erc-scenarios-base-upstream-recon-znc.el
index f79dca4895..6e9a217245 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-base-upstream-recon-znc.el
+++ b/test/lisp/erc/erc-scenarios-base-upstream-recon-znc.el
@@ -28,6 +28,7 @@
     (require 'erc-scenarios-common)))
 
 (ert-deftest erc-scenarios-upstream-recon--znc ()
+  :tags '(:expensive-test)
   (erc-scenarios-common--upstream-reconnect
    (lambda ()
      (with-current-buffer "*status@foonet"
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-internal.el 
b/test/lisp/erc/erc-scenarios-internal.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-internal.el
rename to test/lisp/erc/erc-scenarios-internal.el
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-join-auth-source.el 
b/test/lisp/erc/erc-scenarios-join-auth-source.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-join-auth-source.el
rename to test/lisp/erc/erc-scenarios-join-auth-source.el
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-join-netid-newcmd-id.el 
b/test/lisp/erc/erc-scenarios-join-netid-newcmd-id.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-join-netid-newcmd-id.el
rename to test/lisp/erc/erc-scenarios-join-netid-newcmd-id.el
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-join-netid-newcmd.el 
b/test/lisp/erc/erc-scenarios-join-netid-newcmd.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-join-netid-newcmd.el
rename to test/lisp/erc/erc-scenarios-join-netid-newcmd.el
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-join-netid-recon-id.el 
b/test/lisp/erc/erc-scenarios-join-netid-recon-id.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-join-netid-recon-id.el
rename to test/lisp/erc/erc-scenarios-join-netid-recon-id.el
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-join-netid-recon.el 
b/test/lisp/erc/erc-scenarios-join-netid-recon.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-join-netid-recon.el
rename to test/lisp/erc/erc-scenarios-join-netid-recon.el
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-misc.el 
b/test/lisp/erc/erc-scenarios-misc.el
similarity index 96%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-misc.el
rename to test/lisp/erc/erc-scenarios-misc.el
index f65041c97c..9d6d5bc1d6 100644
--- a/test/lisp/erc/erc-scenarios/erc-scenarios-misc.el
+++ b/test/lisp/erc/erc-scenarios-misc.el
@@ -29,7 +29,6 @@
   :tags '(:expensive-test)
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/flood")
-       (erc-d-linger-secs 0.8)
        (dumb-server (erc-d-run "localhost" t 'soju))
        (port (process-contact dumb-server :service))
        (erc-server-flood-penalty 0.5) ; this ratio MUST match
@@ -77,8 +76,7 @@
       (with-current-buffer "#chan/foonet"
         (funcall expect 8 "Some man or other"))
       (with-current-buffer "#chan/barnet"
-        (while (accept-process-output erc-server-process))
-        (funcall expect 5 "That's he that was Othello")))))
+        (funcall expect 10 "That's he that was Othello")))))
 
 ;; Corner case demoing fallback behavior for an absent 004 RPL but a
 ;; present 422 or 375.  If this is unlikely enough, remove or guard
@@ -89,7 +87,6 @@
   :tags '(:expensive-test)
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "networks/announced-missing")
-       (erc-d-linger-secs 0.5)
        (expect (erc-d-t-make-expecter))
        (dumb-server (erc-d-run "localhost" t 'foonet))
        (port (process-contact dumb-server :service)))
@@ -114,7 +111,6 @@
   :tags '(:expensive-test)
   (erc-scenarios-common-with-cleanup
       ((erc-scenarios-common-dialog "base/mask-target-routing")
-       (erc-d-linger-secs 0.5)
        (dumb-server (erc-d-run "localhost" t 'foonet))
        (port (process-contact dumb-server :service))
        (expect (erc-d-t-make-expecter)))
diff --git a/test/lisp/erc/erc-scenarios/erc-scenarios-services-misc.el 
b/test/lisp/erc/erc-scenarios-services-misc.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/erc-scenarios-services-misc.el
rename to test/lisp/erc/erc-scenarios-services-misc.el
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/bouncer-history/barnet.eld
 b/test/lisp/erc/resources/base/assoc/bouncer-history/barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/bouncer-history/barnet.eld
rename to test/lisp/erc/resources/base/assoc/bouncer-history/barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/bouncer-history/foonet.eld
 b/test/lisp/erc/resources/base/assoc/bouncer-history/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/bouncer-history/foonet.eld
rename to test/lisp/erc/resources/base/assoc/bouncer-history/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/nick-bump/renicked-again.eld
 b/test/lisp/erc/resources/base/assoc/bumped/again.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/nick-bump/renicked-again.eld
rename to test/lisp/erc/resources/base/assoc/bumped/again.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/nick-bump/renicked-foisted.eld
 b/test/lisp/erc/resources/base/assoc/bumped/foisted.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/nick-bump/renicked-foisted.eld
rename to test/lisp/erc/resources/base/assoc/bumped/foisted.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/nick-bump/renicked-foisted-again.eld
 b/test/lisp/erc/resources/base/assoc/bumped/refoisted.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/nick-bump/renicked-foisted-again.eld
rename to test/lisp/erc/resources/base/assoc/bumped/refoisted.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/nick-bump/renicked.eld 
b/test/lisp/erc/resources/base/assoc/bumped/renicked.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/nick-bump/renicked.eld
rename to test/lisp/erc/resources/base/assoc/bumped/renicked.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/multi-net/barnet.eld 
b/test/lisp/erc/resources/base/assoc/multi-net/barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/multi-net/barnet.eld
rename to test/lisp/erc/resources/base/assoc/multi-net/barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/multi-net/foonet.eld 
b/test/lisp/erc/resources/base/assoc/multi-net/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/multi-net/foonet.eld
rename to test/lisp/erc/resources/base/assoc/multi-net/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/reconnect-playback/foonet-again.eld
 b/test/lisp/erc/resources/base/assoc/reconplay/again.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/reconnect-playback/foonet-again.eld
rename to test/lisp/erc/resources/base/assoc/reconplay/again.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/reconnect-playback/foonet.eld
 b/test/lisp/erc/resources/base/assoc/reconplay/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/reconnect-playback/foonet.eld
rename to test/lisp/erc/resources/base/assoc/reconplay/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/same-network/chester.eld
 b/test/lisp/erc/resources/base/assoc/samenet/chester.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/same-network/chester.eld
rename to test/lisp/erc/resources/base/assoc/samenet/chester.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/same-network/tester.eld
 b/test/lisp/erc/resources/base/assoc/samenet/tester.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/same-network/tester.eld
rename to test/lisp/erc/resources/base/assoc/samenet/tester.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/association/same-network/tester-again.eld
 b/test/lisp/erc/resources/base/assoc/samenet/tester2.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/association/same-network/tester-again.eld
rename to test/lisp/erc/resources/base/assoc/samenet/tester2.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/base/auth-source/foonet.eld 
b/test/lisp/erc/resources/base/auth-source/foonet.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/base/auth-source/foonet.eld
rename to test/lisp/erc/resources/base/auth-source/foonet.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/base/auth-source/nopass.eld 
b/test/lisp/erc/resources/base/auth-source/nopass.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/base/auth-source/nopass.eld
rename to test/lisp/erc/resources/base/auth-source/nopass.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/channel-buffer-revival/foonet.eld 
b/test/lisp/erc/resources/base/channel-buffer-revival/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/channel-buffer-revival/foonet.eld
rename to test/lisp/erc/resources/base/channel-buffer-revival/foonet.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/base/flood/soju.eld 
b/test/lisp/erc/resources/base/flood/soju.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/base/flood/soju.eld
rename to test/lisp/erc/resources/base/flood/soju.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/gapless-connect/barnet.eld 
b/test/lisp/erc/resources/base/gapless-connect/barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/gapless-connect/barnet.eld
rename to test/lisp/erc/resources/base/gapless-connect/barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/gapless-connect/foonet.eld 
b/test/lisp/erc/resources/base/gapless-connect/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/gapless-connect/foonet.eld
rename to test/lisp/erc/resources/base/gapless-connect/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/gapless-connect/pass-stub.eld 
b/test/lisp/erc/resources/base/gapless-connect/pass-stub.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/gapless-connect/pass-stub.eld
rename to test/lisp/erc/resources/base/gapless-connect/pass-stub.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/mask-target-routing/foonet.eld 
b/test/lisp/erc/resources/base/mask-target-routing/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/mask-target-routing/foonet.eld
rename to test/lisp/erc/resources/base/mask-target-routing/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/barnet-again.eld
 b/test/lisp/erc/resources/base/netid/bouncer/barnet-again.eld
similarity index 99%
rename from 
test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/barnet-again.eld
rename to test/lisp/erc/resources/base/netid/bouncer/barnet-again.eld
index 69ca50aab9..b8a7ed9a25 100644
--- 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/barnet-again.eld
+++ b/test/lisp/erc/resources/base/netid/bouncer/barnet-again.eld
@@ -47,4 +47,4 @@
  (0.1 ":mike!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :joe: Madam, within; but never 
man so chang'd.")
  (0.1 ":joe!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :mike: As much in private, and 
I'll bid adieu."))
 
-((linger 4 LINGER))
+((linger 10 LINGER))
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/barnet-drop.eld 
b/test/lisp/erc/resources/base/netid/bouncer/barnet-drop.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/barnet-drop.eld
rename to test/lisp/erc/resources/base/netid/bouncer/barnet-drop.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/barnet.eld 
b/test/lisp/erc/resources/base/netid/bouncer/barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/barnet.eld
rename to test/lisp/erc/resources/base/netid/bouncer/barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/foonet-again.eld
 b/test/lisp/erc/resources/base/netid/bouncer/foonet-again.eld
similarity index 99%
rename from 
test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/foonet-again.eld
rename to test/lisp/erc/resources/base/netid/bouncer/foonet-again.eld
index c74dcb585f..a9642a833f 100644
--- 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/foonet-again.eld
+++ b/test/lisp/erc/resources/base/netid/bouncer/foonet-again.eld
@@ -47,4 +47,4 @@
  (0.1 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :alice: That I must love a 
loathed enemy.")
  (0.1 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :bob: As't please your 
lordship: I'll leave you."))
 
-((linger 3 LINGER))
+((linger 10 LINGER))
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/foonet-drop.eld 
b/test/lisp/erc/resources/base/netid/bouncer/foonet-drop.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/foonet-drop.eld
rename to test/lisp/erc/resources/base/netid/bouncer/foonet-drop.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/foonet.eld 
b/test/lisp/erc/resources/base/netid/bouncer/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/foonet.eld
rename to test/lisp/erc/resources/base/netid/bouncer/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/stub-again.eld 
b/test/lisp/erc/resources/base/netid/bouncer/stub-again.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/network-id/bouncer/stub-again.eld
rename to test/lisp/erc/resources/base/netid/bouncer/stub-again.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/same-network/chester.eld
 b/test/lisp/erc/resources/base/netid/samenet/chester.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/network-id/same-network/chester.eld
rename to test/lisp/erc/resources/base/netid/samenet/chester.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/network-id/same-network/tester.eld 
b/test/lisp/erc/resources/base/netid/samenet/tester.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/network-id/same-network/tester.eld
rename to test/lisp/erc/resources/base/netid/samenet/tester.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/reconnect/aborted-dupe.eld 
b/test/lisp/erc/resources/base/reconnect/aborted-dupe.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/reconnect/aborted-dupe.eld
rename to test/lisp/erc/resources/base/reconnect/aborted-dupe.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/base/reconnect/aborted.eld 
b/test/lisp/erc/resources/base/reconnect/aborted.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/base/reconnect/aborted.eld
rename to test/lisp/erc/resources/base/reconnect/aborted.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/reconnect/options-again.eld 
b/test/lisp/erc/resources/base/reconnect/options-again.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/reconnect/options-again.eld
rename to test/lisp/erc/resources/base/reconnect/options-again.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/base/reconnect/options.eld 
b/test/lisp/erc/resources/base/reconnect/options.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/base/reconnect/options.eld
rename to test/lisp/erc/resources/base/reconnect/options.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/reconnect/timer-last.eld 
b/test/lisp/erc/resources/base/reconnect/timer-last.eld
similarity index 89%
rename from test/lisp/erc/erc-scenarios/resources/base/reconnect/timer-last.eld
rename to test/lisp/erc/resources/base/reconnect/timer-last.eld
index 3a1f303101..23849bc1ba 100644
--- a/test/lisp/erc/erc-scenarios/resources/base/reconnect/timer-last.eld
+++ b/test/lisp/erc/resources/base/reconnect/timer-last.eld
@@ -3,3 +3,4 @@
 ((nick 1 "NICK tester"))
 ((user 1 "USER user 0 * :tester")
  (0 ":irc.znc.in 464 tester :Invalid Password"))
+((linger 1 LINGER))
diff --git a/test/lisp/erc/erc-scenarios/resources/base/reconnect/timer.eld 
b/test/lisp/erc/resources/base/reconnect/timer.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/base/reconnect/timer.eld
rename to test/lisp/erc/resources/base/reconnect/timer.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/renick/queries/bouncer-barnet.eld 
b/test/lisp/erc/resources/base/renick/queries/bouncer-barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/renick/queries/bouncer-barnet.eld
rename to test/lisp/erc/resources/base/renick/queries/bouncer-barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/renick/queries/bouncer-foonet.eld 
b/test/lisp/erc/resources/base/renick/queries/bouncer-foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/renick/queries/bouncer-foonet.eld
rename to test/lisp/erc/resources/base/renick/queries/bouncer-foonet.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/base/renick/queries/solo.eld 
b/test/lisp/erc/resources/base/renick/queries/solo.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/base/renick/queries/solo.eld
rename to test/lisp/erc/resources/base/renick/queries/solo.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/base/renick/self/auto.eld 
b/test/lisp/erc/resources/base/renick/self/auto.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/base/renick/self/auto.eld
rename to test/lisp/erc/resources/base/renick/self/auto.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/base/renick/self/manual.eld 
b/test/lisp/erc/resources/base/renick/self/manual.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/base/renick/self/manual.eld
rename to test/lisp/erc/resources/base/renick/self/manual.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/renick/self/qual-chester.eld 
b/test/lisp/erc/resources/base/renick/self/qual-chester.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/renick/self/qual-chester.eld
rename to test/lisp/erc/resources/base/renick/self/qual-chester.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/renick/self/qual-tester.eld 
b/test/lisp/erc/resources/base/renick/self/qual-tester.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/renick/self/qual-tester.eld
rename to test/lisp/erc/resources/base/renick/self/qual-tester.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/reuse-buffers/channel-buffers/barnet.eld
 b/test/lisp/erc/resources/base/reuse-buffers/channel/barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/reuse-buffers/channel-buffers/barnet.eld
rename to test/lisp/erc/resources/base/reuse-buffers/channel/barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/reuse-buffers/channel-buffers/foonet.eld
 b/test/lisp/erc/resources/base/reuse-buffers/channel/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/reuse-buffers/channel-buffers/foonet.eld
rename to test/lisp/erc/resources/base/reuse-buffers/channel/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/reuse-buffers/server-buffers/barnet.eld
 b/test/lisp/erc/resources/base/reuse-buffers/server/barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/reuse-buffers/server-buffers/barnet.eld
rename to test/lisp/erc/resources/base/reuse-buffers/server/barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/reuse-buffers/server-buffers/foonet.eld
 b/test/lisp/erc/resources/base/reuse-buffers/server/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/reuse-buffers/server-buffers/foonet.eld
rename to test/lisp/erc/resources/base/reuse-buffers/server/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/upstream-reconnect/soju-barnet.eld 
b/test/lisp/erc/resources/base/upstream-reconnect/soju-barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/upstream-reconnect/soju-barnet.eld
rename to test/lisp/erc/resources/base/upstream-reconnect/soju-barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/upstream-reconnect/soju-foonet.eld 
b/test/lisp/erc/resources/base/upstream-reconnect/soju-foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/upstream-reconnect/soju-foonet.eld
rename to test/lisp/erc/resources/base/upstream-reconnect/soju-foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/upstream-reconnect/znc-barnet.eld 
b/test/lisp/erc/resources/base/upstream-reconnect/znc-barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/upstream-reconnect/znc-barnet.eld
rename to test/lisp/erc/resources/base/upstream-reconnect/znc-barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/base/upstream-reconnect/znc-foonet.eld 
b/test/lisp/erc/resources/base/upstream-reconnect/znc-foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/base/upstream-reconnect/znc-foonet.eld
rename to test/lisp/erc/resources/base/upstream-reconnect/znc-foonet.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/erc-d-i.el 
b/test/lisp/erc/resources/erc-d/erc-d-i.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/erc-d-i.el
rename to test/lisp/erc/resources/erc-d/erc-d-i.el
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/erc-d-t.el 
b/test/lisp/erc/resources/erc-d/erc-d-t.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/erc-d-t.el
rename to test/lisp/erc/resources/erc-d/erc-d-t.el
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/erc-d-tests.el 
b/test/lisp/erc/resources/erc-d/erc-d-tests.el
similarity index 98%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/erc-d-tests.el
rename to test/lisp/erc/resources/erc-d/erc-d-tests.el
index 1e6db3a921..d9f211e43f 100644
--- a/test/lisp/erc/erc-scenarios/resources/erc-d/erc-d-tests.el
+++ b/test/lisp/erc/resources/erc-d/erc-d-tests.el
@@ -609,6 +609,7 @@ nonzero for this to work."
      (setq ,found (nreverse ,found))))
 
 (ert-deftest erc-d-run-nonstandard-messages ()
+  :tags '(:expensive-test)
   (let* ((erc-d-linger-secs 0.2)
          (dumb-server (erc-d-run "localhost" t 'nonstandard))
          (dumb-server-buffer (get-buffer "*erc-d-server*"))
@@ -642,6 +643,7 @@ nonzero for this to work."
       (kill-buffer dumb-server-buffer))))
 
 (ert-deftest erc-d-run-basic ()
+  :tags '(:expensive-test)
   (erc-d-tests-with-server (_ _) basic
     (with-current-buffer (erc-d-t-wait-for 3 (get-buffer "#chan"))
       (erc-d-t-search-for 2 "hey"))
@@ -649,6 +651,7 @@ nonzero for this to work."
       (kill-buffer "#chan"))))
 
 (ert-deftest erc-d-run-eof ()
+  :tags '(:expensive-test)
   (skip-unless noninteractive)
   (erc-d-tests-with-server (_ erc-s-buf) eof
     (with-current-buffer (erc-d-t-wait-for 3 (get-buffer "#chan"))
@@ -657,6 +660,7 @@ nonzero for this to work."
       (process-send-eof erc-server-process))))
 
 (ert-deftest erc-d-run-eof-fail ()
+  :tags '(:expensive-test)
   (let (errors)
     (erc-d-tests-with-failure-spy errors '(erc-d--teardown)
       (erc-d-tests-with-server (_ _) eof
@@ -667,6 +671,7 @@ nonzero for this to work."
                             (cadr (pop errors))))))
 
 (ert-deftest erc-d-run-linger ()
+  :tags '(:expensive-test)
   (erc-d-tests-with-server (dumb-s _) linger
     (with-current-buffer (erc-d-t-wait-for 6 (get-buffer "#chan"))
       (erc-d-t-search-for 2 "hey"))
@@ -676,6 +681,7 @@ nonzero for this to work."
       (erc-d-t-search-for 3 "Lingered for 1.00 seconds"))))
 
 (ert-deftest erc-d-run-linger-fail ()
+  :tags '(:expensive-test)
   (let ((erc-server-flood-penalty 0.1)
         errors)
     (erc-d-tests-with-failure-spy
@@ -688,6 +694,7 @@ nonzero for this to work."
     (should (string-match-p "Match failed.*hi" (cadr (pop errors))))))
 
 (ert-deftest erc-d-run-linger-direct ()
+  :tags '(:expensive-test)
   (let* ((dumb-server (erc-d-run "localhost" t
                                  'linger-multi-a 'linger-multi-b))
          (port (process-contact dumb-server :service))
@@ -752,6 +759,7 @@ nonzero for this to work."
       (kill-buffer dumb-server-buffer))))
 
 (ert-deftest erc-d-run-no-match ()
+  :tags '(:expensive-test)
   (let ((erc-d-linger-secs 1)
         erc-server-auto-reconnect
         errors)
@@ -765,6 +773,7 @@ nonzero for this to work."
     (should-not (get-buffer "#foo"))))
 
 (ert-deftest erc-d-run-timeout ()
+  :tags '(:expensive-test)
   (let ((erc-d-linger-secs 1)
         err errors)
     (erc-d-tests-with-failure-spy errors '(erc-d--teardown)
@@ -775,6 +784,7 @@ nonzero for this to work."
     (should (string-match-p "Timed out" (cadr err)))))
 
 (ert-deftest erc-d-run-unexpected ()
+  :tags '(:expensive-test)
   (let ((erc-d-linger-secs 2)
         errors)
     (erc-d-tests-with-failure-spy
@@ -788,6 +798,7 @@ nonzero for this to work."
     (should (string-match-p "Match failed" (cadr (pop errors))))))
 
 (ert-deftest erc-d-run-unexpected-depleted ()
+  :tags '(:expensive-test)
   (let ((erc-d-linger-secs 3)
         errors)
     (erc-d-tests-with-failure-spy errors '(erc-d--teardown erc-d-command)
@@ -850,6 +861,7 @@ nonzero for this to work."
       (kill-buffer "#chan"))))
 
 (ert-deftest erc-d-run-dynamic-default-match ()
+  :tags '(:expensive-test)
   (let* (dynamic-tally
          (erc-d-tmpl-vars '((user . "user")
                             (ignored . ((a b) (: a space b)))
@@ -874,6 +886,7 @@ nonzero for this to work."
                    dynamic-tally))))
 
 (ert-deftest erc-d-run-dynamic-default-match-rebind ()
+  :tags '(:expensive-test)
   (let* (tally
          ;;
          (erc-d-tmpl-vars '((user . "user")
@@ -902,6 +915,7 @@ nonzero for this to work."
     (should (equal '(bind-nick bind-dom) tally))))
 
 (ert-deftest erc-d-run-dynamic-runtime-stub ()
+  :tags '(:expensive-test)
   (let ((erc-d-tmpl-vars '((token . (group (or "barnet" "foonet")))))
         (erc-d-match-handlers
          (list :pass (lambda (d _e)
@@ -920,6 +934,7 @@ nonzero for this to work."
         (kill-buffer "#chan")))))
 
 (ert-deftest erc-d-run-dynamic-runtime-stub-skip ()
+  :tags '(:expensive-test)
   (let ((erc-d-tmpl-vars '((token . "barnet")))
         (erc-d-match-handlers
          (list :pass (lambda (d _e)
@@ -940,6 +955,7 @@ nonzero for this to work."
 
 ;; Two servers, in-process, one client per
 (ert-deftest erc-d-run-dual-direct ()
+  :tags '(:expensive-test)
   (let* ((erc-d--slow-mo -1)
          (server-a (erc-d-run "localhost" t "erc-d-server-a" 'dynamic-foonet))
          (server-b (erc-d-run "localhost" t "erc-d-server-b" 'dynamic-barnet))
@@ -989,6 +1005,7 @@ nonzero for this to work."
 
 ;; This can be removed; only exists to get a baseline for next test
 (ert-deftest erc-d-run-fuzzy-direct ()
+  :tags '(:expensive-test)
   (let* ((erc-d-tmpl-vars
           `((now . ,(lambda () (format-time-string "%FT%T.%3NZ" nil t)))))
          (dumb-server (erc-d-run "localhost" t 'fuzzy))
@@ -1029,6 +1046,7 @@ nonzero for this to work."
 
 ;; Without adjusting penalty, takes ~15 secs. With is comprable to direct ^.
 (ert-deftest erc-d-run-fuzzy ()
+  :tags '(:expensive-test)
   (let ((erc-server-flood-penalty 1.2) ; penalty < margin/sends is basically 0
         (erc-d-linger-secs 0.1)
         (erc-d-tmpl-vars
@@ -1049,6 +1067,7 @@ nonzero for this to work."
         (erc-d-t-search-for 5 "was created on")))))
 
 (ert-deftest erc-d-run-no-block ()
+  :tags '(:expensive-test)
   (let ((erc-server-flood-penalty 1)
         (erc-d-linger-secs 1.2)
         (expect (erc-d-t-make-expecter))
@@ -1140,6 +1159,7 @@ bouncer-like setup."
 ;; starting the server.
 
 (ert-deftest erc-d-run-proxy-direct-spec-vars ()
+  :tags '(:expensive-test)
   (let* ((dumb-server-buffer (get-buffer-create "*erc-d-server*"))
          (erc-d-linger-secs 0.5)
          (erc-d-tmpl-vars
@@ -1181,6 +1201,7 @@ DIALOGS are symbols representing the base names of dialog 
files in
       (cons proc (cdr pair)))))
 
 (ert-deftest erc-d-run-proxy-direct-subprocess ()
+  :tags '(:expensive-test)
   (let* ((buffer (get-buffer-create "*erc-d-server*"))
          ;; These are quoted because they're passed as printed forms to subproc
          (fqdn '(lambda (a e)
@@ -1206,6 +1227,7 @@ DIALOGS are symbols representing the base names of dialog 
files in
     (erc-d-tests--run-proxy-direct server buffer port)))
 
 (ert-deftest erc-d-run-proxy-direct-subprocess-lib ()
+  :tags '(:expensive-test)
   (let* ((buffer (get-buffer-create "*erc-d-server*"))
          (lib (expand-file-name "proxy-subprocess.el"
                                 (ert-resource-directory)))
@@ -1217,6 +1239,7 @@ DIALOGS are symbols representing the base names of dialog 
files in
     (erc-d-tests--run-proxy-direct server buffer port)))
 
 (ert-deftest erc-d-run-no-pong ()
+  :tags '(:expensive-test)
   (let* (erc-d-auto-pong
          ;;
          (erc-d-tmpl-vars
@@ -1265,6 +1288,7 @@ DIALOGS are symbols representing the base names of dialog 
files in
 ;; don't regress to prior buggy version in which inspection wasn't possible
 ;; until all replies had been sent by the server.
 (ert-deftest erc-d-run-incremental ()
+  :tags '(:expensive-test)
   (let ((erc-server-flood-penalty 0)
         (expect (erc-d-t-make-expecter))
         erc-d-linger-secs)
@@ -1281,6 +1305,7 @@ DIALOGS are symbols representing the base names of dialog 
files in
         (erc-send-message "Hi")))))
 
 (ert-deftest erc-d-unix-socket-direct ()
+  :tags '(:expensive-test)
   (skip-unless (featurep 'make-network-process '(:family local)))
   (let* ((erc-d-linger-secs 0.1)
          (sock (expand-file-name "erc-d.sock" temporary-file-directory))
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/erc-d-u.el 
b/test/lisp/erc/resources/erc-d/erc-d-u.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/erc-d-u.el
rename to test/lisp/erc/resources/erc-d/erc-d-u.el
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/erc-d.el 
b/test/lisp/erc/resources/erc-d/erc-d.el
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/erc-d.el
rename to test/lisp/erc/resources/erc-d/erc-d.el
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/basic.eld 
b/test/lisp/erc/resources/erc-d/resources/basic.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/basic.eld
rename to test/lisp/erc/resources/erc-d/resources/basic.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/depleted.eld 
b/test/lisp/erc/resources/erc-d/resources/depleted.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/depleted.eld
rename to test/lisp/erc/resources/erc-d/resources/depleted.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/drop-a.eld 
b/test/lisp/erc/resources/erc-d/resources/drop-a.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/drop-a.eld
rename to test/lisp/erc/resources/erc-d/resources/drop-a.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/drop-b.eld 
b/test/lisp/erc/resources/erc-d/resources/drop-b.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/drop-b.eld
rename to test/lisp/erc/resources/erc-d/resources/drop-b.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/dynamic-barnet.eld 
b/test/lisp/erc/resources/erc-d/resources/dynamic-barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/dynamic-barnet.eld
rename to test/lisp/erc/resources/erc-d/resources/dynamic-barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/dynamic-foonet.eld 
b/test/lisp/erc/resources/erc-d/resources/dynamic-foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/dynamic-foonet.eld
rename to test/lisp/erc/resources/erc-d/resources/dynamic-foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/dynamic-stub.eld 
b/test/lisp/erc/resources/erc-d/resources/dynamic-stub.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/dynamic-stub.eld
rename to test/lisp/erc/resources/erc-d/resources/dynamic-stub.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/dynamic.eld 
b/test/lisp/erc/resources/erc-d/resources/dynamic.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/dynamic.eld
rename to test/lisp/erc/resources/erc-d/resources/dynamic.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/eof.eld 
b/test/lisp/erc/resources/erc-d/resources/eof.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/eof.eld
rename to test/lisp/erc/resources/erc-d/resources/eof.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/fuzzy.eld 
b/test/lisp/erc/resources/erc-d/resources/fuzzy.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/fuzzy.eld
rename to test/lisp/erc/resources/erc-d/resources/fuzzy.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/incremental.eld 
b/test/lisp/erc/resources/erc-d/resources/incremental.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/incremental.eld
rename to test/lisp/erc/resources/erc-d/resources/incremental.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/irc-parser-tests.eld 
b/test/lisp/erc/resources/erc-d/resources/irc-parser-tests.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/irc-parser-tests.eld
rename to test/lisp/erc/resources/erc-d/resources/irc-parser-tests.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/linger-multi-a.eld 
b/test/lisp/erc/resources/erc-d/resources/linger-multi-a.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/linger-multi-a.eld
rename to test/lisp/erc/resources/erc-d/resources/linger-multi-a.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/linger-multi-b.eld 
b/test/lisp/erc/resources/erc-d/resources/linger-multi-b.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/linger-multi-b.eld
rename to test/lisp/erc/resources/erc-d/resources/linger-multi-b.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/linger.eld 
b/test/lisp/erc/resources/erc-d/resources/linger.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/linger.eld
rename to test/lisp/erc/resources/erc-d/resources/linger.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/no-block.eld 
b/test/lisp/erc/resources/erc-d/resources/no-block.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/no-block.eld
rename to test/lisp/erc/resources/erc-d/resources/no-block.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/no-match.eld 
b/test/lisp/erc/resources/erc-d/resources/no-match.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/no-match.eld
rename to test/lisp/erc/resources/erc-d/resources/no-match.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/no-pong.eld 
b/test/lisp/erc/resources/erc-d/resources/no-pong.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/no-pong.eld
rename to test/lisp/erc/resources/erc-d/resources/no-pong.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/nonstandard.eld 
b/test/lisp/erc/resources/erc-d/resources/nonstandard.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/nonstandard.eld
rename to test/lisp/erc/resources/erc-d/resources/nonstandard.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/proxy-barnet.eld 
b/test/lisp/erc/resources/erc-d/resources/proxy-barnet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/proxy-barnet.eld
rename to test/lisp/erc/resources/erc-d/resources/proxy-barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/proxy-foonet.eld 
b/test/lisp/erc/resources/erc-d/resources/proxy-foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/proxy-foonet.eld
rename to test/lisp/erc/resources/erc-d/resources/proxy-foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/proxy-solo.eld 
b/test/lisp/erc/resources/erc-d/resources/proxy-solo.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/proxy-solo.eld
rename to test/lisp/erc/resources/erc-d/resources/proxy-solo.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/proxy-subprocess.el 
b/test/lisp/erc/resources/erc-d/resources/proxy-subprocess.el
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/erc-d/resources/proxy-subprocess.el
rename to test/lisp/erc/resources/erc-d/resources/proxy-subprocess.el
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/timeout.eld 
b/test/lisp/erc/resources/erc-d/resources/timeout.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/timeout.eld
rename to test/lisp/erc/resources/erc-d/resources/timeout.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/erc-d/resources/unexpected.eld 
b/test/lisp/erc/resources/erc-d/resources/unexpected.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/erc-d/resources/unexpected.eld
rename to test/lisp/erc/resources/erc-d/resources/unexpected.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/erc-scenarios-common.el 
b/test/lisp/erc/resources/erc-scenarios-common.el
similarity index 95%
rename from test/lisp/erc/erc-scenarios/resources/erc-scenarios-common.el
rename to test/lisp/erc/resources/erc-scenarios-common.el
index 028afa0d52..67381373fc 100644
--- a/test/lisp/erc/erc-scenarios/resources/erc-scenarios-common.el
+++ b/test/lisp/erc/resources/erc-scenarios-common.el
@@ -125,6 +125,7 @@
       (erc-auth-source-parameters-join-function nil)
       (erc-autojoin-channels-alist nil)
       (erc-server-auto-reconnect nil)
+      (erc-d-linger-secs 10)
       ,@bindings)))
 
 (defmacro erc-scenarios-common-with-cleanup (bindings &rest body)
@@ -150,8 +151,7 @@ Dialog resource directories are located by expanding the 
variable
            (dolist (buf (buffer-list))
              (when-let ((erc-d-u--process-buffer)
                         (proc (get-buffer-process buf)))
-               (erc-d-t-wait-for 5 "Dumb server dies on its own"
-                 (not (process-live-p proc)))))
+               (delete-process proc)))
 
            (erc-scenarios-common--remove-silence)
 
@@ -226,7 +226,7 @@ this now just asserts baseline behavior.  Originally from 
scenario
 clash-of-chans/rename-buffers as explained in Bug#48598: 28.0.50;
 buffer-naming collisions involving bouncers in ERC."
   (erc-scenarios-common-with-cleanup
-      ((erc-scenarios-common-dialog "base/network-id/bouncer")
+      ((erc-scenarios-common-dialog "base/netid/bouncer")
        (erc-d-t-cleanup-sleep-secs 1)
        (erc-server-flood-penalty 0.1)
        (dumb-server (apply #'erc-d-run "localhost" t dialogs))
@@ -286,18 +286,16 @@ buffer-naming collisions involving bouncers in ERC."
         (erc-d-t-search-for 1 "<bob>")
         (erc-d-t-absent-for 0.1 "<joe>")
         (should (eq erc-server-process erc-server-process-foo))
-        (while (accept-process-output erc-server-process-foo))
-        (erc-d-t-search-for 1 "ape is dead")
-        (should-not (erc-server-process-alive))))
+        (erc-d-t-search-for 10 "ape is dead")
+        (erc-d-t-wait-for 5 (not (erc-server-process-alive)))))
 
     (ert-info ("#chan@<esid> is exclusive to barnet")
       (with-current-buffer chan-buf-bar
         (erc-d-t-search-for 1 "<joe>")
         (erc-d-t-absent-for 0.1 "<bob>")
         (should (eq erc-server-process erc-server-process-bar))
-        (while (accept-process-output erc-server-process-bar))
-        (erc-d-t-search-for 1 "keeps you from dishonour")
-        (should-not (erc-server-process-alive))))
+        (erc-d-t-search-for 10 "keeps you from dishonour")
+        (erc-d-t-wait-for 5 (not (erc-server-process-alive)))))
 
     (when after (funcall after))))
 
@@ -326,15 +324,13 @@ buffer-naming collisions involving bouncers in ERC."
              (with-current-buffer (if foo-id "#chan@oofnet" "#chan@foonet")
                (erc-d-t-search-for 1 "<alice>")
                (erc-d-t-absent-for 0.1 "<joe>")
-               (while (accept-process-output erc-server-process))
                (erc-d-t-search-for 20 "please your lordship")))
 
            (ert-info ("#chan@barnet is exclusive to barnet")
              (with-current-buffer (if bar-id "#chan@rabnet" "#chan@barnet")
                (erc-d-t-search-for 1 "<joe>")
                (erc-d-t-absent-for 0.1 "<bob>")
-               (while (accept-process-output erc-server-process))
-               (erc-d-t-search-for 1 "much in private")))
+               (erc-d-t-search-for 20 "much in private")))
 
            ;; XXX this is important (reconnects overlapped, so we'd get
            ;; chan@127.0.0.1:6667)
@@ -396,14 +392,12 @@ buffer-naming collisions involving bouncers in ERC."
       (funcall expect 5 "#chan was created on ")
       (ert-info ("Joined again #chan@foonet")
         (funcall expect 10 "#chan was created on "))
-      (while (accept-process-output erc-server-process))
-      (funcall expect 1 "My lord, in heart"))
+      (funcall expect 10 "My lord, in heart"))
 
     (with-current-buffer (erc-d-t-wait-for 5 (get-buffer "#chan@barnet"))
       (funcall expect 5 "#chan was created on ")
       (ert-info ("Joined again #chan@barnet")
         (funcall expect 10 "#chan was created on "))
-      (while (accept-process-output erc-server-process))
       (funcall expect 10 "Go to; farewell"))
 
     (funcall test)))
@@ -510,13 +504,11 @@ Bug#48598: 28.0.50; buffer-naming collisions involving 
bouncers in ERC."
         (erc-d-t-wait-for 3 (eq erc-server-process erc-server-process-foo))
         (funcall expect 3 "<bob>")
         (erc-d-t-absent-for 0.1 "<joe>")
-        (while (accept-process-output erc-server-process-foo))
-        (funcall expect 3 "not given me")))
+        (funcall expect 10 "not given me")))
 
     (ert-info ("All #chan@barnet output received")
       (with-current-buffer chan-buf-bar
-        (while (accept-process-output erc-server-process-bar))
-        (funcall expect 3 "hath an uncle here")))))
+        (funcall expect 10 "hath an uncle here")))))
 
 (provide 'erc-scenarios-common)
 
diff --git a/test/lisp/erc/erc-scenarios/resources/join/auth-source/foonet.eld 
b/test/lisp/erc/resources/join/auth-source/foonet.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/join/auth-source/foonet.eld
rename to test/lisp/erc/resources/join/auth-source/foonet.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/join/legacy/foonet.eld 
b/test/lisp/erc/resources/join/legacy/foonet.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/join/legacy/foonet.eld
rename to test/lisp/erc/resources/join/legacy/foonet.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/join/network-id/barnet.eld 
b/test/lisp/erc/resources/join/network-id/barnet.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/join/network-id/barnet.eld
rename to test/lisp/erc/resources/join/network-id/barnet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/join/network-id/foonet-again.eld 
b/test/lisp/erc/resources/join/network-id/foonet-again.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/join/network-id/foonet-again.eld
rename to test/lisp/erc/resources/join/network-id/foonet-again.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/join/network-id/foonet.eld 
b/test/lisp/erc/resources/join/network-id/foonet.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/join/network-id/foonet.eld
rename to test/lisp/erc/resources/join/network-id/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/join/reconnect/foonet-again.eld 
b/test/lisp/erc/resources/join/reconnect/foonet-again.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/join/reconnect/foonet-again.eld
rename to test/lisp/erc/resources/join/reconnect/foonet-again.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/join/reconnect/foonet.eld 
b/test/lisp/erc/resources/join/reconnect/foonet.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/join/reconnect/foonet.eld
rename to test/lisp/erc/resources/join/reconnect/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/networks/announced-missing/foonet.eld 
b/test/lisp/erc/resources/networks/announced-missing/foonet.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/networks/announced-missing/foonet.eld
rename to test/lisp/erc/resources/networks/announced-missing/foonet.eld
diff --git 
a/test/lisp/erc/erc-scenarios/resources/services/auth-source/libera.eld 
b/test/lisp/erc/resources/services/auth-source/libera.eld
similarity index 100%
rename from 
test/lisp/erc/erc-scenarios/resources/services/auth-source/libera.eld
rename to test/lisp/erc/resources/services/auth-source/libera.eld
diff --git a/test/lisp/erc/erc-scenarios/resources/services/password/libera.eld 
b/test/lisp/erc/resources/services/password/libera.eld
similarity index 100%
rename from test/lisp/erc/erc-scenarios/resources/services/password/libera.eld
rename to test/lisp/erc/resources/services/password/libera.eld



reply via email to

[Prev in Thread] Current Thread [Next in Thread]