File tree Expand file tree Collapse file tree 2 files changed +22
-0
lines changed Expand file tree Collapse file tree 2 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -3151,6 +3151,10 @@ def enforce_logindisabled?
3151
3151
end
3152
3152
3153
3153
def search_args ( keys , charset = nil )
3154
+ # NOTE: not handling combined RETURN and CHARSET for raw strings
3155
+ if charset && keys in /\A CHARSET\b /i | Array [ /\A CHARSET\z /i , *]
3156
+ raise ArgumentError , "multiple charset arguments"
3157
+ end
3154
3158
args = normalize_searching_criteria ( keys )
3155
3159
args . prepend ( "CHARSET" , charset ) if charset
3156
3160
args
Original file line number Diff line number Diff line change @@ -1265,6 +1265,24 @@ def seqset_coercible.to_sequence_set
1265
1265
end
1266
1266
end
1267
1267
1268
+ test ( "#search/#uid_search with invalid arguments" ) do
1269
+ with_fake_server do |server , imap |
1270
+ server . on "SEARCH" do |cmd | cmd . fail_no "should fail before this" end
1271
+ server . on "UID SEARCH" do |cmd | cmd . fail_no "should fail before this" end
1272
+
1273
+ assert_raise ( ArgumentError ) do
1274
+ imap . search ( [ "charset" , "foo" , "ALL" ] , "bar" )
1275
+ end
1276
+ assert_raise ( ArgumentError ) do
1277
+ imap . search ( "charset foo ALL" , "bar" )
1278
+ end
1279
+ # Parsing return opts is too complicated, for now.
1280
+ # assert_raise(ArgumentError) do
1281
+ # imap.search("return () charset foo ALL", "bar")
1282
+ # end
1283
+ end
1284
+ end
1285
+
1268
1286
test ( "missing server SEARCH response" ) do
1269
1287
with_fake_server do |server , imap |
1270
1288
server . on "SEARCH" , &:done_ok
You can’t perform that action at this time.
0 commit comments