Update CI tests and add shadow-cljs to run cljs tests

This commit is contained in:
Juho Teperi 2025-01-22 11:50:12 +02:00
parent ada41ec7dd
commit ea88b06206
8 changed files with 1988 additions and 2663 deletions

View file

@ -16,25 +16,27 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Cache dependencies
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-clj-${{ hashFiles('**/project.clj') }}
restore-keys: |
${{ runner.os }}-clj-
- name: Setup Java ${{ matrix.jdk }}
uses: actions/setup-java@v1.4.3
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.jdk }}
- name: Setup Clojure
uses: DeLaGuardo/setup-clojure@3.1
uses: DeLaGuardo/setup-clojure@13.1
with:
lein: 2.9.5
- name: Install dependencies
run: |
npm ci
- name: Run tests
run: ./scripts/test.sh clj
@ -42,33 +44,40 @@ jobs:
name: ClojureScript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Cache dependencies
uses: actions/cache@v2
with:
path: |
~/.m2/repository
**/node_modules
key: ${{ runner.os }}-cljs-${{ hashFiles('**/project.clj', '**/package-lock.json') }}
key: ${{ runner.os }}-cljs-${{ hashFiles('**/project.clj') }}
restore-keys: |
${{ runner.os }}-cljs-
- name: Setup Java 11
uses: actions/setup-java@v1.4.3
- name: Setup Java
uses: actions/setup-java@v4
with:
java-version: 11
distribution: temurin
java-version: 21
- name: Setup Clojure
uses: DeLaGuardo/setup-clojure@3.1
uses: DeLaGuardo/setup-clojure@13.1
with:
lein: 2.9.5
- name: Setup Node.js
uses: actions/setup-node@v2.1.2
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22
cache: npm
- name: Install dependencies
run: |
npm ci
- name: Install modules
run: ./scripts/lein-modules install
run: npm ci
# - name: Install modules
# run: ./scripts/lein-modules install
- name: Run tests
run: ./scripts/test.sh cljs
@ -76,7 +85,8 @@ jobs:
name: Lint cljdoc.edn
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Verify cljdoc.edn
run: curl -fsSL https://raw.githubusercontent.com/cljdoc/cljdoc/master/script/verify-cljdoc-edn | bash -s doc/cljdoc.edn
@ -84,13 +94,16 @@ jobs:
name: Check cljdoc analysis
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
- name: Setup Clojure
uses: DeLaGuardo/setup-clojure@11.0
uses: DeLaGuardo/setup-clojure@13.1
with:
lein: 2.9.5
cli: 1.11.0.1100
- name: Install cljdoc analyzer
run: clojure -Ttools install io.github.cljdoc/cljdoc-analyzer '{:git/tag "RELEASE"}' :as cljdoc-analyzer
- name: CljDoc Check
run: ./scripts/cljdoc-check.sh

1
.gitignore vendored
View file

@ -14,3 +14,4 @@ pom.xml.asc
figwheel_server.log
/.idea
.clj-kondo
.shadow-cljs

20
karma.conf.js Normal file
View file

@ -0,0 +1,20 @@
module.exports = function (config) {
config.set({
browsers: ['ChromeHeadless'],
// The directory where the output file lives
basePath: 'target/karma',
// The file itself
files: ['ci.js'],
frameworks: ['cljs-test'],
plugins: ['karma-cljs-test', 'karma-chrome-launcher'],
colors: true,
logLevel: config.LOG_INFO,
client: {
args: ["shadow.test.karma.init"],
singleRun: true
},
junitReporter: {
outputDir: "target/results/cljs"
}
})
};

4532
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -2,11 +2,14 @@
"name": "reitit",
"private": true,
"devDependencies": {
"@seriousme/openapi-schema-validator": "^2.2.1",
"karma": "^4.1.0",
"karma-chrome-launcher": "^2.2.0",
"@seriousme/openapi-schema-validator": "^2.3.1",
"karma": "^6.4.4",
"karma-chrome-launcher": "^3.2.0",
"karma-cli": "^2.0.0",
"karma-cljs-test": "^0.1.0",
"karma-junit-reporter": "^1.2.0"
"karma-junit-reporter": "^2.0.1"
},
"dependencies": {
"shadow-cljs": "^2.28.20"
}
}

View file

@ -89,6 +89,7 @@
:java-source-paths ["modules/reitit-core/java-src"]
:dependencies [[org.clojure/clojure "1.11.4"]
[thheller/shadow-cljs "2.28.20"]
[org.clojure/clojurescript "1.11.132"]
;; modules dependencies
@ -128,6 +129,7 @@
[ring-cors "0.1.13"]
[com.bhauman/rebel-readline "0.1.4"]]}
:shadow {:test-paths ["test/cljs"]}
:perf {:jvm-opts ^:replace ["-server"
"-Xmx4096m"
"-Dclojure.compiler.direct-linking=true"]

View file

@ -2,7 +2,11 @@
set -e
case $1 in
cljs)
lein "do" test-browser once, test-node once, test-advanced once
npx shadow-cljs compile node-test
node target/shadow-node-test/node-tests.js
npx shadow-cljs compile karma
npx karma start --single-run
;;
clj)
lein test-clj

20
shadow-cljs.edn Normal file
View file

@ -0,0 +1,20 @@
{:lein {:profile "+shadow"}
;; tests are served via http://localhost:8021
:dev-http {8021 "target/shadow-browser-test"}
:builds
{:node-test
{:target :node-test
:output-to "target/shadow-node-test/node-tests.js"
:ns-regexp "-test"
;; Watch will also run the tests
:autorun true}
:browser-test
{:target :browser-test
:test-dir "target/shadow-browser-test"}
:karma
{:target :karma
:output-to "target/karma/ci.js"
:ns-regexp "-test$"}}}