>From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Thu, 13 May 2021 05:55:22 -0700 Subject: [PATCH 11/28] Add user-oriented test scenarios for ERC XXX after review, this commit should be subsumed (squashed down upon) by the subsequent commit entitled something like "Update ERC scenarios ..." (But it can't be dropped completely because some files are simply renamed.) After that operation, the remaining single commit should be moved after/atop "Address long-standing ERC buffer-naming issues" and perhaps squashed into it in order to play nice with any future bisecting efforts. * test/lisp/erc/erc-scenarios.el: Add new placeholder file for behavioral tests. * test/lisp/erc/erc-scenarios-48598.el: Add temporary file containing expository-style tests to demonstrate existing behavior explained in bug#48598 and to contrast that with expected behavior. Squashing the updated "fixed" scenarios into this is inevitable, though doing so may keep future people from easily reviewing the evolution of these problems. * test/lisp/erc/erc-scenarios-resources: Also add accompanying directory containing canned dialog scripts needed by various tests. --- test/lisp/erc/erc-scenarios-48598.el | 988 ++++++++++++++++++ .../47522/ambiguous-join/barnet.lispdata | 23 + .../47522/ambiguous-join/foonet.lispdata | 42 + .../47522/foil-in-server-buf/barnet.lispdata | 40 + .../47522/foil-in-server-buf/foonet.lispdata | 43 + .../clash-of-chans/autojoin/barnet.lispdata | 40 + .../autojoin/foonet-again.lispdata | 39 + .../clash-of-chans/autojoin/foonet.lispdata | 36 + .../bouncer-history/barnet.lispdata | 41 + .../bouncer-history/foonet.lispdata | 45 + .../rename-buffers/barnet.lispdata | 38 + .../rename-buffers/foonet.lispdata | 43 + .../uniquify-fail/barnet.lispdata | 63 ++ .../uniquify-fail/foonet.lispdata | 63 ++ .../uniquify-litter/barnet.lispdata | 66 ++ .../uniquify-litter/foonet.lispdata | 56 + .../rebuffed/foil-rename/barnet.lispdata | 51 + .../rebuffed/foil-rename/foonet.lispdata | 48 + .../48598/rebuffed/gapless/barnet.lispdata | 49 + .../48598/rebuffed/gapless/foonet.lispdata | 5 + .../48598/rebuffed/reuseless/barnet.lispdata | 24 + .../48598/rebuffed/reuseless/foonet.lispdata | 21 + test/lisp/erc/erc-scenarios.el | 4 + 23 files changed, 1868 insertions(+) create mode 100644 test/lisp/erc/erc-scenarios-48598.el create mode 100644 test/lisp/erc/erc-scenarios-resources/47522/ambiguous-join/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/47522/ambiguous-join/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/47522/foil-in-server-buf/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/47522/foil-in-server-buf/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/foonet-again.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/bouncer-history/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/bouncer-history/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/rename-buffers/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/rename-buffers/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-fail/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-fail/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-litter/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-litter/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/rebuffed/foil-rename/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/rebuffed/foil-rename/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/rebuffed/gapless/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/rebuffed/gapless/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/rebuffed/reuseless/barnet.lispdata create mode 100644 test/lisp/erc/erc-scenarios-resources/48598/rebuffed/reuseless/foonet.lispdata create mode 100644 test/lisp/erc/erc-scenarios.el diff --git a/test/lisp/erc/erc-scenarios-48598.el b/test/lisp/erc/erc-scenarios-48598.el new file mode 100644 index 0000000000..7876b08e45 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-48598.el @@ -0,0 +1,988 @@ +;;; erc-scenarios-48598.el --- e2e test cases for ERC -*- lexical-binding: t -*- + +;; Copyright (C) 2021 Free Software Foundation, Inc. +;; +;; This file is part of GNU Emacs. +;; +;; This program is free software: you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation, either version 3 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see +;; . + +;;; Commentary: +;; +;; These are meant to demo unwanted behavior described in bug#48598. +;; To allow for incrementally addressing those issues, they have been +;; written to *pass* when run from a historical snapshot of the tree +;; built with libraries and tools that existed at or in the months +;; leading up to 0c7a7433dce1b93a685396986d3a560c9cc291f1. See next +;; commit for updated scenarios and layout adapted for long-term use +;; with an eye toward maintenance and refactoring. +;; +;; Because 595e506c82 "Set +i by default" constitutes a breaking +;; change and these test are meant to verify pre-0c7a7433d behavior, +;; the option `erc-user-mode' has been artificially overridden to +;; restore its original default value of nil. + +;;; Code: +(require 'ert-x) ; cl-lib + +(eval-and-compile + (when-let ((dir (getenv "EMACS_TEST_DIRECTORY"))) + (cl-pushnew (concat dir "/lisp/erc/erc-d") load-path :test #'equal))) +(require 'erc-d) +(require 'erc-d-t) +(require 'erc-backend) + +(declare-function erc-network-name "erc-networks") +(defvar erc-autojoin-channels-alist) +(defvar erc-network) + +(defvar erc-scenarios-resources-dir + (let ((ert-resource-directory-trim-right-regexp "\\(-48598\\)?\\.el")) + (ert-resource-directory))) + +(when (boundp 'process-prioritize-lower-fds) + (setq process-prioritize-lower-fds t)) + +;; When interactive, teardown is already inhibited, which precludes +;; subsequent tests. So might as well treat inspection as the goal. +(unless noninteractive + (setq erc-server-auto-reconnect nil)) + +(defvar erc-scenarios--dialog-name nil) + +(defvar erc-scenarios--extra-teardown nil) + +(defun erc-scenarios-common-buflist (prefix) + "Return list of buffers with names sharing PREFIX." + (let (case-fold-search) + (delq nil (mapcar (lambda (b) + (when (string-prefix-p prefix (buffer-name b)) b)) + (buffer-list))))) + +(defmacro erc-scenarios-common-with-cleanup (bindings &rest body) + "Provide boilerplate cleanup tasks after calling BODY with BINDINGS. +Set `erc-scenarios-resources-dir' for the current ERT test. If a +process exists with the default dumb-server name, wait for it to start +before running BODY. If `erc-autojoin-mode' mode is bound, restore it +during cleanup if negated by BODY. Other defaults common to these test +cases are added below and can be overridden, except when wanting the +\"real\" default value, which must be looked up or captured outside of +this form." + (declare (indent 1)) + (let* ((orig-autojoin-mode (make-symbol "orig-autojoin-mode")) + (get-name `(expand-file-name + (or erc-scenarios--dialog-name + (substring (symbol-name + (ert-test-name (ert-running-test))) + ,(length "erc-scenarios-"))) + erc-scenarios-resources-dir)) + (defaults `((erc-d-u-canned-dialog-dir ,get-name) + (erc-user-mode nil) + (erc-modules (copy-sequence erc-modules)) + (,orig-autojoin-mode (bound-and-true-p erc-autojoin-mode)) + (erc-autojoin-channels-alist nil) + (erc-server-auto-reconnect nil)))) + `(erc-d-t-with-cleanup (,@defaults ,@bindings) + (ert-info ("Restore autojoin kill ERC buffers") + (when erc-scenarios--extra-teardown + (ert-info ("Running extra teardown") + (funcall erc-scenarios--extra-teardown))) + (when (and (boundp 'erc-autojoin-mode) + (not (eq erc-autojoin-mode ,orig-autojoin-mode))) + (erc-autojoin-mode (if ,orig-autojoin-mode +1 -1))) + (when noninteractive + (when (and (boundp 'trace-buffer) (get-buffer trace-buffer)) + (with-current-buffer trace-buffer + (message "%S" (buffer-string)) + (kill-buffer))) + (erc-d-t-kill-related-buffers))) + (ert-info ("Wait for dumb server") + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when erc-d-u--process-buffer + (erc-d-t-search-for 3 "Starting"))))) + (ert-info ("Activate erc-debug-irc-protocol") + (unless (and noninteractive (not erc-debug-irc-protocol)) + (erc-toggle-debug-irc-protocol))) + ,@body))) + +(defvar erc-scenarios--port 16667) + +(defun erc-scenarios--port() + "Set next port without checking if it's open." + (cl-incf erc-scenarios--port)) + +(defmacro erc-scenarios-with-local-watcher (found-sym target-var &rest body) + "Run BODY with mutations to TARGET-VAR recorded in FOUND-SYM." + (declare (indent 2)) + (let ((func (make-symbol "func"))) + `(let* (,found-sym + (,func (lambda (_s v op w) + (when (and (eq op 'set) + w ; buffer when buffer-local else nil + v) + (push v ,found-sym))))) + (should-not (get-variable-watchers ,target-var)) + (add-variable-watcher ,target-var ,func) + ,@body + (remove-variable-watcher ,target-var ,func) + (should-not (get-variable-watchers ,target-var))))) + +;; This test lineup should match ERT's + +(ert-deftest erc-scenarios-47522/ambiguous-join () + "Recast non-bug #47522 for regression defense." + (erc-scenarios-common-with-cleanup + ((erc-server-flood-penalty 0.1) ; see below + (dumb-server-foonet-buffer (get-buffer-create "*server-foonet*")) + (dumb-server-barnet-buffer (get-buffer-create "*server-barnet*")) + (dumb-server-foonet-port (erc-scenarios--port)) + (dumb-server-barnet-port (erc-scenarios--port)) + ;; Hmm, should maybe add name as formal param to `erc-d-run' + (dumb-server-foonet (erc-d-run "localhost" dumb-server-foonet-port + "server-foonet" 'foonet)) + (dumb-server-barnet (erc-d-run "localhost" dumb-server-barnet-port + "server-barnet" 'barnet)) + (expect (erc-d-t-make-expecter)) + erc-server-buffer-foo + erc-server-buffer-bar) + + (ert-info ("Connect to foonet") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port dumb-server-foonet-port + :nick "tester" + :password "changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-foo + (funcall expect 3 "debug mode") + (erc-cmd-JOIN "#chan"))) + + (erc-d-t-wait-for 2 "Buffer #chan@foonet exists" + (get-buffer "#chan")) + + (ert-info ("Connect to barnet") + (setq erc-server-buffer-bar (erc :server "127.0.0.1" + :port dumb-server-barnet-port + :nick "tester" + :password "changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-bar + (funcall expect 1 "debug mode"))) + + ;; If either of these two went through, we'd get a bad match on + ;; exchange "linger" (right?) + (ert-info ("Buffers don't exist") + (with-current-buffer erc-server-buffer-foo + (erc-cmd-JOIN "#chan")) + (sit-for 0.1) + (with-current-buffer "#chan" + (erc-cmd-JOIN "#chan")) + (sit-for 0.1) + (erc-d-t-wait-for 2 "Buffer #chan@foonet not replaced" + (get-buffer "#chan")) + (erc-d-t-wait-for 1 "Buffer #chan@barnet does not exist" + (= 1 (length (erc-scenarios-common-buflist "#chan")))) + ;; Still respects chine2e wall because subproc would dump same + ;; to stdout + (with-current-buffer dumb-server-barnet-buffer + (goto-char (point-min)) + (should-not (search-forward "JOIN" nil t)))) + + (ert-info ("All #chan@foonet output consumed") + (with-current-buffer "#chan" ; <- First chan joined (foonet) + (funcall expect 3 "welcome!") + (while (accept-process-output erc-server-process)) + (funcall expect 3 "husband"))))) + +(ert-deftest erc-scenarios-47522/foil-in-server-buf () + "Different spin on non-bug #47522 for regression defense." + (erc-scenarios-common-with-cleanup + ((erc-d-linger-secs 0.5) + (erc-server-flood-penalty 0.1) + (dumb-server-foonet-buffer (get-buffer-create "*server-foonet*")) + (dumb-server-barnet-buffer (get-buffer-create "*server-barnet*")) + (dumb-server-foonet-port (erc-scenarios--port)) + (dumb-server-barnet-port (erc-scenarios--port)) + (dumb-server-foonet (erc-d-run "localhost" dumb-server-foonet-port + "server-foonet" 'foonet)) + (dumb-server-barnet (erc-d-run "localhost" dumb-server-barnet-port + "server-barnet" 'barnet)) + (expect (erc-d-t-make-expecter)) + erc-server-buffer-foo + erc-server-buffer-bar) + + (ert-info ("Connect to foonet") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port dumb-server-foonet-port + :nick "tester" + :password "changeme" + :full-name "tester"))) + + (with-current-buffer erc-server-buffer-foo + (funcall expect 3 "debug mode") + (erc-cmd-JOIN "#chan")) + + (erc-d-t-wait-for 2 "Buffer #chan@foonet exists" + (get-buffer "#chan")) + + (ert-info ("Connect to barnet") + (setq erc-server-buffer-bar (erc :server "127.0.0.1" + :port dumb-server-barnet-port + :nick "tester" + :password "changeme" + :full-name "tester"))) + + (with-current-buffer erc-server-buffer-bar + (funcall expect 1 "debug mode") + (erc-cmd-JOIN "#chan")) + + (erc-d-t-wait-for 3 "Buffer #chan@barnet exists" + (get-buffer "#chan/127.0.0.1<2>")) + + (erc-d-t-wait-for 2 "Buffer #chan@foonet replaced" + (and (get-buffer "#chan/127.0.0.1") + (not (get-buffer "#chan")))) + + (ert-info ("All #chan@foonet output consumed") + (with-current-buffer "#chan/127.0.0.1" ; <- First chan joined (foonet) + (funcall expect 3 "bob") + (funcall expect 3 "was created on") + (while (accept-process-output erc-server-process)) + (funcall expect 3 "prosperous"))) + + (ert-info ("All #chan@barnet output consumed") + (with-current-buffer "#chan/127.0.0.1<2>" + (funcall expect 3 "mike") + (funcall expect 3 "was created on") + (while (accept-process-output erc-server-process)) + (funcall expect 3 "ingenuous"))))) + +;; On some systems, this first bunch may need some bumping of timeouts, +;; linger-secs, etc. See function `erc-d-u-rewrite-for-slow-mo'. + +;; XXX 9bb8d90cdd Allow irc network symbols in erc-autojoin-channels-alist +;; Fixes the inciting action here but not the root cause +(ert-deftest erc-scenarios-48598/clash-of-chans/autojoin () + (ert-skip "obsolete") + (should erc-reuse-buffers) + + (erc-scenarios-common-with-cleanup + ((erc-d-u-with-cleanup-sleep-secs 1) + (erc-server-flood-penalty 0.5) + (port (erc-scenarios--port)) + (dumb-server (erc-d-run "localhost" port + 'foonet 'barnet 'foonet-again)) + (dumb-server-buffer (get-buffer "*erc-d-server*")) + (expect (erc-d-t-make-expecter)) + erc-server-buffer-foo erc-server-process-foo + erc-server-buffer-bar erc-server-process-bar) + + (should (memq 'autojoin erc-modules)) + + (ert-info ("Connect to foonet") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-foo + (setq erc-server-process-foo erc-server-process) + (should (string= (buffer-name) (format "127.0.0.1:%d" port))) + (erc-d-t-wait-for 1 "foonet Network detected" + (string= (erc-network-name) "foonet")) + (funcall expect 5 "foonet"))) + + (ert-info ("Join #chan, then quit") + (with-current-buffer erc-server-buffer-foo + (erc-cmd-JOIN "#chan")) + (erc-d-t-wait-for 5 "Buffer #chan exists" + (get-buffer "#chan")) + (with-current-buffer "#chan" + (funcall expect 5 "vile thing") + (erc-cmd-QUIT ""))) + + (erc-d-t-wait-for 2 "foo death" + (not (process-live-p erc-server-process-foo))) + + (should (equal erc-autojoin-channels-alist '(("foonet.org" "#chan")))) + + (ert-info ("Connect to barnet") + (setq erc-server-buffer-bar (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "barnet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-bar + (setq erc-server-process-bar erc-server-process) + (should (string= (buffer-name) (format "127.0.0.1:%d" port))) + (erc-d-t-wait-for 5 "barnet Network detected" + (should-not (eq (process-status erc-server-process) 'failed)) + (eq erc-network 'barnet)))) + + (ert-info ("Server buffers are the same") + (should (eq erc-server-buffer-foo erc-server-buffer-bar)) + (should-not (cdr (erc-scenarios-common-buflist "127.0.0.1")))) + + (ert-info ("Only one #chan buffer exists") + (should (= 1 (length (erc-scenarios-common-buflist "#chan"))))) + + (ert-info ("#chan is auto-joined, output exclusive to barnet") + (with-current-buffer "#chan" + (funcall expect 2 "") + (erc-d-t-wait-for 3 "server-buffer is barnet" + (eq erc-server-process erc-server-process-bar)))) + + (ert-info ("Reconnect to foonet") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-foo + (setq erc-server-process-foo erc-server-process) + (erc-d-t-wait-for 5 "foonet buffer renamed" + (string= (buffer-name) + (format "127.0.0.1:%d/127.0.0.1<2>" port))) + (erc-d-t-wait-for 2 "foonet Network detected" + (eq erc-network 'foonet)) + (funcall expect 5 "foonet"))) + + (ert-info ("#chan's server alternates as does its content") + (with-current-buffer "#chan" + (erc-scenarios-with-local-watcher procs 'erc-server-process + (erc-d-t-wait-for 3 "server buffer alternates" + (and (memq erc-server-process-foo procs) + (memq erc-server-process-bar procs)))) + (funcall expect 2 "") + (funcall expect 2 ""))) + + (ert-info ("All output received") + (with-current-buffer "#chan" + (while (accept-process-output erc-server-process-foo)) + (while (accept-process-output erc-server-process-bar)) + ;; Ordering here may not be predictable + (erc-d-t-search-for 1 "not given me") + (erc-d-t-search-for 1 "hath an uncle here"))) + + (erc-d-t-wait-for 5 "dumb-server death" + (not (eq (process-status dumb-server) 'run))))) + +(ert-deftest erc-scenarios-48598/clash-of-chans/bouncer-history () + (should erc-reuse-buffers) + + (erc-scenarios-common-with-cleanup + ((erc-d-u-with-cleanup-sleep-secs 1) + (erc-d-linger-secs 1) + (port (erc-scenarios--port)) + (dumb-server (erc-d-run "localhost" port 'foonet 'barnet)) + (dumb-server-buffer (get-buffer "*erc-d-server*")) + (erc-server-flood-penalty 0.5) + (expect (erc-d-t-make-expecter)) + erc-autojoin-channels-alist + erc-server-buffer-foo erc-server-process-foo + erc-server-buffer-bar erc-server-process-bar) + + (ert-info ("Connect to foonet") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-foo + (setq erc-server-process-foo erc-server-process) + (should (string= (buffer-name) (format "127.0.0.1:%d" port))) + (funcall expect 5 "foonet"))) + + (ert-info ("Connect to barnet") + (setq erc-server-buffer-bar (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "barnet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-bar + (setq erc-server-process-bar erc-server-process) + ;; Prior to 88567ca8 "Fix ERC Reuse buffer behavior", this didn't + ;; feature an suffix + (erc-d-t-wait-for 5 "overshot n-suffixed redundant name" + (string= (buffer-name) (format "127.0.0.1:%d/127.0.0.1<2>" port))) + (funcall expect 5 "barnet"))) + + (ert-info ("Server buffers are unique") + (should-not (eq erc-server-buffer-foo erc-server-buffer-bar)) + (should (= 2 (length (erc-scenarios-common-buflist "127.0.0.1"))))) + + (ert-info ("Networks named correctly") + (with-current-buffer erc-server-buffer-foo + (erc-d-t-wait-for 3 "network name foonet" + (string= (erc-network-name) "foonet"))) + (with-current-buffer erc-server-buffer-bar + (erc-d-t-wait-for 3 "network name barnet" + (string= (erc-network-name) "barnet")))) + + (ert-info ("Only one #chan buffer exists") + (should (= 1 (length (erc-scenarios-common-buflist "#chan"))))) + + (ert-info ("#chan's server alternates as does its content") + (erc-scenarios-with-local-watcher procs 'erc-server-process + (with-current-buffer "#chan" + (erc-d-t-search-for 1 "") + (erc-d-t-search-for 1 "") + (erc-d-t-wait-for 3 "server buffer alternates" + (and (memq erc-server-process-foo procs) + (memq erc-server-process-bar procs)))))) + + (ert-info ("All output sent") + (with-current-buffer "#chan" + (while (accept-process-output erc-server-process-foo)) + (while (accept-process-output erc-server-process-bar)) + (erc-d-t-search-for 3 "please your lordship"))) + + (erc-d-t-wait-for 5 "dumb-server dies on its own" + (not (eq (process-status dumb-server) 'run))))) + +(ert-deftest erc-scenarios-48598/clash-of-chans/rename-buffers () + (should erc-reuse-buffers) + + (erc-scenarios-common-with-cleanup + ((erc-d-u-with-cleanup-sleep-secs 1) + (erc-server-flood-penalty 0.1) + (port (erc-scenarios--port)) + (dumb-server (erc-d-run "localhost" port 'foonet 'barnet)) + (dumb-server-buffer (get-buffer "*erc-d-server*")) + (expect (erc-d-t-make-expecter)) + (erc-rename-buffers t) + erc-server-buffer-foo erc-server-process-foo + erc-server-buffer-bar erc-server-process-bar) + + (ert-info ("Connect to foonet, server briefly named nil") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-foo + (setq erc-server-process-foo erc-server-process) + (should (string= (buffer-name) "nil")) + (erc-d-t-wait-for 3 "network name foonet" + (string= (erc-network-name) "foonet")) + (funcall expect 5 "foonet"))) + + (erc-d-t-wait-for 5 "Foonet's server buffer renamed" + (get-buffer "foonet")) + (should (eq erc-server-buffer-foo (get-buffer "foonet"))) + + (ert-info ("Join #chan@foonet") + (with-current-buffer erc-server-buffer-foo + (erc-cmd-JOIN "#chan")) + (erc-d-t-wait-for 5 "Buffer #chan created" + (get-buffer "#chan")) + (with-current-buffer "#chan" + (funcall expect 5 ""))) + + (ert-info ("Connect to barnet, server briefly named nil") + (setq erc-server-buffer-bar (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "barnet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-bar + (setq erc-server-process-bar erc-server-process) + (should (string= (buffer-name) "nil")) + (erc-d-t-wait-for 3 "network name barnet" + (string= (erc-network-name) "barnet")) + (funcall expect 5 "barnet"))) + + (erc-d-t-wait-for 5 "Barnet's server buffer renamed" + (get-buffer "barnet")) + (should (eq erc-server-buffer-bar (get-buffer "barnet"))) + + (ert-info ("Server buffers are unique, no buffer with old names") + (should-not (eq erc-server-buffer-foo erc-server-buffer-bar)) + (should-not (erc-scenarios-common-buflist "127.0.0.1"))) + + (ert-info ("Join #chan@barnet") + (with-current-buffer erc-server-buffer-bar + (erc-cmd-JOIN "#chan"))) + + (ert-info ("#chan's server alternates along with content") + (erc-scenarios-with-local-watcher procs 'erc-server-process + (with-current-buffer "#chan" + (erc-d-t-search-for 1 "") + (erc-d-t-search-for 1 "") + (erc-d-t-wait-for 3 "server buffer alternates" + (and (memq erc-server-process-foo procs) + (memq erc-server-process-bar procs)))))) + + (ert-info ("Only one #chan buffer exists") + (should (= 1 (length (erc-scenarios-common-buflist "#chan"))))) + + (ert-info ("All output sent") + (with-current-buffer "#chan" + (while (accept-process-output erc-server-process-foo)) + (while (accept-process-output erc-server-process-bar)) + (erc-d-t-search-for 1 "ape is dead") + (erc-d-t-search-for 1 "keeps you from dishonour"))) + + (erc-d-t-wait-for 5 "dumb-server death" + (not (eq (process-status dumb-server) 'run))))) + +;; This one is a temporary departure from the "assume defaults" rule +;; mentioned in the Commentary. (Which is bad.) +;; +;; TODO tag this as :unstable if ever adding to Emacs +;; TODO see if meaning is preserved when autojoin is ON (if so, adapt) + +(ert-deftest erc-scenarios-48598/clash-of-chans/uniquify-fail () + (should erc-reuse-buffers) + + (erc-scenarios-common-with-cleanup + ((erc-d-u-with-cleanup-sleep-secs 1) + (port (erc-scenarios--port)) + (dumb-server (erc-d-run "localhost" port 'foonet 'barnet)) + (dumb-server-buffer (get-buffer "*erc-d-server*")) + (expect (erc-d-t-make-expecter)) + (erc-server-flood-penalty 0.1) ; hack + (erc-modules (remq 'autojoin erc-modules)) + erc-server-buffer-foo erc-server-process-foo + erc-server-buffer-bar erc-server-process-bar + erc-autojoin-channels-alist + erc-reuse-buffers) + + (when (bound-and-true-p erc-autojoin-mode) + (erc-autojoin-mode -1)) + + (ert-info ("Connect to foonet") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-foo + (setq erc-server-process-foo erc-server-process) + ;; Compare suffixed name here to that in bouncer-history variant + ;; (which has `erc-reuse-buffers' set to the default value of t) + (should (string= (buffer-name) + (format "127.0.0.1:%d/127.0.0.1" port))) + (funcall expect 5 "foonet"))) + + (ert-info ("Connect to barnet") + (setq erc-server-buffer-bar (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "barnet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-bar + (setq erc-server-process-bar erc-server-process) + ;; Prior to 88567ca8 "Fix ERC Reuse buffer behavior", this didn't + ;; feature an suffix + (erc-d-t-wait-for 5 "overshot n-suffixed redundant name" + (string= (buffer-name) (format "127.0.0.1:%d/127.0.0.1<2>" port))) + (funcall expect 5 "barnet"))) + + (ert-info ("Server buffers are unique") + (should-not (eq erc-server-buffer-foo erc-server-buffer-bar)) + (should (= 2 (length (erc-scenarios-common-buflist "127.0.0.1"))))) + + (ert-info ("Networks named correctly") + (with-current-buffer erc-server-buffer-foo + (erc-d-t-wait-for 3 "network name foonet" + (string= (erc-network-name) "foonet"))) + (with-current-buffer erc-server-buffer-bar + (erc-d-t-wait-for 3 "network name barnet" + (string= (erc-network-name) "barnet")))) + + (ert-info ("Only one #chan buffer exists") + (let ((chan-bufs (erc-scenarios-common-buflist "#chan"))) + (should (string= (buffer-name (pop chan-bufs)) "#chan/127.0.0.1")) + (should-not chan-bufs))) + + ;; From here on diverges from "48598/clash-of-chans/bouncer-history" + + (ert-info ("#chan's server alternates along with its content") + (with-current-buffer "#chan/127.0.0.1" + (erc-scenarios-with-local-watcher procs 'erc-server-process + (erc-d-t-wait-for 3 "server buffer alternates" + (and (memq erc-server-process-foo procs) + (memq erc-server-process-bar procs)))) + ;; XXX this only works if the REPLY to this PART is received + ;; when foonet is dominant, which is out of our control. + (with-current-buffer erc-server-buffer-foo + (erc-cmd-PART "#chan")) + ;; Remaining foonet output is displayed but barnet is cut off + (erc-d-t-search-for 1 "shake my sword"))) + + (ert-info ("Somehow #chan@barnet is created") + (erc-d-t-wait-for 5 "#chan@barnet" + (get-buffer "#chan/127.0.0.1<2>")) + (with-current-buffer "#chan/127.0.0.1<2>" + (should (eq erc-server-process erc-server-process-bar)))) + + (ert-info ("Rejoin #chan@foonet") + (with-current-buffer "#chan/127.0.0.1" + (funcall expect 3 "You have left channel #chan") + (erc-cmd-JOIN "#chan") + (funcall expect 3 "You have joined channel #chan") + (funcall expect 3 "#chan was created on") + (funcall expect 3 "") + (should (eq erc-server-process erc-server-process-foo)) + (erc-d-t-search-for -0.2 "" (point)))) + + (ert-info ("Part chan@barnet") + (with-current-buffer "#chan/127.0.0.1<2>" + (let ((previous-end (point-max))) + (goto-char previous-end) + (should-not (search-forward "alice" nil t))) + (funcall expect 3 "Arm it in rags") + (erc-cmd-PART "#chan") + (funcall expect 3 "You have left channel #chan") + (erc-cmd-JOIN "#chan"))) + + (should (= 2 (length (erc-scenarios-common-buflist "#chan")))) + + (ert-info ("#chan output alternates as before") + (with-current-buffer "#chan/127.0.0.1" + (funcall expect 3 "You have joined channel #chan") + (funcall expect 1 "Users on #chan: @mike joe tester") + (funcall expect 5 "") ; bob appears after ^ + (ert-info ("All output sent") + (while (accept-process-output erc-server-process-bar)) + (funcall expect 10 "soul black")))) + + (while (accept-process-output erc-server-process-foo)) + + (erc-d-t-wait-for 5 "dumb-server dies on its own" + (not (eq (process-status dumb-server) 'run))))) + +;; This one also disables autojoin (see comment for "uniquify-fail") + +(ert-deftest erc-scenarios-48598/clash-of-chans/uniquify-litter () + (should erc-reuse-buffers) + + (erc-scenarios-common-with-cleanup + ((erc-d-u-with-cleanup-sleep-secs 1) + (expect (erc-d-t-make-expecter)) + (port (erc-scenarios--port)) + (dumb-server (erc-d-run "localhost" port 'foonet 'barnet)) + (dumb-server-buffer (get-buffer "*erc-d-server*")) + (erc-server-flood-penalty 0.5) + (erc-modules (remq 'autojoin erc-modules)) + erc-reuse-buffers + erc-server-buffer-foo erc-server-process-foo + erc-server-buffer-bar erc-server-process-bar) + + (when (bound-and-true-p erc-autojoin-mode) + (erc-autojoin-mode -1)) + + (ert-info ("Connect to foonet, get uniquified buffer name") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-foo + (setq erc-server-process-foo erc-server-process) + ;; Compare suffixed name here to that in bouncer-history variant + ;; (which has `erc-reuse-buffers' set to the default value of (t)) + (should (string= (buffer-name) + (format "127.0.0.1:%d/127.0.0.1" port))) + (erc-d-t-search-for 5 "foonet"))) + + (ert-info ("Connect to barnet, get uniquified buffer name") + (setq erc-server-buffer-bar (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "barnet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-bar + (setq erc-server-process-bar erc-server-process) + ;; Prior to 88567ca8 "Fix ERC Reuse buffer behavior", this didn't + ;; feature an suffix + (erc-d-t-wait-for 5 "overshot n-suffixed redundant name" + (string= (buffer-name) (format "127.0.0.1:%d/127.0.0.1<2>" port))) + (funcall expect 5 "barnet"))) + + (ert-info ("Server buffers are unique") + (should-not (eq erc-server-buffer-foo erc-server-buffer-bar)) + (should (= 2 (length (erc-scenarios-common-buflist "127.0.0.1"))))) + + (ert-info ("Networks named correctly") + (with-current-buffer erc-server-buffer-foo + (erc-d-t-wait-for 3 "network name foonet" + (string= (erc-network-name) "foonet"))) + (with-current-buffer erc-server-buffer-bar + (erc-d-t-wait-for 3 "network name barnet" + (string= (erc-network-name) "barnet")))) + + (ert-info ("Only one #chan buffer exists") + (let ((chan-bufs (erc-scenarios-common-buflist "#chan"))) + (should (string= (buffer-name (pop chan-bufs)) "#chan/127.0.0.1")) + (should-not chan-bufs))) + + ;; From here on diverts from other "clash-of-chans" + + (ert-info ("#chan's server alternates as does its content") + (with-current-buffer "#chan/127.0.0.1" + (erc-scenarios-with-local-watcher procs 'erc-server-process + (erc-d-t-wait-for 3 "server buffer alternates" + (and (memq erc-server-process-foo procs) + (memq erc-server-process-bar procs)))) + (with-current-buffer erc-server-buffer-foo + (erc-cmd-PART "#chan")) + (funcall expect 1 ""))) + + (ert-info ("Somehow #chan@barnet is created") + (erc-d-t-wait-for 4 "#chan@barnet" + (get-buffer "#chan/127.0.0.1<2>"))) + + (ert-info ("Part chan@barnet and rejoin") + (with-current-buffer "#chan/127.0.0.1<2>" + (should (eq erc-server-process erc-server-process-bar)) + (funcall expect 3 "Claudio as himself") + (let ((previous-end (point-max))) + (goto-char previous-end) + (should-not (search-forward "alice" nil t))) + (erc-cmd-PART "#chan") + (funcall expect 3 "You have left channel #chan") + (erc-cmd-JOIN "#chan"))) + + (ert-info ("New #chan@barnet is created") + (erc-d-t-wait-for 3 "#chan@barnet" + (get-buffer "#chan/127.0.0.1<3>")) + (with-current-buffer "#chan/127.0.0.1<3>" + (should (eq erc-server-process erc-server-process-bar)) + (funcall expect 3 "You have joined channel #chan"))) + + (ert-info ("Rejoin #chan@foonet") + (with-current-buffer "#chan/127.0.0.1" + (funcall expect 3 "You have left channel #chan") + (erc-cmd-JOIN "#chan") + (funcall expect 3 "You have joined channel #chan") + (funcall expect 3 "#chan was created on") + (let ((pos (funcall expect 3 ""))) + (should (eq erc-server-process erc-server-process-foo)) + (erc-d-t-wait-for -0.2 "exclusive to foonet" + (goto-char pos) + (search-forward "joe" nil t))))) + + (should (= 3 (length (erc-scenarios-common-buflist "#chan")))) + (should (= 2 (length (erc-scenarios-common-buflist "127.0.0.1")))) + + (while (accept-process-output erc-server-process-foo)) + (while (accept-process-output erc-server-process-bar)) + + (with-current-buffer "#chan/127.0.0.1" + (funcall expect 3 "Phebe's cruelty")) + + (with-current-buffer "#chan/127.0.0.1<3>" + (funcall expect 3 "world-without-end")) + + (erc-d-t-wait-for 5 "dumb-server dies on its own" + (not (eq (process-status dumb-server) 'run))))) + +(ert-deftest erc-scenarios-48598/rebuffed/foil-rename () + (erc-scenarios-common-with-cleanup + ((erc-d-linger-secs 0.5) + (port (erc-scenarios--port)) + ;; Again, like "gapless" above, barnet is loaded first because + ;; that's what ERC requests despite the invocation order + (dumb-server (erc-d-run "localhost" port 'barnet 'foonet)) + (dumb-server-buffer (get-buffer "*erc-d-server*")) + (erc-rename-buffers t) + erc-autojoin-channels-alist + erc-server-buffer-foo + erc-server-buffer-bar) + + (ert-info ("Connect to foonet, buffer initially named nil") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-foo + (should (string= (buffer-name) "nil")))) + + (ert-info ("Connect to barnet") + (setq erc-server-buffer-bar (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "barnet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-bar + (should (string= (buffer-name) (format "127.0.0.1:%d" port))))) + + (erc-d-t-wait-for 1 "server for foonet renamed" (get-buffer "foonet")) + (erc-d-t-wait-for 1 "server for barnet renamed" (get-buffer "barnet")) + + (ert-info ("Server buffers are unique and temp names are absent") + (should-not (eq erc-server-buffer-foo erc-server-buffer-bar)) + (should-not (erc-scenarios-common-buflist "127.0.0.1")) + (should-not (get-buffer "nil"))) + + (ert-info ("Channel buffers are both healthy") + (with-current-buffer "#foo" + (while (accept-process-output erc-server-process)) + (erc-d-t-search-for 1 "whence you are") + (delete-process erc-server-process)) + (with-current-buffer "#bar" + (while (accept-process-output erc-server-process)) + (erc-d-t-search-for 1 "his second fit") + (delete-process erc-server-process))) + + (erc-d-t-wait-for 5 "dumb-server dies naturally" + (not (process-live-p dumb-server))))) + +;; Note: when inspecting this one interactively, sometimes server buffers +;; appear as "nil" if the disconnect hook ran before the latest mode-line +;; update. + +(ert-deftest erc-scenarios-48598/rebuffed/gapless () + ;; This is stable with deterministic ordering before and just after + ;; 0c7a7433dce1b93a685396986d3a560c9cc291f1 + ;; Problem remains but would require fancier footwork to show (basically + ;; pattern matching and hot loading one of two dialogs) + :tags '(:unstable) + (ert-skip "obsolete") + (erc-scenarios-common-with-cleanup + ((erc-d-linger-secs 2) + (erc-server-flood-penalty erc-server-flood-penalty) + ;; Barnet is loaded first because that's what's requested first by + ;; the client, as shown below. + (dumb-server (erc-d-run "localhost" (erc-scenarios--port) + 'barnet 'foonet)) + (dumb-server-buffer (get-buffer "*erc-d-server*")) + (expect (erc-d-t-make-expecter)) + erc-autojoin-channels-alist + erc-server-buffer-foo erc-server-process-foo + erc-server-buffer-bar erc-server-process-bar + timeout-sentinel) + (ert-info ("Connect twice to same endpoint without pausing") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port erc-scenarios--port + :nick "tester" + :password "foonet:changeme" + :full-name "tester") + erc-server-buffer-bar (erc :server "127.0.0.1" + :port erc-scenarios--port + :nick "tester" + :password "barnet:changeme" + :full-name "tester"))) + + (ert-info ("Returned server buffers are identical") + (should (eq erc-server-buffer-foo erc-server-buffer-bar))) + + (ert-info ("Both connections actually happen") + (should (get-process "erc-d-server")) + (let ((name (format "erc-127.0.0.1-%d" erc-scenarios--port))) + (setq erc-server-process-foo (get-process name) + erc-server-process-bar (get-process (concat name "<1>"))))) + + (set-process-query-on-exit-flag erc-server-process-foo nil) + (set-process-query-on-exit-flag erc-server-process-bar nil) + + (with-current-buffer erc-server-buffer-bar + (funcall expect 1 "marked as being away")) + + (cl-letf (((symbol-function 'erc-d--expire) + (lambda (_ e) (push e timeout-sentinel)))) + + (erc-d-t-wait-for 20 "Buffer #bar exists" + (get-buffer "#bar")) + + (with-current-buffer erc-server-buffer-bar + ;; XXX a cheat to save some time. Verify by commenting out + ;; and bumping timeouts. Should still pass (after ~10 secs). + (ert-info ("Kludge to save some time") + (setq erc-server-flood-penalty 0) + (erc-server-send-queue erc-server-buffer-bar)) + + (erc-d-t-wait-for 5 "all messages actually sent" + (not erc-server-flood-queue))) + + (with-current-buffer "#bar" + (erc-d-t-search-for 5 "Unauthorized command") + (erc-d-t-search-for 5 "was created on")) + (erc-d-t-wait-for 2 "#foo dialog times out" timeout-sentinel) + + (let ((e (pop timeout-sentinel))) + (should-not timeout-sentinel) + (should (eq 'pass (erc-d-exchange-tag e))) + (should (string= "\\`PASS doa" (erc-d-exchange-pattern e))))) + + (while (accept-process-output erc-server-process-foo)) + (while (accept-process-output erc-server-process-bar)) + + (erc-d-t-wait-for 5 "dumb-server to die on its own" + (not (process-live-p dumb-server))))) + +(defun erc-scenarios-common--48598/rebuffed/reuseless () + (erc-scenarios-common-with-cleanup + ((erc-d-linger-secs 1) + (port (erc-scenarios--port)) + (dumb-server (erc-d-run "localhost" port 'foonet 'barnet)) + (dumb-server-buffer (get-buffer "*erc-d-server*")) + erc-autojoin-channels-alist + erc-server-buffer-foo + erc-server-buffer-bar) + + (ert-info ("Connect to foonet") + (setq erc-server-buffer-foo (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-foo + (should (string= (buffer-name) + (if erc-reuse-buffers + (format "127.0.0.1:%d" port) + (format "127.0.0.1:%d/127.0.0.1" port)))) + (erc-d-t-search-for 1 "marked as being away"))) + + (ert-info ("Connect to barnet") + (setq erc-server-buffer-bar (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "barnet:changeme" + :full-name "tester")) + (with-current-buffer erc-server-buffer-bar + (should (string= (buffer-name) + (if erc-reuse-buffers + (format "127.0.0.1:%d/127.0.0.1<2>" port) + (format "127.0.0.1:%d/127.0.0.1" port)))) + (erc-d-t-search-for 1 "marked as being away"))) + + (ert-info ("Server buffers are unique with option, identical without") + (if erc-reuse-buffers + (should-not (eq erc-server-buffer-foo erc-server-buffer-bar)) + (should (eq erc-server-buffer-foo erc-server-buffer-bar)))) + + (ert-info ("When the option is disabled, only one buffer survives") + (should (= (length (erc-scenarios-common-buflist "127.0.0.1")) + (if erc-reuse-buffers 2 1)))) + + ;; Sometimes we get an EOF, but it's rare + (erc-d-t-wait-for 5 "Let dumb server die on its own" + (not (process-live-p dumb-server))))) + +(ert-deftest erc-scenarios-48598/rebuffed/reuseless--enabled () + (should erc-reuse-buffers) + (let ((erc-scenarios--dialog-name "48598/rebuffed/reuseless")) + (erc-scenarios-common--48598/rebuffed/reuseless))) + +(ert-deftest erc-scenarios-48598/rebuffed/reuseless--disabled () + (should erc-reuse-buffers) + (let ((erc-scenarios--dialog-name "48598/rebuffed/reuseless") + erc-reuse-buffers) + (erc-scenarios-common--48598/rebuffed/reuseless))) + +;;; erc-scenarios-48598.el ends here diff --git a/test/lisp/erc/erc-scenarios-resources/47522/ambiguous-join/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/47522/ambiguous-join/barnet.lispdata new file mode 100644 index 0000000000..c570457ebf --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/47522/ambiguous-join/barnet.lispdata @@ -0,0 +1,23 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.barnet.org 003 tester :This server was created Wed, 05 May 2021 00:51:49 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.barnet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 253 tester 0 :unregistered connections") + (0 ":irc.barnet.org 254 tester 1 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.barnet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.barnet.org 422 tester :MOTD File is missing") + (0 ":irc.barnet.org 221 tester +i") + (0 ":irc.barnet.org NOTICE tester :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.")) + +((linger 2 LINGER)) diff --git a/test/lisp/erc/erc-scenarios-resources/47522/ambiguous-join/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/47522/ambiguous-join/foonet.lispdata new file mode 100644 index 0000000000..140ea34541 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/47522/ambiguous-join/foonet.lispdata @@ -0,0 +1,42 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Tue, 04 May 2021 05:06:18 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 253 tester 0 :unregistered connections") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing") + (0 ":irc.foonet.org 221 tester +i") + (0 ":irc.foonet.org NOTICE tester :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.")) + +((join 1 "JOIN #chan") + (0 ":tester!~u@9hbxjx335qjjq.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :@bob alice tester") + (0 ":irc.foonet.org 366 tester #chan :End of NAMES list")) + +((mode 2 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620175913") + (0.1 ":bob!~u@24ebq8ma57rha.irc PRIVMSG #chan :tester, welcome!") + (0.1 ":alice!~u@24ebq8ma57rha.irc PRIVMSG #chan :tester, welcome!") + (0.1 ":bob!~u@24ebq8ma57rha.irc PRIVMSG #chan :alice: Ha! now I see thou art a fool, and fit for thy master.") + (0.1 ":alice!~u@24ebq8ma57rha.irc PRIVMSG #chan :bob: Answer as I call you. Nick Bottom, the weaver.") + (0.1 ":bob!~u@24ebq8ma57rha.irc PRIVMSG #chan :alice: Have lost a brace of kinsmen: all are punish'd.") + (0.1 ":alice!~u@24ebq8ma57rha.irc PRIVMSG #chan :bob: Truly, thou art damned like an ill-roasted egg, all on one side.") + (0.1 ":bob!~u@24ebq8ma57rha.irc PRIVMSG #chan :alice: Thou wouldst else have made thy tale large.") + (0.1 ":alice!~u@24ebq8ma57rha.irc PRIVMSG #chan :bob: And even for that do I love you the more.") + (0.1 ":bob!~u@24ebq8ma57rha.irc PRIVMSG #chan :alice: And let my spleenful sons this trull deflower.") + (0.1 ":alice!~u@24ebq8ma57rha.irc PRIVMSG #chan :bob: Truly, and to cast away honesty upon a foul slut were to put good meat into an unclean dish.") + (0.1 ":bob!~u@24ebq8ma57rha.irc PRIVMSG #chan :alice: Come, let's away; the strangers are all gone.") + (0.1 ":alice!~u@24ebq8ma57rha.irc PRIVMSG #chan :bob: You shall find of the king a husband, madam; you, sir, a father. He that so generally is at all times good, must of necessity hold his virtue to you, whose worthiness would stir it up where it wanted rather than lack it where there is such abundance.")) diff --git a/test/lisp/erc/erc-scenarios-resources/47522/foil-in-server-buf/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/47522/foil-in-server-buf/barnet.lispdata new file mode 100644 index 0000000000..99329a3acc --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/47522/foil-in-server-buf/barnet.lispdata @@ -0,0 +1,40 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.barnet.org 003 tester :This server was created Tue, 04 May 2021 05:06:19 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.barnet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 253 tester 0 :unregistered connections") + (0 ":irc.barnet.org 254 tester 1 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.barnet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.barnet.org 422 tester :MOTD File is missing") + (0 ":irc.barnet.org 221 tester +i") + (0 ":irc.barnet.org NOTICE tester :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.")) + +((join 2 "JOIN #chan") + (0 ":tester!~u@jnu48g2wrycbw.irc JOIN #chan") + (0 ":irc.barnet.org 353 tester = #chan :@mike joe tester") + (0 ":irc.barnet.org 366 tester #chan :End of NAMES list")) + +((mode 2 "MODE #chan") + (0 ":irc.barnet.org 324 tester #chan +nt") + (0 ":irc.barnet.org 329 tester #chan 1620104779") + (0.1 ":mike!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :tester, welcome!") + (0.1 ":joe!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :tester, welcome!") + (0.1 ":mike!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :joe: Whipp'd first, sir, and hang'd after.") + (0.1 ":joe!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :mike: We have yet many among us can gripe as hard as Cassibelan; I do not say I am one, but I have a hand. Why tribute ? why should we pay tribute ? If C sar can hide the sun from us with a blanket, or put the moon in his pocket, we will pay him tribute for light; else, sir, no more tribute, pray you now.") + (0.1 ":mike!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :joe: Double and treble admonition, and still forfeit in the same kind ? This would make mercy swear, and play the tyrant.") + (0.1 ":joe!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :mike: And secretly to greet the empress' friends.") + (0.1 ":mike!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :joe: You have not been inquired after: I have sat here all day.") + (0.1 ":joe!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :mike: That same Berowne I'll torture ere I go.") + (0.1 ":mike!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :joe: For mine own part,no offence to the general, nor any man of quality,I hope to be saved.") + (0.1 ":joe!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :mike: Mehercle! if their sons be ingenuous, they shall want no instruction; if their daughters be capable, I will put it to them. But, vir sapit qui pauca loquitur. A soul feminine saluteth us.")) diff --git a/test/lisp/erc/erc-scenarios-resources/47522/foil-in-server-buf/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/47522/foil-in-server-buf/foonet.lispdata new file mode 100644 index 0000000000..67fbe205c4 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/47522/foil-in-server-buf/foonet.lispdata @@ -0,0 +1,43 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Tue, 04 May 2021 05:06:18 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 253 tester 0 :unregistered connections") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing") + (0 ":irc.foonet.org 221 tester +i") + (0 ":irc.foonet.org NOTICE tester :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.")) + +((join 2 "JOIN #chan") + (0 ":tester!~u@9g6b728983yd2.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :alice tester @bob") + (0 ":irc.foonet.org 366 tester #chan :End of NAMES list")) + +((mode 2 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620104779") + (0.1 ":bob!~u@rz2v467q4rwhy.irc PRIVMSG #chan :tester, welcome!") + (0.1 ":alice!~u@rz2v467q4rwhy.irc PRIVMSG #chan :tester, welcome!") + (0.1 ":bob!~u@rz2v467q4rwhy.irc PRIVMSG #chan :alice: But, as it seems, did violence on herself.") + (0.1 ":alice!~u@rz2v467q4rwhy.irc PRIVMSG #chan :bob: Well, this is the forest of Arden.") + (0.1 ":bob!~u@rz2v467q4rwhy.irc PRIVMSG #chan :alice: Signior Iachimo will not from it. Pray, let us follow 'em.") + (0.1 ":alice!~u@rz2v467q4rwhy.irc PRIVMSG #chan :bob: Our queen and all her elves come here anon.") + (0.1 ":bob!~u@rz2v467q4rwhy.irc PRIVMSG #chan :alice: The ground is bloody; search about the churchyard.") + (0.1 ":alice!~u@rz2v467q4rwhy.irc PRIVMSG #chan :bob: You have discharged this honestly: keep it to yourself. Many likelihoods informed me of this before, which hung so tottering in the balance that I could neither believe nor misdoubt. Pray you, leave me: stall this in your bosom; and I thank you for your honest care. I will speak with you further anon.") + (0.1 ":bob!~u@rz2v467q4rwhy.irc PRIVMSG #chan :alice: Give me that mattock, and the wrenching iron.") + (0.1 ":alice!~u@rz2v467q4rwhy.irc PRIVMSG #chan :bob: Stand you! You have land enough of your own; but he added to your having, gave you some ground.") + (0.1 ":bob!~u@rz2v467q4rwhy.irc PRIVMSG #chan :alice: Excellent workman! Thou canst not paint a man so bad as is thyself.") + (0.1 ":alice!~u@rz2v467q4rwhy.irc PRIVMSG #chan :bob: And will you, being a man of your breeding, be married under a bush, like a beggar ? Get you to church, and have a good priest that can tell you what marriage is: this fellow will but join you together as they join wainscot; then one of you will prove a shrunk panel, and like green timber, warp, warp.") + (0.1 ":bob!~u@rz2v467q4rwhy.irc PRIVMSG #chan :alice: Live, and be prosperous; and farewell, good fellow.")) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/barnet.lispdata new file mode 100644 index 0000000000..c5b18cea3f --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/barnet.lispdata @@ -0,0 +1,40 @@ +;; -*- mode: lisp-data; -*- +((pass 2 "PASS :barnet:changeme")) +((nick 2 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.barnet.org 003 tester :This server was created Mon, 10 May 2021 00:58:22 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.barnet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 254 tester 1 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.barnet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.barnet.org 422 tester :MOTD File is missing")) + +((join 2 "JOIN #chan") + (0 ":tester!~u@6yximxrnkg65a.irc JOIN #chan") + (0 ":irc.barnet.org 353 tester = #chan :@joe mike tester") + (0 ":irc.barnet.org 366 tester #chan :End of NAMES list") + (0.1 ":joe!~u@6yximxrnkg65a.irc PRIVMSG #chan :tester, welcome!") + (0 ":mike!~u@6yximxrnkg65a.irc PRIVMSG #chan :tester, welcome!")) + +((mode 1 "MODE #chan") + (0 ":irc.barnet.org 324 tester #chan +nt") + (0 ":irc.barnet.org 329 tester #chan 1620608304") + ;; Wait for foonet's buffer playback + (0.1 ":mike!~u@6yximxrnkg65a.irc PRIVMSG #chan :joe: Go take her hence, and marry her instantly.") + (0.1 ":joe!~u@6yximxrnkg65a.irc PRIVMSG #chan :mike: Of all the four, or the three, or the two, or one of the four.") + (0.1 ":mike!~u@6yximxrnkg65a.irc PRIVMSG #chan :joe: And gives the crutch the cradle's infancy.") + (0.1 ":joe!~u@6yximxrnkg65a.irc PRIVMSG #chan :mike: Such is the simplicity of man to hearken after the flesh.") + (0.05 ":mike!~u@6yximxrnkg65a.irc PRIVMSG #chan :joe: The leaf to read them. Let us toward the king.") + (0.05 ":joe!~u@6yximxrnkg65a.irc PRIVMSG #chan :mike: Many can brook the weather that love not the wind.") + (0.05 ":mike!~u@6yximxrnkg65a.irc PRIVMSG #chan :joe: And now, dear maid, be you as free to us.") + (0.00 ":joe!~u@6yximxrnkg65a.irc PRIVMSG #chan :mike: He hath an uncle here in Messina will be very much glad of it.")) + +((linger 3.5 LINGER)) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/foonet-again.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/foonet-again.lispdata new file mode 100644 index 0000000000..1d62150762 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/foonet-again.lispdata @@ -0,0 +1,39 @@ +;; -*- mode: lisp-data; -*- +((pass-redux 10 "PASS :foonet:changeme")) +((nick-redux 1 "NICK tester")) + +((user-redux 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Mon, 10 May 2021 00:58:22 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing") + ;; History + (0 ":tester!~u@q6ddatxcq6txy.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :@alice bob tester") + (0 ":irc.foonet.org 366 tester #chan :End of /NAMES list.") + (0 ":***!znc@znc.in PRIVMSG #chan :Buffer Playback...") + (0 ":bob!~u@q6ddatxcq6txy.irc PRIVMSG #chan :[02:43:23] alice: And soar with them above a common bound.") + (0 ":alice!~u@q6ddatxcq6txy.irc PRIVMSG #chan :[02:43:27] bob: And be aveng'd on cursed Tamora.") + (0 ":bob!~u@q6ddatxcq6txy.irc PRIVMSG #chan :[02:43:29] alice: He did love her, sir, as a gentleman loves a woman.") + (0 ":***!znc@znc.in PRIVMSG #chan :Playback Complete.")) + +((mode-redux 1 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620608304") + (0.1 ":alice!~u@q6ddatxcq6txy.irc PRIVMSG #chan :bob: Ay, madam, with the swiftest wing of speed.") + (0.1 ":bob!~u@q6ddatxcq6txy.irc PRIVMSG #chan :alice: Five times in that ere once in our five wits.") + (0.1 ":alice!~u@q6ddatxcq6txy.irc PRIVMSG #chan :bob: And bid him come to take his last farewell.") + (0.1 ":bob!~u@q6ddatxcq6txy.irc PRIVMSG #chan :alice: But we are spirits of another sort.") + (0.1 ":alice!~u@q6ddatxcq6txy.irc PRIVMSG #chan :bob: It was not given me, nor I did not buy it.")) + +((linger 6 LINGER)) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/foonet.lispdata new file mode 100644 index 0000000000..b20b1e72ec --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/autojoin/foonet.lispdata @@ -0,0 +1,36 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :foonet:changeme")) +((nick 1 "NICK tester")) + +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Mon, 10 May 2021 00:58:22 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing")) + +((join 1 "JOIN #chan") + (0 ":tester!~u@q6ddatxcq6txy.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :@alice bob tester") + (0 ":irc.foonet.org 366 tester #chan :End of NAMES list") + (0.1 ":bob!~u@q6ddatxcq6txy.irc PRIVMSG #chan :tester, welcome!") + (0 ":alice!~u@q6ddatxcq6txy.irc PRIVMSG #chan :tester, welcome!")) + +((mode 1 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620608304") + (0.1 ":bob!~u@q6ddatxcq6txy.irc PRIVMSG #chan :alice: Pray you, sir, deliver me this paper.") + (0.1 ":alice!~u@q6ddatxcq6txy.irc PRIVMSG #chan :bob: Wake when some vile thing is near.")) + +((quit 1 "QUIT :\2ERC\2")) + +((drop 0 DROP)) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/bouncer-history/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/bouncer-history/barnet.lispdata new file mode 100644 index 0000000000..cba56e6ccf --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/bouncer-history/barnet.lispdata @@ -0,0 +1,41 @@ +;; -*- mode: lisp-data; -*- +((pass 2 "PASS :barnet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.barnet.org 003 tester :This server was created Wed, 28 Apr 2021 06:59:59 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.barnet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 254 tester 1 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.barnet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.barnet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":tester!~u@xrir8fpe4d7ak.irc JOIN #chan") + (0 ":irc.barnet.org 353 tester = #chan :joe @mike tester") + (0 ":irc.barnet.org 366 tester #chan :End of /NAMES list.") + (0 ":***!znc@znc.in PRIVMSG #chan :Buffer Playback...") + (0 ":joe!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :[07:04:25] mike: Belike, for joy the emperor hath a son.") + (0 ":mike!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :[07:04:27] joe: Protest their first of manhood.") + (0 ":joe!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :[07:04:29] mike: As frozen water to a starved snake.") + (0 ":mike!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :[07:04:34] joe: My mirth it much displeas'd, but pleas'd my woe.") + (0 ":joe!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :[07:04:38] mike: Why, Marcus, no man should be mad but I.") + (0 ":mike!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :[07:04:44] joe: Faith, I have heard too much, for your words and performances are no kin together.") + (0 ":***!znc@znc.in PRIVMSG #chan :Playback Complete.") + (0 ":irc.barnet.org NOTICE tester :[07:00:01] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.barnet.org 305 tester :You are no longer marked as being away")) + +((mode 3 "MODE #chan") + (0 ":irc.barnet.org 324 tester #chan +nt") + (0 ":irc.barnet.org 329 tester #chan 1619593200") + (0.25 ":joe!~u@svpn88yjcdj42.irc PRIVMSG #chan :mike: But, in defence, by mercy, 'tis most just.") + (0.25 ":mike!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :joe: The Marshal of France, Monsieur la Far.") + (0.25 ":joe!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :mike: And bide the penance of each three years' day.") + (0.25 ":mike!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :joe: Madam, within; but never man so chang'd.") + (0.25 ":joe!~u@xrir8fpe4d7ak.irc PRIVMSG #chan :mike: As much in private, and I'll bid adieu.")) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/bouncer-history/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/bouncer-history/foonet.lispdata new file mode 100644 index 0000000000..6af26038d9 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/bouncer-history/foonet.lispdata @@ -0,0 +1,45 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :foonet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Wed, 28 Apr 2021 07:00:00 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":tester!~u@nvfhxvqm92rm6.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :alice @bob tester") + (0 ":irc.foonet.org 366 tester #chan :End of /NAMES list.") + (0 ":***!znc@znc.in PRIVMSG #chan :Buffer Playback...") + (0 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:02] alice: Here come the lovers, full of joy and mirth.") + (0 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:07] bob: According to the fool's bolt, sir, and such dulcet diseases.") + (0 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:10] alice: And hang himself. I pray you, do my greeting.") + (0 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:18] bob: And you sat smiling at his cruel prey.") + (0 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:21] alice: Or never after look me in the face.") + (0 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:25] bob: If that may be, than all is well. Come, sit down, every mother's son, and rehearse your parts. Pyramus, you begin: when you have spoken your speech, enter into that brake; and so every one according to his cue.") + (0 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:30] alice: Where I espied the panther fast asleep.") + (0 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:32] bob: Alas! he is too young: yet he looks successfully.") + (0 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:37] alice: Here, at your lordship's service.") + (0 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:42] bob: By my troth, and in good earnest, and so God mend me, and by all pretty oaths that are not dangerous, if you break one jot of your promise or come one minute behind your hour, I will think you the most pathetical break-promise, and the most hollow lover, and the most unworthy of her you call Rosalind, that may be chosen out of the gross band of the unfaithful. Therefore, beware my censure, and keep your promise.") + (0 ":***!znc@znc.in PRIVMSG #chan :Playback Complete.") + (0 ":irc.foonet.org NOTICE tester :[07:00:32] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.foonet.org 305 tester :You are no longer marked as being away")) + +((mode 3 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1619593200") + (0.9 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :bob: Grows, lives, and dies, in single blessedness.") + (0.25 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :alice: For these two hours, Rosalind, I will leave thee.") + (0.25 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :bob: By this hand, it will not kill a fly. But come, now I will be your Rosalind in a more coming-on disposition; and ask me what you will, I will grant it.") + (0.25 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :alice: That I must love a loathed enemy.") + (0.25 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :bob: As't please your lordship: I'll leave you.")) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/rename-buffers/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/rename-buffers/barnet.lispdata new file mode 100644 index 0000000000..4c2e9f209b --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/rename-buffers/barnet.lispdata @@ -0,0 +1,38 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :barnet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.barnet.org 003 tester :This server was created Wed, 12 May 2021 07:41:08 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.barnet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 254 tester 1 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.barnet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.barnet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":irc.barnet.org 305 tester :You are no longer marked as being away")) + +((join 1 "JOIN #chan") + (0 ":tester!~u@awyxgybtkx7uq.irc JOIN #chan") + (0 ":irc.barnet.org 353 tester = #chan :@joe mike tester") + (0 ":irc.barnet.org 366 tester #chan :End of NAMES list") + (0.1 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :tester, welcome!") + (0 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :tester, welcome!")) + +((mode 1 "MODE #chan") + (0 ":irc.barnet.org 324 tester #chan +nt") + (0 ":irc.barnet.org 329 tester #chan 1620805269") + (0.1 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: But you have outfaced them all.") + (0.1 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :mike: Why, will shall break it; will, and nothing else.") + (0.1 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: Yes, a dozen; and as many to the vantage, as would store the world they played for.") + (0.05 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :mike: As he regards his aged father's life.") + (0.05 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: It is a rupture that you may easily heal; and the cure of it not only saves your brother, but keeps you from dishonour in doing it.")) + +((linger 1 LINGER)) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/rename-buffers/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/rename-buffers/foonet.lispdata new file mode 100644 index 0000000000..b4fcd1985a --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/rename-buffers/foonet.lispdata @@ -0,0 +1,43 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :foonet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Wed, 12 May 2021 07:41:09 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":irc.foonet.org 305 tester :You are no longer marked as being away")) + +((join 1 "JOIN #chan") + (0 ":tester!~u@ertp7idh9jtgi.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :@alice bob tester") + (0 ":irc.foonet.org 366 tester #chan :End of NAMES list") + (0.1 ":alice!~u@ertp7idh9jtgi.irc PRIVMSG #chan :tester, welcome!") + (0 ":bob!~u@ertp7idh9jtgi.irc PRIVMSG #chan :tester, welcome!")) + +((mode 1 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620805271") + (0.1 ":alice!~u@ertp7idh9jtgi.irc PRIVMSG #chan :bob: He cannot be heard of. Out of doubt he is transported.") + (0.1 ":bob!~u@ertp7idh9jtgi.irc PRIVMSG #chan :alice: More evident than this; for this was stol'n.") + (0.1 ":alice!~u@ertp7idh9jtgi.irc PRIVMSG #chan :bob: Sell when you can; you are not for all markets.") + (0.1 ":bob!~u@ertp7idh9jtgi.irc PRIVMSG #chan :alice: There's the fool hangs on your back already.") + (0.1 ":alice!~u@ertp7idh9jtgi.irc PRIVMSG #chan :bob: Why, if you have a stomach to't, monsieur, if you think your mystery in stratagem can bring this instrument of honour again into its native quarter, be magnanimous in the enterprise and go on; I will grace the attempt for a worthy exploit: if you speed well in it, the duke shall both speak of it, and extend to you what further becomes his greatness, even to the utmost syllable of your worthiness.") + (0.1 ":bob!~u@ertp7idh9jtgi.irc PRIVMSG #chan :alice: For he hath still been tried a holy man.") + (0.1 ":alice!~u@ertp7idh9jtgi.irc PRIVMSG #chan :bob: To have the touches dearest priz'd.") + (0.1 ":bob!~u@ertp7idh9jtgi.irc PRIVMSG #chan :alice: And must advise the emperor for his good.") + (0.1 ":alice!~u@ertp7idh9jtgi.irc PRIVMSG #chan :bob: Orlando, my liege; the youngest son of Sir Rowland de Boys.") + (0.1 ":bob!~u@ertp7idh9jtgi.irc PRIVMSG #chan :alice: The ape is dead, and I must conjure him.")) + +((linger 1 LINGER)) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-fail/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-fail/barnet.lispdata new file mode 100644 index 0000000000..d6555d3fc4 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-fail/barnet.lispdata @@ -0,0 +1,63 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :barnet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.barnet.org 003 tester :This server was created Wed, 05 May 2021 09:05:33 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.barnet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 254 tester 1 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.barnet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.barnet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":tester!~u@wvys46tx8tpmk.irc JOIN #chan") + (0 ":irc.barnet.org 353 tester = #chan :joe @mike tester") + (0 ":irc.barnet.org 366 tester #chan :End of /NAMES list.") + (0 ":***!znc@znc.in PRIVMSG #chan :Buffer Playback...") + (0 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :[09:09:16] joe: Tush! none but minstrels like of sonneting.") + (0 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :[09:09:19] mike: Prithee, nuncle, be contented; 'tis a naughty night to swim in. Now a little fire in a wide field were like an old lecher's heart; a small spark, all the rest on's body cold. Look! here comes a walking fire.") + (0 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :[09:09:22] joe: My name is Edgar, and thy father's son.") + (0 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :[09:09:26] mike: Good my lord, be good to me; your honour is accounted a merciful man; good my lord.") + (0 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :[09:09:31] joe: Thy child shall live, and I will see it nourish'd.") + (0 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :[09:09:33] mike: Quick, quick; fear nothing; I'll be at thy elbow.") + (0 ":***!znc@znc.in PRIVMSG #chan :Playback Complete.") + (0 ":irc.barnet.org NOTICE tester :[09:05:35] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.barnet.org 305 tester :You are no longer marked as being away")) + +((mode 1 "MODE #chan") + (0 ":irc.barnet.org 324 tester #chan +nt") + (0 ":irc.barnet.org 329 tester #chan 1620205534") + (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :joe: That will be given to the loudest noise we make.") + (0.1 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :mike: If it please your honour, I am the poor duke's constable, and my name is Elbow: I do lean upon justice, sir; and do bring in here before your good honour two notorious benefactors.") + (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :joe: Following the signs, woo'd but the sign of she.") + (0.5 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :mike: That, sir, which I will not report after her.") + (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :joe: Boyet, prepare: I will away to-night.") + (0.1 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :mike: If the man be a bachelor, sir, I can; but if he be a married man, he is his wife's head, and I can never cut off a woman's head.") + (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :joe: Thyself upon thy virtues, they on thee.") + (0.1 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :mike: Arm it in rags, a pigmy's straw doth pierce it.")) + +((part 5.1 "PART #chan :\2ERC\2") + (0 ":tester!~u@wvys46tx8tpmk.irc PART #chan :\2ERC\2 (IRC client for Emacs " emacs-version ")")) + +((join 10.1 "JOIN #chan") + (0 ":tester!~u@wvys46tx8tpmk.irc JOIN #chan") + (0 ":irc.barnet.org 353 tester = #chan :@mike joe tester") + (0 ":irc.barnet.org 366 tester #chan :End of NAMES list") + (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :tester, welcome!") + (0 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :tester, welcome!")) + +((mode 1 "MODE #chan") + (0 ":irc.barnet.org 324 tester #chan +nt") + (0 ":irc.barnet.org 329 tester #chan 1620205534") + (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :joe: Chi non te vede, non te pretia.") + (0.1 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :mike: Well, if ever thou dost fall from this faith, thou wilt prove a notable argument.") + (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :joe: Of heavenly oaths, vow'd with integrity.") + (0.1 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :mike: These herblets shall, which we upon you strew.") + (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :joe: Aaron will have his soul black like his face.")) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-fail/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-fail/foonet.lispdata new file mode 100644 index 0000000000..84daf7aec7 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-fail/foonet.lispdata @@ -0,0 +1,63 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :foonet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Wed, 05 May 2021 09:05:34 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":tester!~u@247eaxkrufj44.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :alice @bob tester") + (0 ":irc.foonet.org 366 tester #chan :End of /NAMES list.") + (0 ":***!znc@znc.in PRIVMSG #chan :Buffer Playback...") + (0 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :[09:07:19] bob: Is this; she hath bought the name of whore thus dearly.") + (0 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :[09:07:24] alice: He sent to me, sir,Here he comes.") + (0 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :[09:07:26] bob: Till I torment thee for this injury.") + (0 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :[09:07:29] alice: There's an Italian come; and 'tis thought, one of Leonatus' friends.") + (0 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :[09:09:33] bob: Ay, and the particular confirmations, point from point, to the full arming of the verity.") + (0 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :[09:09:35] alice: Kneel in the streets and beg for grace in vain.") + (0 ":***!znc@znc.in PRIVMSG #chan :Playback Complete.") + (0 ":irc.foonet.org NOTICE tester :[09:06:05] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.foonet.org 305 tester :You are no longer marked as being away")) + +((mode 1 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620205534") + (0.5 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :alice: Nor I no strength to climb without thy help.") + (0.1 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :bob: Nothing, but let him have thanks. Demand of him my condition, and what credit I have with the duke.") + (0.1 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :alice: Show me this piece. I am joyful of your sights.") + (0.2 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :bob: Whilst I can shake my sword or hear the drum.")) + +((part 5 "PART #chan :\2ERC\2") + (0 ":tester!~u@247eaxkrufj44.irc PART #chan :\2ERC\2 (IRC client for Emacs " emacs-version ")")) + +((join 10 "JOIN #chan") + (0 ":tester!~u@247eaxkrufj44.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :@bob alice tester") + (0 ":irc.foonet.org 366 tester #chan :End of NAMES list") + (0.1 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :tester, welcome!") + (0 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :tester, welcome!")) + +((mode 1 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620205534") + (0.8 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :alice: Thou desirest me to stop in my tale against the hair.") + (0.1 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :bob: And dar'st not stand, nor look me in the face.") + (0.1 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :alice: It should not be, by the persuasion of his new feasting.") + (0.1 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :bob: It was not given me, nor I did not buy it.") + (0.1 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :alice: He that would vouch it in any place but here.") + (0.1 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :bob: In everything I wait upon his will.") + (0.1 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :alice: Thou counterfeit'st most lively.")) + +((linger 1 LINGER)) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-litter/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-litter/barnet.lispdata new file mode 100644 index 0000000000..2b821bf8f0 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-litter/barnet.lispdata @@ -0,0 +1,66 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :barnet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.barnet.org 003 tester :This server was created Thu, 06 May 2021 02:02:40 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.barnet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 254 tester 1 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.barnet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.barnet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":tester!~u@43inc6hukdiwg.irc JOIN #chan") + (0 ":irc.barnet.org 353 tester = #chan :@joe mike tester") + (0 ":irc.barnet.org 366 tester #chan :End of /NAMES list.") + (0 ":***!znc@znc.in PRIVMSG #chan :Buffer Playback...") + (0 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :[02:06:20] joe: Marry, it is your brother's right hand.") + (0 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :[02:06:23] mike: If it be prov'd! you see it is apparent.") + (0 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :[02:06:28] joe: Than would make up his message.") + (0 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :[02:06:59] mike: And almost broke my heart with extreme laughter.") + (0 ":***!znc@znc.in PRIVMSG #chan :Playback Complete.") + (0 ":irc.barnet.org NOTICE tester :[02:02:43] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.barnet.org 305 tester :You are no longer marked as being away")) + +((mode 1.2 "MODE #chan") + (0 ":irc.barnet.org 324 tester #chan +nt") + (0 ":irc.barnet.org 329 tester #chan 1620266561") + (0.2 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :joe: Why, by making him uncapable of Othello's place; knocking out his brains.") + ;; This stuff shows up in the automatically created uniquified buffer + (0.5 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :mike: Berowne did swear himself out of all suit.") + (0.1 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :joe: Go to, go to: no matter for the dish, sir.") + (0.1 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :mike: We will have, if this fadge not, an antick. I beseech you, follow.") + (0.1 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :joe: As like almost to Claudio as himself.")) + +((part 4.2 "PART #chan :\2ERC\2") + (0 ":tester!~u@43inc6hukdiwg.irc PART #chan :\2ERC\2")) + +((join 5.2 "JOIN #chan") + (0 ":tester!~u@43inc6hukdiwg.irc JOIN #chan") + (0 ":irc.barnet.org 353 tester = #chan :@joe mike tester") + (0 ":irc.barnet.org 366 tester #chan :End of NAMES list") + (0.1 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :tester, welcome!") + (0 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :tester, welcome!")) + +((mode-b 1.2 "MODE #chan") + (0 ":irc.barnet.org 324 tester #chan +nt") + (0 ":irc.barnet.org 329 tester #chan 1620266561") + (0.1 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :joe: To wake and wage a danger profitless.") + (0.1 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :mike: And beauty's crest becomes the heavens well.") + (0.1 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :joe: Call up my brother. O! that you had had her.") + (0.1 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :mike: Most honourably doth uphold his word.") + (0.1 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :joe: But that he's well, and will be shortly here.") + (0.1 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :mike: Samson, master: he was a man of good carriage, great carriage, for he carried the towngates on his back like a porter; and he was in love.") + (0.1 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :joe: And yet seem cold, the time you may so hoodwink.") + (0.1 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :mike: To teach a teacher ill beseemeth me.") + (0.1 ":mike!~u@43inc6hukdiwg.irc PRIVMSG #chan :joe: If you swear, my lord, you shall not be forsworn.") + (0.1 ":joe!~u@43inc6hukdiwg.irc PRIVMSG #chan :mike: To make a world-without-end bargain in.")) + +((linger 1 LINGER)) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-litter/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-litter/foonet.lispdata new file mode 100644 index 0000000000..44175d2a9c --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/clash-of-chans/uniquify-litter/foonet.lispdata @@ -0,0 +1,56 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :foonet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Thu, 06 May 2021 02:02:40 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":tester!~u@megraseia93w4.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :@alice bob tester") + (0 ":irc.foonet.org 366 tester #chan :End of /NAMES list.") + (0 ":***!znc@znc.in PRIVMSG #chan :Buffer Playback...") + (0 ":bob!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :[02:06:42] alice: Romeo slew Tybalt, Romeo must not live.") + (0 ":alice!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :[02:06:47] bob: Signior Martino and his wife and daughters; County Anselme and his beauteous sisters; the lady widow of Vitruvio; Signior Placentio, and his lovely nieces; Mercutio and his brother Valentine; mine uncle Capulet, his wife and daughters; my fair niece Rosaline; Livia; Signior Valentio and his cousin Tybalt; Lucio and the lively Helena.") + (0 ":bob!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :[02:06:51] alice: Of nothing so much as that I am not like Timon.") + (0 ":alice!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :[02:06:55] bob: Something browner than Judas's; marry, his kisses are Judas's own children.") + (0 ":***!znc@znc.in PRIVMSG #chan :Playback Complete.") + (0 ":irc.foonet.org NOTICE tester :[02:03:13] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.foonet.org 305 tester :You are no longer marked as being away")) + +((mode 1 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620266561") + (0.5 ":bob!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :alice: His looks I fear, and his intents I doubt.") + (0.3 ":alice!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :bob: But never hope to know why I should marry her.")) + +((part 2.1 "PART #chan") + (0 ":tester!~u@megraseia93w4.irc PART #chan")) + +((join 5.1 "JOIN #chan") + (0 ":tester!~u@megraseia93w4.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :@alice bob tester") + (0 ":irc.foonet.org 366 tester #chan :End of NAMES list") + (0.1 ":alice!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :tester, welcome!") + (0 ":bob!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :tester, welcome!")) + +((mode-b 1 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620266561") + (0.1 ":bob!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :alice: Indeed, I should have asked you that before.") + (0.1 ":alice!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :bob: Her eye is sick on't: I observe her now.") + (0.1 ":bob!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :alice: For no name fits thy nature but thy own.") + (0.1 ":alice!~u@qyqgpz6tu76j6.irc PRIVMSG #chan :bob: Yet heard too much of Phebe's cruelty.")) + +((linger 1 LINGER)) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/foil-rename/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/foil-rename/barnet.lispdata new file mode 100644 index 0000000000..5652d322fc --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/foil-rename/barnet.lispdata @@ -0,0 +1,51 @@ +;; -*- mode: lisp-data; -*- +((pass 10 "PASS :barnet:changeme")) +((nick 0.2 "NICK tester")) +((user 0.2 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.5.1-4860c5cad0179db1") + (0 ":irc.barnet.org 003 tester :This server was created Fri, 19 Mar 2021 10:23:19 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.5.1-4860c5cad0179db1 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m INVEX KICKLEN=390 MAXLIST=beI:60 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 1 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 254 tester 0 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 1 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 1 1 :Current local users 1, max 1") + (0 ":irc.barnet.org 266 tester 1 1 :Current global users 1, max 1") + (0 ":irc.barnet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + + (0 ":tester!~u@8cgjyczyrjgby.irc JOIN #bar") + (0 ":irc.barnet.org 353 tester = #bar :@mike joe tester") + (0 ":irc.barnet.org 366 tester #bar :End of /NAMES list.") + + (0 ":***!znc@znc.in PRIVMSG #bar :Buffer Playback...") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:23:28] tester, welcome!") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:23:28] tester, welcome!") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:04] mike: Marry, sir, by my wife; who, if she had been a woman cardinally given, might have been accused in fornication, adultery, and all uncleanliness there.") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:07] joe: Look, how you butt yourself in these sharp mocks.") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:10] mike: Who ? not the duke ? yes, your beggar of fifty, and his use was to put a ducat in her clack-dish; the duke had crotchets in him. He would be drunk too; that let me inform you.") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:15] joe: Look you what I have from the loving king.") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:19] mike: Sir, I know him, and I love him.") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:22] joe: Dictynna, goodman Dull: Dictynna, goodman Dull.") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:24] mike: Varlet, thou liest: thou liest, wicked varlet. The time is yet to come that she was ever respected with man, woman, or child.") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:28] joe: Nothing but peace and gentle visitation.") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:31] mike: What he hath lost noble Macbeth hath won.") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:34] joe: Patience, dear niece. Good Titus, dry thine eyes.") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:39] mike: And hear the sentence of your moved prince.") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:44] joe: To be whipped; and yet a better love than my master.") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:49] mike: Bid me farewell, and let me hear thee going.") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:54] joe: By heaven, thy love is black as ebony.") + (0 ":***!znc@znc.in PRIVMSG #bar :Playback Complete.") + + (0 ":irc.barnet.org NOTICE tester :[10:23:22] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.barnet.org 305 tester :You are no longer marked as being away")) + +((mode 10 "MODE #bar") + (0 ":irc.barnet.org 324 tester #bar +nt") + (0 ":irc.barnet.org 329 tester #bar 1616149403") + (0.1 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :mike: Friar, thou knowest not the duke so well as I do: he's a better woodman than thou takest him for.") + (0.1 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :joe: Like the sequel, I. Signior Costard, adieu.") + (0.1 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :mike: This is his second fit; he had one yesterday.")) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/foil-rename/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/foil-rename/foonet.lispdata new file mode 100644 index 0000000000..cb77503244 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/foil-rename/foonet.lispdata @@ -0,0 +1,48 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :foonet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Sun, 25 Apr 2021 11:28:28 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + + (0 ":tester!~u@8cgjyczyrjgby.irc JOIN #foo") + (0 ":irc.foonet.org 353 tester = #foo :@bob alice tester") + (0 ":irc.foonet.org 366 tester #foo :End of /NAMES list.") + + (0 ":***!znc@znc.in PRIVMSG #foo :Buffer Playback...") + (0 ":alice!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:28] tester, welcome!") + (0 ":bob!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:28] tester, welcome!") + (0 ":bob!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:29] alice: Pardon, sir; error: he is not quantity enough for that Worthy's thumb: he is not so big as the end of his club.") + (0 ":alice!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:34] bob: Go, fetch him hither: let me look upon him.") + (0 ":bob!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:37] alice: Over-roasted rather; ready long ago.") + (0 ":alice!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:39] bob: Sir, there is especial commission come from Venice to depute Cassio in Othello's place.") + (0 ":bob!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:41] alice: In any proportion or in any language.") + (0 ":alice!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:46] bob: Come, bring them away: if these be good people in a common-weal that do nothing but use their abuses in common houses, I know no law: bring them away.") + (0 ":bob!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:51] alice: Wish'd himself the heaven's breath.") + (0 ":alice!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:53] bob: My general will forget my love and service.") + (0 ":bob!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:55] alice: Madam, all joy befall your Grace.") + (0 ":alice!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:23:58] bob: To be suspected; framed to make women false.") + (0 ":bob!~u@8cgjyczyrjgby.irc PRIVMSG #foo :[10:24:00] alice: Ay, of my pigeons, sir; nothing else.") + (0 ":***!znc@znc.in PRIVMSG #foo :Playback Complete.") + + (0 ":irc.foonet.org NOTICE tester :[11:29:00] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.foonet.org 305 tester :You are no longer marked as being away")) + +((mode 10 "MODE #foo") + (0 ":irc.foonet.org 324 tester #foo +nt") + (0 ":irc.foonet.org 329 tester #foo 1616149403") + (0.1 ":alice!~u@8cgjyczyrjgby.irc PRIVMSG #foo :bob: To old Free-town, our common judgment-place.") + (0.1 ":bob!~u@8cgjyczyrjgby.irc PRIVMSG #foo :alice: To ask of whence you are: report it.")) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/gapless/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/gapless/barnet.lispdata new file mode 100644 index 0000000000..dcf630902e --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/gapless/barnet.lispdata @@ -0,0 +1,49 @@ +;; -*- mode: lisp-data; -*- +((pass 10 "PASS :barnet:changeme")) +((nick 0.2 "NICK tester")) + +((user 0.2 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.5.1-4860c5cad0179db1") + (0 ":irc.barnet.org 003 tester :This server was created Fri, 19 Mar 2021 10:23:19 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.5.1-4860c5cad0179db1 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m INVEX KICKLEN=390 MAXLIST=beI:60 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 1 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 254 tester 0 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 1 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 1 1 :Current local users 1, max 1") + (0 ":irc.barnet.org 266 tester 1 1 :Current global users 1, max 1") + (0 ":irc.barnet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":tester!~u@8cgjyczyrjgby.irc JOIN #bar") + (0 ":irc.barnet.org 353 tester = #bar :@mike joe tester") + (0 ":irc.barnet.org 366 tester #bar :End of /NAMES list.") + (0 ":***!znc@znc.in PRIVMSG #bar :Buffer Playback...") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:23:28] tester, welcome!") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:23:28] tester, welcome!") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:23:29] joe: Pardon, sir; error: he is not quantity enough for that Worthy's thumb: he is not so big as the end of his club.") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:31] mike: What he hath lost noble Macbeth hath won.") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:44] joe: To be whipped; and yet a better love than my master.") + (0 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:49] mike: Bid me farewell, and let me hear thee going.") + (0 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :[10:24:54] joe: By heaven, thy love is black as ebony.") + (0 ":***!znc@znc.in PRIVMSG #bar :Playback Complete.") + (0 ":irc.barnet.org NOTICE tester :[10:23:22] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.barnet.org 305 tester :You are no longer marked as being away")) + +((~pass-extra 10 "PASS barnet:changeme") + (0 ":irc.barnet.org 462 tester :You may not reregister")) + +((~nick-extra 5 "NICK tester")) + +((~user-extra 10 "USER user 0 * :tester") + (0 ":irc.barnet.org 462 tester :You may not reregister")) + +((mode 20 "MODE #bar") + (0 ":irc.barnet.org 324 tester #bar +nt") + (0 ":irc.barnet.org 329 tester #bar 1616149403") + (0.1 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :joe: To ask of whence you are: report it.") + (0.1 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :mike: Friar, thou knowest not the duke so well as I do: he's a better woodman than thou takest him for.") + (0.1 ":mike!~u@8cgjyczyrjgby.irc PRIVMSG #bar :joe: Like the sequel, I. Signior Costard, adieu.") + (0.1 ":joe!~u@8cgjyczyrjgby.irc PRIVMSG #bar :mike: This is his second fit; he had one yesterday.")) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/gapless/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/gapless/foonet.lispdata new file mode 100644 index 0000000000..67234e26bc --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/gapless/foonet.lispdata @@ -0,0 +1,5 @@ +;;; -*- mode: lisp-data -*- + +((pass 2.0 "PASS doa")) +((nick 0.2 "NICK tester")) +((user 0.2 "USER user 0 * :I never run!")) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/reuseless/barnet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/reuseless/barnet.lispdata new file mode 100644 index 0000000000..1e30e9e0b2 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/reuseless/barnet.lispdata @@ -0,0 +1,24 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :barnet:changeme")) +((nick 1 "NICK tester")) + +((~user 2 "USER user 0 * :tester") + (0 ":irc.barnet.org 001 tester :Welcome to the barnet IRC Network tester") + (0 ":irc.barnet.org 002 tester :Your host is irc.barnet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.barnet.org 003 tester :This server was created Sun, 25 Apr 2021 11:28:28 UTC") + (0 ":irc.barnet.org 004 tester irc.barnet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.barnet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.barnet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=barnet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.barnet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.barnet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.barnet.org 252 tester 0 :IRC Operators online") + (0 ":irc.barnet.org 254 tester 1 :channels formed") + (0 ":irc.barnet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.barnet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.barnet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.barnet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":irc.barnet.org NOTICE tester :[11:29:00] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.barnet.org 305 tester :You are no longer marked as being away")) + +((~eof 2 EOF)) diff --git a/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/reuseless/foonet.lispdata b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/reuseless/foonet.lispdata new file mode 100644 index 0000000000..7952fb1d6e --- /dev/null +++ b/test/lisp/erc/erc-scenarios-resources/48598/rebuffed/reuseless/foonet.lispdata @@ -0,0 +1,21 @@ +;; -*- mode: lisp-data; -*- +((pass 1 "PASS :foonet:changeme")) +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Sun, 25 Apr 2021 11:28:28 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing") + (0 ":irc.znc.in 306 tester :You have been marked as being away") + (0 ":irc.foonet.org NOTICE tester :[11:29:00] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.foonet.org 305 tester :You are no longer marked as being away")) diff --git a/test/lisp/erc/erc-scenarios.el b/test/lisp/erc/erc-scenarios.el new file mode 100644 index 0000000000..19d4a33fdd --- /dev/null +++ b/test/lisp/erc/erc-scenarios.el @@ -0,0 +1,4 @@ +;;; erc-scenarios.el --- e2e test cases for ERC -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: +;;; erc-scenarios.el ends here -- 2.31.1