1 package org.apache.maven.plugin.surefire;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.lang.reflect.InvocationTargetException;
23 import java.util.Properties;
24 import org.apache.maven.surefire.booter.ProviderConfiguration;
25 import org.apache.maven.surefire.booter.ProviderFactory;
26 import org.apache.maven.surefire.booter.StartupConfiguration;
27 import org.apache.maven.surefire.booter.SurefireExecutionException;
28 import org.apache.maven.surefire.suite.RunResult;
29 import org.apache.maven.surefire.testset.TestSetFailedException;
30 import org.apache.maven.surefire.util.DefaultScanResult;
31
32 import javax.annotation.Nonnull;
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public class InPluginVMSurefireStarter
47 {
48
49 private final StartupConfiguration startupConfiguration;
50
51 private final StartupReportConfiguration startupReportConfiguration;
52
53 private final ProviderConfiguration providerConfiguration;
54
55 public InPluginVMSurefireStarter( @Nonnull StartupConfiguration startupConfiguration,
56 @Nonnull ProviderConfiguration providerConfiguration,
57 @Nonnull StartupReportConfiguration startupReportConfiguration )
58 {
59 this.startupConfiguration = startupConfiguration;
60 this.startupReportConfiguration = startupReportConfiguration;
61 this.providerConfiguration = providerConfiguration;
62 }
63
64 public RunResult runSuitesInProcess( @Nonnull DefaultScanResult scanResult )
65 throws SurefireExecutionException, TestSetFailedException
66 {
67
68
69
70 Properties providerProperties = providerConfiguration.getProviderProperties();
71 scanResult.writeTo( providerProperties );
72
73 startupConfiguration.writeSurefireTestClasspathProperty();
74 ClassLoader testsClassLoader = startupConfiguration.getClasspathConfiguration().createMergedClassLoader();
75
76 CommonReflector surefireReflector = new CommonReflector( testsClassLoader );
77
78 final Object factory = surefireReflector.createReportingReporterFactory( startupReportConfiguration );
79
80 try
81 {
82 return ProviderFactory.invokeProvider( null, testsClassLoader, factory,
83 providerConfiguration, false, startupConfiguration, true );
84 }
85 catch ( InvocationTargetException e )
86 {
87 throw new SurefireExecutionException( "Exception in provider", e.getTargetException() );
88 }
89 }
90
91 }