Skip to content

Commit 6fd362c

Browse files
authored
Merge pull request #36 from borkdude/babashka
Babashka compatibility
2 parents 909c9ea + 9624fed commit 6fd362c

File tree

7 files changed

+117
-42
lines changed

7 files changed

+117
-42
lines changed

.github/workflows/bb.yml

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: bb
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
7+
clojure:
8+
9+
strategy:
10+
matrix:
11+
os: [ubuntu-latest, macOS-latest, windows-latest]
12+
13+
runs-on: ${{ matrix.os }}
14+
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v3
18+
19+
# It is important to install java before installing clojure tools which needs java
20+
# exclusions: babashka, clj-kondo and cljstyle
21+
- name: Prepare java
22+
uses: actions/setup-java@v3
23+
with:
24+
distribution: 'zulu'
25+
java-version: '11'
26+
27+
- name: Install clojure tools
28+
uses: DeLaGuardo/[email protected]
29+
with:
30+
# Install just one or all simultaneously
31+
# The value must indicate a particular version of the tool, or use 'latest'
32+
# to always provision the latest version
33+
bb: latest
34+
35+
# Optional step:
36+
- name: Cache clojure dependencies
37+
uses: actions/cache@v3
38+
with:
39+
path: |
40+
~/.m2/repository
41+
~/.gitlibs
42+
~/.deps.clj
43+
# List all files containing dependencies:
44+
key: cljdeps-${{ hashFiles('deps.edn') }}
45+
# key: cljdeps-${{ hashFiles('deps.edn', 'bb.edn') }}
46+
# key: cljdeps-${{ hashFiles('project.clj') }}
47+
# key: cljdeps-${{ hashFiles('build.boot') }}
48+
restore-keys: cljdeps-
49+
50+
- name: Execute bb tests
51+
run: |
52+
bb test:bb

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ package.json
1616
yarn.lock
1717
.shadow-cljs
1818
resources/public/ui
19-
test
2019
resources/public/
2120
.store
2221
package-lock.json
22+
.cache

CHANGELOG.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
## Fixed
66

7+
- Babashka compatibility
8+
79
## Changed
810

911
# 2.5.151 (2022-11-21 / 92232a1)
@@ -132,4 +134,4 @@
132134

133135
## Added
134136

135-
- Extracted from Kaocha, and added a top-level namespace.
137+
- Extracted from Kaocha, and added a top-level namespace.

bb.edn

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
{:deps
22
{lambdaisland/open-source {:git/url "https://github.com/lambdaisland/open-source"
3-
:git/sha "f2133b2a88bff3898e027c9b50516161c237792e"}}}
3+
:git/sha "f2133b2a88bff3898e027c9b50516161c237792e"}}
4+
:tasks
5+
{test:bb {:doc "Run babashka tests with custom runner"
6+
:extra-paths ["src" "test"]
7+
:extra-deps {current/project {:local/root "."}
8+
org.clojure/test.check {:mvn/version "1.1.1"}}
9+
:task (exec 'lambdaisland.deep-diff2.runner/run-tests)}}}

deps.edn

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{:paths ["resources" "src"]
22
:deps {fipp/fipp {:mvn/version "0.6.26"}
33
org.clojure/core.rrb-vector {:mvn/version "0.1.2"}
4-
lambdaisland/clj-diff {:mvn/version "1.3.67"}
4+
lambdaisland/clj-diff {:mvn/version "1.4.78"}
55
mvxcvi/arrangement {:mvn/version "2.1.0"}}
66

77
:aliases {:cljs

src/lambdaisland/deep_diff2/puget/printer.cljc

+39-38
Original file line numberDiff line numberDiff line change
@@ -296,44 +296,45 @@
296296
"Map of print handlers for Java/JavaScript types. This supports syntax for regular
297297
expressions, dates, UUIDs, and futures."
298298
#?(:clj
299-
{java.lang.Class
300-
(fn class-handler
301-
[printer value]
302-
(format-unknown printer value "Class" (get-type-name value)))
303-
304-
java.util.concurrent.Future
305-
(fn future-handler
306-
[printer value]
307-
(let [doc (if (future-done? promise)
308-
(format-doc printer @value)
309-
(color/document printer :nil "pending"))]
310-
(format-unknown printer value "Future" doc)))
311-
312-
java.util.UUID
313-
(tagged-handler 'uuid str)
314-
315-
java.util.Date
316-
(tagged-handler
317-
'inst
318-
#(-> (java.text.SimpleDateFormat. inst-pattern)
319-
(doto (.setTimeZone (java.util.TimeZone/getTimeZone "GMT")))
320-
(.format ^java.util.Date %)))
321-
322-
java.util.GregorianCalendar
323-
(tagged-handler
324-
'inst
325-
#(let [formatted (format "%1$tFT%1$tT.%1$tL%1$tz" %)
326-
offset-minutes (- (.length formatted) 2)]
327-
(str (subs formatted 0 offset-minutes)
328-
":"
329-
(subs formatted offset-minutes))))
330-
331-
java.sql.Timestamp
332-
(tagged-handler
333-
'inst
334-
(fn [ts]
335-
(str (.format ^SimpleDateFormat (utc-timestamp-format) ts)
336-
(format ".%09d-00:00" (.getNanos ^Timestamp ts)))))}
299+
(->
300+
{java.lang.Class
301+
(fn class-handler
302+
[printer value]
303+
(format-unknown printer value "Class" (get-type-name value)))
304+
305+
java.util.concurrent.Future
306+
(fn future-handler
307+
[printer value]
308+
(let [doc (if (future-done? promise)
309+
(format-doc printer @value)
310+
(color/document printer :nil "pending"))]
311+
(format-unknown printer value "Future" doc)))
312+
313+
java.util.UUID
314+
(tagged-handler 'uuid str)
315+
316+
java.util.Date
317+
(tagged-handler
318+
'inst
319+
#(-> (java.text.SimpleDateFormat. inst-pattern)
320+
(doto (.setTimeZone (java.util.TimeZone/getTimeZone "GMT")))
321+
(.format ^java.util.Date %)))
322+
323+
java.sql.Timestamp
324+
(tagged-handler
325+
'inst
326+
(fn [ts]
327+
(str (.format ^SimpleDateFormat (utc-timestamp-format) ts)
328+
(format ".%09d-00:00" (.getNanos ^Timestamp ts)))))}
329+
#?(:bb identity
330+
:clj (assoc java.util.GregorianCalendar
331+
(tagged-handler
332+
'inst
333+
#(let [formatted (format "%1$tFT%1$tT.%1$tL%1$tz" %)
334+
offset-minutes (- (.length formatted) 2)]
335+
(str (subs formatted 0 offset-minutes)
336+
":"
337+
(subs formatted offset-minutes)))))))
337338

338339
:cljs
339340
{inst?
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
(ns lambdaisland.deep-diff2.runner
2+
"Test runner for babashka, until kaocha works with bb :)"
3+
(:require [clojure.test :as t]))
4+
5+
(defn run-tests [_]
6+
(let [test-nss '[lambdaisland.deep-diff2.diff-test
7+
#_lambdaisland.deep-diff2.printer-test
8+
lambdaisland.deep-diff2.puget-test]]
9+
(doseq [test-ns test-nss]
10+
(require test-ns))
11+
(let [{:keys [fail error]}
12+
(apply t/run-tests test-nss)]
13+
(when (and fail error (pos? (+ fail error)))
14+
(throw (ex-info "Tests failed" {:babashka/exit 1}))))))

0 commit comments

Comments
 (0)