Build Logs
sbt/io • 3.8.0-RC6:2026-01-08
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-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/Dependencies.scala
34Pattern: val scala3 = "3.3.5"
35Replacement: val scala3 = "3.8.0-RC6"
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-RC6
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-RC6
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-RC6
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-RC6"
70"++3.8.0-RC6 -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-RC6 """{"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.08s.
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-RC6
97OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in io/crossScalaVersions
98OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in ioRoot/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-RC6 on 2 projects.
109[info] Switching Scala version on:
110[info] * ioRoot (2.12.20, 2.13.16, 3.8.0-RC6)
111[info] io (2.12.20, 2.13.16, 3.8.0-RC6)
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 8, 2026, 2:34:41 AM
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-RC6/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-RC6/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] WatchServiceBackedObservableSpec:
258[info] register
259[info] - should work recursively
260[info] NioPathFinderSpec:
261[info] PathFinder
262[info] - should find the files in a directory
263[info] - should find children of subdirectories
264[info] - should apply filter
265[info] - should apply exclude filter
266[info] - should apply nothing filter
267[info] - should work for complex extension filters
268[info] - should follow links
269[info] - should include the base directory
270[info] - should preserve ordering
271[info] StashSpec:
272[info] stash
273[info] - should handle empty files
274[info] - should move files during execution
275[info] - should restore files on exceptions but not errors
276[info] GlobsSpec:
277[info] FullFileGlob
278[info] - should apply exact name filters
279[info] - should apply extension filters
280[info] - should apply prefix filters
281[info] - should apply suffix filters
282[info] - should apply pattern filters
283[info] - should apply simple filters
284[info] - should apply not filters
285[info] - should apply and filters
286[info] - should apply or filters
287[info] - should apply arbitrary filters
288[info] - should apply anonymous filters
289[info] - should apply and filter with not hidden file filter
290[info] - should apply and filter with not filter
291[info] - should apply or with name filters
292[info] hidden files
293[info] - should be included by default
294[info] - should be excluded by filter
295[info] FileTreeViewSpec:
296[info] list
297[info] - should return the source root with depth == -1
298[info] - should not return the source root with depth >= 0
299[info] - should get recursive files
300[info] - should handle multiple globs
301[info] - should list directories only once
302[info] - should apply filters
303[info] - should handle exact file glob
304[info] - should handle many exact file globs
305[info] - should handle overlapping globs with exact file
306[info] - should throw NoSuchFileException for non-existent directories
307[info] - should throw NotDirectoryException for regular files
308[info] iterator
309[info] - should be lazy
310[info] sbt.internal.io.RetrySpec
311[info] - retry should throw first exception after number of failures
312[info] - Retry.io should throw first exception after number of failures
313[info] - retry should throw recover
314[info] - retry should recover from non-IO exceptions
315[info] - Retry.io should throw non-IOException
316[info] PathMapperSpec:
317[info] rebase | flat
318[info] - should copy resource mappings correctly
319[info] directory
320[info] - should create mappings including the baseDirectory
321[info] - should create one mapping entry for an empty directory
322[info] - should create an empty mappings sequence for a non-existing directory
323[info] - should create one mapping entry if the directory is a file
324[info] contentOf
325[info] - should create mappings excluding the baseDirectory
326[info] - should create an empty mappings sequence for an empty directory
327[info] - should create an empty mappings sequence for a non-existing directory
328[info] - should create an empty mappings sequence if the directory is a file
329[info] - should not include the base directory
330[info] IOSyntaxSpec:
331[info] file(...)
332[info] - should create File
333[info] file(...) / "a"
334[info] - should create File
335[info] file(...) glob "*.properties"
336[info] - should create PathFinder
337[info] get
338[info] - should work with PathLister and PathFinder
339[info] NativePathFinderSpec:
340[info] PathFinder
341[info] - should find the files in a directory
342[info] - should find children of subdirectories
343[info] - should apply filter
344[info] - should apply exclude filter
345[info] - should apply nothing filter
346[info] - should work for complex extension filters
347[info] - should follow links
348[info] - should include the base directory
349[info] - should preserve ordering
350[info] PathFinderCombinatorSpec:
351[info] PathFinderCombinator
352[info] - should provide extension methods for File
353[info] FileTreeRepositorySpec:
354[info] register
355[info] - should see existing files
356[info] - should detect new files
357[info] - should detect new subdirectories
358[info] - should detect move events
359[info] - should in children of subdirectories when recursive flag is false
360[info] - should add recursive flag when previously set to false
361[info] - should not remove recursive flag when already set
362[info] - should work with directory file name overlap
363[info] - should detect many creations and deletions
364[info] DefaultWatchServiceSpec:
365[info] - should detect modified files
366[info] - should watch a directory for file creation
367[info] - should ignore creation of directories with no tracked globs
368[info] - should ignore creation of files that do not match inclusion filter
369[info] - should ignore creation of files that are explicitly ignored
370[info] - should ignore creation of an empty directory
371[info] - should detect files created in a subdirectory
372[info] - should ignore creation of files not included in inclusion filter in subdirectories
373[info] - should ignore creation of files explicitly ignored in subdirectories
374[info] - should ignore creation of empty directories in a subdirectory
375[info] - should detect deleted files
376[info] - should ignore deletion of files not included in inclusion filter
377[info] - should ignore deletion of files explicitly ignored
378[info] - should ignore deletion of empty directories
379[info] - should detect deleted files in subdirectories
380[info] - should ignore deletion of files not included in inclusion filter in subdirectories
381[info] - should ignore deletion of files explicitly ignored in subdirectories
382[info] - should ignore deletion of empty directories in subdirectories
383[info] - should ignore creation and then deletion of empty directories
384[info] - should detect deletion of a directory containing watched files
385[info] - should not generate multiple events for the same file within anti-entropy period
386[info] - should ignore valid files in non-recursive subdirectories
387[info] - should log triggered files
388[info] - should handle rapid creation of many subdirectories and files
389[info] WatchService.poll
390[info] - should throw a `ClosedWatchServiceException` if used after `close`
391[info] WatchService.register
392[info] - should throw a `ClosedWatchServiceException` if used after `close`
393[info] WatchService.close
394[info] - should not throw if called multiple times
395[info] GlobSyntaxSpec:
396[info] path builders
397[info] - should use `*` and `**` objects
398[info] - should apply question marks
399[info] - should apply ranges
400[info] - should apply extension filters
401[info] - should apply prefix filters
402[info] - should apply suffix filters
403[info] - should apply split filters
404[info] - should convert strings
405[info] - should handle escaped characters
406[info] base
407[info] - should warn on relative paths
408[info] - should work with relative globs with file name prefix
409[info] show
410[info] - should represent globs like the shell
411[info] syntax
412[info] - should work
413[info] file tree view params
414[info] - should work with relative paths
415[info] regex syntax
416[info] - should apply patterns
417[info] dot files
418[info] - should not be excluded by default
419[info] - should be excluded with filter
420[info] - should be excluded with regex filter
421[info] MacOSXWatchServiceSpec:
422[info] MacOSXWatchService
423[info] - should handle overlapping directories
424[info] JavaMilliSpec:
425[info] JavaMilli
426[info] - should be exposed to the sbt.io package
427[info] CopyDirectorySpec:
428[info] - should copy symlinks
429[info] GlobOrderingSpec:
430[info] Globs
431[info] - should be ordered
432[info] - should fall back on depth
433[info] - should not stack overflow
434[info] - should not violate sorting contract
435[info] LegacyFileTreeRepositoryEventMonitorSpec:
436[info] - should detect modified files
437[info] - should watch a directory for file creation
438[info] - should ignore creation of directories with no tracked globs
439[info] - should ignore creation of files that do not match inclusion filter
440[info] - should ignore creation of files that are explicitly ignored
441[info] - should ignore creation of an empty directory
442[info] - should detect files created in a subdirectory
443[info] - should ignore creation of files not included in inclusion filter in subdirectories
444[info] - should ignore creation of files explicitly ignored in subdirectories
445[info] - should ignore creation of empty directories in a subdirectory
446[info] - should detect deleted files
447[info] - should ignore deletion of files not included in inclusion filter
448[info] - should ignore deletion of files explicitly ignored
449[info] - should ignore deletion of empty directories
450[info] - should detect deleted files in subdirectories
451[info] - should ignore deletion of files not included in inclusion filter in subdirectories
452[info] - should ignore deletion of files explicitly ignored in subdirectories
453[info] - should ignore deletion of empty directories in subdirectories
454[info] - should ignore creation and then deletion of empty directories
455[info] - should detect deletion of a directory containing watched files
456[info] - should not generate multiple events for the same file within anti-entropy period
457[info] - should ignore valid files in non-recursive subdirectories
458[info] - should log triggered files
459[info] - should handle rapid creation of many subdirectories and files
460[info] + NameFilter.Exact filter matches provided string: OK, passed 100 tests.
461[info] + NameFilter.Glob filter matches valid string if no *s: OK, passed 100 tests.
462[info] + NameFilter.Exact filter matches valid string: OK, passed 100 tests.
463[info] + NameFilter.Glob filter matches provided string if no *s: OK, passed 100 tests.
464[info] + NameFilter.All pass accepts everything: OK, passed 100 tests.
465[info] PathFilterSpec:
466[info] PathFilters
467[info] - should accept files
468[info] - should exclude files
469[info] - should combine filters with &&
470[info] - should combine filters with ||
471[info] - should combine glob strings
472[info] - should combine file filters
473[info] - should combine Globs
474[info] - should negate
475[info] FileEventMonitorSpec:
476[info] anti-entropy
477[info] - should ignore redundant events
478[info] - should not ignore new events
479[info] - should quarantine deletions with finite poll
480[info] - should quarantine deletions with infinite poll
481[info] - should immediately trigger for creations
482[info] - should immediately trigger with zero antientropy
483[info] IOSpec:
484[info] - IO should relativize
485[info] - it should relativize . dirs
486[info] - it should relativize relative paths
487[info] - it should copy directories
488[info] - toURI should make URI
489[info] - it should make u0 URI from a relative path
490[info] - it should make u0 URI from a relative path on Windows
491[info] - it should make URI that roundtrips
492[info] - it should make u0 URI that roundtrips
493[info] - it should make u3 URI for an absolute path on Windows that roundtrips
494[info] - it should make u2 URI for a UNC path on Windows that roundtrips
495[info] - getModifiedTimeOrZero should return 0L if the file doesn't exists
496[info] - classLocation[Integer] should return a URL pointing to the rt.jar or java.base
497[info] - classLocation[AbstractMap.SimpleEntry] should return a URL pointing to the rt.jar or java.base
498[info] - classLocation[this.type] should return a URL pointing to a directory or a JAR
499[info] - classLocationPath[Integer] should return NIO path pointing to the rt.jar or java.base
500[info] - classLocationPath[AbstractMap.SimpleEntry] should return NIO path pointing to the rt.jar or java.base
501[info] - classLocationPath[this.type] should return NIO path pointing to a directory or a JAR
502[info] - classLocationFileOption[Integer] should return File pointing to the rt.jar or None
503[info] - classLocationFileOption[AbstractMap.SimpleEntry] should return File pointing to the rt.jar or None
504[info] - classLocationFileOption[this.type] should return File pointing to a directory or a JAR
505[info] - classfileLocation[Integer] should return a URL pointing to *.class
506[info] - classfileLocation[AbstractMap.SimpleEntry] should return a URL pointing to *.class
507[info] - classfileLocation[this.type] should return a URL pointing to *.class
508[info] - delete should handle non-existent files
509[info] - move should overwrite
510[info] - it should create valid jar files
511[info] CombinedFilterSpec:
512[info] FileFilter
513[info] - should combine filters with &&
514[info] - should combine filters with &
515[info] - should combine filters with ||
516[info] - should combine filters with |
517[info] - should combine filters with --
518[info] - should combine filters with -
519[info] - should negate filters
520[info] PathSyntaxSpec:
521[info] toGlob
522[info] - should work with absolute paths
523[info] - should work with relative paths
524[info] - should work with empty paths
525[info] FileAttributeSpec:
526[info] symlinks
527[info] - should be resolved
528[info] broken symlinks
529[info] - should have isSymbolicLink return true
530[info] symlinks
531[info] - should not be resolved with nofollow links
532[info] broken symlinks
533[info] - should have isSymbolicLink true with no follow
534[info] GlobParserSpec:
535[info] - should parse pure paths
536[info] - should parse paths with range
537[info] - should parse paths with filters
538[info] LastModifiedSpec:
539[info] IO.getModifiedTimeOrZero
540[info] - should work with long path names
541[info] - should handle empty paths
542[info] - should handle relative paths
543[info] FileSpec:
544[info] files
545[info] - should set/unset permissions
546[info] GlobFilterSpec:
547[info] GlobFilter
548[info] - should work with *
549[info] - should work with no *
550[info] - should work with simple extensions
551[info] - should combine extensions
552[info] - should work with patterns
553[info] - should work with trailing *
554[info] - should work with leading *
555[info] TraversableGlobSpec:
556[info] Traversable globs
557[info] - should collect multiple directories
558[info] - should handle redundant globs
559[info] - should handle semi-overlapping globs
560[info] GlobFilterSpec:
561[info] GlobAsFilter
562[info] - should work with simple files
563[info] - should work with globs
564[info] - should work with recursive globs
565[info] - should work with depth
566[info] SourceSpec:
567[info] - should accept recursive paths
568[info] - should reject subdirectories without recursive flag
569[info] - should apply include filter
570[info] - should apply exclude filter
571[info] - should override equals/hashcode
572[info] NameFilterSpec:
573[info] NameFilter
574[info] - should have readable toString() method
575[info] - should correctly override equals/hashCode
576[info] - should correctly identify unequal filters
577[info] FileTreeRepositoryEventMonitorSpec:
578[info] - should detect modified files
579[info] - should watch a directory for file creation
580[info] - should ignore creation of directories with no tracked globs
581[info] - should ignore creation of files that do not match inclusion filter
582[info] - should ignore creation of files that are explicitly ignored
583[info] - should ignore creation of an empty directory
584[info] - should detect files created in a subdirectory
585[info] - should ignore creation of files not included in inclusion filter in subdirectories
586[info] - should ignore creation of files explicitly ignored in subdirectories
587[info] - should ignore creation of empty directories in a subdirectory
588[info] - should detect deleted files
589[info] - should ignore deletion of files not included in inclusion filter
590[info] - should ignore deletion of files explicitly ignored
591[info] - should ignore deletion of empty directories
592[info] - should detect deleted files in subdirectories
593[info] - should ignore deletion of files not included in inclusion filter in subdirectories
594[info] - should ignore deletion of files explicitly ignored in subdirectories
595[info] - should ignore deletion of empty directories in subdirectories
596[info] - should ignore creation and then deletion of empty directories
597[info] - should detect deletion of a directory containing watched files
598[info] - should not generate multiple events for the same file within anti-entropy period
599[info] - should ignore valid files in non-recursive subdirectories
600[info] - should log triggered files
601[info] - should handle rapid creation of many subdirectories and files
602[info] + IO.IO.classLocationPath able to determine containing directories: OK, passed 100 tests.
603[info] + Write content.Write string overwrites: OK, passed 100 tests.
604[info] + Write content.Round trip bytes: OK, passed 100 tests.
605[info] + Write content.Round trip string: OK, passed 100 tests.
606[info] + Write content.Append bytes appends: OK, passed 100 tests.
607[info] + NameFilter.Glob filter matches valid: OK, passed 100 tests.
608[info] + Write content.Append string appends: OK, passed 100 tests.
609[info] + Write content.Write bytes overwrites: OK, passed 100 tests.
610[info] + Write content.Unzip errors given parent traversal: OK, proved property.
611[info] + Write content.Unzip doesn't stack overflow: OK, proved property.
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": 22204, "warnings": 4, "errors": 0, "sourceVersion": "3.8"},
650 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
651 "test-compile": {"status": "ok", "tookMs": 14591, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
652 "test": {"status": "ok", "tookMs": 8369, "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: 48 s, completed Jan 8, 2026, 2:35:28 AM
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.