root/t/25digest-plain.t

Revision 303:6f57b7328cb8, 8.0 KB (checked in by Anselm Lingnau <anselm@…>, 9 months ago)

The Great Renaming: Change all command names to 'pl-*' and directory to '.pl'.
The idea behind this is to emphasise that the software is called ?*Project*
Lancelot? as opposed to plain ?Lancelot?. There is apparently a KDE tool that
goes by the name of ?Lancelot?, and we want to make clear that this is separate
and different. Also, Project Lancelot has been around for a lot longer!

Line 
1#!/usr/bin/perl
2
3use strict;
4
5BEGIN { chdir 't' if -d 't' }
6use lib '../lib';
7
8use Test::More tests => 9;
9use File::Path;
10use File::Basename;
11
12use Lancelot::DB;
13use Lancelot::Template;
14use Lancelot::Message;
15use Lancelot::Log;
16
17use Lancelot::Module::archive_store;
18
19sub copy_msg {
20    return Lancelot::Message->new($_[0]->as_string);
21}
22
23BEGIN { use_ok('Lancelot::Digest::plain'); }
24
25my $listname = 'pl-testlist@example.com';
26
27rmtree("$ENV{HOME}/.pl/$listname", 0);
28
29my $db = new Lancelot::DB $listname, { create => 1 };
30$db->set_config('list.name', 'Pl-testlist');
31
32# Fake an archive of messages to prepare a digest from
33
34for (my $i = 1; $i <= 10; $i++) {
35    my $msg = Lancelot::Message->new(sprintf 'From: hugo@example.com
36To: pl-testlist@example.com
37Subject: Test %u
38Date: Mon, 12 May 2008 12:00:%02u +0200
39
40This is test message %u.
41', $i % 3, $i, $i);
42    Lancelot::Module::archive_store::execute($db, $msg);
43}
44
45# Test the digest builder
46
47my $ok = q|Date: \w{3}, \d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2} [-+]\d{4}
48MIME-Version: 1.0
49From: pl-testlist\+digest@example.com
50Reply-To: pl-testlist@example.com
51To: pl-testlist@example.com
52Subject: Pl-testlist Digest V1 #1
53Content-Type: text/plain; charset="iso-8859-1"
54
55Pl-testlist Digest\s{9,10}\w{3}, \d{1,2} \w{3} \d{4}\s{9,10}Volume 1 : Issue 1
56
57Today's Topics:
58
59        Test 1
60
61----------------------------------------------------------------------
62
63Date: Mon, 12 May 2008 12:00:01 \+0200
64From: hugo@example.com
65To: pl-testlist@example.com
66Subject: Test 1
67
68This is test message 1.
69
70------------------------------
71
72End of Pl-testlist Digest V1 Issue #1
73\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
74|;
75
76my $digest = Lancelot::Digest::plain::build($db, 1, 1, [1 .. 1]);
77my $s; ($s = $digest->as_string) =~ s/\r//g;
78like($s, qr/$ok/, 'basic digest match');
79
80# Two messages, different subjects
81
82$ok = q|Date: \w{3}, \d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2} [-+]\d{4}
83MIME-Version: 1.0
84From: pl-testlist\+digest@example.com
85Reply-To: pl-testlist@example.com
86To: pl-testlist@example.com
87Subject: Pl-testlist Digest V1 #1
88Content-Type: text/plain; charset="iso-8859-1"
89
90Pl-testlist Digest\s{9,10}\w{3}, \d{1,2} \w{3} \d{4}\s{9,10}Volume 1 : Issue 1
91
92Today's Topics:
93
94        Test 1
95        Test 2
96
97----------------------------------------------------------------------
98
99Date: Mon, 12 May 2008 12:00:01 \+0200
100From: hugo@example.com
101To: pl-testlist@example.com
102Subject: Test 1
103
104This is test message 1.
105
106------------------------------
107
108Date: Mon, 12 May 2008 12:00:02 \+0200
109From: hugo@example.com
110To: pl-testlist@example.com
111Subject: Test 2
112
113This is test message 2.
114
115------------------------------
116
117End of Pl-testlist Digest V1 Issue #1
118\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
119|;
120
121$digest = Lancelot::Digest::plain::build($db, 1, 1, [1 .. 2]);
122($s = $digest->as_string) =~ s/\r//g;
123like($s, qr/$ok/, 'basic digest match (2 messages, 2 topics)');
124
125$ok = q|Date: \w{3}, \d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2} [-+]\d{4}
126MIME-Version: 1.0
127From: pl-testlist\+digest@example.com
128Reply-To: pl-testlist@example.com
129To: pl-testlist@example.com
130Subject: Pl-testlist Digest V1 #1
131Content-Type: text/plain; charset="iso-8859-1"
132
133Pl-testlist Digest\s{9,10}\w{3}, \d{1,2} \w{3} \d{4}\s{9,10}Volume 1 : Issue 1
134
135Today's Topics:
136
137        Test 1
138
139----------------------------------------------------------------------
140
141Date: Mon, 12 May 2008 12:00:01 \+0200
142From: hugo@example.com
143To: pl-testlist@example.com
144Subject: Test 1
145
146This is test message 1.
147
148------------------------------
149
150Date: Mon, 12 May 2008 12:00:04 \+0200
151From: hugo@example.com
152To: pl-testlist@example.com
153Subject: Test 1
154
155This is test message 4.
156
157------------------------------
158
159End of Pl-testlist Digest V1 Issue #1
160\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
161|;
162
163$digest = Lancelot::Digest::plain::build($db, 1, 1, [1, 4]);
164($s = $digest->as_string) =~ s/\r//g;
165like($s, qr/$ok/, 'basic digest match (disjoint, 2 messages, 1 topic)');
166
167# Various odds and ends for condition coverage
168
169# Games with mail.delimiter
170
171$db->delete_configs('mail.delimiter');
172
173$ok = q|Date: \w{3}, \d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2} [-+]\d{4}
174MIME-Version: 1.0
175From: pl-testlist-digest@example.com
176Reply-To: pl-testlist@example.com
177To: pl-testlist@example.com
178Subject: Pl-testlist Digest V1 #1
179Content-Type: text/plain; charset="iso-8859-1"
180
181Pl-testlist Digest\s{9,10}\w{3}, \d{1,2} \w{3} \d{4}\s{9,10}Volume 1 : Issue 1
182
183Today's Topics:
184
185        Test 1
186
187----------------------------------------------------------------------
188
189Date: Mon, 12 May 2008 12:00:01 \+0200
190From: hugo@example.com
191To: pl-testlist@example.com
192Subject: Test 1
193
194This is test message 1.
195
196------------------------------
197
198End of Pl-testlist Digest V1 Issue #1
199\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
200|;
201
202$digest = Lancelot::Digest::plain::build($db, 1, 1, [1 .. 1]);
203($s = $digest->as_string) =~ s/\r//g;
204like($s, qr/$ok/, 'basic digest match (default mail delimiter)');
205
206$db->set_config('mail.delimiter', '+');
207
208$ok = q|Date: \w{3}, \d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2} [-+]\d{4}
209MIME-Version: 1.0
210From: pl-testlist\+digest@example.com
211Reply-To: pl-testlist@example.com
212To: pl-testlist@example.com
213Subject: Pl-testlist Digest V1 #1
214Content-Type: text/plain; charset="iso-8859-1"
215
216Pl-testlist Digest\s{9,10}\w{3}, \d{1,2} \w{3} \d{4}\s{9,10}Volume 1 : Issue 1
217
218Today's Topics:
219
220        Test 1
221
222----------------------------------------------------------------------
223
224Date: Mon, 12 May 2008 12:00:01 \+0200
225From: hugo@example.com
226To: pl-testlist@example.com
227Subject: Test 1
228
229This is test message 1.
230
231------------------------------
232
233End of Pl-testlist Digest V1 Issue #1
234\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
235|;
236
237$digest = Lancelot::Digest::plain::build($db, 1, 1, [1 .. 1]);
238($s = $digest->as_string) =~ s/\r//g;
239like($s, qr/$ok/, 'basic digest match (different mail delimiter)');
240
241# Different digest.name
242
243$db->delete_configs('mail.delimiter');
244$db->set_config('digest.name', 'The Indigestion Digest');
245
246$ok = q|Date: \w{3}, \d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2} [-+]\d{4}
247MIME-Version: 1.0
248From: pl-testlist-digest@example.com
249Reply-To: pl-testlist@example.com
250To: pl-testlist@example.com
251Subject: The Indigestion Digest V1 #1
252Content-Type: text/plain; charset="iso-8859-1"
253
254The Indigestion Digest\s{7,8}\w{3}, \d{1,2} \w{3} \d{4}\s{7,8}Volume 1 : Issue 1
255
256Today's Topics:
257
258        Test 1
259
260----------------------------------------------------------------------
261
262Date: Mon, 12 May 2008 12:00:01 \+0200
263From: hugo@example.com
264To: pl-testlist@example.com
265Subject: Test 1
266
267This is test message 1.
268
269------------------------------
270
271End of The Indigestion Digest V1 Issue #1
272\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
273|;
274
275$digest = Lancelot::Digest::plain::build($db, 1, 1, [1 .. 1]);
276($s = $digest->as_string) =~ s/\r//g;
277like($s, qr/$ok/, 'digest match (non-default digest.name)');
278
279# archive.directory stuff
280
281$db->delete_configs('digest.name', 'archive.directory');
282
283$ok = q|Date: \w{3}, \d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2} [-+]\d{4}
284MIME-Version: 1.0
285From: pl-testlist-digest@example.com
286Reply-To: pl-testlist@example.com
287To: pl-testlist@example.com
288Subject: Pl-testlist Digest V1 #1
289Content-Type: text/plain; charset="iso-8859-1"
290
291Pl-testlist Digest\s{9,10}\w{3}, \d{1,2} \w{3} \d{4}\s{9,10}Volume 1 : Issue 1
292
293Today's Topics:
294
295        Test 1
296
297----------------------------------------------------------------------
298
299Date: Mon, 12 May 2008 12:00:01 \+0200
300From: hugo@example.com
301To: pl-testlist@example.com
302Subject: Test 1
303
304This is test message 1.
305
306------------------------------
307
308End of Pl-testlist Digest V1 Issue #1
309\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
310|;
311
312$digest = Lancelot::Digest::plain::build($db, 1, 1, [1 .. 1]);
313($s = $digest->as_string) =~ s/\r//g;
314like($s, qr/$ok/, 'basic digest match (unset archive.directory)');
315
316my $adir = "$ENV{HOME}/.pl/$listname/archive";
317$db->set_config('archive.directory', $adir);
318
319$digest = Lancelot::Digest::plain::build($db, 1, 1, [1 .. 1]);
320($s = $digest->as_string) =~ s/\r//g;
321like($s, qr/$ok/, 'basic digest match (absolute-path archive.directory)');
322
Note: See TracBrowser for help on using the browser.