Build Logs
zio/zio-cli • 3.8.0-RC2:2025-11-28
Errors
0
Warnings
82
Total Lines
1435
1##################################
2Clonning https://github.com/zio/zio-cli.git into /build/repo using revision v0.7.4
3##################################
4Note: switching to '407a3c8503de759a32215cb3488b709bf69c7c80'.
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.7
22----
23Preparing build for 3.8.0-RC2
24Scala binary version found: 3.8
25Implicitly using source version 3.8
26Scala binary version found: 3.8
27Implicitly using source version 3.8
28Would try to apply common scalacOption (best-effort, sbt/mill only):
29Append: ,REQUIRE:-source:3.8
30Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
31
32Try apply source patch:
33Path: project/BuildHelper.scala
34Pattern: val Scala3 = "3.3.7"
35Replacement: val Scala3 = "3.8.0-RC2"
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (21))
38Compiled project (Scala 3.7.3, JVM (21))
39Successfully applied pattern 'val Scala3 = "3.3.7"' in project/BuildHelper.scala
40----
41Starting build for 3.8.0-RC2
42Execute tests: true
43sbt project found:
44No prepare script found for project zio/zio-cli
45##################################
46Scala version: 3.8.0-RC2
47Targets: dev.zio%examples dev.zio%zio-cli dev.zio%zio-cli-testkit
48Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"project/BuildHelper.scala","pattern":"val Scala3 = \"3.3.7\"","replaceWith":"val Scala3 = \"<SCALA_VERSION>\""}]}
49##################################
50Using extra scalacOptions: ,REQUIRE:-source:3.8
51Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
52[sbt_options] declare -a sbt_options=()
53[process_args] java_version = '21'
54[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21/rt.jar'
55# Executing command line:
56java
57-Dcats.effect.stackTracingMode=full
58-Dfile.encoding=UTF8
59-Xms256M
60-Xmx6G
61-XX:+UseG1GC
62-Dcommunitybuild.scala=3.8.0-RC2
63-Dcommunitybuild.project.dependencies.add=
64-Xmx7G
65-Xms4G
66-Xss8M
67-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
68-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21
69-jar
70/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
71"setCrossScalaVersions 3.8.0-RC2"
72"++3.8.0-RC2 -v"
73"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
74"set every credentials := Nil"
75"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
76"removeScalacOptionsStartingWith -P:wartremover"
77
78moduleMappings
79"runBuild 3.8.0-RC2 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"project/BuildHelper.scala","pattern":"val Scala3 = \"3.3.7\"","replaceWith":"val Scala3 = \"<SCALA_VERSION>\""}]}""" dev.zio%examples dev.zio%zio-cli dev.zio%zio-cli-testkit"
80
81[info] [launcher] getting org.scala-sbt sbt 1.11.7 (this may take some time)...
82[info] welcome to sbt 1.11.7 (Eclipse Adoptium Java 21)
83[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
84[info] loading project definition from /build/repo/project
85[info] compiling 3 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
86[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
87[info] Compilation completed in 9.47s.
88[info] done compiling
89[info] loading settings for project root from build.sbt...
90[info] resolving key references (14848 settings) ...
91[info] set current project to root (in build file:/build/repo/)
92[warn] there are 27 keys that are not used by any other settings/tasks:
93[warn]
94[warn] * examplesJS / buildInfoKeys
95[warn] +- /build/repo/project/BuildHelper.scala:19
96[warn] * examplesJS / buildInfoObject
97[warn] +- /build/repo/project/BuildHelper.scala:21
98[warn] * examplesJS / buildInfoPackage
99[warn] +- /build/repo/project/BuildHelper.scala:20
100[warn] * examplesJVM / buildInfoKeys
101[warn] +- /build/repo/project/BuildHelper.scala:19
102[warn] * examplesJVM / buildInfoObject
103[warn] +- /build/repo/project/BuildHelper.scala:21
104[warn] * examplesJVM / buildInfoPackage
105[warn] +- /build/repo/project/BuildHelper.scala:20
106[warn] * examplesNative / buildInfoKeys
107[warn] +- /build/repo/project/BuildHelper.scala:19
108[warn] * examplesNative / buildInfoObject
109[warn] +- /build/repo/project/BuildHelper.scala:21
110[warn] * examplesNative / buildInfoPackage
111[warn] +- /build/repo/project/BuildHelper.scala:20
112[warn] * testkitJS / buildInfoKeys
113[warn] +- /build/repo/project/BuildHelper.scala:19
114[warn] * testkitJS / buildInfoObject
115[warn] +- /build/repo/project/BuildHelper.scala:21
116[warn] * testkitJS / buildInfoPackage
117[warn] +- /build/repo/project/BuildHelper.scala:20
118[warn] * testkitJVM / buildInfoKeys
119[warn] +- /build/repo/project/BuildHelper.scala:19
120[warn] * testkitJVM / buildInfoObject
121[warn] +- /build/repo/project/BuildHelper.scala:21
122[warn] * testkitJVM / buildInfoPackage
123[warn] +- /build/repo/project/BuildHelper.scala:20
124[warn] * testkitNative / buildInfoKeys
125[warn] +- /build/repo/project/BuildHelper.scala:19
126[warn] * testkitNative / buildInfoObject
127[warn] +- /build/repo/project/BuildHelper.scala:21
128[warn] * testkitNative / buildInfoPackage
129[warn] +- /build/repo/project/BuildHelper.scala:20
130[warn] * zioCliJS / buildInfoKeys
131[warn] +- /build/repo/project/BuildHelper.scala:19
132[warn] * zioCliJS / buildInfoObject
133[warn] +- /build/repo/project/BuildHelper.scala:21
134[warn] * zioCliJS / buildInfoPackage
135[warn] +- /build/repo/project/BuildHelper.scala:20
136[warn] * zioCliJVM / buildInfoKeys
137[warn] +- /build/repo/project/BuildHelper.scala:19
138[warn] * zioCliJVM / buildInfoObject
139[warn] +- /build/repo/project/BuildHelper.scala:21
140[warn] * zioCliJVM / buildInfoPackage
141[warn] +- /build/repo/project/BuildHelper.scala:20
142[warn] * zioCliNative / buildInfoKeys
143[warn] +- /build/repo/project/BuildHelper.scala:19
144[warn] * zioCliNative / buildInfoObject
145[warn] +- /build/repo/project/BuildHelper.scala:21
146[warn] * zioCliNative / buildInfoPackage
147[warn] +- /build/repo/project/BuildHelper.scala:20
148[warn]
149[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
150[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
151Execute setCrossScalaVersions: 3.8.0-RC2
152OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in testkitJS/crossScalaVersions
153OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in examplesJVM/crossScalaVersions
154OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in examplesJS/crossScalaVersions
155OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in zioCliJS/crossScalaVersions
156OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in zioCliNative/crossScalaVersions
157OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in testkitJVM/crossScalaVersions
158OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in testkitNative/crossScalaVersions
159OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in zioCliJVM/crossScalaVersions
160OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in examplesNative/crossScalaVersions
161OpenCB::Limitting incorrect crossVersions List() -> List(2.13.17) in root/crossScalaVersions
162[info] set current project to root (in build file:/build/repo/)
163[info] Setting Scala version to 3.8.0-RC2 on 9 projects.
164[info] Switching Scala version on:
165[info] examplesNative (2.12.20, 2.13.17, 3.8.0-RC2)
166[info] zioCliJS (2.12.20, 2.13.17, 3.8.0-RC2)
167[info] testkitNative (2.12.20, 2.13.17, 3.8.0-RC2)
168[info] zioCliNative (2.12.20, 2.13.17, 3.8.0-RC2)
169[info] testkitJS (2.12.20, 2.13.17, 3.8.0-RC2)
170[info] zioCliJVM (2.12.20, 2.13.17, 3.8.0-RC2)
171[info] examplesJS (2.12.20, 2.13.17, 3.8.0-RC2)
172[info] examplesJVM (2.12.20, 2.13.17, 3.8.0-RC2)
173[info] testkitJVM (2.12.20, 2.13.17, 3.8.0-RC2)
174[info] Excluding projects:
175[info] * root (2.13.17)
176[info] docs (2.13.17)
177[info] sbtZioCli (2.12.20)
178[info] Reapplying settings...
179[info] set current project to root (in build file:/build/repo/)
180Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
181[info] Reapplying settings...
182[info] set current project to root (in build file:/build/repo/)
183[info] Defining Global / credentials, credentials and 10 others.
184[info] The new values will be used by Compile / scalafmtOnly, Global / pgpSelectPassphrase and 96 others.
185[info] Run `last` for details.
186[info] Reapplying settings...
187[info] set current project to root (in build file:/build/repo/)
188Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
189[info] Reapplying settings...
190OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
191
192 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
193 Did you mean sbtZioCli / allExcludeDependencies ?
194 , retry without global scopes
195[info] Reapplying settings...
196[info] set current project to root (in build file:/build/repo/)
197Execute removeScalacOptionsStartingWith: -P:wartremover
198[info] Reapplying settings...
199[info] set current project to root (in build file:/build/repo/)
200[success] Total time: 0 s, completed Nov 28, 2025, 12:44:41 PM
201Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"project/BuildHelper.scala","pattern":"val Scala3 = \"3.3.7\"","replaceWith":"val Scala3 = \"<SCALA_VERSION>\""}]}
202Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
203Starting build...
204Projects: Set(examplesJVM, zioCliJVM, testkitJVM)
205Starting build for ProjectRef(file:/build/repo/,examplesJVM) (examples)... [0/3]
206OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
207OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
208OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
209Compile scalacOptions: -encoding, UTF-8, -unchecked, -noindent, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
210[info] compiling 48 Scala sources to /build/repo/zio-cli/jvm/target/scala-3.8.0-RC2/classes ...
211[warn] -- Warning: /build/repo/zio-cli/shared/src/main/scala/zio/cli/Command.scala:128:34
212[warn] 128 | .map(CommandDirective.BuiltIn)
213[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^
214[warn] |The method `apply` is inserted. The auto insertion will be deprecated, please write `zio.cli.CommandDirective.BuiltIn.apply` explicitly.
215[warn] -- [E147] Syntax Warning: /build/repo/zio-cli/shared/src/main/scala/zio/cli/oauth2/TokenType.scala:15:2
216[warn] 15 | final case object Bearer extends TokenType
217[warn] | ^^^^^
218[warn] | Modifier final is redundant for this definition
219[warn] -- [E147] Syntax Warning: /build/repo/zio-cli/shared/src/main/scala/zio/cli/oauth2/TokenType.scala:16:2
220[warn] 16 | final case object Mac extends TokenType
221[warn] | ^^^^^
222[warn] | Modifier final is redundant for this definition
223[warn] -- [E121] Pattern Match Warning: /build/repo/zio-cli/shared/src/main/scala/zio/cli/Options.scala:709:15
224[warn] 709 | case _ => acc
225[warn] | ^
226[warn] |Unreachable case except for null (if this is intentional, consider writing case null => instead).
227[warn] four warnings found
228[info] done compiling
229[info] compiling 4 Scala sources to /build/repo/examples/jvm/target/scala-3.8.0-RC2/classes ...
230[warn] -- Warning: /build/repo/examples/jvm/src/main/scala/zio/cli/examples/GitExample.scala:45:90
231[warn] 45 | Command("remove", Args.text("name")).withHelp(remoteRemoveHelp).map(Subcommand.Remote.Remove)
232[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^
233[warn] |The method `apply` is inserted. The auto insertion will be deprecated, please write `zio.cli.examples.GitExample.Subcommand.Remote.Remove.apply` explicitly.
234[warn] there was 1 deprecation warning; re-run with -deprecation for details
235[warn] two warnings found
236[info] done compiling
237Starting build for ProjectRef(file:/build/repo/,zioCliJVM) (zio-cli)... [1/3]
238Compile scalacOptions: -encoding, UTF-8, -unchecked, -noindent, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
239[info] compiling 19 Scala sources to /build/repo/zio-cli/jvm/target/scala-3.8.0-RC2/test-classes ...
240[info] done compiling
241+ AutoCorrect.levensteinDistance Suite
242 + calculates the correct levenstein distance for non ascii characters
243 + takes into account the provided parserOptions case sensitivity
244 + calculate the correct levenstein distance between two strings
245+ FigFontRenderReportSpec
246 - figlet.org Fonts Render Report - ignored: 1
247+ FigFontParserSpec
248 + parse standard.flf
249+ PrimTypeTests
250 + Enumeration Suite
251 + validate return proper value if one of the cases
252 + validate return error if NOT one of the cases
253 + LocalDate Suite
254 + validate rejects improper LocalDate representation
255 + validate returns proper LocalDate representation
256 + OffsetTime Suite
257 + validate rejects improper OffsetTime representation
258 + validate returns proper OffsetTime representation
259 + ZonedDateTime Suite
260 + validate rejects improper ZonedDateTime representation
261 + validate returns proper ZonedDateTime representation
262 + Period Suite
263 + validate rejects improper Period representation
264 + validate returns proper Period representation
265 + Boolean Suite
266 + validate rejects improper Boolean representation
267 + validate true combinations returns proper Boolean representation
268 + validate false combinations returns proper Boolean representation
269 + validate uses default value if value is not provided
270 + BigDecimal Suite
271 + validate rejects improper BigDecimal representation
272 + validate returns proper BigDecimal representation
273 + Text Suite
274 + validates everything
275 + Duration Suite
276 + validate rejects improper Duration representation
277 + validate returns proper Duration representation
278 + Integer Suite
279 + validate rejects improper Integer representation
280 + validate returns proper Integer representation
281 + Path Suite
282 + validate returns proper directory path
283 + validate returns proper directory path if both allowed
284 + validate returns error if path targets file but directory was expected
285 + validate returns proper file path
286 + validate returns error if path targets directory but file was expected
287 + validate returns error if file doesn't exits but must exists
288 + validate returns error if file does exits but must not exists
289 + validate returns proper file path if both allowed
290 + Instant Suite
291 + validate rejects improper Instant representation
292 + validate returns proper Instant representation
293 + LocalDateTime Suite
294 + validate rejects improper LocalDateTime representation
295 + validate returns proper LocalDateTime representation
296 + LocalTime Suite
297 + validate rejects improper LocalTime representation
298 + validate returns proper LocalTime representation
299 + Year Suite
300 + validate rejects improper Year representation
301 + validate returns proper Year representation
302 + MonthDay Suite
303 + validate rejects improper MonthDay representation
304 + validate returns proper MonthDay representation
305 + OffsetDateTime Suite
306 + validate rejects improper OffsetDateTime representation
307 + validate returns proper OffsetDateTime representation
308 + YearMonth Suite
309 + validate rejects improper YearMonth representation
310 + validate returns proper YearMonth representation
311 + ZoneId Suite
312 + validate rejects improper ZoneId representation
313 + validate returns proper ZoneId representation
314 + ZoneOffset Suite
315 + validate rejects improper ZoneOffset representation
316 + validate returns proper ZoneOffset representation
317+ ArgumentCollisionSpec
318 + argument collision
319+ FigFontRendererJvmSpec
320 + ZIO-CLI!!! with standard.flf
321+ Wizard spec
322
323
324
325WIZARD
326
327 Please, enter the command you would like to execute.
328
329 Write help for more information about this parameter, restart to start again Wizard mode and quit
330 to exit.
331
332
333WIZARD
334
335 Please, specify the following option.
336
337 Option "opt".
338
339 Write help for more information about this parameter, restart to start again Wizard mode and quit
340 to exit.
341
342
343
344WIZARD
345
346 Please, specify the following option.
347
348 Option "opt".
349
350 Write help for more information about this parameter, restart to start again Wizard mode and quit
351 to exit.
352
353
354OPTIONS
355
356 [1] aa
357
358 [2] bb
359
360 [3] cc
361
362command :> command :> command :>
363
364You may bypass the wizard and execute your command directly with the following options and
365arguments:
366
367 --opt sample
368
369Executing command...
370
371You may bypass the wizard and execute your command directly with the following options and
372arguments:
373
374 bb
375
376Executing command...
377
378
379You may bypass the wizard and execute your command directly with the following options and
380arguments:
381
382 --opt sample
383
384Executing command...
385
386 + Alternatives
387 + Input and Pipeline
388 + Wrap
389
390
391WIZARD
392
393 Please, specify the following option.
394
395 Option "opt1".
396
397 Write help for more information about this parameter, restart to start again Wizard mode and quit
398 to exit.
399
400command1 :>
401
402WIZARD
403
404 Please, specify the following option.
405
406 Option "opt2".
407
408 Write help for more information about this parameter, restart to start again Wizard mode and quit
409 to exit.
410
411command1 :>
412
413WIZARD
414
415 Please, specify the following option.
416
417 Option "opt".
418
419 Write help for more information about this parameter, restart to start again Wizard mode and quit
420 to exit.
421
422command :>
423
424WIZARD
425
426 Please, specify the following option.
427
428 Option "opt1".
429
430 Write help for more information about this parameter, restart to start again Wizard mode and quit
431 to exit.
432
433command1 :>
434
435WIZARD
436
437 Please, specify the following option.
438
439 Option "opt2".
440
441 Write help for more information about this parameter, restart to start again Wizard mode and quit
442 to exit.
443
444command1 :>
445You may bypass the wizard and execute your command directly with the following options and
446arguments:
447
448 --opt1 secondtry --opt2 sample
449
450Executing command...
451
452
453You may bypass the wizard and execute your command directly with the following options and
454arguments:
455
456 --opt1 secondtry --opt2 sample
457
458Executing command...
459
460 + Quit
461 + Restart
462 + Parameter
463+ Options Suite
464 + validate boolean option without value
465 + not uncluster value
466 + validate without ambiguity
467 + validate boolean option with followup option
468 + validate text option with alternative format
469 + validate text option with alias
470 + validate boolean option with negation
471 + validate text option
472 + validate integer option
473 + validate when option is passed, but not a following value
474 + validate option and get remainder
475 + validate when no valid values are passed
476 + validate invalid option value
477 + validate missing option
478 + validate collision of boolean option with negation
479 + validate options for cons
480 + validate invalid option using withDefault
481 + validate non supplied optional with remainder
482 + validate supplied optional
483 + validate case sensitive CLI config
484 + orElse
485 + validate orElse using fold on 2 options
486 + validate orElse using fold on 3 options
487 + validate orElse on 2 options
488 + validate orElse using fold on 4 options
489 + validate orElse using fold on 6 options
490 + validate orElse using fold on 5 options
491 + test orElse options collision
492 + test orElse with no options given
493 + validate invalid option in OrElse option when using withDefault
494 + validate different key/values with alias
495 + property arguments
496 + validate different key/values
497 + validate repeated values
498 + validate missing option
499 + validate should keep non-key-value parameters that follow the key-value pairs (only the first key/value pair is preceded by alias)
500 + validate should keep non-key-value parameters that follow the key-value pairs (each preceded by alias -d)
501 + validate should keep non-key-value parameters that follow the key-value pairs (with a 'mixed' style of proceeding -- name or alias)
502 + validate non supplied optional
503 + returns a HelpDoc if an option is not an exact match and it's a short option
504 + returns a HelpDoc if an option is not an exact match, but is close
505 + returns a HelpDoc if an option with a default value is not an exact match, but is close
506 + Help describes default value if it is not None
507 + Help describes default value but does not print None as default value
508 + Can overwrite the placeholder used in the help string
509+ Completion Spec
510 + Toplevel Command Completion Spec
511 + Command name
512 + A different command name in the args list should not affect completion
513 + Command with Options and Args
514 + WC
515 + Complete the option names
516 + Complete the first file name
517 + Complete the second file name
518 + Tail
519 + Complete the '-n' option name
520 + Complete the file name
521 + Command that accepts no Options, single Args
522 + PrimType.Decimal
523 + No partial word should return no completions
524 + Partial word '32.6' should return no completions
525 + Partial word 'x' should return no completions
526 + PrimType.ZoneId
527 + 'US/' prefix provided
528 + PrimType.Enumeration
529 + No partial word should return the complete list of enumeration values
530 + Partial word 'b' should complete with 'bar', 'baz', 'bippy'
531 + Partial word 'baz' should return 'baz' and 'bazinga'
532 + Partial word 'ba' should complete with 'bar' and 'baz'
533 + Partial word 'baz' should return 'baz
534 + PrimType.Bool
535 + Partial word 'true' should return 'true'
536 + No partial word should complete with 'false' and 'true'
537 + Partial word 'f' should complete with 'false'
538 + Partial word 'false' should return 'false'
539 + Partial word 't' should complete with 'true'
540 + Partial word 'x' should return no completions
541 + PrimType.Path
542 + Args.file, no prefix provided
543 + Args.file, prefix provided
544 + Args.file, prefix of nonexistent file should yield no completions.
545 + Args.file, complete file name provided
546 + Args.directory, prefix provided
547 + Args.directory, no prefix provided
548 + Args.directory, complete name provided
549 + Command that accepts no Args or Options
550 + Returns no completions
551 + Command with no Options, multiple Args
552 + PrimType.Enumeration followed by PrimType.ZoneId
553 + Partial word 'baz' should return 'baz' and 'bazinga'
554 + Partial word 'US/' should return the US zone IDs
555 + Completing ['foo', 'baz', 'US/'] at position 1 should complete with 'baz' and 'bazinga'
556 + Completing ['foo', 'x', 'US/'] at position 2 should yield no completions ('x' is invalid)
557 + Command with Options, no args
558 + Int Options
559 + No prefix should show all flags
560 + '-c' without integer value should provide no completions
561 + '-c' with integer value should complete with '-a', '-b', '-d'
562 + '-c' and '-b' with integer value should complete with '-a', '-d'
563 + '-c' with integer value and '-b' with no integer value should provide no completions
564 + Enumeration Options
565 + Partial option name should complete the name of the option
566 + No partial word should return the complete list of enumeration options
567 + Partial word 'b' should complete with 'bar', 'baz', 'bippy'
568 + Partial word 'ba' should complete with 'bar' and 'baz'
569 + Partial word 'baz' should return 'baz'
570 + Partial word 'baz' should return 'baz' and 'bazinga'
571 + Boolean Options
572 + No prefix should show all flags
573 + '-' prefix should show all flags
574 + '-a' prefix should show flags '-b'
575 + '-b' prefix should show flags '-a'
576 + An invalid flag should yield no completions
577 + '-a' prefix should show flags '-b', '-c', '-d'
578 + '-d -a' prefix should show flags '-b', '-c'
579 + '-d -c -b -' prefix should show flags '-a'
580+ Reducable Spec
581 + Can reduce left side units
582 + Can reduce right side units
583 + Can reduce tupled units
584 + Leaves non unit tuples intact
585+ CliApp
586 + exit code of the CLI
587this is not an integer is not a integer.
588
589 + should exit with a code <> 0 when the command fails
590 + should exit with a code <> 0 when the parsing of the command fails
591 + should exit with 0 when the command is successful
592+ ArgsSpec
593 + Non Existing file
594 + Not Found file
595 + Existing file
596 + Combination of existing files
597+ HelpDocTests
598 + Constructors Suite
599 + HelpDoc#h1 produces a Header from a String with level 1
600 + HelpDoc#+ combines two HelpDocs into one
601 + HelpDoc#h3 produces a Header from a String with level 3
602 + HelpDoc#h2 produces a Header from a String with level 2
603 + HelpDoc#p produces a Paragraph from a String
604 + #is* tests
605 + #isEmpty returns true for an empty HelpDoc
606 + #isEmpty returns `false` for a non-empty Header
607 + Paragraph of text is not a Header
608 + Sequence(Paragraph, _) starts with a Paragraph
609 + Boolean Suite
610 + HelpDoc#isHeader: Only returns true for HelpDocs that are/start with a Header
611 + A Header returns true
612 + A Sequence beginning with a Header returns true
613 + An empty HelpDoc returns false
614 + A Paragraph returns false
615 + A Sequence beginning with a non-Header returns false
616 + An Enumeration beginning with a non-Header returns false
617 + HelpDoc#isParagraph: Only returns true for HelpDocs that are/start with a Paragraph
618 + A Paragraph returns true
619 + A Sequence beginning with a Paragraph returns true
620 + An Enumeration beginning with a Paragraph returns false
621 + An empty HelpDoc returns false
622 + A Header returns false
623 + A Sequence beginning with a non-Paragraph returns false
624 + An Enumeration beginning with a non-Paragraph returns false
625 + HelpDoc#isDescriptionList: Only returns true for HelpDocs that are/start with a DescriptionList
626 + A DescriptionList returns true
627 + A Paragraph returns false
628 + A DescriptionList beginning with a DescriptionList returns true
629 + An empty HelpDoc returns false
630 + A Header returns false
631 + HelpDoc#isSequence: Only returns true for HelpDocs that are/start with a Sequence
632 + A Sequence returns true
633 + An empty HelpDoc returns false
634 + A Sequence beginning with a Sequence returns true
635 + An Enumeration beginning with a Sequence returns false
636 + A Header returns false
637 + An Enumeration beginning with a non-Sequence returns false
638 + HelpDoc#isEnumeration: Only returns true for HelpDocs that are/start with an Enumeration
639 + An Enumeration returns true
640 + An Enumeration beginning with an Enumeration returns true
641 + A Sequence beginning with an Enumeration returns true
642 + An empty HelpDoc returns false
643 + A Paragraph returns false
644 + A Header returns false
645+ string parsing
646 + word
647 + hello world
648 + word <~ ws
649 + ws
650 + many words
651 + hello world foreach
652 + N words
653+ FigFontParserSpec
654 + line parsing
655 + token
656 + int
657 + char
658 + chars
659+ FigFontRendererSpec
660 + Fitting HLayout
661 + FullWidth HLayout
662 + Equal Char Smushing HLayout
663 + FullWidth VLayout
664 + Hardblanks
665 + Fitting VLayout
666 + Equal Char Smushing VLayout
667 + Hierarchy Smushing
668 + Universal Smushing
669 + Vertical Line Supersmushing
670+ CliError
671 + getCause
672 + Execution
673 + Throwable
674 + non-Throwable
675 + IO
676 + BuiltIn
677 + Parsing
678+ Command Spec
679 + Toplevel Command Spec
680 + Command with options followed by args
681 + Should validate successfully
682 + Shows an error if an option is missing
683 + Should provide auto correct suggestions for misspelled options
684 + BuiltInOptions proccessing
685 + not trigger help if matches
686 + trigger built-in options that are alone
687 + triggering wizard not alone
688 + trigger help not alone
689 + trigger child command's help if parent command is correct
690 + test commands joined by | operator
691 +
692 + test commands with clustered options
693 + Clustered boolean options are equal to un-clustered options
694 + "-" unaltered
695 + Not uncluster wrong clusters
696 + Helpdoc On Command Suite
697 + test adding helpdoc to Map command
698 + helpdoc on Map command
699 + test adding helpdoc to commands
700 + add text helpdoc to Single
701 + helpdoc is on command
702 + test adding helpdoc to sub commands
703 + helpdoc is on subcommand
704 + test adding helpdoc to OrElse command
705 + helpdoc on orElse command
706 + correct display of helpDoc
707 + test helpDoc list subcommands of subcommands
708 + cmd opts -- args
709 + SubCommand Suite
710 + having two sub commands without options or arguments
711 + match first sub command without any surplus arguments
712 + match first sub command with a surplus options
713 + match second sub command without any surplus arguments
714 + test unknown sub command error message
715 + test sub sub commands
716 + sub sub command with option and argument
717 + sub command usage with options and arguments
718 + test sub command with required options and arguments
719 + test without sub command
720 + test unknown sub command
721 + test sub command with required and optional options and arguments
722 + test unknown sub command error message
723+ RegularLanguage Spec
724 + Toplevel Command Completion Spec
725 + Empty language
726 + Empty language rejects all strings
727 + Rep language
728 + ('foo' 'bar' | 'foo' 'baz').rep(2, 4) language
729 + Accepts two to four or more repetitions of 'foo' 'bar' or 'foo' 'baz'
730 + Rejects everything except two to four or more repetitions of 'foo' 'bar' or 'foo' 'baz'
731 + ('foo' 'bar' | 'foo' 'baz')* language
732 + Accepts zero or more repetitions of 'foo' 'bar' or 'foo' 'baz'
733 + Rejects everything except zero or more repetitions of 'foo' 'bar' or 'foo' 'baz'
734 + Epsilon language
735 + Epsilon language accepts the empty string
736 + Epsilon language rejects all nonempty strings
737 + Permutation language
738 + Permutation('a', 'b' | 'c', 'd'.*) language
739 + Accepts language members
740 + Rejects language non-members
741 + Permutation('a', 'b', 'c', 'd') language
742 + Accepts permutations of {'a', 'b', 'c', 'd'}
743 + Rejects everything except for permutations of {'a', 'b', 'c', 'd'}
744 + Permutation('a'? 'b'? 'c'? 'd'?) ~ 'z' language
745 + Rejects language non-members
746 + Accepts language members
747 + PrimTypeToken language
748 + PrimType.Bool language
749 + PrimType.Bool language accepts values that correspond to 'true' and 'false'
750 + PrimType.Bool language rejects values that do not correspond to 'true'/'false'
751 + PrimType.ZoneId language
752 + PrimType.ZoneId language accepts some that are valid time zone IDs.
753 + PrimType.Bool language rejects some values that are not valid time zone IDs
754 + Cat language
755 + 'foo' 'bar' 'baz' language
756 + Accepts 'foo' 'bar' 'baz'
757 + Rejects everything that is not 'foo' 'bar' 'baz'
758 + StringToken language
759 + StringToken language accepts its target string
760 + StringToken language rejects anything other than its target string
761 + Alt language
762 + 'foo' 'bar' | 'foo' 'baz' language
763 + Accepts 'foo' 'bar'
764 + Accepts 'foo' 'baz'
765 + Rejects everything that is not 'foo' 'bar' | 'foo' 'baz'
766283 tests passed. 0 tests failed. 1 tests ignored.
767
768Executed in 4 s 707 ms
769
770Starting build for ProjectRef(file:/build/repo/,testkitJVM) (zio-cli-testkit)... [2/3]
771Compile scalacOptions: -encoding, UTF-8, -unchecked, -noindent, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
772[info] compiling 5 Scala sources to /build/repo/zio-cli-testkit/jvm/target/scala-3.8.0-RC2/classes ...
773[info] done compiling
774[info] compiling 2 Scala sources to /build/repo/zio-cli-testkit/jvm/target/scala-3.8.0-RC2/test-classes ...
775[info] done compiling
776+ GenerationAssertionSpec
777 + commandCreation
778 + cliAppCreation
779+ CliAssertionSpec
780 + Access methods
781 + accessHelpDoc
782 + accessCommand
783a
784b
785c Options1: asd
786 + accessSynopsis
787a
788b
789c Options1: asd
790a
791b
792c Options1: asd
793a
794b
795c Options1: asd
796a
797b
798c Options1: asd
799a
800b
801c Options1: asd
802a
803b
804c Options1: asd
805a
806b
807c Options1: asd
808a
809b
810c Options1: asd
811a
812b
813c Options1: asd
814a
815b
816 + Assert methods
817c Options1: asd
818 + assertHelpDoc
819a
820b
821c Options1: asd
822a
823b
824c Options1: asd
825a
826b
827c Options1: asd
828a
829b
830c Options1: asd
831a
832b
833c Options1: asd
834a
835b
836c Options1: asd
837a
838b
839c Options1: asd
840a
841b
842c Options1: asd
843a
844b
845c Options1: asd
846a
847b
848c Options1: asd
849 + assertSynopsis
850a
851b
852c Options1: asd
853a
854b
855c Options1: asd
856a
857b
858c Options1: asd
859a
860b
861c Options1: asd
862a
863b
864c Options1: asd
865a
866b
867c Options1: asd
868a
869b
870c Options1: asd
871a
872b
873c Options1: asd
874a
875b
876c Options1: asd
877a
878b
879c Options1: asd
880a
881b
882c Options1: asd
883a
884b
885c Options1: asd
886a
887b
888c Options1: asd
889a
890b
891c Options1: asd
892a
893b
894c Options1: asd
895a
896b
897c Options1: asd
898a
899b
900c Options1: asd
901a
902b
903c Options1: asd
904a
905b
906c Options1: asd
907a
908b
909c Options1: asd
910a
911 + assertCommand
912b
913c Options1: asd
914a
915b
916c Options1: asd
917a
918b
919c Options1: asd
920a
921b
922c Options1: asd
923a
924b
925c Options1: asd
926a
927b
928c Options1: asd
929a
930b
931c Options1: asd
932a
933b
934c Options1: asd
935a
936b
937c Options1: asd
938a
939b
940c Options1: asd
941a
942b
943c Options1: asd
944a
945b
946c Options1: asd
947a
948b
949c Options1: asd
950a
951b
952c Options1: asd
953a
954b
955c Options1: asd
956a
957b
958c Options1: asd
959a
960b
961c Options1: asd
962a
963b
964c Options1: asd
965a
966b
967c Options1: asd
968a
969b
970c Options1: asd
971a
972b
973c Options1: asd
974a
975b
976c Options1: asd
977a
978b
979c Options1: asd
980a
981b
982c Options1: asd
983a
984b
985c Options1: asd
986a
987b
988c Options1: asd
989a
990b
991c Options1: asd
992a
993b
994c Options1: asd
995a
996b
997c Options1: asd
998a
999b
1000c Options1: asd
1001a
1002b
1003c Options1: asd
1004a
1005b
1006c Options1: asd
1007a
1008b
1009c Options1: asd
1010a
1011b
1012c Options1: asd
1013a
1014b
1015c Options1: asd
1016a
1017b
1018c Options1: asd
1019a
1020b
1021c Options1: asd
1022a
1023b
1024c Options1: asd
1025a
1026b
1027c Options1: asd
1028 + assertCliApp
1029a
1030b
1031c Options1: asd
1032a
1033b
1034c Options1: asd
1035a
1036b
1037c Options1: asd
1038a
1039b
1040c Options1: asd
1041a
1042b
1043c Options1: asd
1044a
1045b
1046c Options1: asd
1047a
1048b
1049c Options1: asd
1050a
1051b
1052c Options1: asd
1053a
1054b
1055c Options1: asd
1056a
1057b
1058c Options1: asd
1059a
1060b
1061c Options1: asd
1062a
1063b
1064c Options1: asd
1065a
1066b
1067c Options1: asd
1068a
1069b
1070c Options1: asd
1071a
1072b
1073c Options1: asd
1074a
1075b
1076c Options1: asd
1077a
1078b
1079c Options1: asd
1080a
1081b
1082c Options1: asd
1083a
1084b
1085c Options1: asd
1086a
1087b
1088c Options1: asd
1089a
1090b
1091c Options1: asd
1092a
1093b
1094c Options1: asd
1095a
1096b
1097c Options1: asd
1098a
1099b
1100c Options1: asd
1101a
1102b
1103c Options1: asd
1104a
1105b
1106c Options1: asd
1107a
1108b
1109c Options1: asd
1110a
1111b
1112c Options1: asd
1113a
1114b
1115c Options1: asd
1116a
1117b
1118c Options1: asd
1119a
1120b
1121c Options1: asd
1122a
1123b
1124c Options1: asd
1125a
1126b
1127c Options1: asd
1128a
1129b
1130c Options1: asd
1131a
1132b
1133c Options1: asd
1134a
1135b
1136c Options1: asd
1137a
1138b
1139c Options1: asd
1140a
1141b
1142c Options1: asd
1143a
1144b
1145c Options1: asd
1146a
1147b
1148c Options1: asd
1149a
1150b
1151c Options1: asd
1152a
1153b
1154c Options1: asd
1155a
1156b
1157c Options1: asd
1158a
1159b
1160c Options1: asd
1161a
1162b
1163c Options1: asd
1164a
1165b
1166c Options1: asd
1167a
1168b
1169c Options1: asd
1170a
1171b
1172c Options1: asd
1173a
1174b
1175c Options1: asd
1176a
1177b
1178c Options1: asd
1179a
1180b
1181c Options1: asd
1182a
1183b
1184c Options1: asd
1185a
1186b
1187c Options1: asd
1188a
1189b
1190c Options1: asd
1191a
1192b
1193c Options1: asd
1194a
1195b
1196c Options1: asd
1197a
1198b
1199c Options1: asd
1200a
1201b
1202c Options1: asd
1203a
1204b
1205c Options1: asd
1206a
1207b
1208c Options1: asd
1209a
1210b
1211c Options1: asd
1212a
1213b
1214c Options1: asd
1215a
1216b
1217c Options1: asd
1218a
1219b
1220c Options1: asd
1221a
1222b
1223c Options1: asd
1224a
1225b
1226c Options1: asd
1227a
1228b
1229c Options1: asd
1230a
1231b
1232c Options1: asd
1233a
1234b
1235c Options1: asd
1236a
1237b
1238c Options1: asd
1239a
1240b
1241c Options1: asd
1242a
1243b
1244c Options1: asd
1245a
1246b
1247c Options1: asd
1248a
1249b
1250c Options1: asd
1251a
1252b
1253c Options1: asd
1254a
1255b
1256c Options1: asd
1257a
1258b
1259c Options1: asd
1260a
1261b
1262c Options1: asd
1263a
1264b
1265c Options1: asd
1266a
1267b
1268c Options1: asd
1269a
1270b
1271c Options1: asd
1272a
1273b
1274c Options1: asd
1275a
1276b
1277c Options1: asd
1278a
1279b
1280c Options1: asd
1281a
1282b
1283c Options1: asd
1284a
1285b
1286c Options1: asd
1287a
1288b
1289c Options1: asd
1290a
1291b
1292c Options1: asd
1293a
1294b
1295c Options1: asd
1296a
1297b
1298c Options1: asd
1299a
1300b
1301c Options1: asd
1302a
1303b
1304c Options1: asd
1305a
1306b
1307c Options1: asd
1308a
1309b
1310c Options1: asd
1311a
1312b
1313c Options1: asd
1314a
1315b
1316c Options1: asd
1317a
1318b
1319c Options1: asd
1320a
1321b
1322c Options1: asd
1323a
1324b
1325c Options1: asd
1326a
1327b
1328c Options1: asd
1329a
1330b
1331c Options1: asd
1332a
1333b
1334c Options1: asd
1335a
1336b
1337c Options1: asd
1338a
1339b
1340c Options1: asd
1341a
1342b
1343c Options1: asd
1344a
1345b
1346c Options1: asd
1347a
1348b
1349c Options1: asd
1350a
1351b
1352c Options1: asd
1353a
1354b
1355c Options1: asd
1356a
1357b
1358c Options1: asd
1359a
1360b
1361c Options1: asd
1362a
1363b
1364c Options1: asd
1365a
1366b
1367c Options1: asd
1368a
1369b
1370c Options1: asd
1371a
1372b
1373c Options1: asd
1374a
1375b
1376c Options1: asd
1377a
1378b
1379c Options1: asd
1380a
1381b
1382c Options1: asd
1383a
1384b
1385c Options1: asd
1386a
1387b
1388c Options1: asd
1389 + outputContains
139010 tests passed. 0 tests failed. 0 tests ignored.
1391
1392Executed in 6 s 341 ms
1393
1394
1395************************
1396Build summary:
1397[{
1398 "module": "examples",
1399 "compile": {"status": "ok", "tookMs": 26545, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
1400 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1401 "test-compile": {"status": "ok", "tookMs": 351, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1402 "test": {"status": "ok", "tookMs": 261, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1403 "publish": {"status": "skipped", "tookMs": 0},
1404 "metadata": {
1405 "crossScalaVersions": ["2.12.20", "2.13.17", "3.3.7"]
1406}
1407},{
1408 "module": "zio-cli",
1409 "compile": {"status": "ok", "tookMs": 99, "warnings": 4, "errors": 0, "sourceVersion": "3.8"},
1410 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1411 "test-compile": {"status": "ok", "tookMs": 7181, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1412 "test": {"status": "ok", "tookMs": 5658, "passed": 283, "failed": 0, "ignored": 1, "skipped": 0, "total": 284, "byFramework": [{"framework": "unknown", "stats": {"passed": 283, "failed": 0, "ignored": 1, "skipped": 0, "total": 284}}]},
1413 "publish": {"status": "skipped", "tookMs": 0},
1414 "metadata": {
1415 "crossScalaVersions": ["2.12.20", "2.13.17", "3.3.7"]
1416}
1417},{
1418 "module": "zio-cli-testkit",
1419 "compile": {"status": "ok", "tookMs": 1512, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1420 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1421 "test-compile": {"status": "ok", "tookMs": 1028, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1422 "test": {"status": "ok", "tookMs": 6964, "passed": 10, "failed": 0, "ignored": 0, "skipped": 0, "total": 10, "byFramework": [{"framework": "unknown", "stats": {"passed": 10, "failed": 0, "ignored": 0, "skipped": 0, "total": 10}}]},
1423 "publish": {"status": "skipped", "tookMs": 0},
1424 "metadata": {
1425 "crossScalaVersions": ["2.12.20", "2.13.17", "3.3.7"]
1426}
1427}]
1428************************
1429[success] Total time: 62 s (0:01:02.0), completed Nov 28, 2025, 12:45:43 PM
1430[0JChecking patch project/plugins.sbt...
1431Checking patch project/BuildHelper.scala...
1432Checking patch build.sbt...
1433Applied patch project/plugins.sbt cleanly.
1434Applied patch project/BuildHelper.scala cleanly.
1435Applied patch build.sbt cleanly.