Merge pull request #1640 from phalphalak/separate-control-flow-from-version-parsing

Extract version parsing function out of parse-semantic-version.
This commit is contained in:
Phil Hagelberg 2014-08-14 15:03:36 -07:00
commit 77e35035fb
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]