From 99206817363de395c679666f800b57df7f15e144 Mon Sep 17 00:00:00 2001 From: Roman Flammer Date: Wed, 13 Aug 2014 14:02:05 +0200 Subject: [PATCH] Extract version parsing function out of parse-semantic-version. Enables parsing of the semantic version without triggering an abort in case of a parse failure. Fix typo. --- src/leiningen/release.clj | 14 ++++++++++---- test/leiningen/test/release.clj | 10 ++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/leiningen/release.clj b/src/leiningen/release.clj index dc226083..fb8f631b 100644 --- a/src/leiningen/release.clj +++ b/src/leiningen/release.clj @@ -6,8 +6,8 @@ (def ^:dynamic *level* :patch) -(defn parse-semantic-version [version-string] - "Create map representing the given version string. Raise exception if the +(defn string->semantic-version [version-string] + "Create map representing the given version string. Returns nil if the string does not follow guidelines setforth by Semantic Versioning 2.0.0, http://semver.org/" ;; ..[-] @@ -17,8 +17,14 @@ (zipmap [:major :minor :patch])) qualifier (last (re-matches #".*-(.+)?" version-string))] (if-not (empty? version-map) - (merge version-map {:qualifier qualifier}) - (main/abort "Unrecognized version string:" version-string)))) + (merge version-map {:qualifier qualifier})))) + +(defn parse-semantic-version [version-string] + "Create map representing the given version string. Aborts with exit code 1 + if the string does not follow guidelines setforth by Semantic Versioning 2.0.0, + http://semver.org/" + (or (string->semantic-version version-string) + (main/abort "Unrecognized version string:" version-string))) (defn version-map->string "Given a version-map, return a string representing the version." diff --git a/test/leiningen/test/release.clj b/test/leiningen/test/release.clj index ea3db626..8719042b 100644 --- a/test/leiningen/test/release.clj +++ b/test/leiningen/test/release.clj @@ -62,6 +62,16 @@ :beta "1.0.0-beta1" :rc "1.0.0-RC1"}]]) +(deftest test-string->semantic-version + (testing "Testing semantic version string parsing" + (doseq [[args expected] valid-semver-version-values] + (testing (format "with valid version strings: %s" args) + (is (= (string->semantic-version args) expected)))) + + (testing "with invalid version strings." + (doseq [[semver-test-data] invalid-semver-version-values] + (is (nil? (string->semantic-version semver-test-data))))))) + (deftest test-parse-semver-version (testing "Testing semantic version string parsing" (doseq [[args expected] valid-semver-version-values]