Build Logs

hagay3/skuber • 3.8.0-RC5:2025-12-31

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.599s.
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 31, 2025, 9:03:40 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/ext/ReplicaSet.scala]
175[info] [patched file /build/repo/client/src/main/scala/skuber/json/TolerantListJsonFormatters.scala]
176[info] [patched file /build/repo/client/src/main/scala/skuber/api/client/exec/PodExecImpl.scala]
177[info] [patched file /build/repo/client/src/main/scala/skuber/json/package.scala]
178[info] [patched file /build/repo/client/src/main/scala/skuber/CustomResource.scala]
179[info] [patched file /build/repo/client/src/main/scala/skuber/Pod.scala]
180[info] [patched file /build/repo/client/src/main/scala/skuber/api/Configuration.scala]
181[info] [patched file /build/repo/client/src/main/scala/skuber/autoscaling/v2beta1/HorizontalPodAutoscaler.scala]
182[info] [patched file /build/repo/client/src/main/scala/skuber/json/PlayJsonSupportForPekkoHttp.scala]
183[info] [patched file /build/repo/client/src/main/scala/skuber/api/watch/BytesToWatchEventSource.scala]
184[info] [patched file /build/repo/client/src/main/scala/skuber/api/client/KubernetesClient.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/apps/v1/ReplicaSet.scala]
187[info] [patched file /build/repo/client/src/main/scala/skuber/api/client/impl/KubernetesClientImpl.scala]
188[info] [patched file /build/repo/client/src/main/scala/skuber/networking/v1/Ingress.scala]
189[info] [patched file /build/repo/client/src/main/scala/skuber/Resource.scala]
190[info] [patched file /build/repo/client/src/main/scala/skuber/api/client/package.scala]
191[info] [patched file /build/repo/client/src/main/scala/skuber/autoscaling/v2/HorizontalPodAutoscaler.scala]
192[info] [patched file /build/repo/client/src/main/scala/skuber/annotation/NodeAffinity.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/model/LabelSelectorSpec.scala]
382[info] [patched file /build/repo/client/src/test/scala/skuber/api/BytesToWatchEventSourceSpec.scala]
383[info] [patched file /build/repo/client/src/test/scala/skuber/ext/DeploymentSpec.scala]
384[info] [patched file /build/repo/client/src/test/scala/skuber/autoscaling/v2beta1/HorizontalPodAutoscalerSpec.scala]
385[info] [patched file /build/repo/client/src/test/scala/skuber/json/PodFormatSpec.scala]
386[info] [patched file /build/repo/client/src/test/scala/skuber/api/ListQueryParamSpec.scala]
387[info] [patched file /build/repo/client/src/test/scala/skuber/apps/DeploymentSpec.scala]
388[info] [patched file /build/repo/client/src/test/scala/skuber/autoscaling/v2/HorizontalPodAutoscalerSpec.scala]
389[info] [patched file /build/repo/client/src/test/scala/skuber/json/EnumTest.scala]
390[info] [patched file /build/repo/client/src/test/scala/skuber/json/NamespaceFormatSpec.scala]
391[info] [patched file /build/repo/client/src/test/scala/skuber/apps/v1/StatefulSetSpec.scala]
392[info] [patched file /build/repo/client/src/test/scala/skuber/network/NetworkPolicySpec.scala]
393[info] [patched file /build/repo/client/src/test/scala/skuber/apps/v1/DeploymentSpec.scala]
394[info] [patched file /build/repo/client/src/test/scala/skuber/apps/StatefulSetSpec.scala]
395[info] [patched file /build/repo/client/src/test/scala/skuber/policy/v1beta1/PodDisruptionBudgetSpec.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/customresources/v1beta1/CreateCRD.scala]
429[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/ingress/NginxIngress.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/argo/EventBusExample.scala]
432[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/scale/ScaleExamples.scala]
433[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/guestbook/GuestbookActor.scala]
434[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/patch/PatchExamples.scala]
435[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/auth/InClusterConfigurationExample.scala]
436[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/fluent/FluentExamples.scala]
437[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/deployment/DeploymentExamples.scala]
438[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/auth/AwsAuthExample.scala]
439[info] [patched file /build/repo/examples/src/main/scala/skuber/examples/guestbook/KubernetesProxyActor.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": 40250, "warnings": 4, "errors": 0, "sourceVersion": "3.7-migration"},
453 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
454 "test-compile": {"status": "ok", "tookMs": 20219, "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": 2277, "warnings": 0, "errors": 0, "sourceVersion": "3.7-migration"},
463 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
464 "test-compile": {"status": "ok", "tookMs": 2236, "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: 74 s (0:01:14.0), completed Dec 31, 2025, 9:04:53 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 a11b556] 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-RC5
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-RC5"
497Successfully applied pattern 'val scala3Version = "3.3.1"' in build.sbt
498----
499Starting build for 3.8.0-RC5
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-RC5
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-RC5
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-RC5"
528"++3.8.0-RC5 -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-RC5 """{"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-RC5
556OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in skuber/crossScalaVersions
557OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 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-RC5 on 2 projects.
561[info] Switching Scala version on:
562[info] skuber (2.12.13, 2.13.12, 3.8.0-RC5)
563[info] examples (2.12.13, 2.13.12, 3.8.0-RC5)
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 31, 2025, 9:05:09 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-RC5/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-RC5/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{"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"}}}}
788[info] DaemonSetSpec
789[info] + A DaemonSet Object can be written to Json and then read back again successfully
790[info] Total for specification DaemonSetSpec
791[info] Finished in 126 ms
792[info] 1 example, 0 failure, 0 error
793[info] IngressSpec
794[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
795[info] + An Ingress object with empty Path can be read directly from a JSON string
796[info] Total for specification IngressSpec
797[info] Finished in 158 ms
798[info] 2 examples, 0 failure, 0 error
799[info] HPASSpec
800[info] This is a unit specification for the skuber HorizontalPodAutoscaler class. A HPAS object can be constructed from the object it scales
801[info] + A HPAS can be constructed from a replication controller
802[info] + A HPAS object properly writes with zero minReplicas
803[info] Total for specification HPASSpec
804[info] Finished in 187 ms
805[info] 2 examples, 0 failure, 0 error
806[info] DeploymentSpec
807[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
808[info] + A Deployment object can be written to Json and then read back again successfully
809[info] + A Deployment object properly writes with zero replicas
810[info] + A Deployment object can be read directly from a JSON string
811[info] Total for specification DeploymentSpec
812[info] Finished in 161 ms
813[info] 4 examples, 0 failure, 0 error
814[info] StatefulSetSpec
815[info] This is a unit specification for the skuber StatefulSet class. + A StatefulSet object can be constructed from a name and pod template spec
816[info] + A StatefulSet object can be written to Json and then read back again successfully
817[info] + A StatefulSet object properly writes with zero replicas
818[info] + A StatefulSet object can be read directly from a JSON string
819[info] Total for specification StatefulSetSpec
820[info] Finished in 204 ms
821[info] 4 examples, 0 failure, 0 error
822[info] HorizontalPodAutoscalerSpec
823[info] A HorizontalPodAutoscaler can
824[info] + decoded from json
825[info] + encode to json
826[info] Total for specification HorizontalPodAutoscalerSpec
827[info] Finished in 54 ms
828[info] 2 examples, 0 failure, 0 error
829[info] ServiceReadsWritesSpec
830[info] This is a unit specification for the skuber Service related json formatter.
831[info] A Service can be symmetrically written to json and the same value read back in
832[info] + this can be done for a simple Service with just a name
833[info] + this can be done for a simple Service with just a name and namespace set
834[info] + this can be done for a Service with a simple, single port spec
835[info] + this can be done for a Service with a more complex spec
836[info] + a service can be read from Json
837[info] Total for specification ServiceReadsWritesSpec
838[info] Finished in 100 ms
839[info] 5 examples, 0 failure, 0 error
840[info] PodPresetFormatSpec
841[info] This is a unit specification for the skuber PodPreset related json formatter.
842[info] + a podpreset can be read and written as json successfully
843[info] Total for specification PodPresetFormatSpec
844[info] Finished in 46 ms
845[info] 1 example, 0 failure, 0 error
846[info] JobSpec
847[info] This is a unit specification for the skuber Job class. + A Job object can be constructed from a name and a pod template
848[info] + A Job object can be constructed with fluent API
849[info] + A Job object can be written to Json and then read back again successfully
850[info] + A Job object can be read directly from a JSON string
851[info] Total for specification JobSpec
852[info] Finished in 60 ms
853[info] 4 examples, 0 failure, 0 error
854[info] ListQueryParamSpec
855[info] + LabelSelector string representations equate to the associated labelSelector query param values
856[info] Total for specification ListQueryParamSpec
857[info] Finished in 11 ms
858[info] 1 example, 0 failure, 0 error
859[info] FileTokenAuthRefreshableSpec
860[info] This is a specification for the 'FileTokenAuthRefreshable' classFileTokenAuthRefreshable should
861[info] + Retrieve the token if none provided
862[info] + Don't Refresh the token before the refresh interval
863[info] + Refresh the token after the refresh interval
864[info] Total for specification FileTokenAuthRefreshableSpec
865[info] Finished in 1 second, 28 ms
866[info] 3 examples, 0 failure, 0 error
867[info] SecretSpec
868[info] + A Secret containing a byte array can symmetrically be written to json and the same value read back in
869[info] + this can be done with an empty data map
870[info] + this can be done with immutable defined
871[info] + this can be done without immutable defined
872[info] + this can be done with the type member defined
873[info] Total for specification SecretSpec
874[info] Finished in 89 ms
875[info] 5 examples, 0 failure, 0 error
876[info] HorizontalPodAutoscalerSpec
877[info] A HorizontalPodAutoscaler can
878[info] + decoded from json
879[info] + encode to json
880[info] Total for specification HorizontalPodAutoscalerSpec
881[info] Finished in 259 ms
882[info] 2 examples, 0 failure, 0 error
883None[info] IngressSpec
884[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
885[info] + An Ingress object with empty Path can be read directly from a JSON string
886[info] Total for specification IngressSpec
887[info] Finished in 59 ms
888[info] 2 examples, 0 failure, 0 error
889[info] BytesToWatchEventSourceSpec
890[info] + A single chunk containing a single Watch event can be read correctly
891[info] + A single chunk containing two Watch events can be enumerated correctly
892[info] + Two chunks containing two Watch events with one split across the chunks can be enumerated correctly
893[info] + Two chunks containing four Watch events, with a middle event split across the chunks, can be enumerated correctly
894[info] + Four chunks, each containing a Watch event terminated by a line feed, can be enumerated
895[info] Total for specification BytesToWatchEventSourceSpec
896[info] Finished in 136 ms
897[info] 5 examples, 0 failure, 0 error
898[info] ReplicaSetSpec
899[info] This is a unit specification for the skuber ReplicaSet class. + A ReplicaSet object properly writes with zero replicas
900[info] Total for specification ReplicaSetSpec
901[info] Finished in 24 ms
902[info] 1 example, 0 failure, 0 error
903[ERROR] [12/31/2025 21:06:06.637] [specs2-2] [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"}]}}
904[ERROR] [12/31/2025 21:06:06.638] [specs2-2] [skuber.api] Details: /metadata: error.path.missing
905[INFO] [12/31/2025 21:06:06.651] [pool-19-thread-7-ScalaTest-running-ConfigurationSpec] [skuber.api] Using following context for connecting to Kubernetes cluster: Context(Cluster(v1,https://horse.org:4443,false,Some(Right([B@afa3db9)),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))
906[info] PodFormatSpec
907[info] This is a unit specification for the skuber Pod related json formatter.
908[info] A Pod can be symmetrically written to json and the same value read back in
909[info] + this can be done for a simple Pod with just a name
910[info] + this can be done for a simple Pod with just a name and namespace set
911[info] + this can be done for a Pod with a simple, single container spec
912[info] + this can be done for a Pod with a more complex spec
913[info] + a quite complex pod can be read from json
914[info] + a pod with nodeAffinity can be read and written as json
915[info] + a pod with unsupported volume type can be read as json using GenericVolumeSource
916[info] + NodeSelectorTerm be properly read and written as json
917[info] + NodeSelectorTerm with no matchExpressions be properly read and written as json
918[info] + NodeSelectorTerm with no matchFields be properly read and written as json
919[info] + NodeSelectorTerm with empty be properly read and written as json
920[info] + NodeAffinity be properly read and written as json
921[info] + NodeAffinity without preferences be properly read and written as json
922[info] + NodeAffinity without requirements be properly read and written as json
923[info] + PodAffinity can be properly read and written as json
924[info] + a complex podlist can be read and written as json
925[info] + Pod SecurityContext with RuntimeDefault seccomp profile can be properly read and written as json
926[info] + Pod SecurityContext with Localhost seccomp profile can be properly read and written as json
927[info] + Pod SecurityContext with Unknown seccomp profile can be properly read and written as json
928[info] + a statefulset with pod affinity/anti-affinity can be read and written as json successfully
929[info] + a pod with a spec that sets many optional fields can be read and written as json successfully
930[info] + read probe json - GRPC
931[info] + a complex podlist can be read in case single element in the pod list is failed to parse
932[info] Total for specification PodFormatSpec
933[info] Finished in 857 ms
934[info] 23 examples, 0 failure, 0 error
935[info] ReplicationControllerFormatSpec
936[info] This is a unit specification for the skuber Service related json formatter.
937[info] A Replication Controller can be symmetrically written to json and the same value read back in
938[info] + this can be done for a simple controller with just a name
939[info] + this can be done for a simple controller with just a name and namespace set
940[info] + this can be done for a controller with a spec for replicating a pod with a single container
941[info] + a replication controller can be read from Json
942[info] Total for specification ReplicationControllerFormatSpec
943[info] Finished in 98 ms
944[info] 4 examples, 0 failure, 0 error
945[info] NodeFormatSpec
946[info] This is a unit specification for the skuber Node related json formatter.
947[info] A Node can be symmetrically written to json and the same value read back in
948[info] + this can be done for a simple Service with just a name
949[info] + this can be done for a simple Node with just a name and namespace set
950[info] + this can be done for a Node with a simple Spec
951[info] + this can be done for a Node with a more complex spec
952[info] + an example json formatted node can be read
953[info] + an example json formatted nodelist can be read
954[info] + a Kubernetes v1.8 minikube node can be read and written as json
955[info] Total for specification NodeFormatSpec
956[info] Finished in 136 ms
957[info] 7 examples, 0 failure, 0 error
958[info] EndpointsFormatSpec
959[info] This is a unit specification for the skuber Endpoint related json formatter.
960[info] An Endpoints can be symmetrically written to json and the same value read back in
961[info] + this can be done for a Endpoints with just a single IP address/port
962[info] + this can be done for an Endpoints with a single subset containing two addresses
963[info] + this can be done for a more complex endppoints mapping
964[info] + an endpoints can be read from Json
965[info] Total for specification EndpointsFormatSpec
966[info] Finished in 68 ms
967[info] 4 examples, 0 failure, 0 error
968[info] EnvVarSpec
969[info] This is a unit specification for the skuber formatter for env vars.
970[info] An EnvVar can be read from json
971[info] + this can be done for an env var with a field ref with a field path
972[info] Total for specification EnvVarSpec
973[info] Finished in 32 ms
974[info] 1 example, 0 failure, 0 error
975[info] ProbeFormatSpec
976[info] This is a unit specification for the skuber Prob related json formatter.
977[info] + read probe json - GRPC
978[info] + read probe json - ExecCommand
979[info] + read probe json - ExecCommand
980[info] + read probe json - HTTPGetAction with integer port
981[info] + read probe json - TCPSocketAction
982[info] + read probe json - UnknownHandler fallback
983[info] Total for specification ProbeFormatSpec
984[info] Finished in 51 ms
985[info] 6 examples, 0 failure, 0 error
986[info] NamespaceFormatSpec
987[info] This is a unit specification for the skuber formatter for k8s namespaces.
988[info] A Namespace can be symmetrically written to json and the same value read back in
989[info] + this can be done for the default namespace
990[info] + this can be done for a simple non-default namespace
991[info] + this can be done for a more complex non-default namespace with a Spec and Status
992[info] + namespace spec allows finalizers to be optional
993[info] + we can read a namespace from a direct JSON string
994[info] Total for specification NamespaceFormatSpec
995[info] Finished in 70 ms
996[info] 5 examples, 0 failure, 0 error
997[info] FormatMaybeSpec
998[info] + formatMaybeEmptyInt squashes zero but nothing else
999[info] Total for specification FormatMaybeSpec
1000[info] Finished in 14 ms
1001[info] 1 example, 0 failure, 0 error
1002[info] AuthSpec
1003[info] This is a unit specification for the auth data model. + Auth toString works when empty
1004[info] + CertAuth toString masks cert, key but not user
1005[info] + CertAuth toString doesn't mask username, certPath, keyPath
1006[info] + TokenAuth toString masks token
1007[info] + GcpAuth toString masks accessToken
1008[info] NetworkPolicySpec
1009[info] + OidcAuth toString masks idToken
1010[info] This is a unit specification for the skuber NetworkPolicy class. + A NetworkPolicy object can be written to Json and read back again
1011[info] Total for specification AuthSpec
1012[info] Total for specification NetworkPolicySpec
1013[info] Finished in 53 ms
1014[info] 6 examples, 0 failure, 0 error
1015[info] Finished in 13 ms
1016[info] 1 example, 0 failure, 0 error
1017[info] PodDisruptionBudgetSpec
1018[info] A PodDisruptionBudget can
1019[info] + decoded from json
1020[info] + encode to json
1021[info] Total for specification PodDisruptionBudgetSpec
1022[info] Finished in 31 ms
1023[info] 2 examples, 0 failure, 0 error
1024[info] NodeAffinitySpec
1025[info] This is a unit specification for the skuber formatter for k8s NodeAffinity.
1026[info] + An Operator can be written to json and back in
1027[info]
1028[info] + A MatchExpression can be written to json and back in
1029[info]
1030[info] + A MatchExpressions can be written to json and back in
1031[info]
1032[info] + A NodeSelectorTerm can be written to json and back in
1033[info]
1034[info] + A NodeSelectorTerms can be written to json and back in
1035[info]
1036[info] + A RequiredDuringSchedulingIgnoredDuringExecution can be written to json and back in
1037[info]
1038[info] + A PreferredDuringSchedulingIgnoredDuringExecution can be written to json and back in
1039[info]
1040[info] Total for specification NodeAffinitySpec
1041[info] Finished in 56 ms
1042[info] 7 examples, 0 failure, 0 error
1043[info] ModelSpec
1044[info] This is a unit specification for the skuber data model. A Pods type can be constructed from lists of Pods
1045[info] + where an empty list of pods can be used
1046[info] + where a list with a single pod can be used
1047[info] A ReplicationControllers type can be constructed from a list of ReplicationController (a.k.a. RC)
1048[info] + where an empty list of RCs can be used
1049[info] + where a list with a single RC can be used
1050[info] Total for specification ModelSpec
1051[info] Finished in 62 ms
1052[info] 4 examples, 0 failure, 0 error
1053[info] DeploymentSpec
1054[info] This is a unit specification for the skuber Deployment class. + A Deployment object can be constructed from a name and pod template spec
1055[info] + A Deployment object can be written to Json and then read back again successfully
1056[info] + A Deployment object properly writes with zero replicas
1057[info] + A Deployment object can be read directly from a JSON string
1058[info] Total for specification DeploymentSpec
1059[info] Finished in 36 ms
1060[info] 4 examples, 0 failure, 0 error
1061[info] ScaleSpec
1062[info] This is a unit specification for the skuber Scale class. + A Scale object can be constructed from a name and replica count
1063[info] + A scale object can be written to Json and then read back again successfully
1064[info] + A scale object can be read directly from a JSON string
1065[info] + A scale object can contain NO replicas
1066[info] + A scale json with single key->value in status selector
1067[info] + A scale json with wrong spec status string should not produce errors
1068[info] Total for specification ScaleSpec
1069[info] Finished in 60 ms
1070[info] 6 examples, 0 failure, 0 error
1071[info] DeploymentSpec
1072[info] This is a unit specification for the skuber Deployment class. + A Deployment object can be constructed from a name and pod template spec
1073[info] + A Deployment object can be written to Json and then read back again successfully
1074[info] + A Deployment object properly writes with zero replicas
1075[info] + A Deployment object can be read directly from a JSON string
1076[info] Total for specification DeploymentSpec
1077[info] Finished in 28 ms
1078[info] 4 examples, 0 failure, 0 error
1079[info] EnumTest
1080[info] Test enum formatters
1081[info] Test enum formatters suite
1082[info] + Convert json to enum object
1083[info] + Test default enum formatter
1084[info] + Test enum formatter with json path
1085[info] + Test enum formatter with none value and also default value
1086[info] + Test enum formatter with wrong enum value -> fallback to None
1087[info] Total for specification EnumTest
1088[info] Finished in 78 ms
1089[info] 5 examples, 0 failure, 0 error
1090[info] StatefulSetSpec
1091[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
1092[info] + A StatefulSet object can be written to Json and then read back again successfully
1093[info] + A StatefulSet object properly writes with zero replicas
1094[info] + A StatefulSet object can be read directly from a JSON string
1095[info] Total for specification StatefulSetSpec
1096[info] Finished in 57 ms
1097[info] 4 examples, 0 failure, 0 error
1098[INFO] [12/31/2025 21:06:07.570] [pool-19-thread-7-ScalaTest-running-ConfigurationSpec] [skuber.api] Using following context for connecting to Kubernetes cluster: Context(Cluster(v1,https://horse.org:4443,false,Some(Right([B@3c31221)),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))
1099....10Ei = 11529215046068469760
1100[INFO] [12/31/2025 21:06:07.622] [pool-19-thread-7-ScalaTest-running-ConfigurationSpec] [skuber.api] Using following context for connecting to Kubernetes cluster: Context(Cluster(v1,https://horse.org:4443,false,Some(Right([B@26648ab3)),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))
1101[info] VolumeReadWriteSpec
1102[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.
1103[info] A PersistentVolumeClaim spec can be symmetrically written to json and the same value read back in
1104[info] + this can be done for the emptydir type source spec
1105[info] + A PersistentVolume spec can be symmetrically written to json and the same value read back in
1106[info]
1107[info] + A PersistentVolume with unsupported volume type can be read as json using GenericVolumeSource
1108[info] A Volume spec can be symmetrically written to json and the same value read back in
1109[info] + this can be done for the emptydir type source spec
1110[info] + this can be done for the a hostpath type source
1111[info] + this can be done for the a secret type source spec
1112[info] + this can be done in a generic way for unsupported source specs
1113[info] + this can be done for the a git repo source spec
1114[info] + this can be done for the DownwardAPIVolumeSource spec
1115[info] + this can be done for the DownwardAPIVolumeSource spec with field selector apiVersion left at default
1116[info] + this can be done for the a GCE Persistent Disk source spec
1117[info] + this can be done for the a AWS EBS source spec
1118[info] + this can be done for the a serialised RDB source spec
1119[info] + a RDB volume spec can be deserialised straight from a JSON string
1120[info] + an NFS volume spec can be written and read back in
1121[info] + a Glusterfs volume spec can be written and read back in
1122[info] + an ISCSI volume spec can be written and read back in
1123[info] + a persistent claim spec can be written and read back in
1124[info] Total for specification VolumeReadWriteSpec
1125[info] Finished in 205 ms
1126[info] 18 examples, 0 failure, 0 error
1127[info] ResourceSpec
1128[info] This is a unit specification for the skuber Resource model. A resource quantity can be constructed from decimal SI values
1129[info] + where a value of 100m equates to 0.1
1130[info] + where a value of 100k equates to 100000
1131[info] + where a value of 100M equates to 100000000
1132[info] + where a value of 100G equates to 100E+9
1133[info] + where a value of 100T equates to 100E+12
1134[info] + where a value of 100P equates to 100E+15
1135[info] + where a value of 100E equates to 100E+18
1136[info] A resource quantity can be constructed from values with scientific E notation
1137[info] + where a value of 0.01E+5 equates to 1000
1138[info] + where a value of 10010.56E-3 equates to 10.01056
1139[info] + where a value of 55.67e+6 equates to 55670000
1140[info] + where a value of 5e+3 equates to 5000
1141[info] + where a value of 67700e-33 equates to 67.700
1142[info] A resource quantity can be constructed from binary SI values
1143[info] + where a value of 100Ki equates to 102400
1144[info] + where a value of 10Mi equates to 10485760
1145[info] + where a value of 10Ti equates to 10 *(2 ^ 40)
1146[info] + where a value of 10Pi equates to 10 *(2 ^ 50)
1147[info] + where a value of 10Ei equates to 10 *(2 ^ 60)
1148[info] A resource quantity can be constructed for plain integer and decimal values with no suffixes
1149[info] + where a value of 10 is valid
1150[info] + where a value of -10 is valid
1151[info] + where a value of 10.55 is valid
1152[info] + where a value of -10.55 is valid
1153[info] A resource quantity will reject bad values
1154[info] + where constructing from a value of 10Zi results in an exception
1155[info] A resource quantity json formatter
1156[info] + where quantity json formatter should accpet different types
1157[info] Total for specification ResourceSpec
1158[info] Finished in 378 ms
1159[info] 23 examples, 0 failure, 0 error
1160[info] SkuberConfigSpec
1161[info] This is a specification for the 'SkuberConfigSpec' classSkuberConfig should
1162[info] in-cluster should
1163[info] + refresh token interval defaults to 5 min if no configuration provided
1164[info] + refresh token interval value provided by the configuration
1165[info] watch-continuously should
1166[info] + defaults are provided
1167[info] Total for specification SkuberConfigSpec
1168[info] Finished in 43 ms
1169[info] 3 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 838 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-RC5/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": 41357, "warnings": 4, "errors": 0, "sourceVersion": "3.8"},
1208 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1209 "test-compile": {"status": "ok", "tookMs": 9983, "warnings": 35, "errors": 0, "sourceVersion": "3.8"},
1210 "test": {"status": "ok", "tookMs": 4716, "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": 3196, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1218 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1219 "test-compile": {"status": "ok", "tookMs": 227, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1220 "test": {"status": "ok", "tookMs": 167, "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: 64 s (0:01:04.0), completed Dec 31, 2025, 9:06:13 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.