rims 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|