@@ -201,28 +201,40 @@ def test_fetch_binary_and_binary_size
201201 end
202202 end
203203
204+ def assert_deprecated_appenduid_data_warning
205+ assert_warn ( /#{ __FILE__ } .*warning.*parser_use_deprecated_uidplus_data is ignored/ ) do
206+ result = yield
207+ assert_instance_of Net ::IMAP ::AppendUIDData , result . data . code . data
208+ result
209+ end
210+ end
211+
204212 test "APPENDUID with parser_use_deprecated_uidplus_data = true" do
205213 parser = Net ::IMAP ::ResponseParser . new ( config : {
206214 parser_use_deprecated_uidplus_data : true ,
207215 parser_max_deprecated_uidplus_data_size : 10_000 ,
208216 } )
209- assert_raise_with_message Net :: IMAP :: ResponseParseError , /uid-set is too large/ do
217+ assert_deprecated_appenduid_data_warning do
210218 parser . parse (
211219 "A004 OK [APPENDUID 1 10000:20000,1] Done\r \n "
212220 )
213221 end
214- response = parser . parse ( "A004 OK [APPENDUID 1 100:200] Done\r \n " )
222+ response = assert_deprecated_appenduid_data_warning do
223+ parser . parse ( "A004 OK [APPENDUID 1 100:200] Done\r \n " )
224+ end
215225 uidplus = response . data . code . data
216226 assert_equal 101 , uidplus . assigned_uids . size
217227 parser . config . parser_max_deprecated_uidplus_data_size = 100
218- assert_raise_with_message Net :: IMAP :: ResponseParseError , /uid-set is too large/ do
228+ assert_deprecated_appenduid_data_warning do
219229 parser . parse (
220230 "A004 OK [APPENDUID 1 100:200] Done\r \n "
221231 )
222232 end
223- response = parser . parse ( "A004 OK [APPENDUID 1 101:200] Done\r \n " )
233+ response = assert_deprecated_appenduid_data_warning do
234+ parser . parse ( "A004 OK [APPENDUID 1 101:200] Done\r \n " )
235+ end
224236 uidplus = response . data . code . data
225- assert_instance_of Net ::IMAP ::UIDPlusData , uidplus
237+ assert_instance_of Net ::IMAP ::AppendUIDData , uidplus
226238 assert_equal 100 , uidplus . assigned_uids . size
227239 end
228240
@@ -231,9 +243,13 @@ def test_fetch_binary_and_binary_size
231243 parser_use_deprecated_uidplus_data : :up_to_max_size ,
232244 parser_max_deprecated_uidplus_data_size : 100
233245 } )
234- response = parser . parse ( "A004 OK [APPENDUID 1 101:200] Done\r \n " )
235- assert_instance_of Net ::IMAP ::UIDPlusData , response . data . code . data
236- response = parser . parse ( "A004 OK [APPENDUID 1 100:200] Done\r \n " )
246+ response = assert_deprecated_appenduid_data_warning do
247+ parser . parse ( "A004 OK [APPENDUID 1 101:200] Done\r \n " )
248+ end
249+ assert_instance_of Net ::IMAP ::AppendUIDData , response . data . code . data
250+ response = assert_deprecated_appenduid_data_warning do
251+ parser . parse ( "A004 OK [APPENDUID 1 100:200] Done\r \n " )
252+ end
237253 assert_instance_of Net ::IMAP ::AppendUIDData , response . data . code . data
238254 end
239255
@@ -242,8 +258,10 @@ def test_fetch_binary_and_binary_size
242258 parser_use_deprecated_uidplus_data : false ,
243259 parser_max_deprecated_uidplus_data_size : 10_000_000 ,
244260 } )
245- response = parser . parse ( "A004 OK [APPENDUID 1 10] Done\r \n " )
246- assert_instance_of Net ::IMAP ::AppendUIDData , response . data . code . data
261+ assert_warn ( "" ) do
262+ response = parser . parse ( "A004 OK [APPENDUID 1 10] Done\r \n " )
263+ assert_instance_of Net ::IMAP ::AppendUIDData , response . data . code . data
264+ end
247265 end
248266
249267 test "COPYUID with backwards ranges" do
@@ -276,29 +294,42 @@ def test_fetch_binary_and_binary_size
276294 end
277295 end
278296
297+ def assert_deprecated_copyuid_data_warning ( check : true )
298+ assert_warn ( /#{ __FILE__ } .*warning.*parser_use_deprecated_uidplus_data is ignored/ ) do
299+ result = yield
300+ assert_instance_of Net ::IMAP ::CopyUIDData , result . data . code . data if check
301+ result
302+ end
303+ end
304+
279305 test "COPYUID with parser_use_deprecated_uidplus_data = true" do
280306 parser = Net ::IMAP ::ResponseParser . new ( config : {
281307 parser_use_deprecated_uidplus_data : true ,
282308 parser_max_deprecated_uidplus_data_size : 10_000 ,
283309 } )
284- assert_raise_with_message Net ::IMAP ::ResponseParseError , /uid-set is too large/ do
285- parser . parse (
286- "A004 OK [copyUID 1 10000:20000,1 1:10001] Done\r \n "
287- )
310+ assert_deprecated_copyuid_data_warning ( check : false ) do
311+ assert_raise_with_message Net ::IMAP ::DataFormatError , /mismatched uid-set sizes/ do
312+ parser . parse (
313+ "A004 OK [copyUID 1 10000:20000,1 1:10001] Done\r \n "
314+ )
315+ end
316+ end
317+ response = assert_deprecated_copyuid_data_warning do
318+ parser . parse ( "A004 OK [copyUID 1 100:200 1:101] Done\r \n " )
288319 end
289- response = parser . parse ( "A004 OK [copyUID 1 100:200 1:101] Done\r \n " )
290320 uidplus = response . data . code . data
291321 assert_equal 101 , uidplus . assigned_uids . size
292322 assert_equal 101 , uidplus . source_uids . size
293323 parser . config . parser_max_deprecated_uidplus_data_size = 100
294- assert_raise_with_message Net :: IMAP :: ResponseParseError , /uid-set is too large/ do
324+ assert_deprecated_copyuid_data_warning do
295325 parser . parse (
296326 "A004 OK [copyUID 1 100:200 1:101] Done\r \n "
297327 )
298328 end
299- response = parser . parse ( "A004 OK [copyUID 1 101:200 1:100] Done\r \n " )
329+ response = assert_deprecated_copyuid_data_warning do
330+ parser . parse ( "A004 OK [copyUID 1 101:200 1:100] Done\r \n " )
331+ end
300332 uidplus = response . data . code . data
301- assert_instance_of Net ::IMAP ::UIDPlusData , uidplus
302333 assert_equal 100 , uidplus . assigned_uids . size
303334 assert_equal 100 , uidplus . source_uids . size
304335 end
@@ -308,12 +339,12 @@ def test_fetch_binary_and_binary_size
308339 parser_use_deprecated_uidplus_data : :up_to_max_size ,
309340 parser_max_deprecated_uidplus_data_size : 100
310341 } )
311- response = parser . parse ( "A004 OK [COPYUID 1 101:200 1:100] Done \r \n " )
312- copyuid = response . data . code . data
313- assert_instance_of Net :: IMAP :: UIDPlusData , copyuid
314- response = parser . parse ( "A004 OK [COPYUID 1 100:200 1:101] Done \r \n " )
315- copyuid = response . data . code . data
316- assert_instance_of Net :: IMAP :: CopyUIDData , copyuid
342+ assert_deprecated_copyuid_data_warning do
343+ parser . parse ( "A004 OK [COPYUID 1 101:200 1:100] Done \r \n " )
344+ end
345+ assert_deprecated_copyuid_data_warning do
346+ parser . parse ( "A004 OK [COPYUID 1 100:200 1:101] Done \r \n " )
347+ end
317348 end
318349
319350 test "COPYUID with parser_use_deprecated_uidplus_data = false" do
0 commit comments