rims 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +35 -2
- data/LICENSE.txt +17 -18
- data/lib/rims.rb +1 -0
- data/lib/rims/channel.rb +157 -0
- data/lib/rims/cmd.rb +3 -3
- data/lib/rims/mail_store.rb +26 -90
- data/lib/rims/pool.rb +15 -18
- data/lib/rims/protocol/decoder.rb +4 -4
- data/lib/rims/protocol/parser.rb +2 -2
- data/lib/rims/test.rb +39 -7
- data/lib/rims/version.rb +1 -1
- data/test/test_channel.rb +131 -0
- data/test/test_cksum_kvs.rb +4 -2
- data/test/test_config.rb +1 -1
- data/test/test_db.rb +10 -5
- data/test/test_db_recovery.rb +6 -3
- data/test/test_lock.rb +4 -2
- data/test/test_mail_store.rb +22 -6
- data/test/test_protocol_decoder.rb +2 -1
- data/test/test_protocol_fetch.rb +7 -3
- data/test/test_protocol_search.rb +66 -53
- data/test/test_rfc822.rb +1 -1
- metadata +5 -2
data/test/test_mail_store.rb
CHANGED
@@ -389,9 +389,10 @@ module RIMS::Test
|
|
389
389
|
assert_equal((1..50).to_set, folder.parse_msg_set('1:*', uid: false))
|
390
390
|
assert_equal((1..99).to_set, folder.parse_msg_set('1:*', uid: true))
|
391
391
|
|
392
|
-
assert_raise(RIMS::MessageSetSyntaxError) {
|
392
|
+
error = assert_raise(RIMS::MessageSetSyntaxError) {
|
393
393
|
folder.parse_msg_set('detarame')
|
394
394
|
}
|
395
|
+
assert_match(/invalid message sequence format/, error.message)
|
395
396
|
end
|
396
397
|
|
397
398
|
def test_mail_folder_parse_msg_set_empty
|
@@ -509,9 +510,14 @@ module RIMS::Test
|
|
509
510
|
assert_equal(1..10, RIMS::MailFolder.parse_msg_seq('1:10', 99))
|
510
511
|
assert_equal(1..99, RIMS::MailFolder.parse_msg_seq('1:*', 99))
|
511
512
|
assert_equal(99..99, RIMS::MailFolder.parse_msg_seq('*:*', 99))
|
512
|
-
assert_raise(RIMS::MessageSetSyntaxError) {
|
513
|
+
error = assert_raise(RIMS::MessageSetSyntaxError) {
|
513
514
|
RIMS::MailFolder.parse_msg_seq('detarame', 99)
|
514
515
|
}
|
516
|
+
assert_match(/invalid message sequence format/, error.message)
|
517
|
+
error = assert_raise(RIMS::MessageSetSyntaxError) {
|
518
|
+
RIMS::MailFolder.parse_msg_seq('0', 99)
|
519
|
+
}
|
520
|
+
assert_match(/out of range of message sequence number/, error.message)
|
515
521
|
end
|
516
522
|
|
517
523
|
def test_parse_msg_set
|
@@ -525,12 +531,20 @@ module RIMS::Test
|
|
525
531
|
assert_equal([ 1, 2, 3, 11, 97, 98, 99 ].to_set, RIMS::MailFolder.parse_msg_set('1:3,11,97:*', 99))
|
526
532
|
assert_equal((1..99).to_set, RIMS::MailFolder.parse_msg_set('1:70,30:*', 99))
|
527
533
|
|
528
|
-
assert_raise(RIMS::MessageSetSyntaxError) {
|
534
|
+
error = assert_raise(RIMS::MessageSetSyntaxError) {
|
529
535
|
RIMS::MailFolder.parse_msg_set('detarame', 99)
|
530
536
|
}
|
531
|
-
|
537
|
+
assert_match(/invalid message sequence format/, error.message)
|
538
|
+
|
539
|
+
error = assert_raise(RIMS::MessageSetSyntaxError) {
|
532
540
|
RIMS::MailFolder.parse_msg_set('1,2,X', 99)
|
533
541
|
}
|
542
|
+
assert_match(/invalid message sequence format/, error.message)
|
543
|
+
|
544
|
+
error = assert_raise(RIMS::MessageSetSyntaxError) {
|
545
|
+
RIMS::MailFolder.parse_msg_set('0', 99)
|
546
|
+
}
|
547
|
+
assert_match(/out of range of message sequence number/, error.message)
|
534
548
|
end
|
535
549
|
end
|
536
550
|
|
@@ -569,11 +583,12 @@ module RIMS::Test
|
|
569
583
|
def test_recovery_empty
|
570
584
|
mail_store = make_mail_store
|
571
585
|
assert_equal(false, mail_store.abort_transaction?)
|
572
|
-
assert_raise(RuntimeError) {
|
586
|
+
error = assert_raise(RuntimeError) {
|
573
587
|
mail_store.transaction do
|
574
588
|
raise 'abort'
|
575
589
|
end
|
576
590
|
}
|
591
|
+
assert_equal('abort', error.message)
|
577
592
|
assert_equal(true, mail_store.abort_transaction?)
|
578
593
|
mail_store.close
|
579
594
|
|
@@ -594,11 +609,12 @@ module RIMS::Test
|
|
594
609
|
mail_store.add_mbox('bar')
|
595
610
|
|
596
611
|
assert_equal(false, mail_store.abort_transaction?)
|
597
|
-
assert_raise(RuntimeError) {
|
612
|
+
error = assert_raise(RuntimeError) {
|
598
613
|
mail_store.transaction do
|
599
614
|
raise 'abort'
|
600
615
|
end
|
601
616
|
}
|
617
|
+
assert_equal('abort', error.message)
|
602
618
|
assert_equal(true, mail_store.abort_transaction?)
|
603
619
|
mail_store.close
|
604
620
|
|
@@ -6472,9 +6472,10 @@ LOGOUT
|
|
6472
6472
|
assert_equal([ 'foo', 'a mailbox ' ],
|
6473
6473
|
RIMS::Protocol::Decoder.decode_delivery_target_mailbox("b64user-mbox #{base64_username} a mailbox "))
|
6474
6474
|
|
6475
|
-
assert_raise(RIMS::SyntaxError) {
|
6475
|
+
error = assert_raise(RIMS::SyntaxError) {
|
6476
6476
|
RIMS::Protocol::Decoder.decode_delivery_target_mailbox("unknown-encode-type #{base64_username} INBOX")
|
6477
6477
|
}
|
6478
|
+
assert_match(/unknown mailbox encode type/, error.message)
|
6478
6479
|
end
|
6479
6480
|
|
6480
6481
|
def test_encode_delivery_target_mailbox
|
data/test/test_protocol_fetch.rb
CHANGED
@@ -229,9 +229,10 @@ module RIMS::Test
|
|
229
229
|
assert_fetch(1, [ "BODY[4.2.2] #{literal(@mpart_mail.parts[3].parts[1].message.parts[1].body.raw_source)}" ])
|
230
230
|
}
|
231
231
|
|
232
|
-
assert_raise(RIMS::SyntaxError) {
|
232
|
+
error = assert_raise(RIMS::SyntaxError) {
|
233
233
|
@parser.parse(make_body('BODY[MIME]'))
|
234
234
|
}
|
235
|
+
assert_match(/need for section index/, error.message)
|
235
236
|
|
236
237
|
parse_fetch_attribute(make_body('BODY[1.MIME]')) {
|
237
238
|
assert_fetch(0, [ "BODY[1.MIME] #{literal(@simple_mail.header.raw_source)}" ])
|
@@ -965,12 +966,15 @@ module RIMS::Test
|
|
965
966
|
assert_nil(RIMS::Protocol::FetchParser::Utils.get_body_section(@mpart_mail, [ 4, 2, 3 ]))
|
966
967
|
assert_nil(RIMS::Protocol::FetchParser::Utils.get_body_section(@mpart_mail, [ 4, 2, 2, 3 ]))
|
967
968
|
|
968
|
-
assert_raise(RIMS::SyntaxError) {
|
969
|
+
error = assert_raise(RIMS::SyntaxError) {
|
969
970
|
RIMS::Protocol::FetchParser::Utils.get_body_section(@simple_mail, [ 0 ])
|
970
971
|
}
|
971
|
-
|
972
|
+
assert_match(/not a none-zero body section number/, error.message)
|
973
|
+
|
974
|
+
error = assert_raise(RIMS::SyntaxError) {
|
972
975
|
RIMS::Protocol::FetchParser::Utils.get_body_section(@mpart_mail, [ 4, 2, 2, 0 ])
|
973
976
|
}
|
977
|
+
assert_match(/not a none-zero body section number/, error.message)
|
974
978
|
end
|
975
979
|
|
976
980
|
def test_get_body_content
|
@@ -76,10 +76,18 @@ module RIMS::Test
|
|
76
76
|
end
|
77
77
|
private :assert_search_cond
|
78
78
|
|
79
|
-
def assert_search_syntax_error(search_key_list)
|
80
|
-
assert_raise(RIMS::SyntaxError) {
|
79
|
+
def assert_search_syntax_error(search_key_list, expected_error_message)
|
80
|
+
error = assert_raise(RIMS::SyntaxError) {
|
81
81
|
@parser.parse(search_key_list)
|
82
82
|
}
|
83
|
+
case (expected_error_message)
|
84
|
+
when String
|
85
|
+
assert_equal(expected_error_message, error.message)
|
86
|
+
when Regexp
|
87
|
+
assert_match(expected_error_message, error.message)
|
88
|
+
else
|
89
|
+
flunk
|
90
|
+
end
|
83
91
|
end
|
84
92
|
private :assert_search_syntax_error
|
85
93
|
|
@@ -128,8 +136,8 @@ module RIMS::Test
|
|
128
136
|
assert_search_cond(2, false)
|
129
137
|
}
|
130
138
|
|
131
|
-
assert_search_syntax_error([ 'BCC' ])
|
132
|
-
assert_search_syntax_error([ 'BCC', [ :group, 'foo' ] ])
|
139
|
+
assert_search_syntax_error([ 'BCC' ], /need for a search string/)
|
140
|
+
assert_search_syntax_error([ 'BCC', [ :group, 'foo' ] ], /search string expected as <String> but was/)
|
133
141
|
end
|
134
142
|
|
135
143
|
def test_parse_before
|
@@ -146,9 +154,9 @@ module RIMS::Test
|
|
146
154
|
assert_search_cond(2, false)
|
147
155
|
}
|
148
156
|
|
149
|
-
assert_search_syntax_error([ 'BEFORE' ])
|
150
|
-
assert_search_syntax_error([ 'BEFORE', '99-Nov-2013' ])
|
151
|
-
assert_search_syntax_error([ 'BEFORE', [ :group, '08-Nov-2013'] ])
|
157
|
+
assert_search_syntax_error([ 'BEFORE' ], /need for a search date/)
|
158
|
+
assert_search_syntax_error([ 'BEFORE', '99-Nov-2013' ], /search date is invalid/)
|
159
|
+
assert_search_syntax_error([ 'BEFORE', [ :group, '08-Nov-2013'] ], /search date string expected as <String> but was/)
|
152
160
|
end
|
153
161
|
|
154
162
|
def test_parse_body
|
@@ -186,8 +194,8 @@ Content-Type: text/html
|
|
186
194
|
assert_search_cond(3, false) # ignored text part of multipart message.
|
187
195
|
}
|
188
196
|
|
189
|
-
assert_search_syntax_error([ 'BODY' ])
|
190
|
-
assert_search_syntax_error([ 'BODY', [ :group, 'foo' ] ])
|
197
|
+
assert_search_syntax_error([ 'BODY' ], /need for a search string/)
|
198
|
+
assert_search_syntax_error([ 'BODY', [ :group, 'foo' ] ], /search string expected as <String> but was/)
|
191
199
|
end
|
192
200
|
|
193
201
|
def test_parse_cc
|
@@ -208,8 +216,8 @@ Content-Type: text/html
|
|
208
216
|
assert_search_cond(2, false)
|
209
217
|
}
|
210
218
|
|
211
|
-
assert_search_syntax_error([ 'CC' ])
|
212
|
-
assert_search_syntax_error([ 'CC', [ :group, 'foo' ] ])
|
219
|
+
assert_search_syntax_error([ 'CC' ], /need for a search string/)
|
220
|
+
assert_search_syntax_error([ 'CC', [ :group, 'foo' ] ], /search string expected as <String> but was/)
|
213
221
|
end
|
214
222
|
|
215
223
|
def test_parse_deleted
|
@@ -278,8 +286,8 @@ Content-Type: text/html
|
|
278
286
|
assert_search_cond(2, false)
|
279
287
|
}
|
280
288
|
|
281
|
-
assert_search_syntax_error([ 'FROM' ])
|
282
|
-
assert_search_syntax_error([ 'FROM', [ :group, 'foo' ] ])
|
289
|
+
assert_search_syntax_error([ 'FROM' ], /need for a search string/)
|
290
|
+
assert_search_syntax_error([ 'FROM', [ :group, 'foo' ] ], /search string expected as <String> but was/)
|
283
291
|
end
|
284
292
|
|
285
293
|
def test_parse_header
|
@@ -320,10 +328,10 @@ Content-Type: text/html
|
|
320
328
|
assert_search_cond(2, false)
|
321
329
|
}
|
322
330
|
|
323
|
-
assert_search_syntax_error([ 'HEADER' ])
|
324
|
-
assert_search_syntax_error([ 'HEADER', 'Received' ])
|
325
|
-
assert_search_syntax_error([ 'HEADER', 'Received', [ :group, 'foo' ] ])
|
326
|
-
assert_search_syntax_error([ 'HEADER', [ :group, 'Received' ], 'foo' ])
|
331
|
+
assert_search_syntax_error([ 'HEADER' ], /need for a search string/)
|
332
|
+
assert_search_syntax_error([ 'HEADER', 'Received' ], /need for a search string/)
|
333
|
+
assert_search_syntax_error([ 'HEADER', 'Received', [ :group, 'foo' ] ], /search string expected as <String> but was/)
|
334
|
+
assert_search_syntax_error([ 'HEADER', [ :group, 'Received' ], 'foo' ], /search string expected as <String> but was/)
|
327
335
|
end
|
328
336
|
|
329
337
|
def test_parse_keyword
|
@@ -336,8 +344,8 @@ Content-Type: text/html
|
|
336
344
|
assert_search_cond(0, false) # always false
|
337
345
|
}
|
338
346
|
|
339
|
-
assert_search_syntax_error([ 'KEYWORD' ])
|
340
|
-
assert_search_syntax_error([ 'KEYWORD', [ :group, 'foo' ] ])
|
347
|
+
assert_search_syntax_error([ 'KEYWORD' ], /need for a search string/)
|
348
|
+
assert_search_syntax_error([ 'KEYWORD', [ :group, 'foo' ] ], /search string expected as <String> but was/)
|
341
349
|
end
|
342
350
|
|
343
351
|
def test_parse_larger
|
@@ -354,9 +362,9 @@ Content-Type: text/html
|
|
354
362
|
assert_search_cond(2, false)
|
355
363
|
}
|
356
364
|
|
357
|
-
assert_search_syntax_error([ 'LARGER' ])
|
358
|
-
assert_search_syntax_error([ 'LARGER', [ :group, '3' ] ])
|
359
|
-
assert_search_syntax_error([ 'LARGER', 'nonum' ])
|
365
|
+
assert_search_syntax_error([ 'LARGER' ], /need for a octet size/)
|
366
|
+
assert_search_syntax_error([ 'LARGER', [ :group, '3' ] ], /octet size is expected as numeric string but was/)
|
367
|
+
assert_search_syntax_error([ 'LARGER', 'nonum' ], /octet size is expected as numeric string but was/)
|
360
368
|
end
|
361
369
|
|
362
370
|
def test_parse_new
|
@@ -402,7 +410,7 @@ Content-Type: text/html
|
|
402
410
|
assert_search_cond(2, true)
|
403
411
|
}
|
404
412
|
|
405
|
-
assert_search_syntax_error([ 'NOT' ])
|
413
|
+
assert_search_syntax_error([ 'NOT' ], 'unexpected end of search key.')
|
406
414
|
end
|
407
415
|
|
408
416
|
def test_parse_old
|
@@ -435,9 +443,9 @@ Content-Type: text/html
|
|
435
443
|
assert_search_cond(2, false)
|
436
444
|
}
|
437
445
|
|
438
|
-
assert_search_syntax_error([ 'ON' ])
|
439
|
-
assert_search_syntax_error([ 'ON', '99-Nov-2013' ])
|
440
|
-
assert_search_syntax_error([ 'ON', [ :group, '08-Nov-2013'] ])
|
446
|
+
assert_search_syntax_error([ 'ON' ], /need for a search date/)
|
447
|
+
assert_search_syntax_error([ 'ON', '99-Nov-2013' ], /search date is invalid/)
|
448
|
+
assert_search_syntax_error([ 'ON', [ :group, '08-Nov-2013'] ], /search date string expected as <String> but was/)
|
441
449
|
end
|
442
450
|
|
443
451
|
def test_parse_or
|
@@ -464,8 +472,8 @@ Content-Type: text/html
|
|
464
472
|
|
465
473
|
}
|
466
474
|
|
467
|
-
assert_search_syntax_error([ 'OR' ])
|
468
|
-
assert_search_syntax_error([ 'OR', 'ANSWERED' ])
|
475
|
+
assert_search_syntax_error([ 'OR' ], 'unexpected end of search key.')
|
476
|
+
assert_search_syntax_error([ 'OR', 'ANSWERED' ], 'unexpected end of search key.')
|
469
477
|
end
|
470
478
|
|
471
479
|
def test_parse_recent
|
@@ -522,9 +530,9 @@ Content-Type: text/html
|
|
522
530
|
assert_search_cond(3, false)
|
523
531
|
}
|
524
532
|
|
525
|
-
assert_search_syntax_error([ 'SENTBEFORE' ])
|
526
|
-
assert_search_syntax_error([ 'SENTBEFORE', '99-Nov-2013' ])
|
527
|
-
assert_search_syntax_error([ 'SENTBEFORE', [ :group, '08-Nov-2013'] ])
|
533
|
+
assert_search_syntax_error([ 'SENTBEFORE' ], /need for a search date/)
|
534
|
+
assert_search_syntax_error([ 'SENTBEFORE', '99-Nov-2013' ], /search date is invalid/)
|
535
|
+
assert_search_syntax_error([ 'SENTBEFORE', [ :group, '08-Nov-2013'] ], /search date string expected as <String> but was/)
|
528
536
|
end
|
529
537
|
|
530
538
|
def test_parse_senton
|
@@ -549,9 +557,9 @@ Content-Type: text/html
|
|
549
557
|
assert_search_cond(3, false)
|
550
558
|
}
|
551
559
|
|
552
|
-
assert_search_syntax_error([ 'SENTON' ])
|
553
|
-
assert_search_syntax_error([ 'SENTON', '99-Nov-2013' ])
|
554
|
-
assert_search_syntax_error([ 'SENTON', [ :group, '08-Nov-2013'] ])
|
560
|
+
assert_search_syntax_error([ 'SENTON' ], /need for a search date/)
|
561
|
+
assert_search_syntax_error([ 'SENTON', '99-Nov-2013' ], /search date is invalid/)
|
562
|
+
assert_search_syntax_error([ 'SENTON', [ :group, '08-Nov-2013'] ], /search date string expected as <String> but was/)
|
555
563
|
end
|
556
564
|
|
557
565
|
def test_parse_sentsince
|
@@ -576,9 +584,9 @@ Content-Type: text/html
|
|
576
584
|
assert_search_cond(3, false)
|
577
585
|
}
|
578
586
|
|
579
|
-
assert_search_syntax_error([ 'SENTSINCE' ])
|
580
|
-
assert_search_syntax_error([ 'SENTSINCE', '99-Nov-2013' ])
|
581
|
-
assert_search_syntax_error([ 'SENTSINCE', [ :group, '08-Nov-2013'] ])
|
587
|
+
assert_search_syntax_error([ 'SENTSINCE' ], /need for a search date/)
|
588
|
+
assert_search_syntax_error([ 'SENTSINCE', '99-Nov-2013' ], /search date is invalid/)
|
589
|
+
assert_search_syntax_error([ 'SENTSINCE', [ :group, '08-Nov-2013'] ], /search date string expected as <String> but was/)
|
582
590
|
end
|
583
591
|
|
584
592
|
def test_parse_since
|
@@ -595,9 +603,9 @@ Content-Type: text/html
|
|
595
603
|
assert_search_cond(2, true)
|
596
604
|
}
|
597
605
|
|
598
|
-
assert_search_syntax_error([ 'SINCE' ])
|
599
|
-
assert_search_syntax_error([ 'SINCE', '99-Nov-2013' ])
|
600
|
-
assert_search_syntax_error([ 'SINCE', [ :group, '08-Nov-2013'] ])
|
606
|
+
assert_search_syntax_error([ 'SINCE' ], /need for a search date/)
|
607
|
+
assert_search_syntax_error([ 'SINCE', '99-Nov-2013' ], /search date is invalid/)
|
608
|
+
assert_search_syntax_error([ 'SINCE', [ :group, '08-Nov-2013'] ], /search date string expected as <String> but was/)
|
601
609
|
end
|
602
610
|
|
603
611
|
def test_parse_smaller
|
@@ -614,9 +622,9 @@ Content-Type: text/html
|
|
614
622
|
assert_search_cond(2, false)
|
615
623
|
}
|
616
624
|
|
617
|
-
assert_search_syntax_error([ 'SMALLER' ])
|
618
|
-
assert_search_syntax_error([ 'SMALLER', [ :group, '3' ] ])
|
619
|
-
assert_search_syntax_error([ 'SMALLER', 'nonum' ])
|
625
|
+
assert_search_syntax_error([ 'SMALLER' ], /need for a octet size/)
|
626
|
+
assert_search_syntax_error([ 'SMALLER', [ :group, '3' ] ], /octet size is expected as numeric string but was/)
|
627
|
+
assert_search_syntax_error([ 'SMALLER', 'nonum' ], /octet size is expected as numeric string but was/)
|
620
628
|
end
|
621
629
|
|
622
630
|
def test_parse_subject
|
@@ -637,8 +645,8 @@ Content-Type: text/html
|
|
637
645
|
assert_search_cond(2, false)
|
638
646
|
}
|
639
647
|
|
640
|
-
assert_search_syntax_error([ 'SUBJECT' ])
|
641
|
-
assert_search_syntax_error([ 'SUBJECT', [ :group, 'foo' ] ])
|
648
|
+
assert_search_syntax_error([ 'SUBJECT' ], /need for a search string/)
|
649
|
+
assert_search_syntax_error([ 'SUBJECT', [ :group, 'foo' ] ], /search string expected as <String> but was/)
|
642
650
|
end
|
643
651
|
|
644
652
|
def test_parse_text
|
@@ -663,8 +671,8 @@ Content-Type: text/html
|
|
663
671
|
assert_search_cond(0, false)
|
664
672
|
}
|
665
673
|
|
666
|
-
assert_search_syntax_error([ 'TEXT' ])
|
667
|
-
assert_search_syntax_error([ 'TEXT', [ :group, 'foo'] ])
|
674
|
+
assert_search_syntax_error([ 'TEXT' ], /need for a search string/)
|
675
|
+
assert_search_syntax_error([ 'TEXT', [ :group, 'foo'] ], /search string expected as <String> but was/)
|
668
676
|
end
|
669
677
|
|
670
678
|
def test_parse_to
|
@@ -685,8 +693,8 @@ Content-Type: text/html
|
|
685
693
|
assert_search_cond(2, false)
|
686
694
|
}
|
687
695
|
|
688
|
-
assert_search_syntax_error([ 'TO' ])
|
689
|
-
assert_search_syntax_error([ 'TO', [ :group, 'foo' ] ])
|
696
|
+
assert_search_syntax_error([ 'TO' ], /need for a search string/)
|
697
|
+
assert_search_syntax_error([ 'TO', [ :group, 'foo' ] ], /search string expected as <String> but was/)
|
690
698
|
end
|
691
699
|
|
692
700
|
def test_parse_uid
|
@@ -789,8 +797,8 @@ Content-Type: text/html
|
|
789
797
|
assert_search_cond(0, true) # always true
|
790
798
|
}
|
791
799
|
|
792
|
-
assert_search_syntax_error([ 'UNKEYWORD' ])
|
793
|
-
assert_search_syntax_error([ 'UNKEYWORD', [ :group, 'foo' ] ])
|
800
|
+
assert_search_syntax_error([ 'UNKEYWORD' ], /need for a search string/)
|
801
|
+
assert_search_syntax_error([ 'UNKEYWORD', [ :group, 'foo' ] ], /search string expected as <String> but was/)
|
794
802
|
end
|
795
803
|
|
796
804
|
def test_parse_unseen
|
@@ -827,7 +835,7 @@ Content-Type: text/html
|
|
827
835
|
assert_search_cond(2, true)
|
828
836
|
}
|
829
837
|
|
830
|
-
assert_search_syntax_error([ 'detarame' ])
|
838
|
+
assert_search_syntax_error([ 'detarame' ], /unknown search key/)
|
831
839
|
end
|
832
840
|
|
833
841
|
def test_parse_group
|
@@ -860,7 +868,12 @@ Content-Type: text/html
|
|
860
868
|
assert_search_cond(3, false)
|
861
869
|
}
|
862
870
|
|
863
|
-
assert_search_syntax_error([ [ :block, 'ANSWERED', 'FLAGGED' ] ])
|
871
|
+
assert_search_syntax_error([ [ :block, 'ANSWERED', 'FLAGGED' ] ], /unknown search key/)
|
872
|
+
end
|
873
|
+
|
874
|
+
def test_parse_unknown
|
875
|
+
make_search_parser{}
|
876
|
+
assert_search_syntax_error([ :detarame ], /unknown search key/)
|
864
877
|
end
|
865
878
|
|
866
879
|
def test_parse_charset_body
|
data/test/test_rfc822.rb
CHANGED
@@ -657,7 +657,7 @@ Content-Type: application/octet-stream
|
|
657
657
|
'Reply-To' => 'Baz <baz@mail.example.com>',
|
658
658
|
'To' => 'Alice <alice@mail.example.com>',
|
659
659
|
'Cc' => 'Bob <bob@mail.example.com>',
|
660
|
-
'Bcc' => 'Kate <kate@mail.example.com>')
|
660
|
+
'Bcc' => 'Kate <kate@mail.example.com>')
|
661
661
|
|
662
662
|
assert_equal([ [ 'Foo', nil, 'foo', 'mail.example.com' ] ], @msg.from)
|
663
663
|
assert_equal([ [ 'Bar', nil, 'bar', 'mail.example.com' ] ], @msg.sender)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rims
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TOKI Yoshinori
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- bin/rims
|
88
88
|
- lib/rims.rb
|
89
89
|
- lib/rims/auth.rb
|
90
|
+
- lib/rims/channel.rb
|
90
91
|
- lib/rims/cksum_kvs.rb
|
91
92
|
- lib/rims/cmd.rb
|
92
93
|
- lib/rims/daemon.rb
|
@@ -109,6 +110,7 @@ files:
|
|
109
110
|
- load_test/Rakefile
|
110
111
|
- rims.gemspec
|
111
112
|
- test/test_auth.rb
|
113
|
+
- test/test_channel.rb
|
112
114
|
- test/test_cksum_kvs.rb
|
113
115
|
- test/test_config.rb
|
114
116
|
- test/test_daemon_status_file.rb
|
@@ -153,6 +155,7 @@ specification_version: 4
|
|
153
155
|
summary: RIMS is Ruby IMap Server
|
154
156
|
test_files:
|
155
157
|
- test/test_auth.rb
|
158
|
+
- test/test_channel.rb
|
156
159
|
- test/test_cksum_kvs.rb
|
157
160
|
- test/test_config.rb
|
158
161
|
- test/test_daemon_status_file.rb
|