diff --git a/doc/libraries.csv b/doc/libraries.csv new file mode 100644 index 00000000..18991fc7 --- /dev/null +++ b/doc/libraries.csv @@ -0,0 +1,58 @@ +maven-name,git-url +aero/aero,http://github.com/juxt/aero +amperity/vault-clj,https://github.com/amperity/vault-clj +babashka/babashka.curl,https://github.com/babashka/babashka.curl +better-cond/better-cond,https://github.com/Engelberg/better-cond +borkdude/deps,https://github.com/borkdude/deps.clj +camel-snake-kebab/camel-snake-kebab,https://github.com/clj-commons/camel-snake-kebab +circleci/bond,https://github.com/circleci/bond +clj-commons/clj-yaml,https://github.com/clj-commons/clj-yaml +clj-commons/multigrep,https://github.com/clj-commons/multigrep +clojure-csv/clojure-csv,https://github.com/davidsantiago/clojure-csv +com.github.seancorfield/honeysql,https://github.com/seancorfield/honeysql +com.grammarly/omniconf,https://github.com/grammarly/omniconf +com.stuartsierra/component,https://github.com/stuartsierra/component +com.stuartsierra/dependency,https://github.com/stuartsierra/dependency +comb/comb,https://github.com/weavejester/comb +cprop/cprop,https://github.com/tolitius/cprop +crispin/crispin,https://github.com/dunaj-project/crispin +doric/doric,https://github.com/joegallo/doric +environ/environ,https://github.com/weavejester/environ +exoscale/coax,https://github.com/exoscale/coax +failjure/failjure,https://github.com/adambard/failjure +gaka/gaka,https://github.com/cdaddr/gaka +hato/hato,https://github.com/gnarroway/hato +henryw374/cljc.java-time,https://github.com/henryw374/cljc.java-time +hiccup/hiccup,http://github.com/weavejester/hiccup +honeysql/honeysql,https://github.com/seancorfield/honeysql +http-kit/http-kit,https://github.com/http-kit/http-kit +io.helins/binf,https://github.com/helins/binf.cljc +io.replikativ/hasch,https://github.com/replikativ/hasch +java-http-clj/java-http-clj,http://www.github.com/schmee/java-http-clj +lambdaisland/regal,https://github.com/lambdaisland/regal +listora/again,https://github.com/liwp/again +markdown-clj/markdown-clj,https://github.com/yogthos/markdown-clj +medley/medley,https://github.com/weavejester/medley +minimallist/minimallist,https://github.com/green-coder/minimallist +mvxcvi/arrangement,https://github.com/greglook/clj-arrangement +orchestra/orchestra,https://github.com/jeaye/orchestra +org.babashka/spec.alpha,https://github.com/babashka/spec.alpha +org.clj-commons/clj-http-lite,https://github.com/clj-commons/clj-http-lite +org.clj-commons/digest,https://github.com/clj-commons/clj-digest +org.clojars.askonomm/ruuter,https://github.com/askonomm/ruuter +org.clojure/core.match,https://github.com/clojure/core.match +org.clojure/data.csv,https://github.com/clojure/data.csv +org.clojure/data.generators,https://github.com/clojure/data.generators +org.clojure/data.json,https://github.com/clojure/data.json +org.clojure/data.zip,https://github.com/clojure/data.zip +org.clojure/math.combinatorics,https://github.com/clojure/math.combinatorics +org.clojure/test.check,https://github.com/clojure/test.check +org.clojure/tools.gitlibs,https://github.com/clojure/tools.gitlibs +org.clojure/tools.namespace,https://github.com/babashka/tools.namespace +reifyhealth/specmonstah,https://github.com/reifyhealth/specmonstah +rewrite-clj/rewrite-clj,https://github.com/clj-commons/rewrite-clj +rm-hull/jasentaa,https://github.com/rm-hull/jasentaa +selmer/selmer,https://github.com/yogthos/Selmer +slingshot/slingshot,https://github.com/scgilardi/slingshot +table/table,https://github.com/cldwalker/table +version-clj/version-clj,https://github.com/xsc/version-clj diff --git a/script/add-libtest.clj b/script/add-libtest.clj index 2b3a1f25..1d71e780 100755 --- a/script/add-libtest.clj +++ b/script/add-libtest.clj @@ -13,10 +13,12 @@ [clojure.edn :as edn])) (deps/add-deps '{:deps {org.clojure/tools.gitlibs {:mvn/version "2.4.172"} - borkdude/rewrite-edn {:mvn/version "0.1.0"}}}) + borkdude/rewrite-edn {:mvn/version "0.1.0"} + org.clojure/data.csv {:mvn/version "1.0.0"}}}) (require '[clojure.tools.gitlibs :as gl]) (require '[borkdude.rewrite-edn :as r]) +(require '[clojure.data.csv :as csv]) ;; CLI Utils ;; ========= @@ -153,6 +155,16 @@ :lib-coordinate (-> deps-map vals first) :git-url (:git-url options)}))) +(defn- write-lib-to-csv + "Updates libraries.csv with latest bb-tested-libs.edn" + [] + (let [libs (-> "test-resources/lib_tests/bb-tested-libs.edn" slurp edn/read-string) + rows (sort-by first + (map (fn [[name {:keys [git-url]}]] + [name git-url]) libs))] + (with-open [w (io/writer "doc/libraries.csv")] + (csv/write-csv w (into [["maven-name" "git-url"]] rows))))) + (defn- add-libtest* [args options] (let [[artifact-or-deps-string] args @@ -164,6 +176,7 @@ dirs (when-not (:manually-added options) (copy-tests git-url lib-name options)) namespaces (add-lib-to-tested-libs lib-name git-url dirs options)] (println "Added lib" lib-name "which tests the following namespaces:" namespaces) + (write-lib-to-csv) (when (:test options) (apply shell "script/lib_tests/run_all_libtests" namespaces)))) diff --git a/test-resources/lib_tests/babashka/run_all_libtests.clj b/test-resources/lib_tests/babashka/run_all_libtests.clj index be38b232..58cc0ba8 100644 --- a/test-resources/lib_tests/babashka/run_all_libtests.clj +++ b/test-resources/lib_tests/babashka/run_all_libtests.clj @@ -25,46 +25,13 @@ (str/lower-case) (str/includes? "win"))) -;;;; cprop +;; Standard test-runner for libtests +(let [lib-tests (edn/read-string (slurp (io/resource "bb-tested-libs.edn")))] + (doseq [{tns :test-namespaces skip-windows :skip-windows} (vals lib-tests)] + (when-not (and skip-windows windows?) + (apply test-namespaces tns)))) -;; TODO: port to test-namespaces - -(require '[cprop.core]) -(require '[cprop.source :refer [from-env]]) -(println (:cprop-env (from-env))) - -;;;; clojure.data.zip - -;; TODO: port to test-namespaces - -(require '[clojure.data.xml :as xml]) -(require '[clojure.zip :as zip]) -(require '[clojure.data.zip.xml :refer [attr attr= xml1->]]) - -(def data (str "" - " " - " " - "")) - -;; TODO: convert to test -(let [xml (zip/xml-zip (xml/parse (java.io.StringReader. data)))] - ;(prn :xml xml) - (prn :alice-is-a (xml1-> xml :character [(attr= :name "alice")] (attr :type))) - (prn :animal-is-called (xml1-> xml :character [(attr= :type "animal")] (attr :name)))) - -;;;; deps.clj - -;; TODO: port to test-namespaces - -(require '[babashka.curl :as curl]) -(spit "deps_test.clj" - (:body (curl/get "https://raw.githubusercontent.com/borkdude/deps.clj/master/deps.clj" - (if windows? {:compressed false} {})))) - -(binding [*command-line-args* ["-Sdescribe"]] - (load-file "deps_test.clj")) - -(.delete (io/file "deps_test.clj")) +;; Non-standard tests - These are tests with unusual setup around test-namespaces ;;;; doric @@ -85,11 +52,6 @@ (require '[babashka.process] :reload) (test-namespaces 'babashka.process-test)) -(let [lib-tests (edn/read-string (slurp (io/resource "bb-tested-libs.edn")))] - (doseq [{tns :test-namespaces skip-windows :skip-windows} (vals lib-tests)] - (when-not (and skip-windows windows?) - (apply test-namespaces tns)))) - ;;;; final exit code (let [{:keys [:test :fail :error] :as m} @status] diff --git a/test-resources/lib_tests/bb-tested-libs.edn b/test-resources/lib_tests/bb-tested-libs.edn index 586bfe72..9717f243 100644 --- a/test-resources/lib_tests/bb-tested-libs.edn +++ b/test-resources/lib_tests/bb-tested-libs.edn @@ -67,4 +67,7 @@ amperity/vault-clj {:git-url "https://github.com/amperity/vault-clj", :test-namespaces [vault.lease-test vault.client.http-test], :manually-added true} orchestra/orchestra {:git-url "https://github.com/jeaye/orchestra", :test-namespaces (orchestra.make-fns orchestra.many-fns orchestra.expound-test orchestra.core-test orchestra.reload-test), :test-directories ("test/cljc" "test/clj"), :git-sha "81e5181f7b42e5e2763a2b37db17954f3be0314e"} ;; BB-TEST-PATCH: Manually removed tasks.clj - org.clj-commons/clj-http-lite {:git-url "https://github.com/clj-commons/clj-http-lite", :test-namespaces (clj-http.lite.test-runner clj-http.lite.client-test), :test-directories ("bb"), :git-sha "6b53000df55ac05c4ff8e5047a5323fc08a52e8b"}} + org.clj-commons/clj-http-lite {:git-url "https://github.com/clj-commons/clj-http-lite", :test-namespaces (clj-http.lite.test-runner clj-http.lite.client-test), :test-directories ("bb"), :git-sha "6b53000df55ac05c4ff8e5047a5323fc08a52e8b"} + cprop/cprop {:git-url "https://github.com/tolitius/cprop", :test-namespaces [cprop.smoke-test], :manually-added true} + org.clojure/data.zip {:git-url "https://github.com/clojure/data.zip", :test-namespaces [clojure.data.zip-test], :manually-added true} + borkdude/deps {:git-url "https://github.com/borkdude/deps.clj", :test-namespaces [borkdude.deps.smoke-test], :manually-added true}} diff --git a/test-resources/lib_tests/borkdude/deps/smoke_test.clj b/test-resources/lib_tests/borkdude/deps/smoke_test.clj new file mode 100644 index 00000000..50781333 --- /dev/null +++ b/test-resources/lib_tests/borkdude/deps/smoke_test.clj @@ -0,0 +1,20 @@ +(ns borkdude.deps.smoke-test + (:require [clojure.test :as t :refer [deftest is]] + [clojure.java.io :as io] + [clojure.string :as str] + [babashka.curl :as curl])) + + +(def windows? (-> (System/getProperty "os.name") + (str/lower-case) + (str/includes? "win"))) + +(deftest basic-test + (spit "deps_test.clj" + (:body (curl/get "https://raw.githubusercontent.com/borkdude/deps.clj/master/deps.clj" + (if windows? {:compressed false} {})))) + + (binding [*command-line-args* ["-Sdescribe"]] + (load-file "deps_test.clj")) + + (.delete (io/file "deps_test.clj"))) diff --git a/test-resources/lib_tests/clojure/data/zip_test.clj b/test-resources/lib_tests/clojure/data/zip_test.clj new file mode 100644 index 00000000..7b494678 --- /dev/null +++ b/test-resources/lib_tests/clojure/data/zip_test.clj @@ -0,0 +1,17 @@ +(ns clojure.data.zip-test + (:require [clojure.test :as t :refer [deftest is]] + [clojure.data.xml :as xml] + [clojure.zip :as zip] + [clojure.data.zip.xml :refer [attr attr= xml1->]])) + +(def data (str "" + " " + " " + "")) + +(deftest xml1-test + (let [xml (zip/xml-zip (xml/parse (java.io.StringReader. data)))] + (is (= "person" + (xml1-> xml :character [(attr= :name "alice")] (attr :type)))) + (is (= "march hare" + (xml1-> xml :character [(attr= :type "animal")] (attr :name)))))) diff --git a/test-resources/lib_tests/cprop/smoke_test.clj b/test-resources/lib_tests/cprop/smoke_test.clj new file mode 100644 index 00000000..9f97d66a --- /dev/null +++ b/test-resources/lib_tests/cprop/smoke_test.clj @@ -0,0 +1,7 @@ +(ns cprop.smoke-test + (:require [clojure.test :as t :refer [deftest is]] + [cprop.core] + [cprop.source :refer [from-env]])) + +(deftest from-env-test + (println (:cprop-env (from-env))))