diff options
author | Håkon Hallingstad <hakon@oath.com> | 2018-08-28 09:31:56 +0200 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2018-08-28 09:31:56 +0200 |
commit | d8beea0be39ed0e3a9686a9f555d7d279e08dde1 (patch) | |
tree | 76d21cdbdf59be9dda2a771a0391b7b7566c351e /node-admin | |
parent | 1599bbee277b3065ef327bf98acd4cf71a2d6a97 (diff) |
Require digit in version and release
Diffstat (limited to 'node-admin')
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java | 14 | ||||
-rw-r--r-- | node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java | 14 |
2 files changed, 18 insertions, 10 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java index 22fba731b02..5a95c90d216 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java @@ -175,9 +175,9 @@ public class Yum { } /** YUM package name. */ - private static class PackageName { + static class PackageName { private static final Pattern ARCHITECTURE_PATTERN = Pattern.compile("\\.(noarch|x86_64|i686|i386|\\*)$"); - private static final Pattern NAME_VER_REL_PATTERN = Pattern.compile("^(.+)-([^-]+)-([^-]+)$"); + private static final Pattern NAME_VER_REL_PATTERN = Pattern.compile("^(.+)-([^-]*[0-9][^-]*)-([^-]*[0-9][^-]*)$"); public final Optional<String> epoch; public final String name; @@ -197,13 +197,6 @@ public class Yum { this.architecture = architecture; } - public static PackageName fromComponents(String name, String version, String release) { - if (name.isEmpty()) throw new IllegalArgumentException("Name is empty"); - if (version.isEmpty()) throw new IllegalArgumentException("Version is empty"); - if (release.isEmpty()) throw new IllegalArgumentException("Release is empty"); - return new PackageName(Optional.empty(), name, Optional.of(version), Optional.of(release), Optional.empty()); - } - /** * Parse the string specification of a YUM package. * @@ -215,7 +208,8 @@ public class Yum { * <li>If specified, arch MUST be one of "noarch", "i686", "x86_64", or "*". The wildcard * is equivalent to not specifying arch. * <li>rel cannot end in something that would be mistaken for the '.arch' suffix. - * <li>ver and rel are assumed to not contain any '-' to uniquely identify name. + * <li>ver and rel are assumed to not contain any '-' to uniquely identify name, + * and must contain a digit. * </ul> * * @param spec A package name of the form epoch:name-ver-rel.arch, name-ver-rel.arch, or name-ver-rel. diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java index f2a2306263a..896914b7967 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java @@ -191,4 +191,18 @@ public class YumTest { yum.upgrade().converge(taskContext); } + + @Test + public void parsePackageName() { + Yum.PackageName packageName = Yum.PackageName.fromString("docker-engine-selinux-1.12.6-1.el7"); + assertEquals("docker-engine-selinux", packageName.getName()); + assertEquals("1.12.6", packageName.getVersion().get()); + assertEquals("1.el7", packageName.getRelease().get()); + assertEquals("0:docker-engine-selinux-1.12.6-1.el7.*", packageName.toFullName()); + } + + @Test(expected = IllegalArgumentException.class) + public void failParsingOfPackageName() { + Yum.PackageName.fromString("docker-engine-selinux"); + } }
\ No newline at end of file |