diff --git a/project.clj b/project.clj index 25d639e39..01165c8f6 100644 --- a/project.clj +++ b/project.clj @@ -25,20 +25,20 @@ (def pdb-dev-deps (concat - '[[ring/ring-mock "0.4.0"] - [timofreiberg/bultitude "0.3.1"] + '[[ring/ring-mock] + [timofreiberg/bultitude] [org.openvoxproject/trapperkeeper :classifier "test"] [org.openvoxproject/kitchensink :classifier "test"] [org.openvoxproject/trapperkeeper-webserver-jetty10 :classifier "test"] - [org.flatland/ordered "1.15.12"] - [org.clojure/test.check "1.1.1"] - [com.gfredericks/test.chuck "0.2.14"] - [riddley "0.2.0"] - [clj-commons/clj-yaml "1.0.27"] + [org.flatland/ordered] + [org.clojure/test.check] + [com.gfredericks/test.chuck] + [riddley] + [clj-commons/clj-yaml] [org.yaml/snakeyaml] ;; Only needed for :integration tests - [org.openvoxproject/trapperkeeper-filesystem-watcher "1.3.0"]])) + [org.openvoxproject/trapperkeeper-filesystem-watcher]])) ;; Don't use lein :clean-targets so that we don't have to repeat ;; ourselves, given that we need to remove some protected files, and @@ -98,11 +98,8 @@ (def pdb-jvm-opts (when (< 8 (:feature pdb-jvm-ver) 17) ["--illegal-access=deny"])) -(def kitchensink-version "3.5.3") -(def trapperkeeper-version "4.3.0") -(def trapperkeeper-webserver-jetty10-version "1.1.0") -(def jackson-version "2.15.4") (def i18n-version "1.0.2") +(def jackson-version "2.20.1") (def slf4j-version "2.0.17") (defproject org.openvoxproject/puppetdb pdb-version :description "OpenVox-integrated catalog and fact storage" @@ -124,100 +121,138 @@ ;; defined under :dependencies ends up causing an error due to :pedantic? :abort, ;; because it is a dep of a dep with a different version, move it here. :managed-dependencies [[org.clojure/clojure "1.12.4"] + [org.clojure/core.async "1.5.648"] + [org.clojure/core.match "1.1.1"] + [org.clojure/core.memoize "1.0.257"] + [org.clojure/data.generators "1.1.1"] + [org.clojure/java.jdbc "0.7.12"] + [org.clojure/math.combinatorics "0.3.0"] + [org.clojure/test.check "1.1.1"] + [org.clojure/tools.logging "1.2.4"] + [org.clojure/tools.macro "0.2.2"] + [org.clojure/tools.namespace "0.2.11"] + [org.clojure/tools.nrepl "0.2.13"] [org.clojure/tools.reader "1.3.6"] - - [org.slf4j/slf4j-api ~slf4j-version] - [org.slf4j/jul-to-slf4j ~slf4j-version] - [org.slf4j/log4j-over-slf4j ~slf4j-version] - - [org.openvoxproject/kitchensink ~kitchensink-version] - [org.openvoxproject/kitchensink ~kitchensink-version :classifier "test"] - [org.openvoxproject/trapperkeeper ~trapperkeeper-version] - [org.openvoxproject/trapperkeeper ~trapperkeeper-version :classifier "test"] - [org.openvoxproject/trapperkeeper-webserver-jetty10 ~trapperkeeper-webserver-jetty10-version] - [org.openvoxproject/trapperkeeper-webserver-jetty10 ~trapperkeeper-webserver-jetty10-version :classifier "test"] - + [bidi "2.1.6"] + [cheshire "5.10.2"] + [clj-commons/clj-yaml "1.0.27"] + [clj-commons/fs "1.6.312"] + [clj-http "3.13.1"] + [clj-kondo "2025.10.23"] + [clj-stacktrace "0.2.8"] + [clj-time "0.11.0"] [com.fasterxml.jackson.core/jackson-core ~jackson-version] [com.fasterxml.jackson.core/jackson-databind ~jackson-version] - [com.fasterxml.jackson.core/jackson-annotations ~jackson-version] - [com.fasterxml.jackson.module/jackson-module-afterburner ~jackson-version] [com.fasterxml.jackson.dataformat/jackson-dataformat-cbor ~jackson-version] [com.fasterxml.jackson.dataformat/jackson-dataformat-smile ~jackson-version] - + [com.fasterxml.jackson.module/jackson-module-afterburner ~jackson-version] + ;; For some reason, this version is 2.20 without a .1. Update this back to + ;; ~jackson-version when they match again. + [com.fasterxml.jackson.core/jackson-annotations "2.20"] + [com.gfredericks/test.chuck "0.2.14"] + [com.github.seancorfield/honeysql "2.3.911"] + [com.github.seancorfield/next.jdbc "1.3.1086"] + [com.rpl/specter "1.1.6"] + [com.taoensso/nippy "3.1.1" :exclusions [org.tukaani/xz]] + [com.zaxxer/HikariCP "5.0.1"] + [commons-codec "1.20.0"] + [commons-io "2.21.0"] + [compojure "1.7.1"] + [digest "1.4.10"] + [fast-zip "0.4.0"] + [instaparse "1.5.0"] + [joda-time "2.12.5"] + [metrics-clojure "2.10.0"] + [murphy "0.5.3"] + [net.logstash.logback/logstash-logback-encoder "7.3"] + [org.apache.commons/commons-lang3 "3.20.0"] [org.bouncycastle/bcpkix-jdk18on "1.83"] [org.bouncycastle/bcpkix-fips "1.0.8"] [org.bouncycastle/bc-fips "1.0.2.6"] [org.bouncycastle/bctls-fips "1.0.19"] - - [ring/ring-core "1.8.2"] - [ring/ring-codec "1.3.0"] - [instaparse "1.5.0"] - [commons-codec "1.20.0"] - [clj-time "0.11.0"] + [org.flatland/ordered "1.15.12"] + [org.slf4j/slf4j-api ~slf4j-version] + [org.slf4j/jul-to-slf4j ~slf4j-version] + [org.slf4j/log4j-over-slf4j ~slf4j-version] + [org.openvoxproject/comidi "1.1.2"] + [org.openvoxproject/i18n ~i18n-version] + [org.openvoxproject/kitchensink "3.5.5"] + [org.openvoxproject/kitchensink "3.5.5" :classifier "test"] + [org.openvoxproject/ssl-utils "3.6.2"] + [org.openvoxproject/stockpile "1.0.1"] + [org.openvoxproject/structured-logging "1.0.1"] + [org.openvoxproject/trapperkeeper "4.3.2"] + [org.openvoxproject/trapperkeeper "4.3.2" :classifier "test"] + [org.openvoxproject/trapperkeeper-authorization "2.1.5"] + [org.openvoxproject/trapperkeeper-authorization "2.1.5" :exclusions [io.dropwizard.metrics/metrics-core]] + [org.openvoxproject/trapperkeeper-filesystem-watcher "1.5.1"] + [org.openvoxproject/trapperkeeper-metrics "2.1.6"] + [org.openvoxproject/trapperkeeper-metrics "2.1.6" :exclusions [io.dropwizard.metrics/metrics-core]] + [org.openvoxproject/trapperkeeper-status "1.3.1"] + [org.openvoxproject/trapperkeeper-status "1.3.1" :exclusions [io.dropwizard.metrics/metrics-core]] + [org.openvoxproject/trapperkeeper-webserver-jetty10 "1.1.3"] + [org.openvoxproject/trapperkeeper-webserver-jetty10 "1.1.3" :classifier "test"] + [org.postgresql/postgresql "42.7.8"] [org.yaml/snakeyaml "2.0"] - [joda-time "2.12.5"] - [cheshire "5.10.2"]] - - :dependencies [[org.postgresql/postgresql "42.7.8"] - [org.clojure/clojure] - [org.clojure/core.async "1.5.648"] - [org.clojure/core.match "1.1.1"] - [org.clojure/core.memoize "1.0.257"] - [org.clojure/data.generators "1.1.1"] - [org.clojure/java.jdbc "0.7.12"] - [org.clojure/tools.macro "0.2.2"] - [org.clojure/tools.namespace "0.2.11"] - [org.clojure/math.combinatorics "0.3.0"] - [org.clojure/tools.logging "1.2.4"] - [org.clojure/tools.nrepl "0.2.13"] - - ;; OpenVox specific - [org.openvoxproject/comidi "1.1.1"] - [org.openvoxproject/i18n ~i18n-version] - [org.openvoxproject/kitchensink] - [org.openvoxproject/ssl-utils "3.6.1"] - [org.openvoxproject/stockpile "1.0.0"] - [org.openvoxproject/structured-logging "1.0.0"] - [org.openvoxproject/trapperkeeper] - [org.openvoxproject/trapperkeeper-webserver-jetty10] - [org.openvoxproject/trapperkeeper-metrics "2.1.0"] - [org.openvoxproject/trapperkeeper-status "1.3.0"] - [org.openvoxproject/trapperkeeper-authorization "2.1.0"] - - ;; Various + [prismatic/schema "1.4.1"] + [riddley "0.2.0"] + [ring/ring-codec "1.3.0"] + [ring/ring-core "1.8.2"] + [ring/ring-mock "0.4.0"] + [robert/hooke "1.3.0"] + [timofreiberg/bultitude "0.3.1"] + [trptcolin/versioneer "0.2.0"]] + + :dependencies [[org.clojure/clojure] + [org.clojure/core.async] + [org.clojure/core.match] + [org.clojure/core.memoize] + [org.clojure/data.generators] + [org.clojure/java.jdbc] + [org.clojure/math.combinatorics] + [org.clojure/tools.logging] + [org.clojure/tools.macro] + [org.clojure/tools.namespace] + [org.clojure/tools.nrepl] + [bidi] [cheshire] - [clj-stacktrace "0.2.8"] + [clj-commons/fs] + [clj-http] + [clj-stacktrace] [clj-time] - [com.rpl/specter "1.1.6"] - [com.github.seancorfield/next.jdbc "1.3.1086"] - [com.taoensso/nippy "3.1.1" :exclusions [org.tukaani/xz]] - [digest "1.4.10"] - [fast-zip "0.4.0"] + [com.fasterxml.jackson.core/jackson-databind] + [com.github.seancorfield/honeysql] + [com.github.seancorfield/next.jdbc] + [com.rpl/specter] + [com.taoensso/nippy :exclusions [org.tukaani/xz]] + [com.zaxxer/HikariCP] + [commons-io] + [compojure] + [digest] + [fast-zip] [instaparse] - [murphy "0.5.3"] - [clj-commons/fs "1.6.312"] - [metrics-clojure "2.10.0"] - [robert/hooke "1.3.0"] - [trptcolin/versioneer "0.2.0"] + [metrics-clojure] + [murphy] ;; We do not currently use this dependency directly, but ;; we have documentation that shows how users can use it to ;; send their logs to logstash, so we include it in the jar. - [net.logstash.logback/logstash-logback-encoder "7.3"] - [com.fasterxml.jackson.core/jackson-databind] - - ;; Filesystem utilities - [org.apache.commons/commons-lang3 "3.20.0"] - - ;; Database connectivity - [com.zaxxer/HikariCP "5.0.1"] - [com.github.seancorfield/honeysql "2.3.911"] - - ;; WebAPI support libraries. - [bidi "2.1.6"] - [clj-http "3.13.1"] - [commons-io "2.21.0"] - [compojure "1.7.1"] - [ring/ring-core]] + [net.logstash.logback/logstash-logback-encoder] + [org.apache.commons/commons-lang3] + [org.openvoxproject/comidi] + [org.openvoxproject/i18n] + [org.openvoxproject/kitchensink] + [org.openvoxproject/ssl-utils] + [org.openvoxproject/stockpile] + [org.openvoxproject/structured-logging] + [org.openvoxproject/trapperkeeper] + [org.openvoxproject/trapperkeeper-authorization] + [org.openvoxproject/trapperkeeper-metrics] + [org.openvoxproject/trapperkeeper-status] + [org.openvoxproject/trapperkeeper-webserver-jetty10] + [org.postgresql/postgresql] + [ring/ring-core] + [robert/hooke] + [trptcolin/versioneer]] :jvm-opts ~pdb-jvm-opts @@ -294,7 +329,7 @@ :fips [:defaults :fips-settings] - :kondo {:dependencies [[clj-kondo "2025.10.23"]]} + :kondo {:dependencies [[clj-kondo]]} :ezbake {:dependencies ^:replace [;; NOTE: we need to explicitly pass in `nil` values ;; for the version numbers here in order to correctly ;; inherit the versions from our parent project. diff --git a/src/puppetlabs/puppetdb/pql.clj b/src/puppetlabs/puppetdb/pql.clj index 3ee8aca07..dc2b9e50d 100644 --- a/src/puppetlabs/puppetdb/pql.clj +++ b/src/puppetlabs/puppetdb/pql.clj @@ -40,7 +40,7 @@ "Takes an augmented failure object and prints the error message" [{:keys [line column text reason]}] (let [opening (tru "PQL parse error at line {0}, column {1}:\n\n{2}\n{3}\n\n" - line column text (failure/marker column)) + line column text (failure/marker text column)) full-reasons (distinct (map :expecting (filter :full reason))) partial-reasons (distinct (map :expecting diff --git a/test/puppetlabs/puppetdb/http/index_test.clj b/test/puppetlabs/puppetdb/http/index_test.clj index b4c9555f7..22ebd7d60 100644 --- a/test/puppetlabs/puppetdb/http/index_test.clj +++ b/test/puppetlabs/puppetdb/http/index_test.clj @@ -76,11 +76,13 @@ ;; Ensure we parse anything that looks like AST/JSON as JSON not PQL (let [{:keys [status body headers]} (query-response method endpoint "[\"from\",\"foobar\"")] - (is (= (str "Json parse error at line 1, column 17:\n\n" - "[\"from\",\"foobar\"\n" - " ^\n\n" - "Unexpected end-of-input: expected close marker for Array " - "(start marker at [Source: (StringReader); line: 1, column: 1])") body)) + (is (re-matches + #"(?s)Json parse error at line 1, column 17:\n\n + \[\"from\",\"foobar\"\n + \s+\^\n\n + Unexpected end-of-input: expected close marker for Array + \(start marker at \[Source: .*; line: 1, column: 1\]\)" + body)) (are-error-response-headers headers) (is (= HttpURLConnection/HTTP_BAD_REQUEST status)))