use of org.gradle.api.internal.tasks.testing.DefaultTestMethodDescriptor in project gradle by gradle.
the class TestNGTestResultProcessorAdapter method onConfigurationFailure.
@Override
public void onConfigurationFailure(ITestResult testResult) {
synchronized (lock) {
if (!failedConfigurations.add(testResult)) {
// workaround for bug in TestNG 6.2 (apparently fixed in some 6.3.x): listener is notified twice per event
return;
}
}
// Synthesise a test for the broken configuration method
TestDescriptorInternal test = new DefaultTestMethodDescriptor(idGenerator.generateId(), testResult.getMethod().getTestClass().getName(), testResult.getMethod().getMethodName());
resultProcessor.started(test, new TestStartEvent(testResult.getStartMillis()));
resultProcessor.failure(test.getId(), testResult.getThrowable());
resultProcessor.completed(test.getId(), new TestCompleteEvent(testResult.getEndMillis(), TestResult.ResultType.FAILURE));
}
use of org.gradle.api.internal.tasks.testing.DefaultTestMethodDescriptor in project gradle by gradle.
the class TestNGTestResultProcessorAdapter method onTestFinished.
private void onTestFinished(ITestResult iTestResult, TestResult.ResultType resultType) {
Object testId;
TestStartEvent startEvent = null;
synchronized (lock) {
testId = testMethodId.remove(iTestResult);
if (testId == null) {
// This can happen when a method fails which this method depends on
testId = idGenerator.generateId();
Object parentId = testMethodParentId.get(iTestResult.getMethod());
startEvent = new TestStartEvent(iTestResult.getStartMillis(), parentId);
}
}
if (startEvent != null) {
// Synthesize a start event
resultProcessor.started(new DefaultTestMethodDescriptor(testId, iTestResult.getTestClass().getName(), iTestResult.getName()), startEvent);
}
if (resultType == TestResult.ResultType.FAILURE) {
resultProcessor.failure(testId, iTestResult.getThrowable());
}
resultProcessor.completed(testId, new TestCompleteEvent(iTestResult.getEndMillis(), resultType));
}
use of org.gradle.api.internal.tasks.testing.DefaultTestMethodDescriptor in project gradle by gradle.
the class TestNGTestResultProcessorAdapter method onTestStart.
@Override
public void onTestStart(ITestResult iTestResult) {
TestDescriptorInternal testInternal;
Object parentId;
synchronized (lock) {
String name = calculateTestCaseName(iTestResult);
testInternal = new DefaultTestMethodDescriptor(idGenerator.generateId(), iTestResult.getTestClass().getName(), name);
Object oldTestId = testMethodId.put(iTestResult, testInternal.getId());
assert oldTestId == null : "Apparently some other test has started but it hasn't finished. " + "Expect the resultProcessor to break. " + "Don't expect to see this assertion stack trace due to the current architecture";
parentId = testMethodParentId.get(iTestResult.getMethod());
assert parentId != null;
}
resultProcessor.started(testInternal, new TestStartEvent(iTestResult.getStartMillis(), parentId));
if (iTestResult.getThrowable() instanceof UnrepresentableParameterException) {
throw (UnrepresentableParameterException) iTestResult.getThrowable();
}
}
use of org.gradle.api.internal.tasks.testing.DefaultTestMethodDescriptor in project gradle by gradle.
the class XCTestScraper method text.
@Override
public void text(String textFragment) {
textBuilder.append(textFragment);
if (!textFragment.endsWith(SystemProperties.getInstance().getLineSeparator())) {
return;
}
String text = textBuilder.toString();
textBuilder = new StringBuilder();
synchronized (testDescriptors) {
Scanner scanner = new Scanner(text).useDelimiter("'");
if (scanner.hasNext()) {
String token = scanner.next().trim();
if (token.equals("Test Suite")) {
// Test Suite 'PassingTestSuite' started at 2017-10-30 10:45:47.828
String testSuite = scanner.next();
if (testSuite.equals("All tests") || testSuite.equals("Selected tests") || testSuite.endsWith(".xctest")) {
// ignore these test suites
return;
}
String status = scanner.next();
boolean started = status.contains("started at");
if (started) {
// Using DefaultTestClassDescriptor to fake JUnit test
TestDescriptorInternal testDescriptor = new DefaultTestClassDescriptor(idGenerator.generateId(), testSuite);
processor.started(testDescriptor, new TestStartEvent(clock.getCurrentTime()));
testDescriptors.push(new XCTestDescriptor(testDescriptor));
} else {
XCTestDescriptor xcTestDescriptor = testDescriptors.pop();
lastDescriptor = xcTestDescriptor.getDescriptorInternal();
TestDescriptorInternal testDescriptor = xcTestDescriptor.getDescriptorInternal();
TestResult.ResultType resultType = TestResult.ResultType.SUCCESS;
boolean failed = status.contains("failed at");
if (failed) {
resultType = TestResult.ResultType.FAILURE;
}
processor.completed(testDescriptor.getId(), new TestCompleteEvent(clock.getCurrentTime(), resultType));
}
} else if (token.equals("Test Case")) {
// (macOS) Looks like: Test Case '-[AppTest.PassingTestSuite testCanPassTestCaseWithAssertion]' started.
// (Linux) Looks like: Test Case 'PassingTestSuite.testCanPassTestCaseWithAssertion' started.
String testSuiteAndCase = scanner.next();
String[] splits = testSuiteAndCase.replace('[', ' ').replace(']', ' ').split("[. ]");
String testSuite;
String testCase;
if (OperatingSystem.current().isMacOsX()) {
testSuite = splits[2];
testCase = splits[3];
} else {
testSuite = splits[0];
testCase = splits[1];
}
String status = scanner.next().trim();
boolean started = status.contains("started");
if (started) {
TestDescriptorInternal testDescriptor = new DefaultTestMethodDescriptor(idGenerator.generateId(), testSuite, testCase);
processor.started(testDescriptor, new TestStartEvent(clock.getCurrentTime()));
testDescriptors.push(new XCTestDescriptor(testDescriptor));
} else {
XCTestDescriptor xcTestDescriptor = testDescriptors.pop();
lastDescriptor = xcTestDescriptor.getDescriptorInternal();
TestDescriptorInternal testDescriptor = xcTestDescriptor.getDescriptorInternal();
TestResult.ResultType resultType = TestResult.ResultType.SUCCESS;
boolean failed = status.contains("failed");
if (failed) {
resultType = TestResult.ResultType.FAILURE;
processor.failure(testDescriptor.getId(), new Throwable(Joiner.on(TextUtil.getPlatformLineSeparator()).join(xcTestDescriptor.getMessages())));
}
processor.completed(testDescriptor.getId(), new TestCompleteEvent(clock.getCurrentTime(), resultType));
}
} else {
XCTestDescriptor xcTestDescriptor = testDescriptors.peek();
if (xcTestDescriptor != null) {
TestDescriptorInternal testDescriptor = xcTestDescriptor.getDescriptorInternal();
processor.output(testDescriptor.getId(), new DefaultTestOutputEvent(destination, text));
Matcher failureMessageMatcher = TEST_FAILURE_PATTERN.matcher(text);
if (failureMessageMatcher.find()) {
String testSuite = failureMessageMatcher.group(2);
String testCase = failureMessageMatcher.group(3);
String message = failureMessageMatcher.group(4);
if (testDescriptor.getClassName().equals(testSuite) && testDescriptor.getName().equals(testCase)) {
xcTestDescriptor.getMessages().add(message);
}
}
// If no current test can be associated to the output, the last known descriptor is used.
// See https://bugs.swift.org/browse/SR-1127 for more information.
} else if (lastDescriptor != null) {
processor.output(lastDescriptor.getId(), new DefaultTestOutputEvent(destination, text));
}
}
}
}
}
Aggregations