babashka/test/babashka/xml_test.clj
2023-11-02 13:30:38 +01:00

36 lines
1.3 KiB
Clojure

(ns babashka.xml-test
(:require [babashka.test-utils :as test-utils]
[clojure.string :as str]
[clojure.test :refer [deftest is]]))
(def simple-xml-str "<a><b>data</b></a>")
(deftest xml-edn-read-test
(let [parsed-edn (test-utils/bb nil (str "(xml/parse-str \"" simple-xml-str "\")"))
emitted-xml (test-utils/bb parsed-edn "(xml/emit-str *input*)")]
(is (str/includes? emitted-xml simple-xml-str))))
(def round-trip-prog
(str "(xml/emit-str (read-string (pr-str (xml/parse-str \"" simple-xml-str "\"))))"))
(deftest xml-data-readers-test
(is (str/includes? (test-utils/bb nil round-trip-prog) simple-xml-str)))
(deftest virtual-threads-bug-test
(is (str/starts-with? (test-utils/bb nil "(require '[clojure.core.async]
'[clojure.data.xml])
(def go-blocks (atom []))
(dotimes [_ 100]
(swap! go-blocks conj (clojure.core.async/go (clojure.data.xml/parse
(java.io.ByteArrayInputStream.
(.getBytes \"<a></a>\" \"UTF-8\"))
:namespace-aware false
:skip-whitespace true))))
(doseq [block @go-blocks]
(clojure.core.async/<!! block))
true")
"true")))