1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
;;; gnus-test-headers.el --- Tests for Gnus header-related functions -*- lexical-binding: t; -*-
;; Copyright (C) 2018-2025 Free Software Foundation, Inc.
;; Author: Eric Abrahamsen <eric@ericabrahamsen.net>
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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 GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; The tests her are for
;;; Code:
(require 'ert)
(require 'gnus-sum)
(defconst gnus-headers-test-data
'([2 "Re: [Emacs-devel] Emacs move" "Dave Love <d.love@dl.ac.uk>"
"Thu, 14 Sep 2000 11:10:46 +0100"
"<200009141010.LAA26351@djlvig.dl.ac.uk>"
"<20000913175943.A26093@sparky.nisa.net>"
1882 16 "nnmaildir mails:2"
((To . "Jeff Bailey <jbailey@nisa.net>")
(Cc . "emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[3 "Re: [Emacs-devel] Emacs move" "Sam Steingold <sds@gnu.org>"
"14 Sep 2000 10:21:56 -0400" "<upum7xddn.fsf@xchange.com>"
"<20000913175943.A26093@sparky.nisa.net>"
2991 50 "nnmaildir mails:3"
((To . "Jeff Bailey <jbailey@nisa.net>")
(Cc . "emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[4 "Re: [Emacs-devel] Emacs move" "Jeff Bailey <jbailey@nisa.net>"
"Thu, 14 Sep 2000 09:14:47 -0700"
"<20000914091447.G4827@sparky.nisa.net>"
"<20000913175943.A26093@sparky.nisa.net> <upum7xddn.fsf@xchange.com>"
1780 15 "nnmaildir mails:4"
((To . "sds@gnu.org, Jeff Bailey <jbailey@nisa.net>")
(Cc . "emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[5 "Re: [Emacs-devel] Emacs move" "Dave Love <d.love@dl.ac.uk>"
"Thu, 14 Sep 2000 18:24:36 +0100"
"<200009141724.SAA26807@djlvig.dl.ac.uk>"
"<20000913175943.A26093@sparky.nisa.net>"
1343 9 "nnmaildir mails:5"
((To . "Jeff Bailey <jbailey@nisa.net>")
(Cc . "emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[6 "Re: [Emacs-devel] Emacs move" "Karl Fogel <kfogel@galois.collab.net>"
"14 Sep 2000 10:37:35 -0500" "<87em2nyog0.fsf@galois.collab.net>"
"<20000913175943.A26093@sparky.nisa.net> <200009141724.SAA26807@djlvig.dl.ac.uk>"
3740 124 "nnmaildir mails:6"
((To . "Dave Love <d.love@dl.ac.uk>")
(Cc . "Jeff Bailey <jbailey@nisa.net>, emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[7 "Re: [Emacs-devel] Emacs move" "Jeff Bailey <jbailey@nisa.net>"
"Thu, 14 Sep 2000 10:55:12 -0700"
"<20000914105512.A29291@sparky.nisa.net>"
"<20000913175943.A26093@sparky.nisa.net> <200009141724.SAA26807@djlvig.dl.ac.uk> <87em2nyog0.fsf@galois.collab.net>"
1687 16 "nnmaildir mails:7"
((To . "kfogel@red-bean.com, Dave Love <d.love@dl.ac.uk>")
(Cc . "Jeff Bailey <jbailey@nisa.net>, emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[8 "Re: [Emacs-devel] Emacs move" "John Wiegley <johnw@gnu.org>"
"Thu, 14 Sep 2000 12:19:01 -0700"
"<200009141919.MAA05085@localhost.localdomain>"
"<20000913175943.A26093@sparky.nisa.net>"
1978 27 "nnmaildir mails:8"
((To . "emacs-devel@gnu.org"))]
[9 "Re: [Emacs-devel] Emacs move"
"\"Robert J. Chassell\" <bob@rattlesnake.com>"
"Thu, 14 Sep 2000 07:33:15 -0400 (EDT)"
"<m13ZXGV-000BCgC@megalith.rattlesnake.com>"
"<20000913175943.A26093@sparky.nisa.net>"
3046 72 "nnmaildir mails:9"
((To . "jbailey@nisa.net")
(Cc . "emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[10 "Re: [Emacs-devel] Emacs move"
"wmperry@aventail.com (William M. Perry)"
"14 Sep 2000 09:10:25 -0500"
"<86g0n3f4j2.fsf@megalith.bp.aventail.com>"
"<20000913175943.A26093@sparky.nisa.net> <m13ZXGV-000BCgC@megalith.rattlesnake.com>"
3104 44 "nnmaildir mails:10"
((To . "bob@rattlesnake.com")
(Cc . "jbailey@nisa.net, emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[11 "Re: [Emacs-devel] Emacs move" "Gerd Moellmann <gerd@gnu.org>"
"Thu, 14 Sep 2000 21:51:05 +0200 (CEST)"
"<200009141951.VAA06005@gerd.segv.de>"
"<20000913175943.A26093@sparky.nisa.net> <m13ZXGV-000BCgC@megalith.rattlesnake.com> <86g0n3f4j2.fsf@megalith.bp.aventail.com>"
1884 6 "nnmaildir mails:11"
((To . "wmvperry@aventail.com")
(Cc . "bob@rattlesnake.com, jbailey@nisa.net, emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[12 "Re: [Emacs-devel] Emacs move" "Gerd Moellmann <gerd@gnu.org>"
"Thu, 14 Sep 2000 21:49:03 +0200 (CEST)"
"<200009141949.VAA05998@gerd.segv.de>"
"<20000913175943.A26093@sparky.nisa.net> <m13ZXGV-000BCgC@megalith.rattlesnake.com>"
2408 24 "nnmaildir mails:12"
((To . "bob@rattlesnake.com")
(Cc . "jbailey@nisa.net, emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[13 "Re: [Emacs-devel] Emacs move"
"\"Robert J. Chassell\" <bob@rattlesnake.com>"
"Thu, 14 Sep 2000 17:50:01 -0400 (EDT)"
"<m13ZgtN-000BD3C@megalith.rattlesnake.com>"
"<20000913175943.A26093@sparky.nisa.net> <m13ZXGV-000BCgC@megalith.rattlesnake.com> <200009141949.VAA05998@gerd.segv.de>"
1968 23 "nnmaildir mails:13"
((To . "gerd@gnu.org")
(Cc . "bob@rattlesnake.com, jbailey@nisa.net, emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[14 "Re: [Emacs-devel] Emacs move" "Richard Stallman <rms@gnu.org>"
"Fri, 15 Sep 2000 16:28:12 -0600 (MDT)"
"<200009152228.QAA20526@wijiji.santafe.edu>"
"<20000913175943.A26093@sparky.nisa.net> <m13ZXGV-000BCgC@megalith.rattlesnake.com>"
1288 2 "nnmaildir mails:14"
((To . "jbailey@nisa.net, emacs-devel@gnu.org, cvs-hackers@gnu.org"))]
[15 "[Emacs-devel] Emacs move" "Jeff Bailey <jbailey@nisa.net>"
"Wed, 13 Sep 2000 17:59:43 -0700"
"<20000913175943.A26093@sparky.nisa.net>" ""
1661 26 "nnmaildir mails:15"
((To . "emacs-devel@gnu.org")
(Cc . "cvs-hackers@gnu.org"))]
[16 "Re: [Emacs-devel] Emacs move" "Jeff Bailey <jbailey@nisa.net>"
"Fri, 15 Sep 2000 22:00:12 -0700"
"<20000915220012.A3923@sparky.nisa.net>"
"<20000913175943.A26093@sparky.nisa.net> <m13ZXGV-000BCgC@megalith.rattlesnake.com> <200009141949.VAA05998@gerd.segv.de> <m13ZgtN-000BD3C@megalith.rattlesnake.com>"
2857 51 "nnmaildir mails:16"
((To . "bob@rattlesnake.com, gerd@gnu.org")
(Cc . "jbailey@nisa.net, emacs-devel@gnu.org, cvs-hackers@gnu.org"))])
"A pile of headers with potential interdependencies.")
(ert-deftest gnus-headers-make-dependency-table ()
(let ((table (gnus-make-hashtable 20))
(data (copy-sequence gnus-headers-test-data))
ret)
(dolist (h data)
;; `gnus-dependencies-add-header' returns nil if it fails to add
;; the header.
(should (gnus-dependencies-add-header h table nil)))
;; Pick a value to test.
(setq ret (gethash "<m13ZXGV-000BCgC@megalith.rattlesnake.com>"
table))
;; The message has three children.
(should (= 3 (length (cdr ret))))
;; The first of those children has one child.
(should (= 1 (length (cdr (nth 1 ret)))))))
(ert-deftest gnus-headers-loop-dependencies ()
"Intentionally create a reference loop."
(let ((table (gnus-make-hashtable 20))
(data (copy-sequence gnus-headers-test-data))
(parent-id "<200009141724.SAA26807@djlvig.dl.ac.uk>")
(child-id "<87em2nyog0.fsf@galois.collab.net>")
parent)
(dolist (h data)
(gnus-dependencies-add-header h table nil))
(setq parent (gethash parent-id table))
;; Put the parent header in the child references of one of its own
;; children. `gnus-thread-loop-p' only checks if there's a loop
;; between parent and immediate child, not parent and random
;; descendant. At least, near as I can tell that's the case.
(push (list (car parent)) (cdr (gethash child-id table)))
(let ((gnus-newsgroup-dependencies table))
(should
(= 1 ; 1 indicates an infloop.
(gnus-thread-loop-p (car parent) (cadr parent)))))))
(provide 'gnus-test-headers)
;;; gnus-test-headers.el ends here
|