com.liferay.jenkins.results.parser.test.clazz.group.TCKJunitBatchTestClassGroup Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.jenkins.results.parser
Show all versions of com.liferay.jenkins.results.parser
Liferay Jenkins Results Parser
The newest version!
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
package com.liferay.jenkins.results.parser.test.clazz.group;
import com.liferay.jenkins.results.parser.JenkinsResultsParserUtil;
import com.liferay.jenkins.results.parser.PortalTestClassJob;
import com.liferay.jenkins.results.parser.job.property.JobProperty;
import com.liferay.jenkins.results.parser.test.clazz.TestClassFactory;
import java.io.File;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.JSONObject;
/**
* @author Michael Hashimoto
*/
public class TCKJunitBatchTestClassGroup extends BatchTestClassGroup {
@Override
public JSONObject getJSONObject() {
if (jsonObject != null) {
return jsonObject;
}
jsonObject = super.getJSONObject();
jsonObject.put("exclude_globs", getGlobs(_getExcludesJobProperties()));
jsonObject.put("include_globs", getGlobs(_getIncludesJobProperties()));
jsonObject.put("tck_home_dir", _tckHomeDir);
return jsonObject;
}
protected TCKJunitBatchTestClassGroup(
JSONObject jsonObject, PortalTestClassJob portalTestClassJob) {
super(jsonObject, portalTestClassJob);
_tckHomeDir = new File(jsonObject.getString("tck_home_dir"));
}
protected TCKJunitBatchTestClassGroup(
String batchName, PortalTestClassJob portalTestClassJob) {
super(batchName, portalTestClassJob);
if (ignore()) {
_tckHomeDir = null;
return;
}
_tckHomeDir = _getTCKHomeDir();
setTestClasses();
setAxisTestClassGroups();
setSegmentTestClassGroups();
}
protected void setTestClasses() {
final List includesPathMatchers = getPathMatchers(
_getIncludesJobProperties());
final List excludesPathMatchers = getPathMatchers(
_getExcludesJobProperties());
final List tckTestFiles = new ArrayList<>();
try {
Files.walkFileTree(
_tckHomeDir.toPath(),
new SimpleFileVisitor() {
@Override
public FileVisitResult visitFile(
Path filePath,
BasicFileAttributes basicFileAttributes)
throws IOException {
if (JenkinsResultsParserUtil.isFileExcluded(
excludesPathMatchers, filePath.toFile())) {
return FileVisitResult.SKIP_SUBTREE;
}
if (JenkinsResultsParserUtil.isFileIncluded(
excludesPathMatchers, includesPathMatchers,
filePath)) {
tckTestFiles.add(filePath.toFile());
}
return FileVisitResult.CONTINUE;
}
});
}
catch (IOException ioException) {
throw new RuntimeException(
"Unable to search for test file names in " +
_tckHomeDir.getPath(),
ioException);
}
for (File tckTestFile : tckTestFiles) {
testClasses.add(TestClassFactory.newTestClass(this, tckTestFile));
}
if (testClasses.isEmpty()) {
File buildTestBatchFile = new File(
portalGitWorkingDirectory.getWorkingDirectory(),
"build-test-batch.xml");
testClasses.add(
TestClassFactory.newTestClass(this, buildTestBatchFile));
}
Collections.sort(testClasses);
}
private List _getExcludesJobProperties() {
List excludesJobProperties = new ArrayList<>();
excludesJobProperties.add(
getJobProperty(
"test.batch.class.names.excludes", _tckHomeDir,
JobProperty.Type.EXCLUDE_GLOB));
if (includeStableTestSuite && isStableTestSuiteBatch()) {
excludesJobProperties.add(
getJobProperty(
"test.batch.class.names.excludes", NAME_STABLE_TEST_SUITE,
_tckHomeDir, JobProperty.Type.EXCLUDE_GLOB));
}
recordJobProperties(excludesJobProperties);
return excludesJobProperties;
}
private List _getIncludesJobProperties() {
List includesJobProperties = new ArrayList<>();
includesJobProperties.add(
getJobProperty(
"test.batch.class.names.includes", _tckHomeDir,
JobProperty.Type.INCLUDE_GLOB));
if (includeStableTestSuite && isStableTestSuiteBatch()) {
includesJobProperties.add(
getJobProperty(
"test.batch.class.names.includes", NAME_STABLE_TEST_SUITE,
_tckHomeDir, JobProperty.Type.INCLUDE_GLOB));
}
recordJobProperties(includesJobProperties);
return includesJobProperties;
}
private File _getTCKHomeDir() {
JobProperty jobProperty = getJobProperty("tck.home");
String tckHome = jobProperty.getValue();
if (JenkinsResultsParserUtil.isNullOrEmpty(tckHome)) {
File jenkinsDir = new File(
"/opt/dev/projects/github/liferay-jenkins-ee");
if (jenkinsDir.exists()) {
tckHome = JenkinsResultsParserUtil.getProperty(
JenkinsResultsParserUtil.getProperties(
new File(
jenkinsDir,
"commands/dependencies/test.properties")),
"tck.home");
}
}
if (JenkinsResultsParserUtil.isNullOrEmpty(tckHome)) {
try {
tckHome = JenkinsResultsParserUtil.getBuildProperty(
"portal.test.properties[tck.home]");
}
catch (IOException ioException) {
throw new RuntimeException(ioException);
}
}
if (JenkinsResultsParserUtil.isNullOrEmpty(tckHome)) {
throw new RuntimeException("Unable find the TCK home");
}
return new File(tckHome);
}
private final File _tckHomeDir;
}