1 package org.apache.maven.shared.utils.testhelpers;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import org.hamcrest.BaseMatcher;
24 import org.hamcrest.Description;
25 import org.hamcrest.Matcher;
26
27
28 public class ExceptionHelper
29 {
30
31
32
33
34
35
36
37 public static Matcher<Throwable> hasCause( Class<? extends Throwable> cause )
38 {
39 return new HasCause( cause );
40 }
41
42 private static class HasCause
43 extends BaseMatcher<Throwable>
44 {
45 private final Class<? extends Throwable> cause;
46
47 public HasCause( Class<? extends Throwable> cause )
48 {
49 this.cause = cause;
50 }
51
52 public boolean matches( Object item )
53 {
54 Throwable throwable = (Throwable) item;
55 while ( throwable != null && !cause.isInstance( throwable ) )
56 {
57 throwable = throwable.getCause();
58 }
59 return cause.isInstance( throwable );
60 }
61
62 public void describeTo( Description description )
63 {
64 description.appendText( "was caused by a " ).appendValue( cause ).appendText( " being thrown" );
65 }
66 }
67 }