Update version-clj tests

This commit is contained in:
Michiel Borkent 2021-03-14 21:04:55 +01:00
parent db908004c7
commit 4229cab9b4
4 changed files with 158 additions and 38 deletions

View file

@ -69,7 +69,7 @@
honeysql/honeysql {:mvn/version "1.0.444"}
minimallist/minimallist {:mvn/version "0.0.6"}
circleci/bond {:mvn/version "0.4.0"}
version-clj/version-clj {:mvn/version "0.1.2"}
version-clj/version-clj {:mvn/version "2.0.1"}
gaka/gaka {:mvn/version "0.3.0"}
failjure/failjure {:mvn/version "2.1.1"}}}
:clj-nvd

View file

@ -1,9 +1,10 @@
(ns version-clj.compare-test
(:require [clojure.test :refer [deftest are]]
(:require #?(:clj [clojure.test :refer [deftest are]]
:cljs [cljs.test :refer-macros [deftest are]])
[version-clj.compare :refer [version-compare]]))
(deftest t-version-compare
(are [v0 v1 r] (= (version-compare v0 v1) r)
(are [v0 v1 r] (= r (version-compare v0 v1))
;; Numeric Comparison
"1.0.0" "1.0.0" 0
"1.0.0" "1.0" 0
@ -36,6 +37,19 @@
"1.0-RC5" "1.0-RC20" -1
"1.0-RC11" "1.0-RC6" 1
;; Comparison nested vs. value
"1.0.0" "1.0-1.0" -1
"1.0-1.0" "1.0.0" 1
"1.0-0.0" "1.0.0" 0
"1.0.0" "1.0-0.0" 0
"1.x.0" "1.x-1.0" -1
"1.x-1.0" "1.x.0" 1
"1.0-612" "1.0.613" -1
;; Numbers are newer than strings
"1.x.1" "1.0.1" -1
"1.0.1" "1.x.1" 1
;; Releases are newer than SNAPSHOTs
"1.0.0" "1.0.0-SNAPSHOT" 1
"1.0.0-SNAPSHOT" "1.0.0-SNAPSHOT" 0

View file

@ -1,25 +1,81 @@
(ns version-clj.core-test
(:require [clojure.test :refer [deftest are]]
[version-clj.core :refer [snapshot? qualified?]]))
(:require #?(:clj [clojure.test :refer [deftest is are]]
:cljs [cljs.test :refer-macros [deftest is are]])
[version-clj.core :as v]))
(deftest t-snapshot
(are [v r] (= (boolean (snapshot? v)) r)
"1.0.0" false
"SNAPSHOT" true
"1-SNAPSHOT" true
"1.0-SNAPSHOT" true
"1.0-SNAPSHOT.2" true
"1.0-NOSNAPSHOT" false))
(deftest t-snapshot?
(are [v r] (= r (boolean (v/snapshot? v)))
"1.0.0" false
"SNAPSHOT" true
"1-SNAPSHOT" true
"1.0-SNAPSHOT" true
"1.0-SNAPSHOT.2" true
"1.0-NOSNAPSHOT" false))
(deftest t-qualified
(are [v r] (= (boolean (qualified? v)) r)
"1.0.0" false
"SNAPSHOT" true
"1-SNAPSHOT" true
"1.0-SNAPSHOT" true
"1.0-SNAPSHOT.2" true
"1.0-NOSNAPSHOT" true
"1.x.2" false
"1.2y" true
"1.y2" false
"1.y" false))
(deftest t-qualified?
(are [v r] (= r (boolean (v/qualified? v)))
"1.0.0" false
"SNAPSHOT" true
"SNAPSHOT2" true
"1-SNAPSHOT" true
"1.0-SNAPSHOT" true
"1.0-SNAPSHOT.2" true
"1.0-NOSNAPSHOT" true
"1.0-NOSNAPSHOT.1" true
"1.0-NOSNAPSHOT.1.1" true
"1.0-NOSNAPSHOT1.1" true
"0.5.3-alpha.1.pre.0" true
"1.x.2" false
"1.2y" false
"1.y2" false
"1.y" false))
(let [v0 "1.0.0-SNAPSHOT"
v1 "1.0.0"
v2 "1.0.1-RC"
v3 "1.0.1"
ordered [v0 v1 v2 v3]]
(deftest t-version-sort
(is (= ordered (v/version-sort (shuffle ordered))))
(is (= (map v/version->seq ordered)
(v/version-seq-sort (map v/version->seq ordered)))))
(deftest t-version-compare
(is (pos? (v/version-compare v1 v0)))
(is (neg? (v/version-compare v0 v1)))
(is (zero? (v/version-compare v0 v0)))
(is (v/older? v0 v1))
(is (v/newer? v1 v0))
(is (v/older-or-equal? v0 v1))
(is (v/older-or-equal? v0 v0))
(is (v/newer-or-equal? v1 v0))
(is (v/newer-or-equal? v0 v0)))
(deftest t-version-seq-compare
(is (pos? (v/version-seq-compare
(v/version->seq v1)
(v/version->seq v0))))
(is (neg? (v/version-seq-compare
(v/version->seq v0)
(v/version->seq v1))))
(is (zero? (v/version-seq-compare
(v/version->seq v0)
(v/version->seq v0))))))
(deftest t-parse
(let [s "1.0.1", version (v/parse s)]
(is (= [[1 0 1]] (:version version)))
(is (= #{} (:qualifiers version)))
(is (not (:snapshot? version)))
(is (not (:qualified? version))))
(let [s "1.0.1-RC1-SNAPSHOT", version (v/parse s)]
(is (= [[1 0 1] [["rc" 1] "snapshot"]] (:version version)))
(is (= #{"rc" "snapshot"} (:qualifiers version)))
(is (:snapshot? version))
(is (:qualified? version)))
(let [s "1.0.1"]
(is (= (v/parse s) (v/parse (v/version->seq s))))))
(deftest t-version-and-qualifier-data
(is (= [1 0 1] (v/version-data "1.0.1-RC")))
(is (= ["rc"] (v/qualifier-data "1.0.1-RC"))))

View file

@ -1,22 +1,72 @@
(ns version-clj.split-test
(:require [clojure.test :refer [deftest are is]]
(:require #?(:clj [clojure.test :refer [deftest testing are is]]
:cljs [cljs.test :refer-macros [deftest testing are is]])
[version-clj.split :refer [version->seq]]))
(deftest t-split-once-sanity-check
(let [split-once @#'version-clj.split/split-once
rx #"(^|(?<=\d)|-)(?=alpha)"]
(are [in out] (= out (split-once rx in))
"1-alpha2.2" ["1" "alpha2.2"]
"alpha" ["" "alpha"]
"1alpha" ["1" "alpha"]
"0.0.3-alpha.8+oryOS.15" ["0.0.3" "alpha.8+oryOS.15"])))
(deftest t-split
(are [version v] (= (version->seq version) v)
"1.0.0" [[1 0 0]]
"1.0" [[1 0]]
"1" [[1]]
"1a" [[1] ["a"]]
"1-a" [[1] ["a"]]
"1.0.1-SNAPSHOT" [[1 0 1] ["snapshot"]]
"1.0.1-alpha2" [[1 0 1] ["alpha" 2]]
"11.2.0.3.0" [[11 2 0 3 0]]
"1.0-1-0.2-RC" [[1 [0 1 0] 2] ["rc"]]))
(are [version v] (= v (version->seq version))
"1.0.0" [[1 0 0]]
"1.0" [[1 0]]
"1" [[1]]
"1a" [[1] ["a"]]
"1-a" [[1] ["a"]]
"1.0.1-SNAPSHOT" [[1 0 1] ["snapshot"]]
"1.0.1-alpha2" [[1 0 1] ["alpha" 2]]
"11.2.0.3.0" [[11 2 0 3 0]]
"1.0-1-0.2-RC" [[1 [0 1 0] 2] ["rc"]]
"1.0-612" [[1 0] [612]]
"alpha" [[] ["alpha"]]
"alpha-2" [[] ["alpha" 2]]
"1.alpha" [[1] ["alpha"]]
"1.alpha.2" [[1] ["alpha" 2]]
"1-alpha.2" [[1] ["alpha" 2]]
"1-alpha.2.2" [[1] ["alpha" 2 2]]
"1-alpha2.2" [[1] [["alpha" 2] 2]]
"1.alpha-1.0" [[1] ["alpha" [1 0]]]
"0.5.0-alpha.1" [[0 5 0] ["alpha" 1]]
"0.5.0-alpha.1" [[0 5 0] ["alpha" 1]]
"0.0.3-alpha.8+oryOS.15" [[0 0 3] ["alpha" [8 "+oryos"] 15]]
))
(deftest t-split-without-qualifiers
(testing "well-behaving."
(are [version] (= (version->seq version)
(version->seq version {:qualifiers {}}))
"1.0.0"
"1.0"
"1"
"1-a"
"1.0.1-SNAPSHOT"
"1.0.1-alpha2"
"11.2.0.3.0"
"1.0-1-0.2-RC"
"1-alpha.2"
"1-alpha.2.2"
"1-alpha2.2"
"0.5.0-alpha.1"
"0.5.0-alpha.1"
"0.0.3-alpha.8+oryOS.15"))
(testing "deviants."
(are [version v] (= v (version->seq version {:qualifiers {}}))
"alpha" [["alpha"]]
"alpha-2" [["alpha"] [2]]
"1a" [[1 "a"]]
"1.alpha" [[1 "alpha"]]
"1.alpha.2" [[1 "alpha" 2]]
"1.alpha-1.0" [[1 ["alpha" 1] 0]])))
(deftest t-split-with-large-number
(is (= (version->seq "0.0.1-20141002100138")
[[0 0 1] [20141002100138]]))
(is (= [[0 0 1] [20141002100138]]
(version->seq "0.0.1-20141002100138")))
#?(:clj
(let [v (str Long/MAX_VALUE "12345")]
(is (= (version->seq v) [[(bigint v)]])))))