|
19 | 19 | "ubuntu"))
|
20 | 20 |
|
21 | 21 | ;; matrix params to be used on ci
|
22 |
| -(def ^:private all-oses ["ubuntu" "macos" "windows"]) |
23 |
| -(def ^:private all-jdks ["8" "11" "17" "21"]) |
| 22 | +(def ^:private os-jdks {"ubuntu" ["8" "11" "17" "21"] |
| 23 | + ;; macOS on GitHub Actions is now arm-based and does not include jdk8 |
| 24 | + "macos" ["11" "17" "21"] |
| 25 | + "windows" ["8" "11" "17" "21"]}) |
| 26 | +(def ^:private all-oses (keys os-jdks)) |
24 | 27 |
|
25 | 28 | (defn- test-tasks []
|
26 | 29 | (concat [;; run lintish tasks across all oses to verify that they will work for all devs regardless of their os choice
|
27 |
| - {:desc "import-vars" :cmd "bb apply-import-vars check" :oses all-oses :jdks ["8"]} |
28 |
| - {:desc "lint" :cmd "bb lint" :oses all-oses :jdks ["8"]} |
| 30 | + {:desc "import-vars" :cmd "bb apply-import-vars check" :oses all-oses :jdks :earliest} |
| 31 | + {:desc "lint" :cmd "bb lint" :oses all-oses :jdks :earliest} |
29 | 32 | ;; test-docs on default clojure version across all oses and jdks
|
30 |
| - {:desc "test-doc" :cmd "bb test-doc" :oses all-oses :jdks all-jdks |
31 |
| - :requires ["npm"]}] |
| 33 | + {:desc "test-doc" :cmd "bb test-doc" :oses all-oses :jdks :all :requires ["npm"]}] |
32 | 34 | (for [version ["all"]]
|
33 | 35 | {:desc (str "clj-" version)
|
34 | 36 | :cmd (str "bb test-clj --clojure-version " version)
|
35 | 37 | :oses all-oses
|
36 |
| - :jdks all-jdks}) |
37 |
| - ;; I'm not sure there's much value testing across jdks for ClojureScript tests, for now we'll stick with jdk 8 only |
| 38 | + :jdks :all}) |
| 39 | + ;; I'm not sure there's much value testing across jdks for ClojureScript tests, for now we'll stick with earliest jdk only |
38 | 40 | (for [env [{:param "node" :desc "node"}
|
39 | 41 | {:param "chrome-headless" :desc "browser"}]
|
40 | 42 | opt [{:param "none"}
|
|
44 | 46 | (when (:desc opt) (str "-" (:desc opt))))
|
45 | 47 | :cmd (str "bb test-cljs --env " (:param env) " --optimizations " (:param opt))
|
46 | 48 | :oses all-oses
|
47 |
| - :jdks ["8"] |
| 49 | + :jdks :earliest |
48 | 50 | :requires ["npm"]})
|
49 | 51 | ;; shadow-cljs requires a min of jdk 11 so we'll test on that
|
50 | 52 | [{:desc "shadow-cljs" :cmd "bb test-shadow-cljs" :oses all-oses :jdks ["11"]
|
|
53 | 55 | :requires ["npm"]}]
|
54 | 56 | ;; planck does not run on windows, and I don't think it needs a jdk
|
55 | 57 | [{:desc "cljs-bootstrap" :cmd "bb test-cljs --env planck --optimizations none"
|
56 |
| - :oses ["macos" "ubuntu"] :jdks ["8"] :requires ["planck"]}])) |
| 58 | + :oses ["macos" "ubuntu"] :jdks :earliest :requires ["planck"]}])) |
57 | 59 |
|
58 | 60 | (defn- ci-test-matrix []
|
59 | 61 | (for [{:keys [desc cmd oses jdks requires]} (test-tasks)
|
60 | 62 | os oses
|
61 |
| - jdk jdks] |
| 63 | + jdk (case jdks |
| 64 | + :earliest (take 1 (get os-jdks os)) |
| 65 | + :all (get os-jdks os) |
| 66 | + jdks)] |
62 | 67 | {:desc (str desc " " os " jdk" jdk)
|
63 | 68 | :cmd cmd
|
64 | 69 | :os os
|
@@ -105,12 +110,13 @@ By default, will run all tests applicable to your current jdk and os.")
|
105 | 110 | (let [cur-os (matrix-os)
|
106 | 111 | cur-jdk (jdk/version)
|
107 | 112 | cur-major-jdk (str (:major cur-jdk))
|
| 113 | + ci-jdks (get os-jdks cur-os) |
108 | 114 | test-list (local-test-list cur-os cur-major-jdk)
|
109 | 115 | tests-skipped (filter :skip-reasons test-list)
|
110 | 116 | tests-to-run (remove :skip-reasons test-list)]
|
111 |
| - (when (not (some #{cur-major-jdk} all-jdks)) |
112 |
| - (status/line :warn "CI runs only on jdks %s but you are on jdk %s\nWe'll run tests anyway." |
113 |
| - all-jdks (:version cur-jdk))) |
| 117 | + (when (not (some #{cur-major-jdk} ci-jdks)) |
| 118 | + (status/line :warn "CI runs only on jdks %s on %s OS but you are on jdk %s\nWe'll run tests anyway." |
| 119 | + ci-jdks cur-os (:version cur-jdk))) |
114 | 120 |
|
115 | 121 | (status/line :head "Test plan")
|
116 | 122 | (status/line :detail "Found %d runnable tests for jdk %s on %s:"
|
|
0 commit comments