Skip to content

Commit 7c72655

Browse files
committed
Update tests for code reorg in previous commit
1 parent 8a4c8da commit 7c72655

File tree

5 files changed

+201
-103
lines changed

5 files changed

+201
-103
lines changed

bb.edn

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,9 @@
1111
build-images {:task (apply dc/-main "build-images" *command-line-args*)}
1212
test {:extra-paths ["test"]
1313
:requires ([docker-clojure.test-runner :as tr])
14-
:task (tr/-main 'docker-clojure.core-test 'docker-clojure.dockerfile-test
15-
'docker-clojure.manifest-test)}}}
14+
:task (tr/-main
15+
'docker-clojure.core-test
16+
'docker-clojure.docker-test
17+
'docker-clojure.dockerfile-test
18+
'docker-clojure.manifest-test
19+
'docker-clojure.variant-test)}}}

test/docker_clojure/core_test.clj

Lines changed: 94 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
(ns docker-clojure.core-test
22
(:require [clojure.test :refer [deftest is are testing]]
3-
[docker-clojure.core :refer [exclude? image-variants variant-map]]
4-
[docker-clojure.config :as cfg]
5-
[docker-clojure.util :refer [default-docker-tag]]
6-
[clojure.string :as str]))
3+
[docker-clojure.core :refer [exclude? image-variants]]
4+
[docker-clojure.config :as cfg]))
75

86
(deftest image-variants-test
97
(testing "generates the expected set of variants"
@@ -12,16 +10,18 @@
1210
:default :ubuntu/noble}
1311
cfg/default-jdk-version 11
1412
cfg/maintainers ["Paul Lam <[email protected]>"
15-
"Wes Morgan <[email protected]>"]]
13+
"Wes Morgan <[email protected]>"]
14+
cfg/architectures #{"amd64" "arm64v8"}]
1615
(let [variants (image-variants {8 ["debian"]
1716
11 ["debian"]
1817
:default ["eclipse-temurin"]}
1918
#{8 11 17 18}
2019
{"debian" #{:debian/buster
2120
:debian-slim/buster-slim}
22-
:default #{:alpine/alpine :ubuntu/noble}}
21+
:default #{:alpine/alpine :ubuntu/noble}}
2322
{"lein" "2.9.1"
24-
"tools-deps" "1.10.1.478"})]
23+
"tools-deps" "1.10.1.478"}
24+
#{"amd64" "arm64v8"})]
2525
;; filter is to make failure output a little more humane
2626
(are [v] (contains? (->> variants
2727
(filter #(and (= (:base-image %) (:base-image v))
@@ -30,73 +30,130 @@
3030
(= (:build-tool %) (:build-tool v))))
3131
set)
3232
v)
33-
{:jdk-version 11, :distro :debian-slim/buster-slim, :build-tool "lein"
34-
:base-image "debian" :base-image-tag "debian:buster-slim"
35-
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
36-
:docker-tag "temurin-11-lein-2.9.1", :build-tool-version "2.9.1"}
33+
{:jdk-version 11, :distro :debian-slim/buster-slim, :build-tool "lein"
34+
:base-image "debian" :base-image-tag "debian:buster-slim"
35+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
36+
:docker-tag "temurin-11-lein-2.9.1", :build-tool-version "2.9.1"
37+
:architecture "amd64"}
38+
{:jdk-version 11, :distro :debian-slim/buster-slim, :build-tool "lein"
39+
:base-image "debian" :base-image-tag "debian:buster-slim"
40+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
41+
:docker-tag "temurin-11-lein-2.9.1", :build-tool-version "2.9.1"
42+
:architecture "arm64v8"}
3743
{:jdk-version 18, :distro :ubuntu/noble
3844
:base-image "eclipse-temurin"
3945
:base-image-tag "eclipse-temurin:18-jdk-noble"
4046
:build-tool "tools-deps"
4147
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
4248
:docker-tag "temurin-18-tools-deps-1.10.1.478"
43-
:build-tool-version "1.10.1.478"}
44-
{:jdk-version 11, :distro :debian/buster, :build-tool "lein"
45-
:base-image "debian" :base-image-tag "debian:buster"
46-
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
47-
:docker-tag "temurin-11-lein-2.9.1-buster", :build-tool-version "2.9.1"}
49+
:build-tool-version "1.10.1.478"
50+
:architecture "amd64"}
51+
{:jdk-version 18, :distro :ubuntu/noble
52+
:base-image "eclipse-temurin"
53+
:base-image-tag "eclipse-temurin:18-jdk-noble"
54+
:build-tool "tools-deps"
55+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
56+
:docker-tag "temurin-18-tools-deps-1.10.1.478"
57+
:build-tool-version "1.10.1.478"
58+
:architecture "arm64v8"}
59+
{:jdk-version 11, :distro :debian/buster, :build-tool "lein"
60+
:base-image "debian" :base-image-tag "debian:buster"
61+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
62+
:docker-tag "temurin-11-lein-2.9.1-buster", :build-tool-version "2.9.1"
63+
:architecture "amd64"}
64+
{:jdk-version 11, :distro :debian/buster, :build-tool "lein"
65+
:base-image "debian" :base-image-tag "debian:buster"
66+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
67+
:docker-tag "temurin-11-lein-2.9.1-buster", :build-tool-version "2.9.1"
68+
:architecture "arm64v8"}
4869
{:jdk-version 11, :distro :debian/buster
4970
:base-image "debian"
5071
:base-image-tag "debian:buster"
5172
:build-tool "tools-deps"
5273
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
5374
:docker-tag "temurin-11-tools-deps-1.10.1.478-buster"
54-
:build-tool-version "1.10.1.478"}
75+
:build-tool-version "1.10.1.478"
76+
:architecture "amd64"}
77+
{:jdk-version 11, :distro :debian/buster
78+
:base-image "debian"
79+
:base-image-tag "debian:buster"
80+
:build-tool "tools-deps"
81+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
82+
:docker-tag "temurin-11-tools-deps-1.10.1.478-buster"
83+
:build-tool-version "1.10.1.478"
84+
:architecture "arm64v8"}
85+
{:jdk-version 8, :distro :debian-slim/buster-slim, :build-tool "lein"
86+
:base-image "debian"
87+
:base-image-tag "debian:buster-slim"
88+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
89+
:docker-tag "temurin-8-lein-2.9.1", :build-tool-version "2.9.1"
90+
:architecture "amd64"}
5591
{:jdk-version 8, :distro :debian-slim/buster-slim, :build-tool "lein"
5692
:base-image "debian"
5793
:base-image-tag "debian:buster-slim"
5894
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
59-
:docker-tag "temurin-8-lein-2.9.1", :build-tool-version "2.9.1"}
95+
:docker-tag "temurin-8-lein-2.9.1", :build-tool-version "2.9.1"
96+
:architecture "arm64v8"}
6097
{:jdk-version 8, :distro :debian-slim/buster-slim
6198
:build-tool "tools-deps"
6299
:base-image "debian"
63100
:base-image-tag "debian:buster-slim"
64101
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
65102
:docker-tag "temurin-8-tools-deps-1.10.1.478"
66-
:build-tool-version "1.10.1.478"}
103+
:build-tool-version "1.10.1.478"
104+
:architecture "amd64"}
105+
{:jdk-version 8, :distro :debian-slim/buster-slim
106+
:build-tool "tools-deps"
107+
:base-image "debian"
108+
:base-image-tag "debian:buster-slim"
109+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
110+
:docker-tag "temurin-8-tools-deps-1.10.1.478"
111+
:build-tool-version "1.10.1.478"
112+
:architecture "arm64v8"}
113+
{:jdk-version 17, :distro :ubuntu/noble, :build-tool "lein"
114+
:base-image "eclipse-temurin"
115+
:base-image-tag "eclipse-temurin:17-jdk-noble"
116+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
117+
:docker-tag "temurin-17-lein-2.9.1"
118+
:build-tool-version "2.9.1"
119+
:architecture "amd64"}
67120
{:jdk-version 17, :distro :ubuntu/noble, :build-tool "lein"
68121
:base-image "eclipse-temurin"
69122
:base-image-tag "eclipse-temurin:17-jdk-noble"
70123
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
71124
:docker-tag "temurin-17-lein-2.9.1"
72-
:build-tool-version "2.9.1"}
125+
:build-tool-version "2.9.1"
126+
:architecture "arm64v8"}
127+
{:jdk-version 17, :distro :alpine/alpine, :build-tool "lein"
128+
:base-image "eclipse-temurin"
129+
:base-image-tag "eclipse-temurin:17-jdk-alpine"
130+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
131+
:docker-tag "temurin-17-lein-2.9.1-alpine"
132+
:build-tool-version "2.9.1"
133+
:architecture "amd64"}
73134
{:jdk-version 17, :distro :alpine/alpine, :build-tool "lein"
74-
:base-image "eclipse-temurin", :architectures #{"amd64"}
135+
:base-image "eclipse-temurin"
75136
:base-image-tag "eclipse-temurin:17-jdk-alpine"
76137
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
77138
:docker-tag "temurin-17-lein-2.9.1-alpine"
78-
:build-tool-version "2.9.1"}
139+
:build-tool-version "2.9.1"
140+
:architecture "arm64v8"}
79141
{:jdk-version 17, :distro :ubuntu/noble
80142
:base-image "eclipse-temurin"
81143
:base-image-tag "eclipse-temurin:17-jdk-noble"
82144
:build-tool "tools-deps"
83145
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
84146
:docker-tag "temurin-17-tools-deps-1.10.1.478"
85-
:build-tool-version "1.10.1.478"})))))
86-
87-
(deftest variant-map-test
88-
(testing "returns the expected map version of the image variant list"
89-
(with-redefs [cfg/maintainers ["Paul Lam <[email protected]>"
90-
"Wes Morgan <[email protected]>"]]
91-
(is (= {:jdk-version 8
92-
:base-image "eclipse-temurin"
93-
:base-image-tag "eclipse-temurin:8-jdk-distro"
94-
:distro :distro/distro
95-
:build-tool "build-tool"
96-
:docker-tag "temurin-8-build-tool-1.2.3-distro"
97-
:build-tool-version "1.2.3"
98-
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"}
99-
(variant-map '("eclipse-temurin" 8 :distro/distro ["build-tool" "1.2.3"])))))))
147+
:build-tool-version "1.10.1.478"
148+
:architecture "amd64"}
149+
{:jdk-version 17, :distro :ubuntu/noble
150+
:base-image "eclipse-temurin"
151+
:base-image-tag "eclipse-temurin:17-jdk-noble"
152+
:build-tool "tools-deps"
153+
:maintainer "Paul Lam <[email protected]> & Wes Morgan <[email protected]>"
154+
:docker-tag "temurin-17-tools-deps-1.10.1.478"
155+
:build-tool-version "1.10.1.478"
156+
:architecture "arm64v8"})))))
100157

101158
(deftest exclude?-test
102159
(testing "excludes variant that matches all key-values in any exclusion"
@@ -107,31 +164,3 @@
107164
(testing "does not exclude partial matches"
108165
(is (not (exclude? #{{:base-image "bad", :build-tool "woof"}}
109166
{:base-image "bad", :build-tool "lein"})))))
110-
111-
(deftest docker-tag-test
112-
(with-redefs [cfg/default-jdk-version 11 ; TODO: Make this an arg to the fn instead
113-
cfg/default-distros {:default :debian-slim/slim-buster}] ; TODO: Rethink this too?
114-
(testing "default java version is left out"
115-
(is (not (str/includes? (default-docker-tag {:jdk-version 11})
116-
"openjdk-11"))))
117-
(testing "non-default version is added as a prefix"
118-
(is (str/starts-with? (default-docker-tag {:base-image "openjdk"
119-
:jdk-version 14})
120-
"openjdk-14")))
121-
(testing "default distro is left out"
122-
(is (not (str/includes? (default-docker-tag {:jdk-version 14
123-
:distro :debian-slim/slim-buster})
124-
"slim-buster"))))
125-
(testing "alpine is added as a suffix"
126-
(is (str/ends-with? (default-docker-tag {:jdk-version 8
127-
:distro :alpine/alpine})
128-
"alpine")))
129-
(testing "build tool is included"
130-
(is (str/includes? (default-docker-tag {:jdk-version 11
131-
:build-tool "lein"})
132-
"lein")))
133-
(testing "build tool version is included"
134-
(is (str/includes? (default-docker-tag {:jdk-version 11
135-
:build-tool "lein"
136-
:build-tool-version "2.11.2"})
137-
"2.11.2")))))
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
(ns docker-clojure.docker-test
2+
(:require [clojure.string :as str]
3+
[clojure.test :refer :all]
4+
[docker-clojure.config :as cfg]
5+
[docker-clojure.docker :refer :all]))
6+
7+
(deftest tag-test
8+
(with-redefs [cfg/default-jdk-version 11 ; TODO: Make this an arg to the fn instead
9+
cfg/default-distros {:default :debian-slim/slim-buster}] ; TODO: Rethink this too?
10+
(testing "default java version is left out"
11+
(is (not (str/includes? (default-tag {:jdk-version 11})
12+
"openjdk-11"))))
13+
(testing "non-default version is added as a prefix"
14+
(is (str/starts-with? (default-tag {:base-image "openjdk"
15+
:jdk-version 14})
16+
"openjdk-14")))
17+
(testing "default distro is left out"
18+
(is (not (str/includes? (default-tag {:jdk-version 14
19+
:distro :debian-slim/slim-buster})
20+
"slim-buster"))))
21+
(testing "alpine is added as a suffix"
22+
(is (str/ends-with? (default-tag {:jdk-version 8
23+
:distro :alpine/alpine})
24+
"alpine")))
25+
(testing "build tool is included"
26+
(is (str/includes? (default-tag {:jdk-version 11
27+
:build-tool "lein"})
28+
"lein")))
29+
(testing "build tool version is included"
30+
(is (str/includes? (default-tag {:jdk-version 11
31+
:build-tool "lein"
32+
:build-tool-version "2.11.2"})
33+
"2.11.2")))))
34+
35+
(deftest all-tags-test
36+
(testing "Generates all-defaults tag for a build tool"
37+
(let [tags (all-tags {:base-image "debian"
38+
:jdk-version 21
39+
:distro :debian/bookworm
40+
:build-tool "tools-deps"
41+
:build-tool-version "1.11.1.1155"})]
42+
(is ((set tags) "tools-deps"))))
43+
(testing "Generates jdk-version-build-tool tag for every jdk version"
44+
(are [jdk-version tag]
45+
(let [tags (all-tags {:base-image (if (< jdk-version 21)
46+
"eclipse-temurin"
47+
"debian")
48+
:jdk-version jdk-version
49+
:distro (if (< jdk-version 21)
50+
:ubuntu/jammy
51+
:debian/bookworm)
52+
:build-tool "tools-deps"
53+
:build-tool-version "1.11.1.1155"})]
54+
((set tags) tag))
55+
11 "temurin-11-tools-deps"
56+
17 "temurin-17-tools-deps"
57+
21 "temurin-21-tools-deps"))
58+
(testing "Generates build-tool-distro tag for every distro"
59+
(are [distro tag]
60+
(let [tags (all-tags {:base-image "debian"
61+
:jdk-version 21
62+
:distro distro
63+
:build-tool "tools-deps"
64+
:build-tool-version "1.11.1.1155"})]
65+
((set tags) tag))
66+
:debian/bullseye "tools-deps-bullseye"
67+
:debian-slim/bullseye-slim "tools-deps-bullseye-slim"
68+
:debian/bookworm "tools-deps-bookworm"
69+
:debian-slim/bookworm-slim "tools-deps-bookworm-slim")))

0 commit comments

Comments
 (0)