diff --git a/.clj-kondo/imports/taoensso/encore/config.edn b/.clj-kondo/imports/taoensso/encore/config.edn index 62a26ca0..487e2331 100644 --- a/.clj-kondo/imports/taoensso/encore/config.edn +++ b/.clj-kondo/imports/taoensso/encore/config.edn @@ -1,5 +1,6 @@ {:hooks {:analyze-call - {taoensso.encore/defalias taoensso.encore/defalias - taoensso.encore/defn-cached taoensso.encore/defn-cached - taoensso.encore/defonce taoensso.encore/defonce}}} + {taoensso.encore/defalias taoensso.encore-hooks/defalias + taoensso.encore/defaliases taoensso.encore-hooks/defaliases + taoensso.encore/defn-cached taoensso.encore-hooks/defn-cached + taoensso.encore/defonce taoensso.encore-hooks/defonce}}} diff --git a/.clj-kondo/imports/taoensso/encore/taoensso/encore_hooks.clj b/.clj-kondo/imports/taoensso/encore/taoensso/encore_hooks.clj new file mode 100644 index 00000000..a574107f --- /dev/null +++ b/.clj-kondo/imports/taoensso/encore/taoensso/encore_hooks.clj @@ -0,0 +1,82 @@ +(ns taoensso.encore-hooks + "I don't personally use clj-kondo, so these hooks are + kindly authored and maintained by contributors. + PRs very welcome! - Peter Taoussanis" + (:refer-clojure :exclude [defonce]) + (:require + [clj-kondo.hooks-api :as hooks])) + +(defn defalias + [{:keys [node]}] + (let [[alias src-raw _attrs body] (rest (:children node)) + src (or src-raw alias) + sym (if src-raw (hooks/sexpr alias) (symbol (name (hooks/sexpr src))))] + {:node + (with-meta + (hooks/list-node + [(hooks/token-node 'def) + (hooks/token-node sym) + (if body + (hooks/list-node + ;; use :body in the def to avoid unused import/private var warnings + [(hooks/token-node 'or) body src]) + src)]) + (meta src))})) + +(defn defaliases + [{:keys [node]}] + (let [alias-nodes (rest (:children node))] + {:node + (hooks/list-node + (into + [(hooks/token-node 'do)] + (map + (fn alias->defalias [alias-node] + (cond + (hooks/token-node? alias-node) + (hooks/list-node + [(hooks/token-node 'taoensso.encore/defalias) + alias-node]) + + (hooks/map-node? alias-node) + (let [{:keys [src alias attrs body]} (hooks/sexpr alias-node) + ;; workaround as can't seem to (get) using a token-node + ;; and there's no update-keys (yet) in sci apparently + [& {:as node-as-map}] (:children alias-node) + {:keys [attrs body]} (zipmap (map hooks/sexpr (keys node-as-map)) + (vals node-as-map))] + (hooks/list-node + [(hooks/token-node 'taoensso.encore/defalias) + (or alias src) (hooks/token-node src) attrs body]))))) + alias-nodes))})) + +(defn defn-cached + [{:keys [node]}] + (let [[sym _opts binding-vec & body] (rest (:children node))] + {:node + (hooks/list-node + (list + (hooks/token-node 'def) + sym + (hooks/list-node + (list* + (hooks/token-node 'fn) + binding-vec + body))))})) + +(defn defonce + [{:keys [node]}] + ;; args = [sym doc-string? attr-map? init-expr] + (let [[sym & args] (rest (:children node)) + [doc-string args] (if (and (hooks/string-node? (first args)) (next args)) [(hooks/sexpr (first args)) (next args)] [nil args]) + [attr-map init-expr] (if (and (hooks/map-node? (first args)) (next args)) [(hooks/sexpr (first args)) (fnext args)] [nil (first args)]) + + attr-map (if doc-string (assoc attr-map :doc doc-string) attr-map) + sym+meta (if attr-map (with-meta sym attr-map) sym) + rewritten + (hooks/list-node + [(hooks/token-node 'clojure.core/defonce) + sym+meta + init-expr])] + + {:node rewritten})) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d7096276..12fd48cb 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup uses: ./.github/workflows/shared-setup diff --git a/.github/workflows/shared-setup/action.yml b/.github/workflows/shared-setup/action.yml index f45355bb..5f47302f 100644 --- a/.github/workflows/shared-setup/action.yml +++ b/.github/workflows/shared-setup/action.yml @@ -24,7 +24,7 @@ runs: restore-keys: cljdeps- - name: Setup Java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: ${{ inputs.jdk }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3aaf79f5..4b34ee71 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup uses: ./.github/workflows/shared-setup @@ -36,7 +36,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup uses: ./.github/workflows/shared-setup @@ -58,7 +58,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup uses: ./.github/workflows/shared-setup diff --git a/deps.edn b/deps.edn index 79483879..92e2769d 100644 --- a/deps.edn +++ b/deps.edn @@ -9,16 +9,16 @@ :1.9 {:override-deps {org.clojure/clojure {:mvn/version "1.9.0"}}} :1.10 {:override-deps {org.clojure/clojure {:mvn/version "1.10.3"}}} :1.11 {:override-deps {org.clojure/clojure {:mvn/version "1.11.4"}}} - :1.12 {:override-deps {org.clojure/clojure {:mvn/version "1.12.1"}}} + :1.12 {:override-deps {org.clojure/clojure {:mvn/version "1.12.2"}}} :build {:extra-paths ["build"] - :deps {io.github.clojure/tools.build {:mvn/version "0.10.9"} + :deps {io.github.clojure/tools.build {:mvn/version "0.10.10"} slipset/deps-deploy {:mvn/version "0.2.2"}} :ns-default build} :http-server ;; used for to support integration tests {:extra-paths ["test" "test-resources"] - :override-deps {org.clojure/clojure {:mvn/version "1.12.1"}} - :extra-deps {babashka/fs {:mvn/version "0.5.25"} + :override-deps {org.clojure/clojure {:mvn/version "1.12.2"}} + :extra-deps {babashka/fs {:mvn/version "0.5.26"} ring/ring-jetty-adapter {:mvn/version "1.10.0"} ;; stick with version that works on jdk8 ch.qos.logback/logback-classic {:mvn/version "1.3.15" :exclusions [org.slf4j/slf4j-api]} @@ -32,11 +32,11 @@ {:git/tag "v0.5.1" :git/sha "dfb30dd"}} :main-opts ["-m" "cognitect.test-runner"]} ;; for consistent linting we use a specific version of clj-kondo through the jvm - :clj-kondo {:extra-deps {clj-kondo/clj-kondo {:mvn/version "2025.06.05"}} - :override-deps {org.clojure/clojure {:mvn/version "1.12.1"}} + :clj-kondo {:extra-deps {clj-kondo/clj-kondo {:mvn/version "2025.07.28"}} + :override-deps {org.clojure/clojure {:mvn/version "1.12.2"}} :main-opts ["-m" "clj-kondo.main"]} :outdated {:extra-deps {com.github.liquidz/antq {:mvn/version "2.11.1276"} - org.clojure/clojure {:mvn/version "1.12.1"} + org.clojure/clojure {:mvn/version "1.12.2"} org.slf4j/slf4j-simple {:mvn/version "2.0.17"} ;; to rid ourselves of logger warnings } :main-opts ["-m" "antq.core" diff --git a/test/clj_http/lite/client_sanity_test.clj b/test/clj_http/lite/client_sanity_test.clj index 91dc2785..417bcdaa 100644 --- a/test/clj_http/lite/client_sanity_test.clj +++ b/test/clj_http/lite/client_sanity_test.clj @@ -26,7 +26,7 @@ :throw-exceptions false}))))) (deftest exception-test - (try (client/get "https://site.com/broken") + (try (client/get "https://httpbin.org/status/404") (is false "should not reach here") (catch Exception e (is (:headers (ex-data e))))))