Build Logs

sbt/io • 3.8.0:2026-01-13

Errors

11

Warnings

66

Total Lines

667

1##################################
2Clonning https://github.com/sbt/io.git into /build/repo using revision v1.10.5
3##################################
4Note: switching to '170490bd030b16f754d7b3a90086da3dd40fa82d'.
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.5
22----
23Preparing build for 3.8.0
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/Dependencies.scala
34Pattern: val scala3 = "3.3.5"
35Replacement: val scala3 = "3.8.0"
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (17))
38Compiled project (Scala 3.7.3, JVM (17))
39Successfully applied pattern 'val scala3 = "3.3.5"' in project/Dependencies.scala
40----
41Starting build for 3.8.0
42Execute tests: true
43sbt project found:
44Sbt version 1.10.7 is not supported, minimal supported version is 1.11.5
45Enforcing usage of sbt in version 1.11.5
46No prepare script found for project sbt/io
47##################################
48Scala version: 3.8.0
49Targets: org.scala-sbt%io
50Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"project/Dependencies.scala","pattern":"val scala3 = \"3.3.5\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
51##################################
52Using extra scalacOptions: ,REQUIRE:-source:3.8
53Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
54[sbt_options] declare -a sbt_options=()
55[process_args] java_version = '17'
56[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
57# Executing command line:
58java
59-Dfile.encoding=UTF-8
60-Dcommunitybuild.scala=3.8.0
61-Dcommunitybuild.project.dependencies.add=
62-Xmx7G
63-Xms4G
64-Xss8M
65-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
66-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
67-jar
68/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
69"setCrossScalaVersions 3.8.0"
70"++3.8.0 -v"
71"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
72"set every credentials := Nil"
73"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
74"removeScalacOptionsStartingWith -P:wartremover"
75
76moduleMappings
77"runBuild 3.8.0 """{"projects":{"exclude":[],"overrides":{}},"java":{},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"project/Dependencies.scala","pattern":"val scala3 = \"3.3.5\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}""" org.scala-sbt%io"
78
79[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
80[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
81[info] loading project definition from /build/repo/project
82[info] compiling 4 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
83[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
84[info] Compilation completed in 9.048s.
85[info] done compiling
86[info] loading settings for project ioRoot from build.sbt...
87[info] _
88[info] (_)___
89[info] / / __ \
90[info] / / /_/ /
91[info] /_/\____/
92[info] Welcome to the build for sbt/io.
93[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
94[info] Java versions is 17. We recommend 1.8.
95[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
96Execute setCrossScalaVersions: 3.8.0
97OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in ioRoot/crossScalaVersions
98OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in io/crossScalaVersions
99[info] _
100[info] (_)___
101[info] / / __ \
102[info] / / /_/ /
103[info] /_/\____/
104[info] Welcome to the build for sbt/io.
105[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
106[info] Java versions is 17. We recommend 1.8.
107[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
108[info] Setting Scala version to 3.8.0 on 2 projects.
109[info] Switching Scala version on:
110[info] * ioRoot (2.12.20, 2.13.16, 3.8.0)
111[info] io (2.12.20, 2.13.16, 3.8.0)
112[info] Excluding projects:
113[info] Reapplying settings...
114[info] _
115[info] (_)___
116[info] / / __ \
117[info] / / /_/ /
118[info] /_/\____/
119[info] Welcome to the build for sbt/io.
120[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
121[info] Java versions is 17. We recommend 1.8.
122[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
123Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
124[info] Reapplying settings...
125[info] _
126[info] (_)___
127[info] / / __ \
128[info] / / /_/ /
129[info] /_/\____/
130[info] Welcome to the build for sbt/io.
131[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
132[info] Java versions is 17. We recommend 1.8.
133[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
134[info] Defining Global / credentials, credentials, io / credentials
135[info] The new values will be used by Compile / scalafmtOnly, Global / pgpSelectPassphrase and 15 others.
136[info] Run `last` for details.
137[info] Reapplying settings...
138[info] _
139[info] (_)___
140[info] / / __ \
141[info] / / /_/ /
142[info] /_/\____/
143[info] Welcome to the build for sbt/io.
144[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
145[info] Java versions is 17. We recommend 1.8.
146[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
147Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
148[info] Reapplying settings...
149OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
150
151 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
152 Did you mean io / allExcludeDependencies ?
153 , retry without global scopes
154[info] Reapplying settings...
155[info] _
156[info] (_)___
157[info] / / __ \
158[info] / / /_/ /
159[info] /_/\____/
160[info] Welcome to the build for sbt/io.
161[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
162[info] Java versions is 17. We recommend 1.8.
163[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
164Execute removeScalacOptionsStartingWith: -P:wartremover
165[info] Reapplying settings...
166[info] _
167[info] (_)___
168[info] / / __ \
169[info] / / /_/ /
170[info] /_/\____/
171[info] Welcome to the build for sbt/io.
172[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
173[info] Java versions is 17. We recommend 1.8.
174[info] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
175[success] Total time: 0 s, completed Jan 13, 2026, 4:52:26 PM
176Build config: {"projects":{"exclude":[],"overrides":{}},"java":{},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"project/Dependencies.scala","pattern":"val scala3 = \"3.3.5\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
177Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
178Starting build...
179Projects: Set(io)
180Starting build for ProjectRef(file:/build/repo/,io) (io)... [0/1]
181OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
182OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
183OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
184Compile scalacOptions: -encoding, utf8, -unchecked, -language:higherKinds, -language:implicitConversions, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
185[info] scalafmt: Formatting 38 Scala sources (/build/repo/io)...
186[info] scalafmt: Formatting 36 Scala sources (/build/repo/io)...
187[info] compiling 37 Scala sources to /build/repo/io/target/scala-3.8.0/classes ...
188[warn] -- [E147] Syntax Warning: /build/repo/io/src/main/scala/sbt/nio/file/Glob.scala:283:16
189[warn] 283 | private[file] final case object Empty extends RelativeGlob {
190[warn] | ^^^^^
191[warn] | Modifier final is redundant for this definition
192[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/io/src/main/scala/sbt/internal/nio/FileEventMonitor.scala:266:8
193[warn] 266 | case event @ FileEvent(path, attributes) =>
194[warn] | ^
195[warn] |match may not be exhaustive.
196[warn] |
197[warn] |It would fail on pattern case: sbt.internal.nio.FileEvent.Creation(_, _), sbt.internal.nio.FileEvent.Update(_, _, _), sbt.internal.nio.FileEvent.Deletion(_, _)
198[warn] |
199[warn] | longer explanation available when compiling with `-explain`
200[warn] -- [E030] Match case Unreachable Warning: /build/repo/io/src/main/scala/sbt/internal/nio/Globs.scala:70:11
201[warn] 70 | case AllPassFilter => Some(AnyPath)
202[warn] | ^^^^^^^^^^^^^
203[warn] | Unreachable case
204[warn] -- [E030] Match case Unreachable Warning: /build/repo/io/src/main/scala/sbt/internal/nio/Globs.scala:71:11
205[warn] 71 | case NothingFilter => Some(NoPath)
206[warn] | ^^^^^^^^^^^^^
207[warn] | Unreachable case
208[warn] there were 60 deprecation warnings; re-run with -deprecation for details
209[warn] 5 warnings found
210[info] done compiling
211[info] compiling 39 Scala sources to /build/repo/io/target/scala-3.8.0/test-classes ...
212[warn] An existential type that came from a Scala-2 classfile for trait Transforms
213[warn] cannot be mapped accurately to a Scala-3 equivalent.
214[warn] original type : stabilizer$1.type#global.Type forSome stabilizer$1.type <:
215[warn] (AnyRef & scala.reflect.internal.transform.PostErasure){
216[warn] val global:
217[warn] (Transforms.this : scala.reflect.internal.SymbolTable &
218[warn] scala.reflect.internal.transform.Transforms)
219[warn] }
220[warn] & Singleton
221[warn] reduces to : stabilizer$1.type#global.Type
222[warn] type used instead: (
223[warn] (AnyRef & scala.reflect.internal.transform.PostErasure){
224[warn] val global:
225[warn] (Transforms.this : scala.reflect.internal.SymbolTable &
226[warn] scala.reflect.internal.transform.Transforms)
227[warn] }
228[warn] & Singleton)#global.Type
229[warn] This choice can cause follow-on type errors or hide type errors.
230[warn] Proceed at own risk.
231[warn] |
232[warn] | longer explanation available when compiling with `-explain`
233[warn] An existential type that came from a Scala-2 classfile for trait Transforms
234[warn] cannot be mapped accurately to a Scala-3 equivalent.
235[warn] original type : _1.type#global.Type forSome _1.type <:
236[warn] (AnyRef & scala.reflect.internal.transform.PostErasure){
237[warn] val global:
238[warn] (Transforms.this : scala.reflect.internal.SymbolTable &
239[warn] scala.reflect.internal.transform.Transforms)
240[warn] }
241[warn] & Singleton
242[warn] reduces to : _1.type#global.Type
243[warn] type used instead: (
244[warn] (AnyRef & scala.reflect.internal.transform.PostErasure){
245[warn] val global:
246[warn] (Transforms.this : scala.reflect.internal.SymbolTable &
247[warn] scala.reflect.internal.transform.Transforms)
248[warn] }
249[warn] & Singleton)#global.Type
250[warn] This choice can cause follow-on type errors or hide type errors.
251[warn] Proceed at own risk.
252[warn] |
253[warn] | longer explanation available when compiling with `-explain`
254[warn] there were 20 deprecation warnings; re-run with -deprecation for details
255[warn] three warnings found
256[info] done compiling
257[info] NioPathFinderSpec:
258[info] PathFinder
259[info] - should find the files in a directory
260[info] - should find children of subdirectories
261[info] - should apply filter
262[info] - should apply exclude filter
263[info] - should apply nothing filter
264[info] - should work for complex extension filters
265[info] - should follow links
266[info] - should include the base directory
267[info] - should preserve ordering
268[info] NameFilterSpec:
269[info] NameFilter
270[info] - should have readable toString() method
271[info] - should correctly override equals/hashCode
272[info] - should correctly identify unequal filters
273[info] StashSpec:
274[info] stash
275[info] - should handle empty files
276[info] - should move files during execution
277[info] - should restore files on exceptions but not errors
278[info] NativePathFinderSpec:
279[info] PathFinder
280[info] - should find the files in a directory
281[info] - should find children of subdirectories
282[info] - should apply filter
283[info] - should apply exclude filter
284[info] - should apply nothing filter
285[info] - should work for complex extension filters
286[info] - should follow links
287[info] - should include the base directory
288[info] - should preserve ordering
289[info] FileAttributeSpec:
290[info] symlinks
291[info] - should be resolved
292[info] broken symlinks
293[info] - should have isSymbolicLink return true
294[info] symlinks
295[info] - should not be resolved with nofollow links
296[info] broken symlinks
297[info] - should have isSymbolicLink true with no follow
298[info] CombinedFilterSpec:
299[info] FileFilter
300[info] - should combine filters with &&
301[info] - should combine filters with &
302[info] - should combine filters with ||
303[info] - should combine filters with |
304[info] - should combine filters with --
305[info] - should combine filters with -
306[info] - should negate filters
307[info] FileSpec:
308[info] files
309[info] - should set/unset permissions
310[info] GlobFilterSpec:
311[info] GlobFilter
312[info] - should work with *
313[info] - should work with no *
314[info] - should work with simple extensions
315[info] - should combine extensions
316[info] - should work with patterns
317[info] - should work with trailing *
318[info] - should work with leading *
319[info] JavaMilliSpec:
320[info] JavaMilli
321[info] - should be exposed to the sbt.io package
322[info] GlobFilterSpec:
323[info] GlobAsFilter
324[info] - should work with simple files
325[info] - should work with globs
326[info] - should work with recursive globs
327[info] - should work with depth
328[info] TraversableGlobSpec:
329[info] Traversable globs
330[info] - should collect multiple directories
331[info] - should handle redundant globs
332[info] - should handle semi-overlapping globs
333[info] GlobsSpec:
334[info] FullFileGlob
335[info] - should apply exact name filters
336[info] - should apply extension filters
337[info] - should apply prefix filters
338[info] - should apply suffix filters
339[info] - should apply pattern filters
340[info] - should apply simple filters
341[info] - should apply not filters
342[info] - should apply and filters
343[info] - should apply or filters
344[info] - should apply arbitrary filters
345[info] - should apply anonymous filters
346[info] - should apply and filter with not hidden file filter
347[info] - should apply and filter with not filter
348[info] - should apply or with name filters
349[info] hidden files
350[info] - should be included by default
351[info] - should be excluded by filter
352[info] PathMapperSpec:
353[info] rebase | flat
354[info] - should copy resource mappings correctly
355[info] directory
356[info] - should create mappings including the baseDirectory
357[info] - should create one mapping entry for an empty directory
358[info] - should create an empty mappings sequence for a non-existing directory
359[info] - should create one mapping entry if the directory is a file
360[info] contentOf
361[info] - should create mappings excluding the baseDirectory
362[info] - should create an empty mappings sequence for an empty directory
363[info] - should create an empty mappings sequence for a non-existing directory
364[info] - should create an empty mappings sequence if the directory is a file
365[info] - should not include the base directory
366[info] DefaultWatchServiceSpec:
367[info] - should detect modified files
368[info] - should watch a directory for file creation
369[info] - should ignore creation of directories with no tracked globs
370[info] - should ignore creation of files that do not match inclusion filter
371[info] - should ignore creation of files that are explicitly ignored
372[info] - should ignore creation of an empty directory
373[info] - should detect files created in a subdirectory
374[info] - should ignore creation of files not included in inclusion filter in subdirectories
375[info] - should ignore creation of files explicitly ignored in subdirectories
376[info] - should ignore creation of empty directories in a subdirectory
377[info] - should detect deleted files
378[info] - should ignore deletion of files not included in inclusion filter
379[info] - should ignore deletion of files explicitly ignored
380[info] - should ignore deletion of empty directories
381[info] - should detect deleted files in subdirectories
382[info] - should ignore deletion of files not included in inclusion filter in subdirectories
383[info] - should ignore deletion of files explicitly ignored in subdirectories
384[info] - should ignore deletion of empty directories in subdirectories
385[info] - should ignore creation and then deletion of empty directories
386[info] - should detect deletion of a directory containing watched files
387[info] - should not generate multiple events for the same file within anti-entropy period
388[info] - should ignore valid files in non-recursive subdirectories
389[info] - should log triggered files
390[info] - should handle rapid creation of many subdirectories and files
391[info] WatchService.poll
392[info] - should throw a `ClosedWatchServiceException` if used after `close`
393[info] WatchService.register
394[info] - should throw a `ClosedWatchServiceException` if used after `close`
395[info] WatchService.close
396[info] - should not throw if called multiple times
397[info] sbt.internal.io.RetrySpec
398[info] - retry should throw first exception after number of failures
399[info] - Retry.io should throw first exception after number of failures
400[info] - retry should throw recover
401[info] - retry should recover from non-IO exceptions
402[info] - Retry.io should throw non-IOException
403[info] + Write content.Unzip errors given parent traversal: OK, proved property.
404[info] + Write content.Write bytes overwrites: OK, passed 100 tests.
405[info] + Write content.Round trip bytes: OK, passed 100 tests.
406[info] + Write content.Round trip string: OK, passed 100 tests.
407[info] + Write content.Append bytes appends: OK, passed 100 tests.
408[info] SourceSpec:
409[info] - should accept recursive paths
410[info] - should reject subdirectories without recursive flag
411[info] - should apply include filter
412[info] - should apply exclude filter
413[info] - should override equals/hashcode
414[info] GlobOrderingSpec:
415[info] Globs
416[info] - should be ordered
417[info] - should fall back on depth
418[info] - should not stack overflow
419[info] - should not violate sorting contract
420[info] GlobSyntaxSpec:
421[info] path builders
422[info] - should use `*` and `**` objects
423[info] - should apply question marks
424[info] - should apply ranges
425[info] - should apply extension filters
426[info] - should apply prefix filters
427[info] - should apply suffix filters
428[info] - should apply split filters
429[info] - should convert strings
430[info] - should handle escaped characters
431[info] base
432[info] - should warn on relative paths
433[info] - should work with relative globs with file name prefix
434[info] show
435[info] - should represent globs like the shell
436[info] syntax
437[info] - should work
438[info] file tree view params
439[info] - should work with relative paths
440[info] regex syntax
441[info] - should apply patterns
442[info] dot files
443[info] - should not be excluded by default
444[info] - should be excluded with filter
445[info] - should be excluded with regex filter
446[info] IOSpec:
447[info] - IO should relativize
448[info] - it should relativize . dirs
449[info] - it should relativize relative paths
450[info] - it should copy directories
451[info] - toURI should make URI
452[info] - it should make u0 URI from a relative path
453[info] - it should make u0 URI from a relative path on Windows
454[info] - it should make URI that roundtrips
455[info] - it should make u0 URI that roundtrips
456[info] - it should make u3 URI for an absolute path on Windows that roundtrips
457[info] - it should make u2 URI for a UNC path on Windows that roundtrips
458[info] - getModifiedTimeOrZero should return 0L if the file doesn't exists
459[info] - classLocation[Integer] should return a URL pointing to the rt.jar or java.base
460[info] - classLocation[AbstractMap.SimpleEntry] should return a URL pointing to the rt.jar or java.base
461[info] - classLocation[this.type] should return a URL pointing to a directory or a JAR
462[info] - classLocationPath[Integer] should return NIO path pointing to the rt.jar or java.base
463[info] - classLocationPath[AbstractMap.SimpleEntry] should return NIO path pointing to the rt.jar or java.base
464[info] - classLocationPath[this.type] should return NIO path pointing to a directory or a JAR
465[info] - classLocationFileOption[Integer] should return File pointing to the rt.jar or None
466[info] - classLocationFileOption[AbstractMap.SimpleEntry] should return File pointing to the rt.jar or None
467[info] - classLocationFileOption[this.type] should return File pointing to a directory or a JAR
468[info] - classfileLocation[Integer] should return a URL pointing to *.class
469[info] - classfileLocation[AbstractMap.SimpleEntry] should return a URL pointing to *.class
470[info] - classfileLocation[this.type] should return a URL pointing to *.class
471[info] - delete should handle non-existent files
472[info] - move should overwrite
473[info] - it should create valid jar files
474[info] PathSyntaxSpec:
475[info] toGlob
476[info] - should work with absolute paths
477[info] - should work with relative paths
478[info] - should work with empty paths
479[info] LegacyFileTreeRepositoryEventMonitorSpec:
480[info] - should detect modified files
481[info] - should watch a directory for file creation
482[info] - should ignore creation of directories with no tracked globs
483[info] - should ignore creation of files that do not match inclusion filter
484[info] - should ignore creation of files that are explicitly ignored
485[info] - should ignore creation of an empty directory
486[info] - should detect files created in a subdirectory
487[info] - should ignore creation of files not included in inclusion filter in subdirectories
488[info] - should ignore creation of files explicitly ignored in subdirectories
489[info] - should ignore creation of empty directories in a subdirectory
490[info] - should detect deleted files
491[info] - should ignore deletion of files not included in inclusion filter
492[info] - should ignore deletion of files explicitly ignored
493[info] - should ignore deletion of empty directories
494[info] - should detect deleted files in subdirectories
495[info] - should ignore deletion of files not included in inclusion filter in subdirectories
496[info] - should ignore deletion of files explicitly ignored in subdirectories
497[info] - should ignore deletion of empty directories in subdirectories
498[info] - should ignore creation and then deletion of empty directories
499[info] - should detect deletion of a directory containing watched files
500[info] - should not generate multiple events for the same file within anti-entropy period
501[info] - should ignore valid files in non-recursive subdirectories
502[info] - should log triggered files
503[info] - should handle rapid creation of many subdirectories and files
504[info] MacOSXWatchServiceSpec:
505[info] MacOSXWatchService
506[info] - should handle overlapping directories
507[info] GlobParserSpec:
508[info] - should parse pure paths
509[info] - should parse paths with range
510[info] - should parse paths with filters
511[info] FileTreeRepositoryEventMonitorSpec:
512[info] - should detect modified files
513[info] - should watch a directory for file creation
514[info] - should ignore creation of directories with no tracked globs
515[info] - should ignore creation of files that do not match inclusion filter
516[info] - should ignore creation of files that are explicitly ignored
517[info] - should ignore creation of an empty directory
518[info] + Write content.Write string overwrites: OK, passed 100 tests.
519[info] - should detect files created in a subdirectory
520[info] - should ignore creation of files not included in inclusion filter in subdirectories
521[info] - should ignore creation of files explicitly ignored in subdirectories
522[info] - should ignore creation of empty directories in a subdirectory
523[info] - should detect deleted files
524[info] - should ignore deletion of files not included in inclusion filter
525[info] - should ignore deletion of files explicitly ignored
526[info] - should ignore deletion of empty directories
527[info] - should detect deleted files in subdirectories
528[info] - should ignore deletion of files not included in inclusion filter in subdirectories
529[info] - should ignore deletion of files explicitly ignored in subdirectories
530[info] - should ignore deletion of empty directories in subdirectories
531[info] - should ignore creation and then deletion of empty directories
532[info] - should detect deletion of a directory containing watched files
533[info] - should not generate multiple events for the same file within anti-entropy period
534[info] - should ignore valid files in non-recursive subdirectories
535[info] - should log triggered files
536[info] - should handle rapid creation of many subdirectories and files
537[info] + Write content.Append string appends: OK, passed 100 tests.
538[info] + NameFilter.Glob filter matches valid: OK, passed 100 tests.
539[info] + NameFilter.Exact filter matches provided string: OK, passed 100 tests.
540[info] + NameFilter.All pass accepts everything: OK, passed 100 tests.
541[info] + NameFilter.Glob filter matches provided string if no *s: OK, passed 100 tests.
542[info] + NameFilter.Glob filter matches valid string if no *s: OK, passed 100 tests.
543[info] + NameFilter.Exact filter matches valid string: OK, passed 100 tests.
544[info] + IO.IO.classLocationPath able to determine containing directories: OK, passed 100 tests.
545[info] FileEventMonitorSpec:
546[info] anti-entropy
547[info] - should ignore redundant events
548[info] - should not ignore new events
549[info] - should quarantine deletions with finite poll
550[info] - should quarantine deletions with infinite poll
551[info] - should immediately trigger for creations
552[info] - should immediately trigger with zero antientropy
553[info] + Write content.Unzip doesn't stack overflow: OK, proved property.
554[info] LastModifiedSpec:
555[info] IO.getModifiedTimeOrZero
556[info] - should work with long path names
557[info] - should handle empty paths
558[info] - should handle relative paths
559[info] IOSyntaxSpec:
560[info] file(...)
561[info] - should create File
562[info] file(...) / "a"
563[info] - should create File
564[info] file(...) glob "*.properties"
565[info] - should create PathFinder
566[info] get
567[info] - should work with PathLister and PathFinder
568[info] WatchServiceBackedObservableSpec:
569[info] register
570[info] - should work recursively
571[info] CopyDirectorySpec:
572[info] - should copy symlinks
573[info] PathFilterSpec:
574[info] PathFilters
575[info] - should accept files
576[info] - should exclude files
577[info] - should combine filters with &&
578[info] - should combine filters with ||
579[info] - should combine glob strings
580[info] - should combine file filters
581[info] - should combine Globs
582[info] - should negate
583[info] FileTreeViewSpec:
584[info] list
585[info] - should return the source root with depth == -1
586[info] - should not return the source root with depth >= 0
587[info] - should get recursive files
588[info] - should handle multiple globs
589[info] - should list directories only once
590[info] - should apply filters
591[info] - should handle exact file glob
592[info] - should handle many exact file globs
593[info] - should handle overlapping globs with exact file
594[info] - should throw NoSuchFileException for non-existent directories
595[info] - should throw NotDirectoryException for regular files
596[info] iterator
597[info] - should be lazy
598[info] FileTreeRepositorySpec:
599[info] register
600[info] - should see existing files
601[info] - should detect new files
602[info] - should detect new subdirectories
603[info] - should detect move events
604[info] - should in children of subdirectories when recursive flag is false
605[info] - should add recursive flag when previously set to false
606[info] - should not remove recursive flag when already set
607[info] - should work with directory file name overlap
608[info] - should detect many creations and deletions
609[info] PathFinderCombinatorSpec:
610[info] PathFinderCombinator
611[info] - should provide extension methods for File
612[info] PollingWatchServiceSpec:
613[info] - should detect modified files
614[info] - should watch a directory for file creation
615[info] - should ignore creation of directories with no tracked globs
616[info] - should ignore creation of files that do not match inclusion filter
617[info] - should ignore creation of files that are explicitly ignored
618[info] - should ignore creation of an empty directory
619[info] - should detect files created in a subdirectory
620[info] - should ignore creation of files not included in inclusion filter in subdirectories
621[info] - should ignore creation of files explicitly ignored in subdirectories
622[info] - should ignore creation of empty directories in a subdirectory
623[info] - should detect deleted files
624[info] - should ignore deletion of files not included in inclusion filter
625[info] - should ignore deletion of files explicitly ignored
626[info] - should ignore deletion of empty directories
627[info] - should detect deleted files in subdirectories
628[info] - should ignore deletion of files not included in inclusion filter in subdirectories
629[info] - should ignore deletion of files explicitly ignored in subdirectories
630[info] - should ignore deletion of empty directories in subdirectories
631[info] - should ignore creation and then deletion of empty directories
632[info] - should detect deletion of a directory containing watched files
633[info] - should not generate multiple events for the same file within anti-entropy period
634[info] - should ignore valid files in non-recursive subdirectories
635[info] - should log triggered files
636[info] - should handle rapid creation of many subdirectories and files
637[info] WatchService.poll
638[info] - should throw a `ClosedWatchServiceException` if used after `close`
639[info] WatchService.register
640[info] - should throw a `ClosedWatchServiceException` if used after `close`
641[info] WatchService.close
642[info] - should not throw if called multiple times
643[info] + Copy.same contents: OK, passed 100 tests.
644
645************************
646Build summary:
647[{
648 "module": "io",
649 "compile": {"status": "ok", "tookMs": 21948, "warnings": 4, "errors": 0, "sourceVersion": "3.8"},
650 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
651 "test-compile": {"status": "ok", "tookMs": 13631, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
652 "test": {"status": "ok", "tookMs": 8868, "passed": 306, "failed": 0, "ignored": 0, "skipped": 0, "total": 306, "byFramework": [{"framework": "unknown", "stats": {"passed": 306, "failed": 0, "ignored": 0, "skipped": 0, "total": 306}}]},
653 "publish": {"status": "skipped", "tookMs": 0},
654 "metadata": {
655 "crossScalaVersions": ["2.12.20", "2.13.16", "3.3.5"]
656}
657}]
658************************
659[success] Total time: 46 s, completed Jan 13, 2026, 4:53:12 PM
660[0JChecking patch project/plugins.sbt...
661Checking patch project/build.properties...
662Checking patch project/Dependencies.scala...
663Checking patch build.sbt...
664Applied patch project/plugins.sbt cleanly.
665Applied patch project/build.properties cleanly.
666Applied patch project/Dependencies.scala cleanly.
667Applied patch build.sbt cleanly.