Added specmonstah and dependency to tested libraries (#1109)
* Enable specmonstah tests now that it's merged * Add dependency to tests and doc added libs * Use the older :sha for compat with older clojure cli
This commit is contained in:
parent
4ed7cd5aea
commit
4f8eb37704
5 changed files with 341 additions and 8 deletions
6
deps.edn
6
deps.edn
|
|
@ -95,11 +95,13 @@
|
|||
hato/hato {:mvn/version "0.8.2"}
|
||||
better-cond/better-cond {:mvn/version "2.1.1"}
|
||||
org.clojure/core.specs.alpha {:mvn/version "0.2.62"}
|
||||
reifyhealth/specmonstah {:mvn/version "2.0.0"}
|
||||
reifyhealth/specmonstah {:git/url "https://github.com/reifyhealth/specmonstah"
|
||||
:sha "a2b357009a3aa99a0c2d2361f3bbcd0b0e36505e"}
|
||||
exoscale/coax {:mvn/version "1.0.0-alpha14"}
|
||||
orchestra/orchestra {:mvn/version "2021.01.01-1"}
|
||||
expound/expound {:mvn/version "0.8.10"}
|
||||
integrant/integrant {:mvn/version "0.8.0"}}
|
||||
integrant/integrant {:mvn/version "0.8.0"}
|
||||
com.stuartsierra/dependency {:mvn/version "1.0.0"}}
|
||||
:classpath-overrides {org.clojure/clojure nil
|
||||
org.clojure/spec.alpha nil}}
|
||||
:clj-nvd
|
||||
|
|
|
|||
|
|
@ -54,6 +54,8 @@ The following libraries and projects are known to work with babashka.
|
|||
- [ruuter](#ruuter)
|
||||
- [clj-commons.digest](#clj-commonsdigest)
|
||||
- [contajners](#contajners)
|
||||
- [dependency](#dependency)
|
||||
- [specmonstah](#specmonstah)
|
||||
- [Pods](#pods)
|
||||
- [Projects](#projects-1)
|
||||
- [babashka-test-action](#babashka-test-action)
|
||||
|
|
@ -81,7 +83,7 @@ The following libraries and projects are known to work with babashka.
|
|||
- [bb htmx todo app](#bb-htmx-todo-app)
|
||||
|
||||
For more supported libraries, see [this test
|
||||
file](test-resources/lib_tests/babashka/run_all_libtests.clj ). Also keep an eye
|
||||
file](../test-resources/lib_tests/babashka/run_all_libtests.clj ). Also keep an eye
|
||||
on the [news](news.md) page for new projects, gists and other developments
|
||||
around babashka.
|
||||
|
||||
|
|
@ -106,7 +108,7 @@ instrumentation! Its readme also contains instructions on how to use
|
|||
|
||||
### [tools.bbuild](https://github.com/babashka/tools.bbuild)
|
||||
|
||||
A fork of `tools.build`.
|
||||
A fork of `tools.build`.
|
||||
|
||||
### [clj-http-lite](https://github.com/babashka/clj-http-lite)
|
||||
|
||||
|
|
@ -782,6 +784,14 @@ Example:
|
|||
(c/invoke images-docker {:op :ImageList})
|
||||
```
|
||||
|
||||
### [dependency](https://github.com/stuartsierra/dependency)
|
||||
|
||||
Represent dependency graphs as a directed acylic graph.
|
||||
|
||||
### [specmonstah](https://github.com/reifyhealth/specmonstah)
|
||||
|
||||
Write concise, maintainable test fixtures with clojure.spec.alpha.
|
||||
|
||||
## Pods
|
||||
|
||||
[Babashka pods](https://github.com/babashka/babashka.pods) are programs that can
|
||||
|
|
|
|||
|
|
@ -272,9 +272,9 @@
|
|||
|
||||
(test-namespaces 'orchestra.core-test 'orchestra.expound-test 'orchestra.many-fns 'orchestra.reload-test)
|
||||
|
||||
;; TODO, after @cldwalker finishes PR to specmonstah (test-namespaces 'reifyhealth.specmonstah.core-test)
|
||||
(test-namespaces 'reifyhealth.specmonstah.core-test 'reifyhealth.specmonstah.spec-gen-test)
|
||||
|
||||
(test-namespaces 'integrant.core-test)
|
||||
(test-namespaces 'com.stuartsierra.dependency-test)
|
||||
|
||||
;;;; final exit code
|
||||
|
||||
|
|
|
|||
323
test-resources/lib_tests/com/stuartsierra/dependency_test.clj
Normal file
323
test-resources/lib_tests/com/stuartsierra/dependency_test.clj
Normal file
|
|
@ -0,0 +1,323 @@
|
|||
;; Copyright (c) Stuart Sierra, 2012-2015. All rights reserved. The use and
|
||||
;; distribution terms for this software are covered by the Eclipse Public
|
||||
;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can be
|
||||
;; found in the file epl-v10.html at the root of this distribution. By using
|
||||
;; this software in any fashion, you are agreeing to be bound by the terms of
|
||||
;; this license. You must not remove this notice, or any other, from this
|
||||
;; software.
|
||||
|
||||
(ns com.stuartsierra.dependency-test
|
||||
(:require [clojure.test :refer [deftest is are]]
|
||||
[com.stuartsierra.dependency :refer :all]))
|
||||
|
||||
;; building a graph like:
|
||||
;;
|
||||
;; :a
|
||||
;; / |
|
||||
;; :b |
|
||||
;; \ |
|
||||
;; :c
|
||||
;; |
|
||||
;; :d
|
||||
;;
|
||||
(def g1 (-> (graph)
|
||||
(depend :b :a) ; "B depends on A"
|
||||
(depend :c :b) ; "C depends on B"
|
||||
(depend :c :a) ; "C depends on A"
|
||||
(depend :d :c))) ; "D depends on C"
|
||||
|
||||
;; 'one 'five
|
||||
;; | |
|
||||
;; 'two |
|
||||
;; / \ |
|
||||
;; / \ |
|
||||
;; / \ /
|
||||
;; 'three 'four
|
||||
;; | /
|
||||
;; 'six /
|
||||
;; | /
|
||||
;; | /
|
||||
;; | /
|
||||
;; 'seven
|
||||
;;
|
||||
(def g2 (-> (graph)
|
||||
(depend 'two 'one)
|
||||
(depend 'three 'two)
|
||||
(depend 'four 'two)
|
||||
(depend 'four 'five)
|
||||
(depend 'six 'three)
|
||||
(depend 'seven 'six)
|
||||
(depend 'seven 'four)))
|
||||
|
||||
;; :level0
|
||||
;; / | | \
|
||||
;; ----- | | -----
|
||||
;; / | | \
|
||||
;; :level1a :level1b :level1c :level1d
|
||||
;; \ | | /
|
||||
;; ----- | | -----
|
||||
;; \ | | /
|
||||
;; :level2
|
||||
;; / | | \
|
||||
;; ----- | | -----
|
||||
;; / | | \
|
||||
;; :level3a :level3b :level3c :level3d
|
||||
;; \ | | /
|
||||
;; ----- | | -----
|
||||
;; \ | | /
|
||||
;; :level4
|
||||
;;
|
||||
;; ... and so on in a repeating pattern like that, up to :level26
|
||||
|
||||
(def g3 (-> (graph)
|
||||
(depend :level1a :level0)
|
||||
(depend :level1b :level0)
|
||||
(depend :level1c :level0)
|
||||
(depend :level1d :level0)
|
||||
(depend :level2 :level1a)
|
||||
(depend :level2 :level1b)
|
||||
(depend :level2 :level1c)
|
||||
(depend :level2 :level1d)
|
||||
|
||||
(depend :level3a :level2)
|
||||
(depend :level3b :level2)
|
||||
(depend :level3c :level2)
|
||||
(depend :level3d :level2)
|
||||
(depend :level4 :level3a)
|
||||
(depend :level4 :level3b)
|
||||
(depend :level4 :level3c)
|
||||
(depend :level4 :level3d)
|
||||
|
||||
(depend :level5a :level4)
|
||||
(depend :level5b :level4)
|
||||
(depend :level5c :level4)
|
||||
(depend :level5d :level4)
|
||||
(depend :level6 :level5a)
|
||||
(depend :level6 :level5b)
|
||||
(depend :level6 :level5c)
|
||||
(depend :level6 :level5d)
|
||||
|
||||
(depend :level7a :level6)
|
||||
(depend :level7b :level6)
|
||||
(depend :level7c :level6)
|
||||
(depend :level7d :level6)
|
||||
(depend :level8 :level7a)
|
||||
(depend :level8 :level7b)
|
||||
(depend :level8 :level7c)
|
||||
(depend :level8 :level7d)
|
||||
|
||||
(depend :level9a :level8)
|
||||
(depend :level9b :level8)
|
||||
(depend :level9c :level8)
|
||||
(depend :level9d :level8)
|
||||
(depend :level10 :level9a)
|
||||
(depend :level10 :level9b)
|
||||
(depend :level10 :level9c)
|
||||
(depend :level10 :level9d)
|
||||
|
||||
(depend :level11a :level10)
|
||||
(depend :level11b :level10)
|
||||
(depend :level11c :level10)
|
||||
(depend :level11d :level10)
|
||||
(depend :level12 :level11a)
|
||||
(depend :level12 :level11b)
|
||||
(depend :level12 :level11c)
|
||||
(depend :level12 :level11d)
|
||||
|
||||
(depend :level13a :level12)
|
||||
(depend :level13b :level12)
|
||||
(depend :level13c :level12)
|
||||
(depend :level13d :level12)
|
||||
(depend :level14 :level13a)
|
||||
(depend :level14 :level13b)
|
||||
(depend :level14 :level13c)
|
||||
(depend :level14 :level13d)
|
||||
|
||||
(depend :level15a :level14)
|
||||
(depend :level15b :level14)
|
||||
(depend :level15c :level14)
|
||||
(depend :level15d :level14)
|
||||
(depend :level16 :level15a)
|
||||
(depend :level16 :level15b)
|
||||
(depend :level16 :level15c)
|
||||
(depend :level16 :level15d)
|
||||
|
||||
(depend :level17a :level16)
|
||||
(depend :level17b :level16)
|
||||
(depend :level17c :level16)
|
||||
(depend :level17d :level16)
|
||||
(depend :level18 :level17a)
|
||||
(depend :level18 :level17b)
|
||||
(depend :level18 :level17c)
|
||||
(depend :level18 :level17d)
|
||||
|
||||
(depend :level19a :level18)
|
||||
(depend :level19b :level18)
|
||||
(depend :level19c :level18)
|
||||
(depend :level19d :level18)
|
||||
(depend :level20 :level19a)
|
||||
(depend :level20 :level19b)
|
||||
(depend :level20 :level19c)
|
||||
(depend :level20 :level19d)
|
||||
|
||||
(depend :level21a :level20)
|
||||
(depend :level21b :level20)
|
||||
(depend :level21c :level20)
|
||||
(depend :level21d :level20)
|
||||
(depend :level22 :level21a)
|
||||
(depend :level22 :level21b)
|
||||
(depend :level22 :level21c)
|
||||
(depend :level22 :level21d)
|
||||
|
||||
(depend :level23a :level22)
|
||||
(depend :level23b :level22)
|
||||
(depend :level23c :level22)
|
||||
(depend :level23d :level22)
|
||||
(depend :level24 :level23a)
|
||||
(depend :level24 :level23b)
|
||||
(depend :level24 :level23c)
|
||||
(depend :level24 :level23d)
|
||||
|
||||
(depend :level25a :level24)
|
||||
(depend :level25b :level24)
|
||||
(depend :level25c :level24)
|
||||
(depend :level25d :level24)
|
||||
(depend :level26 :level25a)
|
||||
(depend :level26 :level25b)
|
||||
(depend :level26 :level25c)
|
||||
(depend :level26 :level25d)))
|
||||
|
||||
(deftest t-transitive-dependencies
|
||||
(is (= #{:a :c :b}
|
||||
(transitive-dependencies g1 :d)))
|
||||
(is (= '#{two four six one five three}
|
||||
(transitive-dependencies g2 'seven))))
|
||||
|
||||
(deftest t-transitive-dependencies-deep
|
||||
(is (= #{:level0
|
||||
:level1a :level1b :level1c :level1d
|
||||
:level2
|
||||
:level3a :level3b :level3c :level3d
|
||||
:level4
|
||||
:level5a :level5b :level5c :level5d
|
||||
:level6
|
||||
:level7a :level7b :level7c :level7d
|
||||
:level8
|
||||
:level9a :level9b :level9c :level9d
|
||||
:level10
|
||||
:level11a :level11b :level11c :level11d
|
||||
:level12
|
||||
:level13a :level13b :level13c :level13d
|
||||
:level14
|
||||
:level15a :level15b :level15c :level15d
|
||||
:level16
|
||||
:level17a :level17b :level17c :level17d
|
||||
:level18
|
||||
:level19a :level19b :level19c :level19d
|
||||
:level20
|
||||
:level21a :level21b :level21c :level21d
|
||||
:level22
|
||||
:level23a :level23b :level23c :level23d}
|
||||
(transitive-dependencies g3 :level24)))
|
||||
(is (= #{:level0
|
||||
:level1a :level1b :level1c :level1d
|
||||
:level2
|
||||
:level3a :level3b :level3c :level3d
|
||||
:level4
|
||||
:level5a :level5b :level5c :level5d
|
||||
:level6
|
||||
:level7a :level7b :level7c :level7d
|
||||
:level8
|
||||
:level9a :level9b :level9c :level9d
|
||||
:level10
|
||||
:level11a :level11b :level11c :level11d
|
||||
:level12
|
||||
:level13a :level13b :level13c :level13d
|
||||
:level14
|
||||
:level15a :level15b :level15c :level15d
|
||||
:level16
|
||||
:level17a :level17b :level17c :level17d
|
||||
:level18
|
||||
:level19a :level19b :level19c :level19d
|
||||
:level20
|
||||
:level21a :level21b :level21c :level21d
|
||||
:level22
|
||||
:level23a :level23b :level23c :level23d
|
||||
:level24
|
||||
:level25a :level25b :level25c :level25d}
|
||||
(transitive-dependencies g3 :level26))))
|
||||
|
||||
|
||||
(deftest t-transitive-dependents
|
||||
(is (= '#{four seven}
|
||||
(transitive-dependents g2 'five)))
|
||||
(is (= '#{four seven six three}
|
||||
(transitive-dependents g2 'two))))
|
||||
|
||||
(defn- before?
|
||||
"True if x comes before y in an ordered collection."
|
||||
[coll x y]
|
||||
(loop [[item & more] (seq coll)]
|
||||
(cond (nil? item) true ; end of the seq
|
||||
(= x item) true ; x comes first
|
||||
(= y item) false
|
||||
:else (recur more))))
|
||||
|
||||
(deftest t-before
|
||||
(is (true? (before? [:a :b :c :d] :a :b)))
|
||||
(is (true? (before? [:a :b :c :d] :b :c)))
|
||||
(is (false? (before? [:a :b :c :d] :d :c)))
|
||||
(is (false? (before? [:a :b :c :d] :c :a))))
|
||||
|
||||
(deftest t-topo-comparator-1
|
||||
(let [sorted (sort (topo-comparator g1) [:d :a :b :foo])]
|
||||
(are [x y] (before? sorted x y)
|
||||
:a :b
|
||||
:a :d
|
||||
:a :foo
|
||||
:b :d
|
||||
:b :foo
|
||||
:d :foo)))
|
||||
|
||||
(deftest t-topo-comparator-2
|
||||
(let [sorted (sort (topo-comparator g2) '[three seven nine eight five])]
|
||||
(are [x y] (before? sorted x y)
|
||||
'three 'seven
|
||||
'three 'eight
|
||||
'three 'nine
|
||||
'five 'eight
|
||||
'five 'nine
|
||||
'seven 'eight
|
||||
'seven 'nine)))
|
||||
|
||||
(deftest t-topo-sort
|
||||
(let [sorted (topo-sort g2)]
|
||||
(are [x y] (before? sorted x y)
|
||||
'one 'two
|
||||
'one 'three
|
||||
'one 'four
|
||||
'one 'six
|
||||
'one 'seven
|
||||
'two 'three
|
||||
'two 'four
|
||||
'two 'six
|
||||
'two 'seven
|
||||
'three 'six
|
||||
'three 'seven
|
||||
'four 'seven
|
||||
'five 'four
|
||||
'five 'seven
|
||||
'six 'seven)))
|
||||
|
||||
(deftest t-no-cycles
|
||||
(is (thrown? Exception
|
||||
(-> (graph)
|
||||
(depend :a :b)
|
||||
(depend :b :c)
|
||||
(depend :c :a)))))
|
||||
|
||||
(deftest t-no-self-cycles
|
||||
(is (thrown? Exception
|
||||
(-> (graph)
|
||||
(depend :a :b)
|
||||
(depend :a :a)))))
|
||||
|
|
@ -6,9 +6,7 @@
|
|||
[clojure.test.check.generators :as gen :include-macros true]
|
||||
[reifyhealth.specmonstah.test-data :as td]
|
||||
[reifyhealth.specmonstah.core :as sm]
|
||||
[reifyhealth.specmonstah.spec-gen :as sg]
|
||||
[loom.graph :as lg]
|
||||
[loom.alg :as la]
|
||||
[loom.attr :as lat]))
|
||||
|
||||
(use-fixtures :each td/test-fixture)
|
||||
|
|
|
|||
Loading…
Reference in a new issue