Build Logs
zio/zio-cli • 3.8.0-RC6:2026-01-08
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-RC6
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-RC6"
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-RC6
42Execute tests: true
43sbt project found:
44No prepare script found for project zio/zio-cli
45##################################
46Scala version: 3.8.0-RC6
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-RC6
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-RC6"
72"++3.8.0-RC6 -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-RC6 """{"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.065s.
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-RC6
152OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in testkitJS/crossScalaVersions
153OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in examplesJVM/crossScalaVersions
154OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in examplesJS/crossScalaVersions
155OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in testkitJVM/crossScalaVersions
156OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in zioCliNative/crossScalaVersions
157OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in zioCliJS/crossScalaVersions
158OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in testkitNative/crossScalaVersions
159OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in zioCliJVM/crossScalaVersions
160OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 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-RC6 on 9 projects.
164[info] Switching Scala version on:
165[info] examplesNative (2.12.20, 2.13.17, 3.8.0-RC6)
166[info] zioCliJS (2.12.20, 2.13.17, 3.8.0-RC6)
167[info] testkitNative (2.12.20, 2.13.17, 3.8.0-RC6)
168[info] zioCliNative (2.12.20, 2.13.17, 3.8.0-RC6)
169[info] testkitJS (2.12.20, 2.13.17, 3.8.0-RC6)
170[info] zioCliJVM (2.12.20, 2.13.17, 3.8.0-RC6)
171[info] examplesJS (2.12.20, 2.13.17, 3.8.0-RC6)
172[info] examplesJVM (2.12.20, 2.13.17, 3.8.0-RC6)
173[info] testkitJVM (2.12.20, 2.13.17, 3.8.0-RC6)
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 Jan 8, 2026, 2:07:33 AM
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-RC6/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-RC6/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-RC6/test-classes ...
240[info] done compiling
241+ AutoCorrect.levensteinDistance Suite
242 + takes into account the provided parserOptions case sensitivity
243 + calculate the correct levenstein distance between two strings
244 + calculates the correct levenstein distance for non ascii characters
245+ FigFontRenderReportSpec
246 - figlet.org Fonts Render Report - ignored: 1
247+ FigFontParserSpec
248 + parse standard.flf
249+ PrimTypeTests
250 + Boolean Suite
251 + validate uses default value if value is not provided
252 + validate false combinations returns proper Boolean representation
253 + validate rejects improper Boolean representation
254 + validate true combinations returns proper Boolean representation
255 + LocalDate Suite
256 + validate returns proper LocalDate representation
257 + validate rejects improper LocalDate representation
258 + OffsetTime Suite
259 + validate rejects improper OffsetTime representation
260 + validate returns proper OffsetTime representation
261 + Period Suite
262 + validate rejects improper Period representation
263 + validate returns proper Period representation
264 + Path Suite
265 + validate returns proper directory path
266 + validate returns proper directory path if both allowed
267 + validate returns error if path targets file but directory was expected
268 + validate returns proper file path
269 + validate returns proper file path if both allowed
270 + validate returns error if path targets directory but file was expected
271 + validate returns error if file doesn't exits but must exists
272 + validate returns error if file does exits but must not exists
273 + BigDecimal Suite
274 + validate rejects improper BigDecimal representation
275 + validate returns proper BigDecimal representation
276 + Duration Suite
277 + validate rejects improper Duration representation
278 + validate returns proper Duration representation
279 + Integer Suite
280 + validate rejects improper Integer representation
281 + validate returns proper Integer representation
282 + Text Suite
283 + validates everything
284 + Instant Suite
285 + validate rejects improper Instant representation
286 + validate returns proper Instant representation
287 + Enumeration Suite
288 + validate return proper value if one of the cases
289 + validate return error if NOT one of the cases
290 + LocalDateTime Suite
291 + validate rejects improper LocalDateTime representation
292 + validate returns proper LocalDateTime representation
293 + MonthDay Suite
294 + validate rejects improper MonthDay representation
295 + validate returns proper MonthDay representation
296 + LocalTime Suite
297 + validate rejects improper LocalTime representation
298 + validate returns proper LocalTime representation
299 + OffsetDateTime Suite
300 + validate rejects improper OffsetDateTime representation
301 + validate returns proper OffsetDateTime representation
302 + Year Suite
303 + validate rejects improper Year representation
304 + validate returns proper Year representation
305 + YearMonth Suite
306 + validate rejects improper YearMonth representation
307 + validate returns proper YearMonth representation
308 + ZoneOffset Suite
309 + validate rejects improper ZoneOffset representation
310 + validate returns proper ZoneOffset representation
311 + ZoneId Suite
312 + validate rejects improper ZoneId representation
313 + validate returns proper ZoneId representation
314 + ZonedDateTime Suite
315 + validate rejects improper ZonedDateTime representation
316 + validate returns proper ZonedDateTime representation
317+ ArgumentCollisionSpec
318 + argument collision
319+ FigFontRendererJvmSpec
320 + ZIO-CLI!!! with standard.flf
321+ Wizard spec
322
323
324
325WIZARD
326
327 Please, specify the following option.
328
329 Option "opt".
330
331 Write help for more information about this parameter, restart to start again Wizard mode and quit
332 to exit.
333
334
335
336WIZARD
337
338 Please, specify the following option.
339
340 Option "opt".
341
342 Write help for more information about this parameter, restart to start again Wizard mode and quit
343 to exit.
344
345
346WIZARD
347
348 Please, enter the command you would like to execute.
349
350 Write help for more information about this parameter, restart to start again Wizard mode and quit
351 to exit.
352
353command :> command :>
354OPTIONS
355
356 [1] aa
357
358 [2] bb
359
360 [3] cc
361
362
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
371command :> You may bypass the wizard and execute your command directly with the following options and
372arguments:
373
374 --opt sample
375
376Executing command...
377
378
379You may bypass the wizard and execute your command directly with the following options and
380arguments:
381
382 bb
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
413
414WIZARD
415
416 Please, specify the following option.
417
418 Option "opt1".
419
420 Write help for more information about this parameter, restart to start again Wizard mode and quit
421 to exit.
422
423command1 :>
424
425WIZARD
426
427 Please, specify the following option.
428
429 Option "opt".
430
431 Write help for more information about this parameter, restart to start again Wizard mode and quit
432 to exit.
433
434command :>
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 + validate boolean option with followup option
466 + not uncluster value
467 + validate without ambiguity
468 + validate text option
469 + validate boolean option with negation
470 + validate text option with alternative format
471 + validate integer option
472 + validate text option with alias
473 + validate option and get remainder
474 + validate invalid option value
475 + validate when no valid values are passed
476 + validate when option is passed, but not a following value
477 + validate missing option
478 + validate invalid option using withDefault
479 + validate collision of boolean option with negation
480 + validate options for cons
481 + validate non supplied optional
482 + validate case sensitive CLI config
483 + validate non supplied optional with remainder
484 + orElse
485 + validate orElse on 2 options
486 + validate orElse using fold on 2 options
487 + validate orElse using fold on 4 options
488 + validate orElse using fold on 3 options
489 + validate orElse using fold on 5 options
490 + test orElse options collision
491 + validate invalid option in OrElse option when using withDefault
492 + test orElse with no options given
493 + validate orElse using fold on 6 options
494 + validate supplied optional
495 + returns a HelpDoc if an option is not an exact match, but is close
496 + returns a HelpDoc if an option with a default value is not an exact match, but is close
497 + returns a HelpDoc if an option is not an exact match and it's a short option
498 + Help describes default value if it is not None
499 + Can overwrite the placeholder used in the help string
500 + Help describes default value but does not print None as default value
501 + property arguments
502 + validate missing option
503 + validate repeated values
504 + validate different key/values
505 + validate should keep non-key-value parameters that follow the key-value pairs (with a 'mixed' style of proceeding -- name or alias)
506 + validate should keep non-key-value parameters that follow the key-value pairs (each preceded by alias -d)
507 + validate should keep non-key-value parameters that follow the key-value pairs (only the first key/value pair is preceded by alias)
508 + validate different key/values with alias
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 + Tail
515 + Complete the '-n' option name
516 + Complete the file name
517 + WC
518 + Complete the option names
519 + Complete the first file name
520 + Complete the second file name
521 + Command that accepts no Args or Options
522 + Returns no completions
523 + Command with no Options, multiple Args
524 + PrimType.Enumeration followed by PrimType.ZoneId
525 + Partial word 'baz' should return 'baz' and 'bazinga'
526 + Partial word 'US/' should return the US zone IDs
527 + Completing ['foo', 'baz', 'US/'] at position 1 should complete with 'baz' and 'bazinga'
528 + Completing ['foo', 'x', 'US/'] at position 2 should yield no completions ('x' is invalid)
529 + Command with Options, no args
530 + Enumeration Options
531 + Partial option name should complete the name of the option
532 + No partial word should return the complete list of enumeration options
533 + Partial word 'b' should complete with 'bar', 'baz', 'bippy'
534 + Partial word 'ba' should complete with 'bar' and 'baz'
535 + Partial word 'baz' should return 'baz'
536 + Partial word 'baz' should return 'baz' and 'bazinga'
537 + Int Options
538 + No prefix should show all flags
539 + '-c' with integer value should complete with '-a', '-b', '-d'
540 + '-c' and '-b' with integer value should complete with '-a', '-d'
541 + '-c' without integer value should provide no completions
542 + '-c' with integer value and '-b' with no integer value should provide no completions
543 + Boolean Options
544 + '-' prefix should show all flags
545 + '-a' prefix should show flags '-b'
546 + '-b' prefix should show flags '-a'
547 + No prefix should show all flags
548 + An invalid flag should yield no completions
549 + '-d -a' prefix should show flags '-b', '-c'
550 + '-d -c -b -' prefix should show flags '-a'
551 + '-a' prefix should show flags '-b', '-c', '-d'
552 + Command that accepts no Options, single Args
553 + PrimType.Decimal
554 + No partial word should return no completions
555 + Partial word '32.6' should return no completions
556 + Partial word 'x' should return no completions
557 + PrimType.Bool
558 + No partial word should complete with 'false' and 'true'
559 + Partial word 'f' should complete with 'false'
560 + Partial word 't' should complete with 'true'
561 + Partial word 'true' should return 'true'
562 + Partial word 'false' should return 'false'
563 + Partial word 'x' should return no completions
564 + PrimType.ZoneId
565 + 'US/' prefix provided
566 + PrimType.Enumeration
567 + No partial word should return the complete list of enumeration values
568 + Partial word 'b' should complete with 'bar', 'baz', 'bippy'
569 + Partial word 'ba' should complete with 'bar' and 'baz'
570 + Partial word 'baz' should return 'baz
571 + Partial word 'baz' should return 'baz' and 'bazinga'
572 + PrimType.Path
573 + Args.file, prefix provided
574 + Args.file, prefix of nonexistent file should yield no completions.
575 + Args.file, complete file name provided
576 + Args.file, no prefix provided
577 + Args.directory, no prefix provided
578 + Args.directory, complete name provided
579 + Args.directory, prefix provided
580+ Reducable Spec
581 + Leaves non unit tuples intact
582 + Can reduce right side units
583 + Can reduce tupled units
584 + Can reduce left side units
585+ CliApp
586 + exit code of the CLI
587 + should exit with a code <> 0 when the command fails
588this is not an integer is not a integer.
589
590 + should exit with 0 when the command is successful
591 + should exit with a code <> 0 when the parsing of the command fails
592+ ArgsSpec
593 + Existing file
594 + Combination of existing files
595 + Not Found file
596 + Non Existing file
597+ HelpDocTests
598 + Boolean Suite
599 + HelpDoc#isHeader: Only returns true for HelpDocs that are/start with a Header
600 + A Header returns true
601 + A Sequence beginning with a Header returns true
602 + An empty HelpDoc returns false
603 + A Sequence beginning with a non-Header returns false
604 + A Paragraph returns false
605 + An Enumeration beginning with a non-Header returns false
606 + HelpDoc#isSequence: Only returns true for HelpDocs that are/start with a Sequence
607 + A Sequence returns true
608 + An empty HelpDoc returns false
609 + A Header returns false
610 + An Enumeration beginning with a non-Sequence returns false
611 + A Sequence beginning with a Sequence returns true
612 + An Enumeration beginning with a Sequence returns false
613 + HelpDoc#isDescriptionList: Only returns true for HelpDocs that are/start with a DescriptionList
614 + An empty HelpDoc returns false
615 + A DescriptionList beginning with a DescriptionList returns true
616 + A Paragraph returns false
617 + A DescriptionList returns true
618 + A Header returns false
619 + HelpDoc#isParagraph: Only returns true for HelpDocs that are/start with a Paragraph
620 + An empty HelpDoc returns false
621 + A Paragraph returns true
622 + A Sequence beginning with a Paragraph returns true
623 + An Enumeration beginning with a Paragraph returns false
624 + A Sequence beginning with a non-Paragraph returns false
625 + An Enumeration beginning with a non-Paragraph returns false
626 + A Header returns false
627 + HelpDoc#isEnumeration: Only returns true for HelpDocs that are/start with an Enumeration
628 + An Enumeration returns true
629 + An Enumeration beginning with an Enumeration returns true
630 + A Sequence beginning with an Enumeration returns true
631 + An empty HelpDoc returns false
632 + A Header returns false
633 + A Paragraph returns false
634 + Constructors Suite
635 + HelpDoc#h1 produces a Header from a String with level 1
636 + HelpDoc#+ combines two HelpDocs into one
637 + HelpDoc#h2 produces a Header from a String with level 2
638 + HelpDoc#p produces a Paragraph from a String
639 + HelpDoc#h3 produces a Header from a String with level 3
640 + #is* tests
641 + #isEmpty returns true for an empty HelpDoc
642 + #isEmpty returns `false` for a non-empty Header
643 + Sequence(Paragraph, _) starts with a Paragraph
644 + Paragraph of text is not a Header
645+ string parsing
646 + word
647 + word <~ ws
648 + ws
649 + hello world foreach
650 + N words
651 + hello world
652 + many words
653+ FigFontParserSpec
654 + line parsing
655 + token
656 + chars
657 + int
658 + char
659+ FigFontRendererSpec
660 + FullWidth HLayout
661 + Fitting HLayout
662 + Hardblanks
663 + FullWidth VLayout
664 + Equal Char Smushing HLayout
665 + Fitting VLayout
666 + Universal Smushing
667 + Vertical Line Supersmushing
668 + Equal Char Smushing VLayout
669 + Hierarchy Smushing
670+ CliError
671 + getCause
672 + Execution
673 + Throwable
674 + non-Throwable
675 + Parsing
676 + BuiltIn
677 + IO
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 + Helpdoc On Command Suite
685 + test adding helpdoc to sub commands
686 + helpdoc is on subcommand
687 + test adding helpdoc to OrElse command
688 + helpdoc on orElse command
689 + test adding helpdoc to Map command
690 + helpdoc on Map command
691 + test adding helpdoc to commands
692 + add text helpdoc to Single
693 + helpdoc is on command
694 + correct display of helpDoc
695 + test helpDoc list subcommands of subcommands
696 + test commands joined by | operator
697 +
698 + test commands with clustered options
699 + Clustered boolean options are equal to un-clustered options
700 + Not uncluster wrong clusters
701 + "-" unaltered
702 + SubCommand Suite
703 + having two sub commands without options or arguments
704 + match first sub command without any surplus arguments
705 + match first sub command with a surplus options
706 + match second sub command without any surplus arguments
707 + test unknown sub command error message
708 + test sub sub commands
709 + sub sub command with option and argument
710 + sub command usage with options and arguments
711 + test sub command with required options and arguments
712 + test sub command with required and optional options and arguments
713 + test unknown sub command
714 + test unknown sub command error message
715 + BuiltInOptions proccessing
716 + trigger built-in options that are alone
717 + not trigger help if matches
718 + trigger help not alone
719 + triggering wizard not alone
720 + trigger child command's help if parent command is correct
721 + test without sub command
722 + cmd opts -- args
723+ RegularLanguage Spec
724 + Toplevel Command Completion Spec
725 + Empty language
726 + Empty language rejects all strings
727 + Permutation language
728 + Permutation('a', 'b', 'c', 'd') language
729 + Rejects everything except for permutations of {'a', 'b', 'c', 'd'}
730 + Accepts permutations of {'a', 'b', 'c', 'd'}
731 + Permutation('a', 'b' | 'c', 'd'.*) language
732 + Accepts language members
733 + Rejects language non-members
734 + Permutation('a'? 'b'? 'c'? 'd'?) ~ 'z' language
735 + Rejects language non-members
736 + Accepts language members
737 + PrimTypeToken language
738 + PrimType.ZoneId language
739 + PrimType.ZoneId language accepts some that are valid time zone IDs.
740 + PrimType.Bool language rejects some values that are not valid time zone IDs
741 + PrimType.Bool language
742 + PrimType.Bool language accepts values that correspond to 'true' and 'false'
743 + PrimType.Bool language rejects values that do not correspond to 'true'/'false'
744 + StringToken language
745 + StringToken language accepts its target string
746 + StringToken language rejects anything other than its target string
747 + Cat language
748 + 'foo' 'bar' 'baz' language
749 + Accepts 'foo' 'bar' 'baz'
750 + Rejects everything that is not 'foo' 'bar' 'baz'
751 + Alt language
752 + 'foo' 'bar' | 'foo' 'baz' language
753 + Accepts 'foo' 'bar'
754 + Accepts 'foo' 'baz'
755 + Rejects everything that is not 'foo' 'bar' | 'foo' 'baz'
756 + Rep language
757 + ('foo' 'bar' | 'foo' 'baz')* language
758 + Accepts zero or more repetitions of 'foo' 'bar' or 'foo' 'baz'
759 + Rejects everything except zero or more repetitions of 'foo' 'bar' or 'foo' 'baz'
760 + ('foo' 'bar' | 'foo' 'baz').rep(2, 4) language
761 + Accepts two to four or more repetitions of 'foo' 'bar' or 'foo' 'baz'
762 + Rejects everything except two to four or more repetitions of 'foo' 'bar' or 'foo' 'baz'
763 + Epsilon language
764 + Epsilon language accepts the empty string
765 + Epsilon language rejects all nonempty strings
766283 tests passed. 0 tests failed. 1 tests ignored.
767
768Executed in 4 s 548 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-RC6/classes ...
773[info] done compiling
774[info] compiling 2 Scala sources to /build/repo/zio-cli-testkit/jvm/target/scala-3.8.0-RC6/test-classes ...
775[info] done compiling
776+ GenerationAssertionSpec
777 + commandCreation
778 + cliAppCreation
779+ CliAssertionSpec
780 + Assert methods
781a
782b
783c Options1: asd
784a
785b
786c Options1: asd
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
816c Options1: asd
817a
818b
819c Options1: asd
820a
821b
822c Options1: asd
823a
824b
825c Options1: asd
826a
827b
828c Options1: asd
829a
830b
831c Options1: asd
832a
833b
834c Options1: asd
835a
836b
837c Options1: asd
838a
839b
840c Options1: asd
841a
842b
843c Options1: asd
844a
845b
846c Options1: asd
847a
848b
849c Options1: asd
850a
851b
852c Options1: asd
853a
854b
855c Options1: asd
856 + assertHelpDoc
857a
858b
859c Options1: asd
860a
861b
862c Options1: asd
863 + assertSynopsis
864a
865b
866c Options1: asd
867a
868b
869c Options1: asd
870a
871b
872c Options1: asd
873a
874b
875c Options1: asd
876a
877b
878c Options1: asd
879a
880b
881c Options1: asd
882a
883b
884c Options1: asd
885a
886b
887c Options1: asd
888a
889b
890c Options1: asd
891a
892b
893c Options1: asd
894a
895b
896c Options1: asd
897a
898b
899c Options1: asd
900a
901b
902c Options1: asd
903a
904b
905c Options1: asd
906a
907b
908c Options1: asd
909a
910b
911c Options1: asd
912a
913b
914c Options1: asd
915a
916b
917c Options1: asd
918a
919b
920c Options1: asd
921a
922b
923c Options1: asd
924a
925b
926c Options1: asd
927a
928b
929c Options1: asd
930a
931b
932c Options1: asd
933a
934b
935c Options1: asd
936a
937b
938c Options1: asd
939a
940b
941c Options1: asd
942a
943b
944c Options1: asd
945a
946b
947c Options1: asd
948a
949b
950c Options1: asd
951a
952b
953c Options1: asd
954a
955b
956c Options1: asd
957a
958b
959c Options1: asd
960a
961b
962c Options1: asd
963a
964 + assertCliApp
965b
966c Options1: asd
967a
968b
969c Options1: asd
970a
971b
972c Options1: asd
973a
974b
975c Options1: asd
976a
977b
978c Options1: asd
979 + assertCommand
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
1028a
1029b
1030c Options1: asd
1031a
1032b
1033c Options1: asd
1034a
1035b
1036c Options1: asd
1037a
1038b
1039c Options1: asd
1040a
1041b
1042c Options1: asd
1043a
1044b
1045c Options1: asd
1046a
1047b
1048c Options1: asd
1049a
1050b
1051c Options1: asd
1052a
1053b
1054c Options1: asd
1055a
1056b
1057c Options1: asd
1058a
1059b
1060c Options1: asd
1061a
1062b
1063c Options1: asd
1064a
1065b
1066c Options1: asd
1067a
1068b
1069c Options1: asd
1070a
1071b
1072c Options1: asd
1073a
1074b
1075c Options1: asd
1076a
1077b
1078c Options1: asd
1079a
1080b
1081c Options1: asd
1082a
1083b
1084c Options1: asd
1085a
1086b
1087c Options1: asd
1088a
1089b
1090c Options1: asd
1091a
1092b
1093c Options1: asd
1094a
1095b
1096c Options1: asd
1097a
1098b
1099c Options1: asd
1100a
1101b
1102c Options1: asd
1103a
1104b
1105c Options1: asd
1106a
1107b
1108c Options1: asd
1109a
1110b
1111c Options1: asd
1112a
1113b
1114c Options1: asd
1115a
1116b
1117c Options1: asd
1118a
1119b
1120c Options1: asd
1121a
1122b
1123c Options1: asd
1124a
1125b
1126c Options1: asd
1127a
1128b
1129c Options1: asd
1130a
1131b
1132c Options1: asd
1133a
1134b
1135c Options1: asd
1136a
1137b
1138c Options1: asd
1139a
1140b
1141c Options1: asd
1142a
1143b
1144c Options1: asd
1145a
1146b
1147c Options1: asd
1148a
1149b
1150c Options1: asd
1151a
1152b
1153c Options1: asd
1154a
1155b
1156c Options1: asd
1157a
1158b
1159c Options1: asd
1160a
1161b
1162c Options1: asd
1163a
1164b
1165c Options1: asd
1166a
1167b
1168c Options1: asd
1169a
1170b
1171c Options1: asd
1172a
1173b
1174c Options1: asd
1175a
1176b
1177c Options1: asd
1178a
1179b
1180c Options1: asd
1181a
1182b
1183c Options1: asd
1184a
1185b
1186c Options1: asd
1187a
1188b
1189c Options1: asd
1190a
1191b
1192c Options1: asd
1193a
1194b
1195c Options1: asd
1196a
1197b
1198c Options1: asd
1199a
1200b
1201c Options1: asd
1202a
1203b
1204c Options1: asd
1205a
1206b
1207c Options1: asd
1208a
1209b
1210c Options1: asd
1211a
1212b
1213c Options1: asd
1214a
1215b
1216c Options1: asd
1217a
1218b
1219c Options1: asd
1220a
1221b
1222c Options1: asd
1223a
1224b
1225c Options1: asd
1226a
1227b
1228c Options1: asd
1229a
1230b
1231c Options1: asd
1232a
1233b
1234c Options1: asd
1235a
1236b
1237c Options1: asd
1238a
1239b
1240c Options1: asd
1241a
1242b
1243c Options1: asd
1244a
1245b
1246c Options1: asd
1247a
1248b
1249c Options1: asd
1250a
1251b
1252c Options1: asd
1253a
1254b
1255c Options1: asd
1256a
1257b
1258c Options1: asd
1259a
1260b
1261c Options1: asd
1262a
1263b
1264c Options1: asd
1265a
1266b
1267c Options1: asd
1268a
1269b
1270c Options1: asd
1271a
1272b
1273c Options1: asd
1274a
1275b
1276c Options1: asd
1277a
1278b
1279c Options1: asd
1280a
1281b
1282c Options1: asd
1283a
1284b
1285c Options1: asd
1286a
1287b
1288c Options1: asd
1289a
1290b
1291c Options1: asd
1292a
1293b
1294c Options1: asd
1295a
1296b
1297c Options1: asd
1298a
1299b
1300c Options1: asd
1301a
1302b
1303c Options1: asd
1304a
1305b
1306c Options1: asd
1307a
1308b
1309c Options1: asd
1310a
1311b
1312c Options1: asd
1313a
1314b
1315c Options1: asd
1316a
1317b
1318c Options1: asd
1319a
1320b
1321c Options1: asd
1322a
1323b
1324c Options1: asd
1325a
1326b
1327c Options1: asd
1328a
1329b
1330c Options1: asd
1331a
1332b
1333c Options1: asd
1334a
1335b
1336c Options1: asd
1337a
1338b
1339c Options1: asd
1340a
1341b
1342c Options1: asd
1343a
1344b
1345c Options1: asd
1346a
1347b
1348c Options1: asd
1349a
1350b
1351c Options1: asd
1352a
1353b
1354c Options1: asd
1355a
1356b
1357c Options1: asd
1358a
1359b
1360c Options1: asd
1361a
1362b
1363c Options1: asd
1364a
1365b
1366c Options1: asd
1367a
1368b
1369c Options1: asd
1370a
1371b
1372c Options1: asd
1373a
1374b
1375c Options1: asd
1376a
1377b
1378c Options1: asd
1379a
1380b
1381c Options1: asd
1382a
1383b
1384c Options1: asd
1385 + Access methods
1386 + accessSynopsis
1387 + accessCommand
1388 + accessHelpDoc
1389 + outputContains
139010 tests passed. 0 tests failed. 0 tests ignored.
1391
1392Executed in 5 s 846 ms
1393
1394
1395************************
1396Build summary:
1397[{
1398 "module": "examples",
1399 "compile": {"status": "ok", "tookMs": 23880, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
1400 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1401 "test-compile": {"status": "ok", "tookMs": 217, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1402 "test": {"status": "ok", "tookMs": 306, "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": 106, "warnings": 4, "errors": 0, "sourceVersion": "3.8"},
1410 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1411 "test-compile": {"status": "ok", "tookMs": 7023, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1412 "test": {"status": "ok", "tookMs": 5569, "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": 1189, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1420 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1421 "test-compile": {"status": "ok", "tookMs": 896, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1422 "test": {"status": "ok", "tookMs": 6433, "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: 49 s, completed Jan 8, 2026, 2:08:22 AM
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.