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)
(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/"
;; <MajorVersion>.<MinorVersion>.<PatchVersion>[-<BuildNumber | Qualifier >]
@ -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."

View file

@ -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]