1 package org.apache.maven.surefire.booter;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.surefire.report.ReporterConfiguration;
23 import org.apache.maven.surefire.testset.DirectoryScannerParameters;
24 import org.apache.maven.surefire.testset.TestArtifactInfo;
25 import org.apache.maven.surefire.testset.TestRequest;
26
27 import java.io.File;
28 import java.io.IOException;
29 import java.io.InputStream;
30 import java.util.List;
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public class BooterDeserializer
47 implements BooterConstants
48 {
49
50
51 private final PropertiesWrapper properties;
52
53 public BooterDeserializer( InputStream inputStream )
54 throws IOException
55 {
56 properties = SystemPropertyManager.loadProperties( inputStream );
57 }
58
59 public ProviderConfiguration deserialize()
60 throws IOException
61 {
62
63 final File reportsDirectory = new File( properties.getProperty( REPORTSDIRECTORY ) );
64 Integer timeout = properties.getIntegerObjectProperty( FORKTIMEOUT );
65 final String testNgVersion = properties.getProperty( TESTARTIFACT_VERSION );
66 final String testArtifactClassifier = properties.getProperty( TESTARTIFACT_CLASSIFIER );
67 final Object testForFork = properties.getTypeDecoded( FORKTESTSET );
68 final String requestedTest = properties.getProperty( REQUESTEDTEST );
69 final String requestedTestMethod = properties.getProperty( REQUESTEDTESTMETHOD );
70 final File sourceDirectory = properties.getFileProperty( SOURCE_DIRECTORY );
71
72 final List reports = properties.getStringList( REPORT_PROPERTY_PREFIX );
73 final List excludesList = properties.getStringList( EXCLUDES_PROPERTY_PREFIX );
74 final List includesList = properties.getStringList( INCLUDES_PROPERTY_PREFIX );
75
76 final List testSuiteXmlFiles = properties.getStringList( TEST_SUITE_XML_FILES );
77 final File testClassesDirectory = properties.getFileProperty( TEST_CLASSES_DIRECTORY );
78 final String runOrder = properties.getProperty( RUN_ORDER );
79
80 DirectoryScannerParameters dirScannerParams =
81 new DirectoryScannerParameters( testClassesDirectory, includesList, excludesList,
82 properties.getBooleanObjectProperty( FAILIFNOTESTS ), runOrder );
83
84 TestArtifactInfo testNg = new TestArtifactInfo( testNgVersion, testArtifactClassifier );
85 TestRequest testSuiteDefinition = new TestRequest( testSuiteXmlFiles, sourceDirectory, requestedTest, requestedTestMethod );
86
87 ReporterConfiguration reporterConfiguration = new ReporterConfiguration( reports, reportsDirectory,
88 properties.getBooleanObjectProperty(
89 ISTRIMSTACKTRACE ), timeout );
90
91 return new ProviderConfiguration( dirScannerParams, properties.getBooleanProperty( FAILIFNOTESTS ),
92 reporterConfiguration, testNg, testSuiteDefinition,
93 properties.getProperties(), testForFork );
94 }
95
96 public StartupConfiguration getProviderConfiguration()
97 throws IOException
98 {
99 boolean useSystemClassLoader = properties.getBooleanProperty( USESYSTEMCLASSLOADER );
100 boolean useManifestOnlyJar = properties.getBooleanProperty( USEMANIFESTONLYJAR );
101 String providerConfiguration = properties.getProperty( PROVIDER_CONFIGURATION );
102
103 ClassLoaderConfiguration classLoaderConfiguration =
104 new ClassLoaderConfiguration( useSystemClassLoader, useManifestOnlyJar );
105
106 ClasspathConfiguration classpathConfiguration = new ClasspathConfiguration( properties );
107
108 return StartupConfiguration.inForkedVm( providerConfiguration, classpathConfiguration,
109 classLoaderConfiguration );
110 }
111 }