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.
This commit is contained in:
Roman Flammer 2014-08-13 14:02:05 +02:00
parent 651370487d
commit 9920681736
2 changed files with 20 additions and 4 deletions

View file

@ -6,8 +6,8 @@
(def ^:dynamic *level* :patch) (def ^:dynamic *level* :patch)
(defn parse-semantic-version [version-string] (defn string->semantic-version [version-string]
"Create map representing the given version string. Raise exception if the "Create map representing the given version string. Returns nil if the
string does not follow guidelines setforth by Semantic Versioning 2.0.0, string does not follow guidelines setforth by Semantic Versioning 2.0.0,
http://semver.org/" http://semver.org/"
;; <MajorVersion>.<MinorVersion>.<PatchVersion>[-<BuildNumber | Qualifier >] ;; <MajorVersion>.<MinorVersion>.<PatchVersion>[-<BuildNumber | Qualifier >]
@ -17,8 +17,14 @@
(zipmap [:major :minor :patch])) (zipmap [:major :minor :patch]))
qualifier (last (re-matches #".*-(.+)?" version-string))] qualifier (last (re-matches #".*-(.+)?" version-string))]
(if-not (empty? version-map) (if-not (empty? version-map)
(merge version-map {:qualifier qualifier}) (merge version-map {:qualifier qualifier}))))
(main/abort "Unrecognized version string:" version-string))))
(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 (defn version-map->string
"Given a version-map, return a string representing the version." "Given a version-map, return a string representing the version."

View file

@ -62,6 +62,16 @@
:beta "1.0.0-beta1" :beta "1.0.0-beta1"
:rc "1.0.0-RC1"}]]) :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 (deftest test-parse-semver-version
(testing "Testing semantic version string parsing" (testing "Testing semantic version string parsing"
(doseq [[args expected] valid-semver-version-values] (doseq [[args expected] valid-semver-version-values]