diff options
| author | F. Jason Park | 2023-06-19 23:14:40 -0700 |
|---|---|---|
| committer | F. Jason Park | 2023-06-25 16:26:40 -0700 |
| commit | d2a7b0c76d12d15eb4c6d1cd183c192ad4e872ed (patch) | |
| tree | 31ae0f517b57a99a5ed572829454fb3b82b0a175 /test | |
| parent | c64021d58a17d2e4c8f040cf05d7a7458c37b647 (diff) | |
| download | emacs-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.el | 303 |
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 "_`")) |