/*
* Copyright 2015-2017 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.junit.vintage.engine.execution;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.platform.commons.util.CollectionUtils.getOnlyElement;
import static org.junit.runner.Description.createTestDescription;
import static org.junit.vintage.engine.VintageUniqueIdBuilder.engineId;
import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import org.junit.jupiter.api.Test;
import org.junit.platform.engine.TestDescriptor;
import org.junit.platform.engine.support.descriptor.EngineDescriptor;
import org.junit.runner.Description;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.vintage.engine.RecordCollectingLogger;
import org.junit.vintage.engine.descriptor.RunnerTestDescriptor;
import org.junit.vintage.engine.samples.junit4.PlainJUnit4TestCaseWithSingleTestWhichFails;
/**
* @since 4.12
*/
class RunListenerAdapterTests {
@Test
void logsUnknownDescriptions() throws Exception {
Class<?> testClass = PlainJUnit4TestCaseWithSingleTestWhichFails.class;
RecordCollectingLogger logger = new RecordCollectingLogger();
EngineDescriptor engineDescriptor = new EngineDescriptor(engineId(), "JUnit 4");
RunnerTestDescriptor runnerTestDescriptor = new RunnerTestDescriptor(engineDescriptor, testClass,
new BlockJUnit4ClassRunner(testClass));
TestRun testRun = new TestRun(runnerTestDescriptor, logger);
Description unknownDescription = createTestDescription(testClass, "doesNotExist");
Optional<? extends TestDescriptor> testDescriptor = testRun.lookupTestDescriptor(unknownDescription);
assertThat(testDescriptor).isEmpty();
assertThat(logger.getLogRecords()).hasSize(1);
LogRecord logRecord = getOnlyElement(logger.getLogRecords());
assertEquals(Level.WARNING, logRecord.getLevel());
assertEquals("Runner " + BlockJUnit4ClassRunner.class.getName() + " on class " + testClass.getName()
+ " reported event for unknown Description: doesNotExist(" + testClass.getName()
+ "). It will be ignored.",
logRecord.getMessage());
}
}