1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.maven.surefire.api.testset;
20
21 import java.io.File;
22 import java.util.ArrayList;
23 import java.util.List;
24
25 /**
26 * Information about the requested test.
27 *
28 * @author Kristian Rosenvold
29 */
30 public class TestRequest {
31 private final List<File> suiteXmlFiles;
32
33 private final File testSourceDirectory;
34
35 private final TestListResolver requestedTests;
36
37 private final int rerunFailingTestsCount;
38
39 public TestRequest(List suiteXmlFiles, File testSourceDirectory, TestListResolver requestedTests) {
40 this(createFiles(suiteXmlFiles), testSourceDirectory, requestedTests, 0);
41 }
42
43 public TestRequest(
44 List suiteXmlFiles, File testSourceDirectory, TestListResolver requestedTests, int rerunFailingTestsCount) {
45 this.suiteXmlFiles = createFiles(suiteXmlFiles);
46 this.testSourceDirectory = testSourceDirectory;
47 this.requestedTests = requestedTests;
48 this.rerunFailingTestsCount = rerunFailingTestsCount;
49 }
50
51 /**
52 * Represents suitexmlfiles that define the test-run request
53 *
54 * @return A list of java.io.File objects.
55 */
56 public List<File> getSuiteXmlFiles() {
57 return suiteXmlFiles;
58 }
59
60 /**
61 * Test source directory, normally ${project.build.testSourceDirectory}
62 *
63 * @return A file pointing to test sources
64 */
65 public File getTestSourceDirectory() {
66 return testSourceDirectory;
67 }
68
69 /**
70 * A specific test request issued with -Dtest= from the command line.
71 *
72 * @return filter
73 */
74 public TestListResolver getTestListResolver() {
75 return requestedTests;
76 }
77
78 /**
79 * How many times to rerun failing tests, issued with -Dsurefire.rerunFailingTestsCount from the command line.
80 *
81 * @return The int parameter to indicate how many times to rerun failing tests
82 */
83 public int getRerunFailingTestsCount() {
84 return rerunFailingTestsCount;
85 }
86
87 private static List<File> createFiles(List suiteXmlFiles) {
88 if (suiteXmlFiles != null) {
89 List<File> files = new ArrayList<>();
90 Object element;
91 for (Object suiteXmlFile : suiteXmlFiles) {
92 element = suiteXmlFile;
93 files.add(element instanceof String ? new File((String) element) : (File) element);
94 }
95 return files;
96 }
97 return null;
98 }
99 }