aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorF. Jason Park2023-06-19 23:14:40 -0700
committerF. Jason Park2023-06-25 16:26:40 -0700
commitd2a7b0c76d12d15eb4c6d1cd183c192ad4e872ed (patch)
tree31ae0f517b57a99a5ed572829454fb3b82b0a175 /test
parentc64021d58a17d2e4c8f040cf05d7a7458c37b647 (diff)
downloademacs-d2a7b0c76d12d15eb4c6d1cd183c192ad4e872ed.tar.gz
emacs-d2a7b0c76d12d15eb4c6d1cd183c192ad4e872ed.zip
Revert "Allow erc-reuse-frames to favor connections"
This (mostly) reverts commit 0e4c07dc7448aafd2aa5f6e101d7b7aac23d8a6b. * etc/ERC-NEWS: Also revert hunk from 52c8d537 "* etc/ERC-NEWS: Add section for ERC 5.6." because it announced this feature, which no longer exists. * lisp/erc/erc.el (erc-reuse-frames): Revise doc string instead of reverting completely. (Bug#62833)
Diffstat (limited to 'test')
-rw-r--r--test/lisp/erc/erc-tests.el303
1 files changed, 0 insertions, 303 deletions
diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el
index f3489a16386..b751ef50520 100644
--- a/test/lisp/erc/erc-tests.el
+++ b/test/lisp/erc/erc-tests.el
@@ -503,309 +503,6 @@
503 (dolist (b '("server" "other" "#chan" "#foo" "#fake")) 503 (dolist (b '("server" "other" "#chan" "#foo" "#fake"))
504 (kill-buffer b)))) 504 (kill-buffer b))))
505 505
506(defun erc-tests--run-in-term (&optional debug)
507 (let* ((default-directory (getenv "EMACS_TEST_DIRECTORY"))
508 (emacs (expand-file-name invocation-name invocation-directory))
509 (process-environment (cons "ERC_TESTS_SUBPROCESS=1"
510 process-environment))
511 (name (ert-test-name (ert-running-test)))
512 (temp-file (make-temp-file "erc-term-test-"))
513 (cmd `(let ((stats 1))
514 (setq enable-dir-local-variables nil)
515 (unwind-protect
516 (setq stats (ert-run-tests-batch ',name))
517 (unless ',debug
518 (let ((buf (with-current-buffer (messages-buffer)
519 (buffer-string))))
520 (with-temp-file ,temp-file
521 (insert buf)))
522 (kill-emacs (ert-stats-completed-unexpected stats))))))
523 ;; `ert-test' object in Emacs 29 has a `file-name' field
524 (file-name (symbol-file name 'ert--test))
525 (default-directory (expand-file-name (file-name-directory file-name)))
526 (package (if-let* ((found (getenv "ERC_PACKAGE_NAME"))
527 ((string-prefix-p "erc-" found)))
528 (intern found)
529 'erc))
530 (setup (and (featurep 'compat)
531 `(progn
532 (require 'package)
533 (let ((package-load-list '((compat t) (,package t))))
534 (package-initialize)))))
535 ;; Make subprocess terminal bigger than controlling.
536 (buf (cl-letf (((symbol-function 'window-screen-lines)
537 (lambda () 20))
538 ((symbol-function 'window-max-chars-per-line)
539 (lambda () 40)))
540 (make-term (symbol-name name) emacs nil "-Q" "-nw"
541 "-eval" (prin1-to-string setup)
542 "-l" file-name "-eval" (format "%S" cmd))))
543 (proc (get-buffer-process buf))
544 (err (lambda ()
545 (with-temp-buffer
546 (insert-file-contents temp-file)
547 (message "Subprocess: %s" (buffer-string))
548 (delete-file temp-file)))))
549 (with-current-buffer buf
550 (set-process-query-on-exit-flag proc nil)
551 (with-timeout (10 (funcall err) (error "Timed out awaiting result"))
552 (while (process-live-p proc)
553 (accept-process-output proc 0.1)))
554 (while (accept-process-output proc))
555 (goto-char (point-min))
556 ;; Otherwise gives process exited abnormally with exit-code >0
557 (unless (search-forward (format "Process %s finished" name) nil t)
558 (funcall err)
559 (ert-fail (when (search-forward "exited" nil t)
560 (buffer-substring-no-properties (line-beginning-position)
561 (line-end-position)))))
562 (delete-file temp-file)
563 (when noninteractive
564 (kill-buffer)))))
565
566(defun erc-tests--servars (source &rest vars)
567 (unless (bufferp source)
568 (setq source (get-buffer source)))
569 (dolist (var vars)
570 (should (local-variable-if-set-p var))
571 (set var (buffer-local-value var source))))
572
573(defun erc-tests--erc-reuse-frames (test &optional debug)
574 (if (and (or debug noninteractive) (not (getenv "ERC_TESTS_SUBPROCESS")))
575 (progn
576 (when (memq system-type '(windows-nt ms-dos))
577 (ert-skip "System must be UNIX"))
578 (erc-tests--run-in-term debug))
579 (should-not erc-frame-dedicated-flag)
580 (should (eq erc-reuse-frames t))
581 (let ((erc-join-buffer 'frame)
582 (erc-reuse-frames t)
583 (erc-frame-alist nil)
584 (orig-frame (selected-frame))
585 erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
586 (delete-other-frames)
587 (delete-other-windows)
588 (set-window-buffer (selected-window) "*scratch*")
589 (funcall test orig-frame)
590 (delete-other-frames orig-frame)
591 (delete-other-windows))))
592
593;; TODO add cases for frame-display behavior while reconnecting
594
595(defun erc-tests--erc-reuse-frames--t (_)
596 (ert-info ("New server buffer creates and raises second frame")
597 (with-current-buffer (generate-new-buffer "server")
598 (erc-mode)
599 (setq erc-server-process (start-process "server"
600 (current-buffer) "sleep" "10")
601 erc-frame-alist (cons '(name . "server") default-frame-alist)
602 erc-network 'foonet
603 erc-networks--id (erc-networks--id-create nil)
604 erc--server-last-reconnect-count 0)
605 (set-process-buffer erc-server-process (current-buffer))
606 (set-process-query-on-exit-flag erc-server-process nil)
607 (should-not (get-buffer-window (current-buffer) t))
608 (erc-setup-buffer (current-buffer))
609 (should (equal "server" (frame-parameter (window-frame) 'name)))
610 (should (get-buffer-window (current-buffer) t))))
611
612 (ert-info ("New channel creates and raises third frame")
613 (with-current-buffer (generate-new-buffer "#chan")
614 (erc-mode)
615 (erc-tests--servars "server" 'erc-server-process 'erc-networks--id
616 'erc-network)
617 (setq erc-frame-alist (cons '(name . "#chan") default-frame-alist)
618 erc-default-recipients '("#chan"))
619 (should-not (get-buffer-window (current-buffer) t))
620 (erc-setup-buffer (current-buffer))
621 (should (equal "#chan" (frame-parameter (window-frame) 'name)))
622 (should (get-buffer-window (current-buffer) t))
623 (should (cddr (frame-list))))))
624
625(ert-deftest erc-reuse-frames--t ()
626 :tags '(:unstable :expensive-test)
627 (erc-tests--erc-reuse-frames
628 (lambda (orig-frame)
629 (erc-tests--erc-reuse-frames--t orig-frame)
630 (dolist (b '("server" "#chan"))
631 (kill-buffer b)))))
632
633(defun erc-tests--erc-reuse-frames--displayed-single (_ server-name chan-name)
634
635 (should (eq erc-reuse-frames 'displayed))
636
637 (ert-info ("New server buffer shown in existing frame")
638 (with-current-buffer (generate-new-buffer server-name)
639 (erc-mode)
640 (setq erc-server-process (start-process server-name (current-buffer)
641 "sleep" "10")
642 erc-frame-alist (cons `(name . ,server-name) default-frame-alist)
643 erc-network (make-symbol server-name)
644 erc-server-current-nick "tester"
645 erc-networks--id (erc-networks--id-create nil)
646 erc--server-last-reconnect-count 0)
647 (set-process-buffer erc-server-process (current-buffer))
648 (set-process-query-on-exit-flag erc-server-process nil)
649 (should-not (get-buffer-window (current-buffer) t))
650 (erc-setup-buffer (current-buffer))
651 (should-not (equal server-name (frame-parameter (window-frame) 'name)))
652 ;; New server buffer window appears in split below ERT/scratch
653 (should (get-buffer-window (current-buffer) t))))
654
655 (ert-info ("New channel shown in existing frame")
656 (with-current-buffer (generate-new-buffer chan-name)
657 (erc-mode)
658 (erc-tests--servars server-name 'erc-server-process 'erc-networks--id
659 'erc-network)
660 (setq erc-frame-alist (cons `(name . ,chan-name) default-frame-alist)
661 erc-default-recipients (list chan-name))
662 (should-not (get-buffer-window (current-buffer) t))
663 (erc-setup-buffer (current-buffer))
664 (should-not (equal chan-name (frame-parameter (window-frame) 'name)))
665 ;; New channel buffer replaces server in lower window
666 (should (get-buffer-window (current-buffer) t))
667 (should-not (get-buffer-window server-name t)))))
668
669(ert-deftest erc-reuse-frames--displayed-single ()
670 :tags '(:unstable :expensive-test)
671 (erc-tests--erc-reuse-frames
672 (lambda (orig-frame)
673 (let ((erc-reuse-frames 'displayed))
674 (erc-tests--erc-reuse-frames--displayed-single orig-frame
675 "server" "#chan")
676 (should-not (cdr (frame-list))))
677 (dolist (b '("server" "#chan"))
678 (kill-buffer b)))))
679
680(defun erc-tests--assert-server-split (buffer-or-name frame-name)
681 ;; Assert current buffer resides on one side of a horizontal split
682 ;; in the "server" frame but is not selected.
683 (let* ((buffer-window (get-buffer-window buffer-or-name t))
684 (buffer-frame (window-frame buffer-window)))
685 (should (equal frame-name (frame-parameter buffer-frame 'name)))
686 (should (memq buffer-window (car-safe (window-tree buffer-frame))))
687 (should-not (eq buffer-window (frame-selected-window)))
688 buffer-frame))
689
690(defun erc-tests--erc-reuse-frames--displayed-double (_)
691 (should (eq erc-reuse-frames 'displayed))
692
693 (make-frame '((name . "other")))
694 (select-frame (make-frame '((name . "server"))) 'no-record)
695 (set-window-buffer (selected-window) "*scratch*") ; invokes `erc'
696
697 ;; A user invokes an entry point and switches immediately to a new
698 ;; frame before autojoin kicks in (bug#55540).
699
700 (ert-info ("New server buffer shown in selected frame")
701 (with-current-buffer (generate-new-buffer "server")
702 (erc-mode)
703 (setq erc-server-process (start-process "server" (current-buffer)
704 "sleep" "10")
705 erc-network 'foonet
706 erc-server-current-nick "tester"
707 erc-networks--id (erc-networks--id-create nil)
708 erc--server-last-reconnect-count 0)
709 (set-process-buffer erc-server-process (current-buffer))
710 (set-process-query-on-exit-flag erc-server-process nil)
711 (should-not (get-buffer-window (current-buffer) t))
712 (erc-setup-buffer (current-buffer))
713 (should (equal "server" (frame-parameter (window-frame) 'name)))
714 (should (get-buffer-window (current-buffer) t))))
715
716 (select-frame-by-name "other")
717
718 (ert-info ("New channel shown in dedicated frame")
719 (with-current-buffer (generate-new-buffer "#chan")
720 (erc-mode)
721 (erc-tests--servars "server" 'erc-server-process 'erc-networks--id
722 'erc-network)
723 (setq erc-frame-alist (cons '(name . "#chan") default-frame-alist)
724 erc-default-recipients '("#chan"))
725 (should-not (get-buffer-window (current-buffer) t))
726 (erc-setup-buffer (current-buffer))
727 (erc-tests--assert-server-split (current-buffer) "server")
728 ;; New channel buffer replaces server in lower window of other frame
729 (should-not (get-buffer-window "server" t)))))
730
731(ert-deftest erc-reuse-frames--displayed-double ()
732 :tags '(:unstable :expensive-test)
733 (erc-tests--erc-reuse-frames
734 (lambda (orig-frame)
735 (let ((erc-reuse-frames 'displayed))
736 (erc-tests--erc-reuse-frames--displayed-double orig-frame))
737 (dolist (b '("server" "#chan"))
738 (kill-buffer b)))))
739
740;; If a frame showing ERC buffers exists among other frames, new,
741;; additional connections will use the existing IRC frame. However,
742;; if two or more frames exist with ERC buffers unique to a particular
743;; connection, the correct frame will be found.
744
745(defun erc-tests--erc-reuse-frames--displayed-full (orig-frame)
746 (erc-tests--erc-reuse-frames--displayed-double orig-frame)
747 ;; Server buffer is not displayed because #chan has replaced it in
748 ;; the "server" frame, which is not selected.
749 (should (equal "other" (frame-parameter (window-frame) 'name)))
750 (erc-tests--erc-reuse-frames--displayed-single orig-frame "ircd" "#spam")
751 (should (equal "other" (frame-parameter (window-frame) 'name)))
752
753 ;; Buffer "#spam" has replaced "ircd", which earlier replaced
754 ;; "#chan" in frame "server". But this is confusing, so...
755 (ert-info ("Arrange windows for second connection in other frame")
756 (set-window-buffer (selected-window) "ircd")
757 (split-window-below)
758 (set-window-buffer (next-window) "#spam")
759 (should (equal (cddar (window-tree))
760 (list (get-buffer-window "ircd" t)
761 (get-buffer-window "#spam" t)))))
762
763 (ert-info ("Arrange windows for first connection in server frame")
764 (select-frame-by-name "server")
765 (set-window-buffer (selected-window) "server")
766 (set-window-buffer (next-window) "#chan")
767 (should (equal (cddar (window-tree))
768 (list (get-buffer-window "server" t)
769 (get-buffer-window "#chan" t)))))
770
771 ;; Select original ERT frame
772 (ert-info ("New target for connection server finds appropriate frame")
773 (select-frame orig-frame 'no-record)
774 (with-current-buffer (window-buffer (selected-window))
775 (should (member (buffer-name) '("*ert*" "*scratch*")))
776 (with-current-buffer (generate-new-buffer "alice")
777 (erc-mode)
778 (erc-tests--servars "server" 'erc-server-process 'erc-networks--id)
779 (setq erc-default-recipients '("alice"))
780 (should-not (get-buffer-window (current-buffer) t))
781 (erc-setup-buffer (current-buffer))
782 ;; Window created in frame "server"
783 (should (eq (selected-frame) orig-frame))
784 (erc-tests--assert-server-split (current-buffer) "server"))))
785
786 (ert-info ("New target for connection ircd finds appropriate frame")
787 (select-frame orig-frame 'no-record)
788 (with-current-buffer (window-buffer (selected-window))
789 (should (member (buffer-name) '("*ert*" "*scratch*")))
790 (with-current-buffer (generate-new-buffer "bob")
791 (erc-mode)
792 (erc-tests--servars "ircd" 'erc-server-process 'erc-networks--id)
793 (setq erc-default-recipients '("bob"))
794 (should-not (get-buffer-window (current-buffer) t))
795 (erc-setup-buffer (current-buffer))
796 ;; Window created in frame "other"
797 (should (eq (selected-frame) orig-frame))
798 (erc-tests--assert-server-split (current-buffer) "other")))))
799
800(ert-deftest erc-reuse-frames--displayed-full ()
801 :tags '(:unstable :expensive-test)
802 (erc-tests--erc-reuse-frames
803 (lambda (orig-frame)
804 (let ((erc-reuse-frames 'displayed))
805 (erc-tests--erc-reuse-frames--displayed-full orig-frame))
806 (dolist (b '("server" "ircd" "bob" "alice" "#spam" "#chan"))
807 (kill-buffer b)))))
808
809(ert-deftest erc-lurker-maybe-trim () 506(ert-deftest erc-lurker-maybe-trim ()
810 (let (erc-lurker-trim-nicks 507 (let (erc-lurker-trim-nicks
811 (erc-lurker-ignore-chars "_`")) 508 (erc-lurker-ignore-chars "_`"))