@@ -306,6 +306,74 @@ public void testShouldStillTryToBuildWebDriverExceptionIfClassIsNotProvidedAndSt
306
306
}
307
307
}
308
308
309
+ @ SuppressWarnings ({"unchecked" , "ThrowableInstanceNeverThrown" })
310
+ @ Test
311
+ public void testToleratesNonNumericLineNumber () {
312
+ Map <String , ?> data = ImmutableMap .of (
313
+ "message" , "some error message" ,
314
+ "stackTrace" , Lists .newArrayList (
315
+ ImmutableMap .of ("lineNumber" , "some string, might be empty or 'Not avalable'" ,
316
+ "methodName" , "someMethod" ,
317
+ "className" , "MyClass" ,
318
+ "fileName" , "Resource.m" )));
319
+
320
+ try {
321
+ handler .throwIfResponseFailed (createResponse (ErrorCodes .UNHANDLED_ERROR , data ), 123 );
322
+ fail ("Should have thrown!" );
323
+ } catch (WebDriverException expected ) {
324
+ assertEquals (new WebDriverException ("some error message\n Command duration or timeout: 123 milliseconds" ).getMessage (),
325
+ expected .getMessage ());
326
+
327
+ StackTraceElement [] expectedTrace = {
328
+ new StackTraceElement ("MyClass" , "someMethod" , "Resource.m" , -1 )
329
+ };
330
+ WebDriverException helper = new WebDriverException ("some error message" );
331
+ helper .setStackTrace (expectedTrace );
332
+
333
+ Throwable cause = expected .getCause ();
334
+ assertNotNull (cause );
335
+ assertEquals (WebDriverException .class , cause .getClass ());
336
+ assertEquals (helper .getMessage (),
337
+ cause .getMessage ());
338
+
339
+ assertStackTracesEqual (expectedTrace , cause .getStackTrace ());
340
+ }
341
+ }
342
+
343
+ @ SuppressWarnings ({"unchecked" , "ThrowableInstanceNeverThrown" })
344
+ @ Test
345
+ public void testToleratesNumericLineNumberAsString () {
346
+ Map <String , ?> data = ImmutableMap .of (
347
+ "message" , "some error message" ,
348
+ "stackTrace" , Lists .newArrayList (
349
+ ImmutableMap .of ("lineNumber" , "1224" , // number as a string
350
+ "methodName" , "someMethod" ,
351
+ "className" , "MyClass" ,
352
+ "fileName" , "Resource.m" )));
353
+
354
+ try {
355
+ handler .throwIfResponseFailed (createResponse (ErrorCodes .UNHANDLED_ERROR , data ), 123 );
356
+ fail ("Should have thrown!" );
357
+ } catch (WebDriverException expected ) {
358
+ assertEquals (new WebDriverException ("some error message\n Command duration or timeout: 123 milliseconds" ).getMessage (),
359
+ expected .getMessage ());
360
+
361
+ StackTraceElement [] expectedTrace = {
362
+ new StackTraceElement ("MyClass" , "someMethod" , "Resource.m" , 1224 )
363
+ };
364
+ WebDriverException helper = new WebDriverException ("some error message" );
365
+ helper .setStackTrace (expectedTrace );
366
+
367
+ Throwable cause = expected .getCause ();
368
+ assertNotNull (cause );
369
+ assertEquals (WebDriverException .class , cause .getClass ());
370
+ assertEquals (helper .getMessage (),
371
+ cause .getMessage ());
372
+
373
+ assertStackTracesEqual (expectedTrace , cause .getStackTrace ());
374
+ }
375
+ }
376
+
309
377
@ SuppressWarnings ({"unchecked" , "ThrowableInstanceNeverThrown" })
310
378
@ Test
311
379
public void testShouldIndicateWhenTheServerReturnedAnExceptionThatWasSuppressed ()
0 commit comments