Skip to content

Commit

Permalink
[JENKINS-37585] Allow support for "alpha", "beta" and "RC" versions o…
Browse files Browse the repository at this point in the history
…f jenkins-core (#12)

* [JENKINS-37585] Augment the jenkins core Regexp to include alpha, beta and RC

* [JENKINS-37585] Include rc in lowercase as accepted version

* [JENKINS-37585] Refactor regexp to constant to better test it, make version case insensitive

* [JENKINS-37585] Added test for the jenkins-core file regexp

* [JENKINS-37585] Add group capture check and some invalid cases

* [JENKINS-37585] Making the dash after the qualifier optional

* [JENKINS-37585] Make version number after qualifier optional
  • Loading branch information
Raúl Arabaolaza Barquin authored and oleg-nenashev committed Aug 23, 2016
1 parent 52f73ec commit acdfe74
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 2 deletions.
Expand Up @@ -104,8 +104,9 @@ public class PluginCompatTester {

/** First version with new parent POM. */
private static final String CORE_NEW_PARENT_POM = "1.646";
public static final String JENKINS_CORE_FILE_REGEX = "WEB-INF/lib/jenkins-core-([0-9.]+(?:-[0-9.]+)?(?:-(?i)(alpha|beta|rc)(-)?([0-9.]+)?)?(?:-SNAPSHOT)?)[.]jar";

private PluginCompatTesterConfig config;
private PluginCompatTesterConfig config;
private final MavenRunner runner;

public PluginCompatTester(PluginCompatTesterConfig config){
Expand Down Expand Up @@ -463,7 +464,7 @@ private UpdateSite.Data scanWAR(File war, Map<String, String> pluginGroupIds) th
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
String name = entry.getName();
Matcher m = Pattern.compile("WEB-INF/lib/jenkins-core-([0-9.]+(?:-[0-9.]+)?(?:-SNAPSHOT)?)[.]jar").matcher(name);
Matcher m = Pattern.compile(JENKINS_CORE_FILE_REGEX).matcher(name);
if (m.matches()) {
if (top.has("core")) {
throw new IOException(">1 jenkins-core.jar in " + war);
Expand Down
Expand Up @@ -37,6 +37,11 @@
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

/**
* Main test class for plugin compatibility test frontend
Expand Down Expand Up @@ -74,4 +79,102 @@ public void testWithUrl() throws Throwable {
PluginCompatTester tester = new PluginCompatTester(config);
tester.testPlugins();
}

@Test
public void testMatcher() throws Throwable {

String fileName = "WEB-INF/lib/jenkins-core-2.7.3-alpha-33.jar";
Matcher m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-alpha-33"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-ALPHA-33.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-ALPHA-33"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-ALPHA-33-SNAPSHOT.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-ALPHA-33-SNAPSHOT"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-alpha-33-SNAPSHOT.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-alpha-33-SNAPSHOT"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-beta-33.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-beta-33"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-BETA-33.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-BETA-33"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-BETA-33-SNAPSHOT.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-BETA-33-SNAPSHOT"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-BETA-33-SNAPSHOT.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-BETA-33-SNAPSHOT"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-rc-33.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-rc-33"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-RC-33.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-RC-33"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-RC-33-SNAPSHOT.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-RC-33-SNAPSHOT"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-rc-33-SNAPSHOT.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-rc-33-SNAPSHOT"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-SNAPSHOT.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-SNAPSHOT"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-RC33.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-RC33"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-alpha33-SNAPSHOT.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-alpha33-SNAPSHOT"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-rc-SNAPSHOT.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertTrue("No matches",m.matches());
assertTrue("Invalid group", m.group(1).equals("2.7.3-rc-SNAPSHOT"));

fileName = "WEB-INF/lib/jenkins-core-2.7.3-milestone.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertFalse("Invalid match",m.matches());

fileName = "WEB-INF/lib/jenkins-core-2.7.3-rc-milestone.jar";
m = Pattern.compile(PluginCompatTester.JENKINS_CORE_FILE_REGEX).matcher(fileName);
assertFalse("Invalid match",m.matches());

}
}

0 comments on commit acdfe74

Please sign in to comment.