diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java index 1d725a69a..3607df148 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java @@ -113,6 +113,7 @@ import org.jenkins.tools.test.model.hook.PluginCompatTesterHooks; import org.jenkins.tools.test.util.ExecutedTestNamesSolver; import org.springframework.core.io.ClassPathResource; +import org.jenkins.tools.test.exception.PomTransformationException; /** * Frontend for plugin compatibility tests @@ -449,8 +450,7 @@ private static String createBuildLogFilePathFor(String pluginName, String plugin } private TestExecutionResult testPluginAgainst(MavenCoordinates coreCoordinates, Plugin plugin, MavenRunner.Config mconfig, PomData pomData, Map otherPlugins, Map pluginGroupIds, PluginCompatTesterHooks pcth, List overridenPlugins) - throws PluginSourcesUnavailableException, PomExecutionException, IOException - { + throws PluginSourcesUnavailableException, PomExecutionException, IOException, PomTransformationException { System.out.println(String.format("%n%n%n%n%n")); System.out.println("#############################################"); System.out.println("#############################################"); @@ -562,7 +562,10 @@ private TestExecutionResult testPluginAgainst(MavenCoordinates coreCoordinates, MavenPom pom = new MavenPom(pluginCheckoutDir); try { addSplitPluginDependencies(plugin.name, mconfig, pluginCheckoutDir, pom, otherPlugins, pluginGroupIds, coreCoordinates.version, overridenPlugins, parentFolder); - } catch (Exception x) { + } catch (PomTransformationException x) { + throw x; + } + catch (Exception x) { x.printStackTrace(); pomData.getWarningMessages().add(Functions.printThrowable(x)); // but continue @@ -955,7 +958,7 @@ public static String getMavenModule(String plugin, File pluginPath, MavenRunner return null; } - private void addSplitPluginDependencies(String thisPlugin, MavenRunner.Config mconfig, File pluginCheckoutDir, MavenPom pom, Map otherPlugins, Map pluginGroupIds, String coreVersion, List overridenPlugins, String parentFolder) throws PomExecutionException, IOException { + private void addSplitPluginDependencies(String thisPlugin, MavenRunner.Config mconfig, File pluginCheckoutDir, MavenPom pom, Map otherPlugins, Map pluginGroupIds, String coreVersion, List overridenPlugins, String parentFolder) throws Exception { File tmp = File.createTempFile("dependencies", ".log"); VersionNumber coreDep = null; Map pluginDeps = new HashMap<>(); @@ -972,8 +975,8 @@ private void addSplitPluginDependencies(String thisPlugin, MavenRunner.Config mc } try (BufferedReader br = Files.newBufferedReader(tmp.toPath(), Charset.defaultCharset())) { - Pattern p = Pattern.compile("\\[INFO\\]([^:]+):([^:]+):([a-z-]+):(([^:]+):)?([^:]+):(provided|compile|runtime|system)(\\(optional\\))?"); - Pattern p2 = Pattern.compile("\\[INFO\\]([^:]+):([^:]+):([a-z-]+):(([^:]+):)?([^:]+):(test)"); + Pattern p = Pattern.compile("\\[INFO\\]([^:]+):([^:]+):([a-z-]+):(([^:]+):)?([^:]+):(provided|compile|runtime|system)(\\(optional\\))?.*"); + Pattern p2 = Pattern.compile("\\[INFO\\]([^:]+):([^:]+):([a-z-]+):(([^:]+):)?([^:]+):(test).*"); String line; while ((line = br.readLine()) != null) { line = line.replace(" ", ""); @@ -1097,6 +1100,10 @@ private void addSplitPluginDependencies(String thisPlugin, MavenRunner.Config mc // Remove the self-dependency if any pom.removeDependency(pluginGroupIds.get(thisPlugin), thisPlugin); } + else { + // bad, we should always find a core dependency! + throw new PomTransformationException("No jenkins core dependency found, aborting!", new Throwable()); + } } private void checkDefinedDeps(Map pluginList, Map adding, Map replacing, Map otherPlugins) { checkDefinedDeps(pluginList, adding, replacing, otherPlugins, new ArrayList<>(), null);