Build Logs

hagay3/skuber • 3.8.0-RC3:2025-12-04

Errors

3

Warnings

451

Total Lines

1233

1##################################
2Clonning https://github.com/hagay3/skuber.git into /build/repo using revision v4.0.11
3##################################
4Note: switching to '87cbdf6896b178771fe40e1f306a4997529895c2'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21Would override fixed Scala version: 3.3.1
22Using target Scala version for migration: 3.7.4
23Migrating project for -source:3.7 using Scala 3.7.4
24----
25Preparing build for 3.7.4
26Would try to apply common scalacOption (best-effort, sbt/mill only):
27Append: -rewrite,REQUIRE:-source:3.7-migration
28Remove: -indent,-no-indent,-new-syntax,,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
29
30Try apply source patch:
31Path: build.sbt
32Pattern: val scala3Version = "3.3.1"
33Replacement: val scala3Version = "3.7.4"
34Starting compilation server
35Compiling project (Scala 3.7.3, JVM (17))
36Compiled project (Scala 3.7.3, JVM (17))
37Successfully applied pattern 'val scala3Version = "3.3.1"' in build.sbt
38----
39Starting build for 3.7.4
40Execute tests: false
41sbt project found:
42Sbt version 1.9.2 is not supported, minimal supported version is 1.11.5
43Enforcing usage of sbt in version 1.11.5
44No prepare script found for project hagay3/skuber
45##################################
46Scala version: 3.7.4
47Targets: io.github.hagay3%skuber io.github.hagay3%skuber-examples
48Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":["3.7"],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.3.1\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}
49##################################
50Using extra scalacOptions: -rewrite,REQUIRE:-source:3.7-migration
51Filtering out scalacOptions: -indent,-no-indent,-new-syntax,,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
52[sbt_options] declare -a sbt_options=()
53[process_args] java_version = '17'
54[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
55# Executing command line:
56java
57-Dfile.encoding=UTF-8
58-Dcommunitybuild.scala=3.7.4
59-Dcommunitybuild.project.dependencies.add=
60-Xmx7G
61-Xms4G
62-Xss8M
63-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
64-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
65-jar
66/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
67"setCrossScalaVersions 3.7.4"
68"++3.7.4 -v"
69"mapScalacOptions "-rewrite,REQUIRE:-source:3.7-migration,-Wconf:msg=can be rewritten automatically under:s" "-indent,-no-indent,-new-syntax,,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
70"set every credentials := Nil"
71"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
72"removeScalacOptionsStartingWith -P:wartremover"
73
74moduleMappings
75"runBuild 3.7.4 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":["3.7"],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.3.1\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}""" io.github.hagay3%skuber io.github.hagay3%skuber-examples"
76
77[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
78[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
79[info] loading project definition from /build/repo/project
80[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
81[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
82[info] Compilation completed in 9.013s.
83[info] done compiling
84/build/repo/build.sbt:197: warning: value IntegrationTest in trait LibraryManagementSyntax is deprecated (since 1.9.0): Create a separate subproject for testing instead
85 .configs(IntegrationTest)
86 ^
87/build/repo/build.sbt:202: warning: lazy value itSettings in object Defaults is deprecated (since 1.9.0): Create a separate subproject instead of using IntegrationTest and in addition avoid using itSettings
88 Defaults.itSettings,
89 ^
90[info] loading settings for project skuber-project from build.sbt, version.sbt...
91[info] set current project to skuber-project (in build file:/build/repo/)
92[warn] there's a key that's not used by any other settings/tasks:
93[warn]
94[warn] * ThisBuild / publishMavenStyle
95[warn] +- /build/repo/build.sbt:60
96[warn]
97[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
98[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
99Execute setCrossScalaVersions: 3.7.4
100OpenCB::Changing crossVersion 3.7.4 -> 3.7.4 in skuber/crossScalaVersions
101OpenCB::Changing crossVersion 3.7.4 -> 3.7.4 in examples/crossScalaVersions
102OpenCB::Limitting incorrect crossVersions List() -> List(2.13.12) in skuber-project/crossScalaVersions
103[info] set current project to skuber-project (in build file:/build/repo/)
104[info] Setting Scala version to 3.7.4 on 2 projects.
105[info] Switching Scala version on:
106[info] skuber (2.12.13, 2.13.12, 3.7.4)
107[info] examples (2.12.13, 2.13.12, 3.7.4)
108[info] Excluding projects:
109[info] * skuber-project (2.13.12)
110[info] Reapplying settings...
111[info] set current project to skuber-project (in build file:/build/repo/)
112Execute mapScalacOptions: -rewrite,REQUIRE:-source:3.7-migration,-Wconf:msg=can be rewritten automatically under:s -indent,-no-indent,-new-syntax,,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
113[info] Reapplying settings...
114[info] set current project to skuber-project (in build file:/build/repo/)
115[info] Defining Global / credentials, credentials and 1 others.
116[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 14 others.
117[info] Run `last` for details.
118[info] Reapplying settings...
119[info] set current project to skuber-project (in build file:/build/repo/)
120Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
121[info] Reapplying settings...
122OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
123
124 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
125 Did you mean allExcludeDependencies ?
126 , retry without global scopes
127[info] Reapplying settings...
128[info] set current project to skuber-project (in build file:/build/repo/)
129Execute removeScalacOptionsStartingWith: -P:wartremover
130[info] Reapplying settings...
131[info] set current project to skuber-project (in build file:/build/repo/)
132[success] Total time: 0 s, completed Dec 4, 2025, 3:13:20 PM
133Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":["3.7"],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.3.1\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}
134Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),CompileOnly,List()))
135Starting build...
136Projects: Set(skuber, examples)
137Starting build for ProjectRef(file:/build/repo/,skuber) (skuber)... [0/2]
138OpenCB::Exclude Scala3 specific scalacOption `-rewrite` in Scala 2.12.20 module Global
139OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.7-migration` in Scala 2.12.20 module Global
140Compile scalacOptions: -rewrite, -Wconf:msg=can be rewritten automatically under:s, -source:3.7-migration
141[info] compiling 111 Scala sources to /build/repo/client/target/scala-3.7.4/classes ...
142[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/api/client/exec/PodExecImpl.scala:84:8
143[warn] 84 | case bm: ws.BinaryMessage.Strict if bm.data(0) == 1 =>
144[warn] | ^
145[warn] |match may not be exhaustive.
146[warn] |
147[warn] |It would fail on pattern case: _: org.apache.pekko.http.scaladsl.model.ws.Message
148[warn] |
149[warn] | longer explanation available when compiling with `-explain`
150[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/api/client/exec/PodExecImpl.scala:91:8
151[warn] 91 | case bm: ws.BinaryMessage.Strict =>
152[warn] | ^
153[warn] |match may not be exhaustive.
154[warn] |
155[warn] |It would fail on pattern case: org.apache.pekko.http.scaladsl.model.ws.BinaryMessage.Streamed(_), org.apache.pekko.http.scaladsl.model.ws.TextMessage.Streamed(_), org.apache.pekko.http.scaladsl.model.ws.TextMessage.Strict(_)
156[warn] |
157[warn] | longer explanation available when compiling with `-explain`
158[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/api/watch/WatchSource.scala:62:10
159[warn] 62 | case (Success(HttpResponse(StatusCodes.OK, _, entity, _)), se) =>
160[warn] | ^
161[warn] | match may not be exhaustive.
162[warn] |
163[warn] | It would fail on pattern case: (scala.util.Success(_), Start(_))
164[warn] |
165[warn] | longer explanation available when compiling with `-explain`
166[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/json/package.scala:472:6
167[warn] 472 | handler match {
168[warn] | ^^^^^^^
169[warn] |match may not be exhaustive.
170[warn] |
171[warn] |It would fail on pattern case: skuber.GRPCAction(_, _), UnknownHandler
172[warn] |
173[warn] | longer explanation available when compiling with `-explain`
174[info] [patched file /build/repo/client/src/main/scala/skuber/Pod.scala]
175[info] [patched file /build/repo/client/src/main/scala/skuber/autoscaling/v2/HorizontalPodAutoscaler.scala]
176[info] [patched file /build/repo/client/src/main/scala/skuber/CustomResource.scala]
177[info] [patched file /build/repo/client/src/main/scala/skuber/api/client/KubernetesClient.scala]
178[info] [patched file /build/repo/client/src/main/scala/skuber/annotation/NodeAffinity.scala]
179[info] [patched file /build/repo/client/src/main/scala/skuber/api/watch/BytesToWatchEventSource.scala]
180[info] [patched file /build/repo/client/src/main/scala/skuber/networking/v1/Ingress.scala]
181[info] [patched file /build/repo/client/src/main/scala/skuber/api/client/package.scala]
182[info] [patched file /build/repo/client/src/main/scala/skuber/api/Configuration.scala]
183[info] [patched file /build/repo/client/src/main/scala/skuber/json/TolerantListJsonFormatters.scala]
184[info] [patched file /build/repo/client/src/main/scala/skuber/api/client/impl/KubernetesClientImpl.scala]
185[info] [patched file /build/repo/client/src/main/scala/skuber/api/watch/Watch.scala]
186[info] [patched file /build/repo/client/src/main/scala/skuber/ext/ReplicaSet.scala]
187[info] [patched file /build/repo/client/src/main/scala/skuber/apps/v1/ReplicaSet.scala]
188[info] [patched file /build/repo/client/src/main/scala/skuber/json/package.scala]
189[info] [patched file /build/repo/client/src/main/scala/skuber/json/PlayJsonSupportForPekkoHttp.scala]
190[info] [patched file /build/repo/client/src/main/scala/skuber/api/client/exec/PodExecImpl.scala]
191[info] [patched file /build/repo/client/src/main/scala/skuber/Resource.scala]
192[info] [patched file /build/repo/client/src/main/scala/skuber/autoscaling/v2beta1/HorizontalPodAutoscaler.scala]
193[warn] there were 5 feature warnings; re-run with -feature for details
194[warn] there were 24 deprecation warnings; re-run with -deprecation for details
195[warn] 6 warnings found
196[info] done compiling
197[info] compiling 19 Scala sources to /build/repo/client/target/scala-3.7.4/classes ...
198[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/api/client/exec/PodExecImpl.scala:84:8
199[warn] 84 | case bm: ws.BinaryMessage.Strict if bm.data(0) == 1 =>
200[warn] | ^
201[warn] |match may not be exhaustive.
202[warn] |
203[warn] |It would fail on pattern case: _: org.apache.pekko.http.scaladsl.model.ws.Message
204[warn] |
205[warn] | longer explanation available when compiling with `-explain`
206[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/api/client/exec/PodExecImpl.scala:91:8
207[warn] 91 | case bm: ws.BinaryMessage.Strict =>
208[warn] | ^
209[warn] |match may not be exhaustive.
210[warn] |
211[warn] |It would fail on pattern case: org.apache.pekko.http.scaladsl.model.ws.BinaryMessage.Streamed(_), org.apache.pekko.http.scaladsl.model.ws.TextMessage.Streamed(_), org.apache.pekko.http.scaladsl.model.ws.TextMessage.Strict(_)
212[warn] |
213[warn] | longer explanation available when compiling with `-explain`
214[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/json/package.scala:472:6
215[warn] 472 | handler match {
216[warn] | ^^^^^^^
217[warn] |match may not be exhaustive.
218[warn] |
219[warn] |It would fail on pattern case: skuber.GRPCAction(_, _), UnknownHandler
220[warn] |
221[warn] | longer explanation available when compiling with `-explain`
222[warn] there were 3 feature warnings; re-run with -feature for details
223[warn] there were 2 deprecation warnings; re-run with -deprecation for details
224[warn] 5 warnings found
225[info] done compiling
226[info] compiling 4 Scala sources to /build/repo/client/target/scala-3.7.4/classes ...
227[warn] there were 2 deprecation warnings; re-run with -deprecation for details
228[warn] 6 warnings found
229[info] done compiling
230[info] compiling 41 Scala sources to /build/repo/client/target/scala-3.7.4/test-classes ...
231[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:26:0
232[warn] 26 |import Endpoints._
233[warn] |^
234[warn] |Line is indented too far to the left, or a `}` is missing
235[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:103:5
236[warn] 103 | val endps = Json.parse(epsJsonStr).as[Endpoints]
237[warn] | ^
238[warn] | Line is indented too far to the left, or a `}` is missing
239[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:104:5
240[warn] 104 | endps.kind mustEqual "Endpoints"
241[warn] | ^
242[warn] | Line is indented too far to the left, or a `}` is missing
243[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:105:5
244[warn] 105 | endps.name mustEqual "kube-dns"
245[warn] | ^
246[warn] | Line is indented too far to the left, or a `}` is missing
247[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:106:5
248[warn] 106 | endps.metadata.labels.size mustEqual 3
249[warn] | ^
250[warn] | Line is indented too far to the left, or a `}` is missing
251[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:107:5
252[warn] 107 | endps.metadata.labels("kubernetes.io/name") mustEqual "KubeDNS"
253[warn] | ^
254[warn] | Line is indented too far to the left, or a `}` is missing
255[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:108:5
256[warn] 108 | endps.subsets.size mustEqual 1
257[warn] | ^
258[warn] | Line is indented too far to the left, or a `}` is missing
259[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:109:5
260[warn] 109 | endps.subsets(0).addresses.size mustEqual 1
261[warn] | ^
262[warn] | Line is indented too far to the left, or a `}` is missing
263[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:110:5
264[warn] 110 | endps.subsets(0).addresses(0).ip mustEqual("10.246.1.3")
265[warn] | ^
266[warn] | Line is indented too far to the left, or a `}` is missing
267[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:111:5
268[warn] 111 | val tgtRef = endps.subsets(0).addresses(0).targetRef.get
269[warn] | ^
270[warn] | Line is indented too far to the left, or a `}` is missing
271[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:112:5
272[warn] 112 | tgtRef.kind mustEqual "Pod"
273[warn] | ^
274[warn] | Line is indented too far to the left, or a `}` is missing
275[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:113:5
276[warn] 113 | tgtRef.name mustEqual "kube-dns-v3-fkelw"
277[warn] | ^
278[warn] | Line is indented too far to the left, or a `}` is missing
279[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:114:5
280[warn] 114 | val ports = endps.subsets(0).ports
281[warn] | ^
282[warn] | Line is indented too far to the left, or a `}` is missing
283[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:115:5
284[warn] 115 | ports.length mustEqual 2
285[warn] | ^
286[warn] | Line is indented too far to the left, or a `}` is missing
287[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:116:5
288[warn] 116 | ports(0).name mustEqual Some("dns-tcp")
289[warn] | ^
290[warn] | Line is indented too far to the left, or a `}` is missing
291[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:117:5
292[warn] 117 | ports(0).protocol mustEqual Protocol.TCP
293[warn] | ^
294[warn] | Line is indented too far to the left, or a `}` is missing
295[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:118:5
296[warn] 118 | ports(0).port mustEqual 53
297[warn] | ^
298[warn] | Line is indented too far to the left, or a `}` is missing
299[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:119:5
300[warn] 119 | ports(1).name mustEqual Some("dns")
301[warn] | ^
302[warn] | Line is indented too far to the left, or a `}` is missing
303[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:120:5
304[warn] 120 | ports(1).protocol mustEqual Protocol.UDP
305[warn] | ^
306[warn] | Line is indented too far to the left, or a `}` is missing
307[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:121:5
308[warn] 121 | ports(1).port mustEqual 53
309[warn] | ^
310[warn] | Line is indented too far to the left, or a `}` is missing
311[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EnumTest.scala:23:44 -
312[warn] 23 | """.stripMargin))(TestClassEnum.fmt.reads).get
313[warn] | ^^^^^^^^^^^^^^^^^^^^^^^
314[warn] |method reads is eta-expanded even though play.api.libs.json.Reads[skuber.json².TestClassEnum] does not have the @FunctionalInterface annotation.
315[warn] |
316[warn] |where: json is a package in package play.api.libs
317[warn] | json² is a package in package skuber
318[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EnumTest.scala:41:52 -
319[warn] 41 | """.stripMargin))(TestClassEnumNone.fmtNone.reads).get
320[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
321[warn] |method reads is eta-expanded even though play.api.libs.json.Reads[skuber.json².TestClassEnumNone] does not have the @FunctionalInterface annotation.
322[warn] |
323[warn] |where: json is a package in package play.api.libs
324[warn] | json² is a package in package skuber
325[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:24:0
326[warn] 24 |import Node._
327[warn] |^
328[warn] |Line is indented too far to the left, or a `}` is missing
329[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:275:10
330[warn] 275 | val myNodes= Json.parse(nodesJsonStr).as[NodeList]
331[warn] | ^
332[warn] | Line is indented too far to the left, or a `}` is missing
333[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:276:10
334[warn] 276 | myNodes.kind mustEqual "NodeList"
335[warn] | ^
336[warn] | Line is indented too far to the left, or a `}` is missing
337[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:277:10
338[warn] 277 | myNodes.items.length mustEqual 3 // 3 minion nodes
339[warn] | ^
340[warn] | Line is indented too far to the left, or a `}` is missing
341[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:279:10
342[warn] 279 | myNodes(0).name mustEqual "10.245.1.3"
343[warn] | ^
344[warn] | Line is indented too far to the left, or a `}` is missing
345[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:280:10
346[warn] 280 | myNodes(0).status.get.capacity("memory") mustEqual Resource.Quantity("1017552Ki")
347[warn] | ^
348[warn] | Line is indented too far to the left, or a `}` is missing
349[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:282:10
350[warn] 282 | myNodes(1).name mustEqual "10.245.1.4"
351[warn] | ^
352[warn] | Line is indented too far to the left, or a `}` is missing
353[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:283:10
354[warn] 283 | myNodes(1).status.get.capacity("cpu") mustEqual Resource.Quantity("2")
355[warn] | ^
356[warn] | Line is indented too far to the left, or a `}` is missing
357[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:285:10
358[warn] 285 | val readNodes = Json.fromJson[NodeList](Json.toJson(myNodes)).get
359[warn] | ^
360[warn] | Line is indented too far to the left, or a `}` is missing
361[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:286:10
362[warn] 286 | myNodes mustEqual readNodes
363[warn] | ^
364[warn] | Line is indented too far to the left, or a `}` is missing
365[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/ReplicationControllerFormatSpec.scala:26:0
366[warn] 26 |import ReplicationController._
367[warn] |^
368[warn] |Line is indented too far to the left, or a `}` is missing
369[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/ServiceFormatSpec.scala:26:0
370[warn] 26 |import Service._
371[warn] |^
372[warn] |Line is indented too far to the left, or a `}` is missing
373[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/test/scala/skuber/json/PodFormatSpec.scala:380:28
374[warn] 380 | cntrStatuses(2).state.get match {
375[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^^
376[warn] | match may not be exhaustive.
377[warn] |
378[warn] | It would fail on pattern case: _: skuber.Container.State
379[warn] |
380[warn] | longer explanation available when compiling with `-explain`
381[info] [patched file /build/repo/client/src/test/scala/skuber/network/NetworkPolicySpec.scala]
382[info] [patched file /build/repo/client/src/test/scala/skuber/apps/v1/DeploymentSpec.scala]
383[info] [patched file /build/repo/client/src/test/scala/skuber/json/PodFormatSpec.scala]
384[info] [patched file /build/repo/client/src/test/scala/skuber/autoscaling/v2/HorizontalPodAutoscalerSpec.scala]
385[info] [patched file /build/repo/client/src/test/scala/skuber/apps/DeploymentSpec.scala]
386[info] [patched file /build/repo/client/src/test/scala/skuber/apps/v1/StatefulSetSpec.scala]
387[info] [patched file /build/repo/client/src/test/scala/skuber/json/NamespaceFormatSpec.scala]
388[info] [patched file /build/repo/client/src/test/scala/skuber/json/EnumTest.scala]
389[info] [patched file /build/repo/client/src/test/scala/skuber/apps/StatefulSetSpec.scala]
390[info] [patched file /build/repo/client/src/test/scala/skuber/api/BytesToWatchEventSourceSpec.scala]
391[info] [patched file /build/repo/client/src/test/scala/skuber/model/LabelSelectorSpec.scala]
392[info] [patched file /build/repo/client/src/test/scala/skuber/policy/v1beta1/PodDisruptionBudgetSpec.scala]
393[info] [patched file /build/repo/client/src/test/scala/skuber/autoscaling/v2beta1/HorizontalPodAutoscalerSpec.scala]
394[info] [patched file /build/repo/client/src/test/scala/skuber/ext/DeploymentSpec.scala]
395[info] [patched file /build/repo/client/src/test/scala/skuber/api/ListQueryParamSpec.scala]
396[warn] there were 43 deprecation warnings; re-run with -deprecation for details
397[warn] 36 warnings found
398[info] done compiling
399[info] compiling 15 Scala sources to /build/repo/client/target/scala-3.7.4/test-classes ...
400[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EnumTest.scala:23:50 -
401[warn] 23 | """.stripMargin))(using TestClassEnum.fmt.reads).get
402[warn] | ^^^^^^^^^^^^^^^^^^^^^^^
403[warn] |method reads is eta-expanded even though play.api.libs.json.Reads[skuber.json².TestClassEnum] does not have the @FunctionalInterface annotation.
404[warn] |
405[warn] |where: json is a package in package play.api.libs
406[warn] | json² is a package in package skuber
407[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EnumTest.scala:41:58 -
408[warn] 41 | """.stripMargin))(using TestClassEnumNone.fmtNone.reads).get
409[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
410[warn] |method reads is eta-expanded even though play.api.libs.json.Reads[skuber.json².TestClassEnumNone] does not have the @FunctionalInterface annotation.
411[warn] |
412[warn] |where: json is a package in package play.api.libs
413[warn] | json² is a package in package skuber
414[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/test/scala/skuber/json/PodFormatSpec.scala:380:28
415[warn] 380 | cntrStatuses(2).state.get match {
416[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^^
417[warn] | match may not be exhaustive.
418[warn] |
419[warn] | It would fail on pattern case: _: skuber.Container.State
420[warn] |
421[warn] | longer explanation available when compiling with `-explain`
422[warn] there were 41 deprecation warnings; re-run with -deprecation for details
423[warn] four warnings found
424[info] done compiling
425Starting build for ProjectRef(file:/build/repo/,examples) (skuber-examples)... [1/2]
426Compile scalacOptions: -rewrite, -Wconf:msg=can be rewritten automatically under:s, -source:3.7-migration
427[info] compiling 22 Scala sources to /build/repo/examples/target/scala-3.7.4/classes ...
428[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/auth/InClusterConfigurationExample.scala]
429[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/guestbook/GuestbookActor.scala]
430[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/job/PrintPiJob.scala]
431[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/ingress/NginxIngress.scala]
432[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/deployment/DeploymentExamples.scala]
433[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/auth/AwsAuthExample.scala]
434[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/customresources/v1beta1/CreateCRD.scala]
435[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/argo/EventBusExample.scala]
436[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/guestbook/KubernetesProxyActor.scala]
437[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/patch/PatchExamples.scala]
438[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/scale/ScaleExamples.scala]
439[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/fluent/FluentExamples.scala]
440[warn] there were 18 deprecation warnings; re-run with -deprecation for details
441[warn] one warning found
442[info] done compiling
443[info] compiling 22 Scala sources to /build/repo/examples/target/scala-3.7.4/classes ...
444[warn] there were 18 deprecation warnings; re-run with -deprecation for details
445[warn] one warning found
446[info] done compiling
447
448************************
449Build summary:
450[{
451 "module": "skuber",
452 "compile": {"status": "ok", "tookMs": 40626, "warnings": 4, "errors": 0, "sourceVersion": "3.7-migration"},
453 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
454 "test-compile": {"status": "ok", "tookMs": 20756, "warnings": 35, "errors": 0, "sourceVersion": "3.7-migration"},
455 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
456 "publish": {"status": "skipped", "tookMs": 0},
457 "metadata": {
458 "crossScalaVersions": ["2.12.13", "2.13.12", "3.3.1"]
459}
460},{
461 "module": "skuber-examples",
462 "compile": {"status": "ok", "tookMs": 2695, "warnings": 0, "errors": 0, "sourceVersion": "3.7-migration"},
463 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
464 "test-compile": {"status": "ok", "tookMs": 2379, "warnings": 0, "errors": 0, "sourceVersion": "3.7-migration"},
465 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
466 "publish": {"status": "skipped", "tookMs": 0},
467 "metadata": {
468 "crossScalaVersions": ["2.12.13", "2.13.12", "3.3.1"]
469}
470}]
471************************
472[success] Total time: 102 s (0:01:42.0), completed Dec 4, 2025, 3:15:03 PM
473[0JChecking patch project/plugins.sbt...
474Checking patch project/build.properties...
475Checking patch build.sbt...
476Applied patch project/plugins.sbt cleanly.
477Applied patch project/build.properties cleanly.
478Applied patch build.sbt cleanly.
479Commit migration rewrites
480Switched to a new branch 'opencb/migrate-source-3.7'
481[opencb/migrate-source-3.7 84df3c6] Apply Scala compiler rewrites using -source:3.7-migration using Scala 3.7.4
482 46 files changed, 202 insertions(+), 202 deletions(-)
483----
484Preparing build for 3.8.0-RC3
485Scala binary version found: 3.8
486Implicitly using source version 3.8
487Scala binary version found: 3.8
488Implicitly using source version 3.8
489Would try to apply common scalacOption (best-effort, sbt/mill only):
490Append: ,REQUIRE:-source:3.8
491Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
492
493Try apply source patch:
494Path: build.sbt
495Pattern: val scala3Version = "3.3.1"
496Replacement: val scala3Version = "3.8.0-RC3"
497Successfully applied pattern 'val scala3Version = "3.3.1"' in build.sbt
498----
499Starting build for 3.8.0-RC3
500Execute tests: true
501sbt project found:
502Sbt version 1.9.2 is not supported, minimal supported version is 1.11.5
503Enforcing usage of sbt in version 1.11.5
504No prepare script found for project hagay3/skuber
505##################################
506Scala version: 3.8.0-RC3
507Targets: io.github.hagay3%skuber io.github.hagay3%skuber-examples
508Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":["3.7"],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.3.1\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}
509##################################
510Using extra scalacOptions: ,REQUIRE:-source:3.8
511Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
512[sbt_options] declare -a sbt_options=()
513[process_args] java_version = '17'
514[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
515# Executing command line:
516java
517-Dfile.encoding=UTF-8
518-Dcommunitybuild.scala=3.8.0-RC3
519-Dcommunitybuild.project.dependencies.add=
520-Xmx7G
521-Xms4G
522-Xss8M
523-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
524-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
525-jar
526/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
527"setCrossScalaVersions 3.8.0-RC3"
528"++3.8.0-RC3 -v"
529"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
530"set every credentials := Nil"
531"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
532"removeScalacOptionsStartingWith -P:wartremover"
533
534moduleMappings
535"runBuild 3.8.0-RC3 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":["3.7"],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.3.1\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}""" io.github.hagay3%skuber io.github.hagay3%skuber-examples"
536
537[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
538[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
539[info] loading project definition from /build/repo/project
540/build/repo/build.sbt:197: warning: value IntegrationTest in trait LibraryManagementSyntax is deprecated (since 1.9.0): Create a separate subproject for testing instead
541 .configs(IntegrationTest)
542 ^
543/build/repo/build.sbt:202: warning: lazy value itSettings in object Defaults is deprecated (since 1.9.0): Create a separate subproject instead of using IntegrationTest and in addition avoid using itSettings
544 Defaults.itSettings,
545 ^
546[info] loading settings for project skuber-project from build.sbt, version.sbt...
547[info] set current project to skuber-project (in build file:/build/repo/)
548[warn] there's a key that's not used by any other settings/tasks:
549[warn]
550[warn] * ThisBuild / publishMavenStyle
551[warn] +- /build/repo/build.sbt:60
552[warn]
553[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
554[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
555Execute setCrossScalaVersions: 3.8.0-RC3
556OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in skuber/crossScalaVersions
557OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in examples/crossScalaVersions
558OpenCB::Limitting incorrect crossVersions List() -> List(2.13.12) in skuber-project/crossScalaVersions
559[info] set current project to skuber-project (in build file:/build/repo/)
560[info] Setting Scala version to 3.8.0-RC3 on 2 projects.
561[info] Switching Scala version on:
562[info] skuber (2.12.13, 2.13.12, 3.8.0-RC3)
563[info] examples (2.12.13, 2.13.12, 3.8.0-RC3)
564[info] Excluding projects:
565[info] * skuber-project (2.13.12)
566[info] Reapplying settings...
567[info] set current project to skuber-project (in build file:/build/repo/)
568Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
569[info] Reapplying settings...
570[info] set current project to skuber-project (in build file:/build/repo/)
571[info] Defining Global / credentials, credentials and 1 others.
572[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 14 others.
573[info] Run `last` for details.
574[info] Reapplying settings...
575[info] set current project to skuber-project (in build file:/build/repo/)
576Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
577[info] Reapplying settings...
578OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
579
580 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
581 Did you mean allExcludeDependencies ?
582 , retry without global scopes
583[info] Reapplying settings...
584[info] set current project to skuber-project (in build file:/build/repo/)
585Execute removeScalacOptionsStartingWith: -P:wartremover
586[info] Reapplying settings...
587[info] set current project to skuber-project (in build file:/build/repo/)
588[success] Total time: 0 s, completed Dec 4, 2025, 3:15:18 PM
589Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":["3.7"],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.3.1\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}
590Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
591Starting build...
592Projects: Set(skuber, examples)
593Starting build for ProjectRef(file:/build/repo/,skuber) (skuber)... [0/2]
594OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
595Compile scalacOptions: -Wconf:msg=can be rewritten automatically under:s, -source:3.8
596[info] compiling 111 Scala sources to /build/repo/client/target/scala-3.8.0-RC3/classes ...
597[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/api/client/exec/PodExecImpl.scala:84:8
598[warn] 84 | case bm: ws.BinaryMessage.Strict if bm.data(0) == 1 =>
599[warn] | ^
600[warn] |match may not be exhaustive.
601[warn] |
602[warn] |It would fail on pattern case: _: org.apache.pekko.http.scaladsl.model.ws.Message
603[warn] |
604[warn] | longer explanation available when compiling with `-explain`
605[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/api/client/exec/PodExecImpl.scala:91:8
606[warn] 91 | case bm: ws.BinaryMessage.Strict =>
607[warn] | ^
608[warn] |match may not be exhaustive.
609[warn] |
610[warn] |It would fail on pattern case: org.apache.pekko.http.scaladsl.model.ws.BinaryMessage.Streamed(_), org.apache.pekko.http.scaladsl.model.ws.TextMessage.Streamed(_), org.apache.pekko.http.scaladsl.model.ws.TextMessage.Strict(_)
611[warn] |
612[warn] | longer explanation available when compiling with `-explain`
613[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/api/watch/WatchSource.scala:62:10
614[warn] 62 | case (Success(HttpResponse(StatusCodes.OK, _, entity, _)), se) =>
615[warn] | ^
616[warn] | match may not be exhaustive.
617[warn] |
618[warn] | It would fail on pattern case: (scala.util.Success(_), Start(_))
619[warn] |
620[warn] | longer explanation available when compiling with `-explain`
621[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/main/scala/skuber/json/package.scala:472:6
622[warn] 472 | handler match {
623[warn] | ^^^^^^^
624[warn] |match may not be exhaustive.
625[warn] |
626[warn] |It would fail on pattern case: skuber.GRPCAction(_, _), UnknownHandler
627[warn] |
628[warn] | longer explanation available when compiling with `-explain`
629[warn] there were 5 feature warnings; re-run with -feature for details
630[warn] there were 24 deprecation warnings; re-run with -deprecation for details
631[warn] 6 warnings found
632[info] done compiling
633[info] compiling 41 Scala sources to /build/repo/client/target/scala-3.8.0-RC3/test-classes ...
634[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:26:0
635[warn] 26 |import Endpoints._
636[warn] |^
637[warn] |Line is indented too far to the left, or a `}` is missing
638[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:103:5
639[warn] 103 | val endps = Json.parse(epsJsonStr).as[Endpoints]
640[warn] | ^
641[warn] | Line is indented too far to the left, or a `}` is missing
642[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:104:5
643[warn] 104 | endps.kind mustEqual "Endpoints"
644[warn] | ^
645[warn] | Line is indented too far to the left, or a `}` is missing
646[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:105:5
647[warn] 105 | endps.name mustEqual "kube-dns"
648[warn] | ^
649[warn] | Line is indented too far to the left, or a `}` is missing
650[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:106:5
651[warn] 106 | endps.metadata.labels.size mustEqual 3
652[warn] | ^
653[warn] | Line is indented too far to the left, or a `}` is missing
654[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:107:5
655[warn] 107 | endps.metadata.labels("kubernetes.io/name") mustEqual "KubeDNS"
656[warn] | ^
657[warn] | Line is indented too far to the left, or a `}` is missing
658[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:108:5
659[warn] 108 | endps.subsets.size mustEqual 1
660[warn] | ^
661[warn] | Line is indented too far to the left, or a `}` is missing
662[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:109:5
663[warn] 109 | endps.subsets(0).addresses.size mustEqual 1
664[warn] | ^
665[warn] | Line is indented too far to the left, or a `}` is missing
666[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:110:5
667[warn] 110 | endps.subsets(0).addresses(0).ip mustEqual("10.246.1.3")
668[warn] | ^
669[warn] | Line is indented too far to the left, or a `}` is missing
670[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:111:5
671[warn] 111 | val tgtRef = endps.subsets(0).addresses(0).targetRef.get
672[warn] | ^
673[warn] | Line is indented too far to the left, or a `}` is missing
674[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:112:5
675[warn] 112 | tgtRef.kind mustEqual "Pod"
676[warn] | ^
677[warn] | Line is indented too far to the left, or a `}` is missing
678[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:113:5
679[warn] 113 | tgtRef.name mustEqual "kube-dns-v3-fkelw"
680[warn] | ^
681[warn] | Line is indented too far to the left, or a `}` is missing
682[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:114:5
683[warn] 114 | val ports = endps.subsets(0).ports
684[warn] | ^
685[warn] | Line is indented too far to the left, or a `}` is missing
686[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:115:5
687[warn] 115 | ports.length mustEqual 2
688[warn] | ^
689[warn] | Line is indented too far to the left, or a `}` is missing
690[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:116:5
691[warn] 116 | ports(0).name mustEqual Some("dns-tcp")
692[warn] | ^
693[warn] | Line is indented too far to the left, or a `}` is missing
694[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:117:5
695[warn] 117 | ports(0).protocol mustEqual Protocol.TCP
696[warn] | ^
697[warn] | Line is indented too far to the left, or a `}` is missing
698[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:118:5
699[warn] 118 | ports(0).port mustEqual 53
700[warn] | ^
701[warn] | Line is indented too far to the left, or a `}` is missing
702[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:119:5
703[warn] 119 | ports(1).name mustEqual Some("dns")
704[warn] | ^
705[warn] | Line is indented too far to the left, or a `}` is missing
706[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:120:5
707[warn] 120 | ports(1).protocol mustEqual Protocol.UDP
708[warn] | ^
709[warn] | Line is indented too far to the left, or a `}` is missing
710[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EndpointsFormatSpec.scala:121:5
711[warn] 121 | ports(1).port mustEqual 53
712[warn] | ^
713[warn] | Line is indented too far to the left, or a `}` is missing
714[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EnumTest.scala:23:50 -
715[warn] 23 | """.stripMargin))(using TestClassEnum.fmt.reads).get
716[warn] | ^^^^^^^^^^^^^^^^^^^^^^^
717[warn] |method reads is eta-expanded even though play.api.libs.json.Reads[skuber.json².TestClassEnum] does not have the @FunctionalInterface annotation.
718[warn] |
719[warn] |where: json is a package in package play.api.libs
720[warn] | json² is a package in package skuber
721[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/EnumTest.scala:41:58 -
722[warn] 41 | """.stripMargin))(using TestClassEnumNone.fmtNone.reads).get
723[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
724[warn] |method reads is eta-expanded even though play.api.libs.json.Reads[skuber.json².TestClassEnumNone] does not have the @FunctionalInterface annotation.
725[warn] |
726[warn] |where: json is a package in package play.api.libs
727[warn] | json² is a package in package skuber
728[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:24:0
729[warn] 24 |import Node._
730[warn] |^
731[warn] |Line is indented too far to the left, or a `}` is missing
732[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:275:10
733[warn] 275 | val myNodes= Json.parse(nodesJsonStr).as[NodeList]
734[warn] | ^
735[warn] | Line is indented too far to the left, or a `}` is missing
736[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:276:10
737[warn] 276 | myNodes.kind mustEqual "NodeList"
738[warn] | ^
739[warn] | Line is indented too far to the left, or a `}` is missing
740[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:277:10
741[warn] 277 | myNodes.items.length mustEqual 3 // 3 minion nodes
742[warn] | ^
743[warn] | Line is indented too far to the left, or a `}` is missing
744[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:279:10
745[warn] 279 | myNodes(0).name mustEqual "10.245.1.3"
746[warn] | ^
747[warn] | Line is indented too far to the left, or a `}` is missing
748[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:280:10
749[warn] 280 | myNodes(0).status.get.capacity("memory") mustEqual Resource.Quantity("1017552Ki")
750[warn] | ^
751[warn] | Line is indented too far to the left, or a `}` is missing
752[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:282:10
753[warn] 282 | myNodes(1).name mustEqual "10.245.1.4"
754[warn] | ^
755[warn] | Line is indented too far to the left, or a `}` is missing
756[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:283:10
757[warn] 283 | myNodes(1).status.get.capacity("cpu") mustEqual Resource.Quantity("2")
758[warn] | ^
759[warn] | Line is indented too far to the left, or a `}` is missing
760[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:285:10
761[warn] 285 | val readNodes = Json.fromJson[NodeList](Json.toJson(myNodes)).get
762[warn] | ^
763[warn] | Line is indented too far to the left, or a `}` is missing
764[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/NodeFormatSpec.scala:286:10
765[warn] 286 | myNodes mustEqual readNodes
766[warn] | ^
767[warn] | Line is indented too far to the left, or a `}` is missing
768[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/ReplicationControllerFormatSpec.scala:26:0
769[warn] 26 |import ReplicationController._
770[warn] |^
771[warn] |Line is indented too far to the left, or a `}` is missing
772[warn] -- Warning: /build/repo/client/src/test/scala/skuber/json/ServiceFormatSpec.scala:26:0
773[warn] 26 |import Service._
774[warn] |^
775[warn] |Line is indented too far to the left, or a `}` is missing
776[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/client/src/test/scala/skuber/json/PodFormatSpec.scala:380:28
777[warn] 380 | cntrStatuses(2).state.get match {
778[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^^
779[warn] | match may not be exhaustive.
780[warn] |
781[warn] | It would fail on pattern case: _: skuber.Container.State
782[warn] |
783[warn] | longer explanation available when compiling with `-explain`
784[warn] there were 43 deprecation warnings; re-run with -deprecation for details
785[warn] 36 warnings found
786[info] done compiling
787[info] DeploymentSpec
788[info] This is a unit specification for the skuber apps/v1 Deployment class. + A Deployment object can be constructed from a name and pod template spec
789[info] + A Deployment object can be written to Json and then read back again successfully
790[info] + A Deployment object properly writes with zero replicas
791[info] + A Deployment object can be read directly from a JSON string
792[info] Total for specification DeploymentSpec
793[info] Finished in 173 ms
794[info] 4 examples, 0 failure, 0 error
795[info] ModelSpec
796[info] This is a unit specification for the skuber data model. A Pods type can be constructed from lists of Pods
797[info] + where an empty list of pods can be used
798[info] + where a list with a single pod can be used
799[info] A ReplicationControllers type can be constructed from a list of ReplicationController (a.k.a. RC)
800[info] + where an empty list of RCs can be used
801[info] + where a list with a single RC can be used
802[info] Total for specification ModelSpec
803[info] Finished in 207 ms
804[info] 4 examples, 0 failure, 0 error
805[info] ServiceReadsWritesSpec
806[info] This is a unit specification for the skuber Service related json formatter.
807[info] A Service can be symmetrically written to json and the same value read back in
808[info] + this can be done for a simple Service with just a name
809[info] + this can be done for a simple Service with just a name and namespace set
810[info] + this can be done for a Service with a simple, single port spec
811[info] + this can be done for a Service with a more complex spec
812[info] + a service can be read from Json
813[info] Total for specification ServiceReadsWritesSpec
814[info] Finished in 212 ms
815[info] 5 examples, 0 failure, 0 error
816[info] ListQueryParamSpec
817[info] + LabelSelector string representations equate to the associated labelSelector query param values
818[info] Total for specification ListQueryParamSpec
819[info] Finished in 23 ms
820[info] 1 example, 0 failure, 0 error
821[info] AuthSpec
822[info] This is a unit specification for the auth data model. + Auth toString works when empty
823[info] + CertAuth toString masks cert, key but not user
824[info] + CertAuth toString doesn't mask username, certPath, keyPath
825[info] + TokenAuth toString masks token
826[info] + GcpAuth toString masks accessToken
827[info] + OidcAuth toString masks idToken
828[info] Total for specification AuthSpec
829[info] Finished in 327 ms
830[info] 6 examples, 0 failure, 0 error
831[info] PodPresetFormatSpec
832[info] This is a unit specification for the skuber PodPreset related json formatter.
833[info] + a podpreset can be read and written as json successfully
834[info] Total for specification PodPresetFormatSpec
835[info] Finished in 89 ms
836[info] 1 example, 0 failure, 0 error
837[info] EnumTest
838[info] Test enum formatters
839[info] Test enum formatters suite
840[info] + Convert json to enum object
841[info] + Test default enum formatter
842[info] + Test enum formatter with json path
843[info] + Test enum formatter with none value and also default value
844[info] + Test enum formatter with wrong enum value -> fallback to None
845[info] Total for specification EnumTest
846[info] Finished in 89 ms
847[info] 5 examples, 0 failure, 0 error
848[info] NetworkPolicySpec
849[info] This is a unit specification for the skuber NetworkPolicy class. + A NetworkPolicy object can be written to Json and read back again
850[info] Total for specification NetworkPolicySpec
851[info] Finished in 23 ms
852[info] 1 example, 0 failure, 0 error
853[info] SkuberConfigSpec
854[info] This is a specification for the 'SkuberConfigSpec' classSkuberConfig should
855[info] in-cluster should
856[info] + refresh token interval defaults to 5 min if no configuration provided
857[info] + refresh token interval value provided by the configuration
858[info] watch-continuously should
859[info] + defaults are provided
860[info] Total for specification SkuberConfigSpec
861[info] Finished in 220 ms
862[info] 3 examples, 0 failure, 0 error
863[info] JobSpec
864[info] This is a unit specification for the skuber Job class. + A Job object can be constructed from a name and a pod template
865[info] + A Job object can be constructed with fluent API
866[info] + A Job object can be written to Json and then read back again successfully
867[info] + A Job object can be read directly from a JSON string
868[info] Total for specification JobSpec
869[info] Finished in 61 ms
870[info] 4 examples, 0 failure, 0 error
871[info] StatefulSetSpec
872[info] This is a unit specification for the skuber StatefulSet class. + A StatefulSet object can be constructed from a name and pod template spec
873[info] + A StatefulSet object can be written to Json and then read back again successfully
874[info] + A StatefulSet object properly writes with zero replicas
875[info] + A StatefulSet object can be read directly from a JSON string
876[info] Total for specification StatefulSetSpec
877[info] Finished in 63 ms
878[info] 4 examples, 0 failure, 0 error
879[info] ReplicationControllerFormatSpec
880[info] This is a unit specification for the skuber Service related json formatter.
881[info] A Replication Controller can be symmetrically written to json and the same value read back in
882[info] + this can be done for a simple controller with just a name
883[info] + this can be done for a simple controller with just a name and namespace set
884[info] + this can be done for a controller with a spec for replicating a pod with a single container
885[info] + a replication controller can be read from Json
886[info] Total for specification ReplicationControllerFormatSpec
887[info] Finished in 39 ms
888[info] 4 examples, 0 failure, 0 error
889[info] DeploymentSpec
890[info] This is a unit specification for the skuber Deployment class. + A Deployment object can be constructed from a name and pod template spec
891[info] + A Deployment object can be written to Json and then read back again successfully
892[info] + A Deployment object properly writes with zero replicas
893[info] + A Deployment object can be read directly from a JSON string
894[info] Total for specification DeploymentSpec
895[info] Finished in 32 ms
896[info] 4 examples, 0 failure, 0 error
897{"kind":"DaemonSet","apiVersion":"extensions/v1beta1","metadata":{"name":"example"},"spec":{"selector":{"matchLabels":{"tier":"cache"},"matchExpressions":[{"key":"live","operator":"DoesNotExist"},{"key":"env","operator":"NotIn","values":["dev","test"]}]},"template":{"metadata":{"name":"example"},"spec":{"containers":[{"name":"example","image":"example"}],"restartPolicy":"Always","dnsPolicy":"ClusterFirst"}}}}
898[info] DaemonSetSpec
899[info] + A DaemonSet Object can be written to Json and then read back again successfully
900[info] Total for specification DaemonSetSpec
901[info] Finished in 11 ms
902[info] 1 example, 0 failure, 0 error
903[info] NodeAffinitySpec
904[info] This is a unit specification for the skuber formatter for k8s NodeAffinity.
905[info] + An Operator can be written to json and back in
906[info]
907[info] + A MatchExpression can be written to json and back in
908[info]
909[info] + A MatchExpressions can be written to json and back in
910[info]
911[info] + A NodeSelectorTerm can be written to json and back in
912[info]
913[info] + A NodeSelectorTerms can be written to json and back in
914[info]
915[info] + A RequiredDuringSchedulingIgnoredDuringExecution can be written to json and back in
916[info]
917[info] + A PreferredDuringSchedulingIgnoredDuringExecution can be written to json and back in
918[info]
919[info] Total for specification NodeAffinitySpec
920[info] Finished in 64 ms
921[info] 7 examples, 0 failure, 0 error
922[info] EndpointsFormatSpec
923[info] This is a unit specification for the skuber Endpoint related json formatter.
924[info] An Endpoints can be symmetrically written to json and the same value read back in
925[info] + this can be done for a Endpoints with just a single IP address/port
926[info] + this can be done for an Endpoints with a single subset containing two addresses
927[info] + this can be done for a more complex endppoints mapping
928[info] + an endpoints can be read from Json
929[info] Total for specification EndpointsFormatSpec
930[info] Finished in 80 ms
931[info] 4 examples, 0 failure, 0 error
932[INFO] [12/04/2025 15:16:19.136] [pool-19-thread-2-ScalaTest-running-ConfigurationSpec] [skuber.api] Using following context for connecting to Kubernetes cluster: Context(Cluster(v1,https://horse.org:4443,false,Some(Right([B@79bcd108)),Some(horse-cluster),None),CertAuth(clientCertificate=<PEM masked> clientKey=<PEM masked> userName= ),Namespace(Namespace,v1,ObjectMeta(chisel-ns,,,,,,None,None,None,Map(),Map(),List(),0,None,None),None,None))
933[info] BytesToWatchEventSourceSpec
934[info] + A single chunk containing a single Watch event can be read correctly
935[info] + A single chunk containing two Watch events can be enumerated correctly
936[info] + Two chunks containing two Watch events with one split across the chunks can be enumerated correctly
937[info] + Two chunks containing four Watch events, with a middle event split across the chunks, can be enumerated correctly
938[info] + Four chunks, each containing a Watch event terminated by a line feed, can be enumerated
939[info] Total for specification BytesToWatchEventSourceSpec
940[info] Finished in 116 ms
941[info] 5 examples, 0 failure, 0 error
942[info] PodDisruptionBudgetSpec
943[info] A PodDisruptionBudget can
944[info] + decoded from json
945[info] + encode to json
946[info] Total for specification PodDisruptionBudgetSpec
947[info] Finished in 37 ms
948[info] 2 examples, 0 failure, 0 error
949[info] NamespaceFormatSpec
950[info] This is a unit specification for the skuber formatter for k8s namespaces.
951[info] A Namespace can be symmetrically written to json and the same value read back in
952[info] + this can be done for the default namespace
953[info] + this can be done for a simple non-default namespace
954[info] + this can be done for a more complex non-default namespace with a Spec and Status
955[info] + namespace spec allows finalizers to be optional
956[info] + we can read a namespace from a direct JSON string
957[info] Total for specification NamespaceFormatSpec
958[info] Finished in 61 ms
959[info] 5 examples, 0 failure, 0 error
960[info] NodeFormatSpec
961[info] This is a unit specification for the skuber Node related json formatter.
962[info] A Node can be symmetrically written to json and the same value read back in
963[info] + this can be done for a simple Service with just a name
964[info] + this can be done for a simple Node with just a name and namespace set
965[info] + this can be done for a Node with a simple Spec
966[info] + this can be done for a Node with a more complex spec
967[info] + an example json formatted node can be read
968[info] + an example json formatted nodelist can be read
969[info] + a Kubernetes v1.8 minikube node can be read and written as json
970[info] Total for specification NodeFormatSpec
971[info] Finished in 128 ms
972[info] 7 examples, 0 failure, 0 error
973[info] VolumeReadWriteSpec
974[info] This is a unit specification for the skuber json readers and writers for types that have multiple choices e.g. Volumes have multiple choices of Source type.
975[info] A PersistentVolumeClaim spec can be symmetrically written to json and the same value read back in
976[info] + this can be done for the emptydir type source spec
977[info] + A PersistentVolume spec can be symmetrically written to json and the same value read back in
978[info]
979[info] + A PersistentVolume with unsupported volume type can be read as json using GenericVolumeSource
980[info] A Volume spec can be symmetrically written to json and the same value read back in
981[info] + this can be done for the emptydir type source spec
982[info] + this can be done for the a hostpath type source
983[info] + this can be done for the a secret type source spec
984[info] + this can be done in a generic way for unsupported source specs
985[info] + this can be done for the a git repo source spec
986[info] + this can be done for the DownwardAPIVolumeSource spec
987[info] + this can be done for the DownwardAPIVolumeSource spec with field selector apiVersion left at default
988[info] + this can be done for the a GCE Persistent Disk source spec
989[info] + this can be done for the a AWS EBS source spec
990[info] + this can be done for the a serialised RDB source spec
991[info] + a RDB volume spec can be deserialised straight from a JSON string
992[info] + an NFS volume spec can be written and read back in
993[info] + a Glusterfs volume spec can be written and read back in
994[info] + an ISCSI volume spec can be written and read back in
995[info] + a persistent claim spec can be written and read back in
996[info] Total for specification VolumeReadWriteSpec
997[info] Finished in 187 ms
998[info] 18 examples, 0 failure, 0 error
999[info] IngressSpec
1000[info] This is a unit specification for the skuber Ingress class. + An Ingress object can be written to Json and then read back again successfully
1001[info] + An Ingress object with empty Path can be read directly from a JSON string
1002[info] Total for specification IngressSpec
1003[info] Finished in 52 ms
1004[info] 2 examples, 0 failure, 0 error
1005[info] FileTokenAuthRefreshableSpec
1006[info] This is a specification for the 'FileTokenAuthRefreshable' classFileTokenAuthRefreshable should
1007[info] + Retrieve the token if none provided
1008[info] + Don't Refresh the token before the refresh interval
1009[info] + Refresh the token after the refresh interval
1010[info] Total for specification FileTokenAuthRefreshableSpec
1011[info] Finished in 1 second, 19 ms
1012[info] 3 examples, 0 failure, 0 error
1013[info] EnvVarSpec
1014[info] This is a unit specification for the skuber formatter for env vars.
1015[info] An EnvVar can be read from json
1016[info] + this can be done for an env var with a field ref with a field path
1017[info] Total for specification EnvVarSpec
1018[info] Finished in 31 ms
1019[info] 1 example, 0 failure, 0 error
1020[info] ReplicaSetSpec
1021[info] This is a unit specification for the skuber ReplicaSet class. + A ReplicaSet object properly writes with zero replicas
1022[info] Total for specification ReplicaSetSpec
1023[info] Finished in 51 ms
1024[info] 1 example, 0 failure, 0 error
1025[info] DeploymentSpec
1026[info] This is a unit specification for the skuber Deployment class. + A Deployment object can be constructed from a name and pod template spec
1027[info] + A Deployment object can be written to Json and then read back again successfully
1028[info] + A Deployment object properly writes with zero replicas
1029[info] + A Deployment object can be read directly from a JSON string
1030[info] Total for specification DeploymentSpec
1031[info] Finished in 43 ms
1032[info] 4 examples, 0 failure, 0 error
1033[info] FormatMaybeSpec
1034[info] + formatMaybeEmptyInt squashes zero but nothing else
1035[info] Total for specification FormatMaybeSpec
1036[info] Finished in 12 ms
1037[info] 1 example, 0 failure, 0 error
1038[info] SecretSpec
1039[info] + A Secret containing a byte array can symmetrically be written to json and the same value read back in
1040[info] + this can be done with an empty data map
1041[info] + this can be done with immutable defined
1042[info] + this can be done without immutable defined
1043[info] + this can be done with the type member defined
1044[info] Total for specification SecretSpec
1045[info] Finished in 50 ms
1046[info] 5 examples, 0 failure, 0 error
1047[info] HorizontalPodAutoscalerSpec
1048[info] A HorizontalPodAutoscaler can
1049[info] + decoded from json
1050[info] + encode to json
1051[info] Total for specification HorizontalPodAutoscalerSpec
1052[info] Finished in 25 ms
1053[info] 2 examples, 0 failure, 0 error
1054[info] HorizontalPodAutoscalerSpec
1055[info] A HorizontalPodAutoscaler can
1056[info] + decoded from json
1057[info] + encode to json
1058[info] Total for specification HorizontalPodAutoscalerSpec
1059[info] Finished in 63 ms
1060[info] 2 examples, 0 failure, 0 error
1061[info] IngressSpec
1062[info] This is a unit specification for the skuber Ingress class from v1 api version. + An Ingress object can be written to Json and then read back again successfully
1063[info] + An Ingress object with empty Path can be read directly from a JSON string
1064[info] Total for specification IngressSpec
1065[info] Finished in 22 ms
1066[info] 2 examples, 0 failure, 0 error
1067None[info] ScaleSpec
1068[info] This is a unit specification for the skuber Scale class. + A Scale object can be constructed from a name and replica count
1069[info] + A scale object can be written to Json and then read back again successfully
1070[info] + A scale object can be read directly from a JSON string
1071[info] + A scale object can contain NO replicas
1072[info] + A scale json with single key->value in status selector
1073[info] + A scale json with wrong spec status string should not produce errors
1074[info] Total for specification ScaleSpec
1075[info] Finished in 46 ms
1076[info] 6 examples, 0 failure, 0 error
1077[INFO] [12/04/2025 15:16:20.055] [pool-19-thread-2-ScalaTest-running-ConfigurationSpec] [skuber.api] Using following context for connecting to Kubernetes cluster: Context(Cluster(v1,https://horse.org:4443,false,Some(Right([B@2048f946)),Some(horse-cluster),None),CertAuth(clientCertificate=<PEM masked> clientKey=<PEM masked> userName= ),Namespace(Namespace,v1,ObjectMeta(chisel-ns,,,,,,None,None,None,Map(),Map(),List(),0,None,None),None,None))
1078....10Ei = 11529215046068469760
1079[ERROR] [12/04/2025 15:16:20.102] [specs2-4] [skuber.api] [JSON Parse Error] Failed to parse element: {"metadata_not_parsable_error_for_tests":{"name":"etcd-server-kubernetes-master","namespace":"kube-system","selfLink":"/api/v1/namespaces/kube-system/pods/etcd-server-kubernetes-master","uid":"5cc1fb77-48be-11e5-8b41-42010af0eb07","resourceVersion":"361","creationTimestamp":"2015-08-22T11:10:14Z","annotations":{"kubernetes.io/config.mirror":"mirror","kubernetes.io/config.seen":"2015-08-22T11:10:03.099745385Z","kubernetes.io/config.source":"file"}},"spec":{"volumes":[{"name":"varetcd","hostPath":{"path":"/mnt/master-pd/var/etcd"}},{"name":"varlogetcd","hostPath":{"path":"/var/log/etcd.log"}}],"containers":[{"name":"etcd-container","image":"gcr.io/google_containers/etcd:2.0.12","command":["/bin/sh","-c","/usr/local/bin/etcd --addr 127.0.0.1:4001 --bind-addr 127.0.0.1:4001 --data-dir /var/etcd/data 1>>/var/log/etcd.log 2>&1"],"ports":[{"name":"serverport","hostPort":2380,"containerPort":2380,"protocol":"TCP"},{"name":"clientport","hostPort":4001,"containerPort":4001,"protocol":"TCP"}],"resources":{"limits":{"cpu":"200m"}},"volumeMounts":[{"name":"varetcd","mountPath":"/var/etcd"},{"name":"varlogetcd","mountPath":"/var/log/etcd.log"}],"terminationMessagePath":"/dev/termination-log","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","dnsPolicy":"ClusterFirst","nodeName":"kubernetes-master","hostNetwork":true},"status":{"phase":"Running","conditions":[{"type":"Ready","status":"True"}],"hostIP":"10.240.235.7","podIP":"10.240.235.7","startTime":"2015-08-22T11:10:47Z","containerStatuses":[{"name":"etcd-container","state":{"running":{"startedAt":"2015-08-22T11:10:37Z"}},"lastState":{"terminated":{"exitCode":0,"startedAt":"2015-08-22T11:10:04Z","finishedAt":"2015-08-22T11:10:33Z","containerID":"docker://b74a594e7dc54499a7173f2ec5e5c0f73b8b9977f78aa2b0e78ade3a8f3dd78a"}},"ready":true,"restartCount":1,"image":"gcr.io/google_containers/etcd:2.0.12","imageID":"docker://fafe4735269937ef7ba1fa0badb66d7fd70736619862e3982144c59289fddb11","containerID":"docker://f76ec79bf5221ccc99be3dff6bf7cf8c75fedca5e18210c6150fff95d518620d"}]}}
1080[INFO] [12/04/2025 15:16:20.107] [pool-19-thread-2-ScalaTest-running-ConfigurationSpec] [skuber.api] Using following context for connecting to Kubernetes cluster: Context(Cluster(v1,https://horse.org:4443,false,Some(Right([B@55863ee8)),Some(horse-cluster),None),CertAuth(clientCertificate=<PEM masked> clientKey=<PEM masked> userName= ),Namespace(Namespace,v1,ObjectMeta(chisel-ns,,,,,,None,None,None,Map(),Map(),List(),0,None,None),None,None))
1081[ERROR] [12/04/2025 15:16:20.108] [specs2-4] [skuber.api] Details: /metadata: error.path.missing
1082[info] HPASSpec
1083[info] This is a unit specification for the skuber HorizontalPodAutoscaler class. A HPAS object can be constructed from the object it scales
1084[info] + A HPAS can be constructed from a replication controller
1085[info] + A HPAS object properly writes with zero minReplicas
1086[info] Total for specification HPASSpec
1087[info] Finished in 48 ms
1088[info] 2 examples, 0 failure, 0 error
1089[info] PodFormatSpec
1090[info] This is a unit specification for the skuber Pod related json formatter.
1091[info] A Pod can be symmetrically written to json and the same value read back in
1092[info] + this can be done for a simple Pod with just a name
1093[info] + this can be done for a simple Pod with just a name and namespace set
1094[info] + this can be done for a Pod with a simple, single container spec
1095[info] + this can be done for a Pod with a more complex spec
1096[info] + a quite complex pod can be read from json
1097[info] + a pod with nodeAffinity can be read and written as json
1098[info] + a pod with unsupported volume type can be read as json using GenericVolumeSource
1099[info] + NodeSelectorTerm be properly read and written as json
1100[info] + NodeSelectorTerm with no matchExpressions be properly read and written as json
1101[info] + NodeSelectorTerm with no matchFields be properly read and written as json
1102[info] + NodeSelectorTerm with empty be properly read and written as json
1103[info] + NodeAffinity be properly read and written as json
1104[info] + NodeAffinity without preferences be properly read and written as json
1105[info] + NodeAffinity without requirements be properly read and written as json
1106[info] + PodAffinity can be properly read and written as json
1107[info] + a complex podlist can be read and written as json
1108[info] + Pod SecurityContext with RuntimeDefault seccomp profile can be properly read and written as json
1109[info] + Pod SecurityContext with Localhost seccomp profile can be properly read and written as json
1110[info] + Pod SecurityContext with Unknown seccomp profile can be properly read and written as json
1111[info] + a statefulset with pod affinity/anti-affinity can be read and written as json successfully
1112[info] + a pod with a spec that sets many optional fields can be read and written as json successfully
1113[info] + read probe json - GRPC
1114[info] + a complex podlist can be read in case single element in the pod list is failed to parse
1115[info] Total for specification PodFormatSpec
1116[info] Finished in 566 ms
1117[info] 23 examples, 0 failure, 0 error
1118[info] ResourceSpec
1119[info] This is a unit specification for the skuber Resource model. A resource quantity can be constructed from decimal SI values
1120[info] + where a value of 100m equates to 0.1
1121[info] + where a value of 100k equates to 100000
1122[info] + where a value of 100M equates to 100000000
1123[info] + where a value of 100G equates to 100E+9
1124[info] + where a value of 100T equates to 100E+12
1125[info] + where a value of 100P equates to 100E+15
1126[info] + where a value of 100E equates to 100E+18
1127[info] A resource quantity can be constructed from values with scientific E notation
1128[info] + where a value of 0.01E+5 equates to 1000
1129[info] + where a value of 10010.56E-3 equates to 10.01056
1130[info] + where a value of 55.67e+6 equates to 55670000
1131[info] + where a value of 5e+3 equates to 5000
1132[info] + where a value of 67700e-33 equates to 67.700
1133[info] A resource quantity can be constructed from binary SI values
1134[info] + where a value of 100Ki equates to 102400
1135[info] + where a value of 10Mi equates to 10485760
1136[info] + where a value of 10Ti equates to 10 *(2 ^ 40)
1137[info] + where a value of 10Pi equates to 10 *(2 ^ 50)
1138[info] + where a value of 10Ei equates to 10 *(2 ^ 60)
1139[info] A resource quantity can be constructed for plain integer and decimal values with no suffixes
1140[info] + where a value of 10 is valid
1141[info] + where a value of -10 is valid
1142[info] + where a value of 10.55 is valid
1143[info] + where a value of -10.55 is valid
1144[info] A resource quantity will reject bad values
1145[info] + where constructing from a value of 10Zi results in an exception
1146[info] A resource quantity json formatter
1147[info] + where quantity json formatter should accpet different types
1148[info] Total for specification ResourceSpec
1149[info] Finished in 272 ms
1150[info] 23 examples, 0 failure, 0 error
1151[info] StatefulSetSpec
1152[info] This is a unit specification for the skuber apps/v1 StatefulSet class. + A StatefulSet object can be constructed from a name and pod template spec
1153[info] + A StatefulSet object can be written to Json and then read back again successfully
1154[info] + A StatefulSet object properly writes with zero replicas
1155[info] + A StatefulSet object can be read directly from a JSON string
1156[info] Total for specification StatefulSetSpec
1157[info] Finished in 38 ms
1158[info] 4 examples, 0 failure, 0 error
1159[info] ProbeFormatSpec
1160[info] This is a unit specification for the skuber Prob related json formatter.
1161[info] + read probe json - GRPC
1162[info] + read probe json - ExecCommand
1163[info] + read probe json - ExecCommand
1164[info] + read probe json - HTTPGetAction with integer port
1165[info] + read probe json - TCPSocketAction
1166[info] + read probe json - UnknownHandler fallback
1167[info] Total for specification ProbeFormatSpec
1168[info] Finished in 69 ms
1169[info] 6 examples, 0 failure, 0 error
1170[info] LabelSelectorSpec:
1171[info] label selector tests
1172[info] - A label selector can be constructed1
1173[info] - A label selector can be constructed2
1174[info] - A label selector can be constructed3
1175[info] - A label selector can be constructed4
1176[info] - A label selector can be constructed5
1177[info] - A label selector can be constructed6
1178[info] - A label selector can be constructed7
1179[info] ConfigurationSpec:
1180[info] Test kube config
1181[info] - An example kubeconfig file can be parsed correctly
1182[info] - Parse EC private keys from kubeconfig file
1183[info] - Parse RSA private keys from kubeconfig file
1184[info] - Parse PKCS#8 private keys from kubeconfig file
1185[info] - If kubeconfig is not found at expected path then a Failure is returned
1186[info] - if a relative path and directory are specified, then the parsed config must contain the fully expanded paths
1187[info] - Parse exec kubeconfig file
1188[info] LongPollingPoolSpec
1189[info] LongPollingPool should
1190[info] + create a http pool
1191[info] + create a https pool
1192[info] + handle unsupported scheme
1193[info] Total for specification LongPollingPoolSpec
1194[info] Finished in 410 ms
1195[info] 3 examples, 0 failure, 0 error
1196Starting build for ProjectRef(file:/build/repo/,examples) (skuber-examples)... [1/2]
1197Compile scalacOptions: -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1198[info] compiling 22 Scala sources to /build/repo/examples/target/scala-3.8.0-RC3/classes ...
1199[warn] there were 35 deprecation warnings; re-run with -deprecation for details
1200[warn] one warning found
1201[info] done compiling
1202
1203************************
1204Build summary:
1205[{
1206 "module": "skuber",
1207 "compile": {"status": "ok", "tookMs": 40775, "warnings": 4, "errors": 0, "sourceVersion": "3.8"},
1208 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1209 "test-compile": {"status": "ok", "tookMs": 9224, "warnings": 35, "errors": 0, "sourceVersion": "3.8"},
1210 "test": {"status": "ok", "tookMs": 4156, "passed": 199, "failed": 0, "ignored": 0, "skipped": 0, "total": 199, "byFramework": [{"framework": "specs2", "stats": {"passed": 185, "failed": 0, "ignored": 0, "skipped": 0, "total": 185}},{"framework": "unknown", "stats": {"passed": 14, "failed": 0, "ignored": 0, "skipped": 0, "total": 14}}]},
1211 "publish": {"status": "skipped", "tookMs": 0},
1212 "metadata": {
1213 "crossScalaVersions": ["2.12.13", "2.13.12", "3.3.1"]
1214}
1215},{
1216 "module": "skuber-examples",
1217 "compile": {"status": "ok", "tookMs": 3177, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1218 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1219 "test-compile": {"status": "ok", "tookMs": 177, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1220 "test": {"status": "ok", "tookMs": 169, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1221 "publish": {"status": "skipped", "tookMs": 0},
1222 "metadata": {
1223 "crossScalaVersions": ["2.12.13", "2.13.12", "3.3.1"]
1224}
1225}]
1226************************
1227[success] Total time: 67 s (0:01:07.0), completed Dec 4, 2025, 3:16:25 PM
1228[0JChecking patch project/plugins.sbt...
1229Checking patch project/build.properties...
1230Checking patch build.sbt...
1231Applied patch project/plugins.sbt cleanly.
1232Applied patch project/build.properties cleanly.
1233Applied patch build.sbt cleanly.