public void readExternal(Element element) throws InvalidDataException { //noinspection unchecked for (Element suiteElement : element.getChildren(SUITE)) { final CoverageRunner coverageRunner = BaseCoverageSuite.readRunnerAttribute(suiteElement); // skip unknown runners if (coverageRunner == null) { // collect gc final CoverageFileProvider fileProvider = BaseCoverageSuite.readDataFileProviderAttribute(suiteElement); if (fileProvider.isValid()) { // deleteCachedCoverage(fileProvider.getCoverageDataFilePath()); } continue; } CoverageSuite suite = null; for (CoverageEngine engine : CoverageEngine.EP_NAME.getExtensions()) { if (coverageRunner.acceptsCoverageEngine(engine)) { suite = engine.createEmptyCoverageSuite(coverageRunner); if (suite != null) { break; } } } if (suite != null) { try { suite.readExternal(suiteElement); myCoverageSuites.add(suite); } catch (NumberFormatException e) { // try next suite } } } }
@NotNull private CoverageSuite createCoverageSuite( final CoverageEnabledConfiguration config, final String name, final CoverageRunner coverageRunner, final DefaultCoverageFileProvider fileProvider) { CoverageSuite suite = null; for (CoverageEngine engine : CoverageEngine.EP_NAME.getExtensions()) { if (coverageRunner.acceptsCoverageEngine(engine) && engine.isApplicableTo(config.getConfiguration())) { suite = engine.createCoverageSuite(coverageRunner, name, fileProvider, config); if (suite != null) { break; } } } LOG.assertTrue( suite != null, "Cannot create coverage suite for runner: " + coverageRunner.getPresentableName()); return suite; }
@NotNull private CoverageSuite createCoverageSuite( final CoverageRunner coverageRunner, final String name, final CoverageFileProvider fileProvider, final String[] filters, final long lastCoverageTimeStamp, final String suiteToMergeWith, final boolean collectLineInfo, final boolean tracingEnabled) { CoverageSuite suite = null; for (CoverageEngine engine : CoverageEngine.EP_NAME.getExtensions()) { if (coverageRunner.acceptsCoverageEngine(engine)) { suite = engine.createCoverageSuite( coverageRunner, name, fileProvider, filters, lastCoverageTimeStamp, suiteToMergeWith, collectLineInfo, tracingEnabled, false, myProject); if (suite != null) { break; } } } LOG.assertTrue( suite != null, "Cannot create coverage suite for runner: " + coverageRunner.getPresentableName()); return suite; }