Build Logs
creativescala/doodle • 3.8.0-RC2:2025-11-28
Errors
0
Warnings
90
Total Lines
626
1##################################
2Clonning https://github.com/creativescala/doodle.git into /build/repo using revision 0.32.0
3##################################
4Note: switching to 'be90196d816357a15badda83792ad31c20e30458'.
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.6
22----
23Preparing build for 3.8.0-RC2
24Scala binary version found: 3.8
25Implicitly using source version 3.8
26Scala binary version found: 3.8
27Implicitly using source version 3.8
28Would try to apply common scalacOption (best-effort, sbt/mill only):
29Append: ,REQUIRE:-source:3.8
30Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
31
32Try apply source patch:
33Path: build.sbt
34Pattern: val scala3 = "3.3.6"
35Replacement: val scala3 = "3.8.0-RC2"
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.6"' in build.sbt
40----
41Starting build for 3.8.0-RC2
42Execute tests: true
43sbt project found:
44Sbt version 1.11.4 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 creativescala/doodle
47##################################
48Scala version: 3.8.0-RC2
49Targets: org.creativescala%doodle org.creativescala%doodle-algebra org.creativescala%doodle-core org.creativescala%doodle-docs org.creativescala%doodle-examples org.creativescala%doodle-golden org.creativescala%doodle-image org.creativescala%doodle-interact org.creativescala%doodle-java2d org.creativescala%doodle-reactor org.creativescala%doodle-svg org.creativescala%doodle-turtle
50Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.6\"","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-Xmx4G
60-Dcommunitybuild.scala=3.8.0-RC2
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-RC2"
70"++3.8.0-RC2 -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-RC2 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.6\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}""" org.creativescala%doodle org.creativescala%doodle-algebra org.creativescala%doodle-core org.creativescala%doodle-docs org.creativescala%doodle-examples org.creativescala%doodle-golden org.creativescala%doodle-image org.creativescala%doodle-interact org.creativescala%doodle-java2d org.creativescala%doodle-reactor org.creativescala%doodle-svg org.creativescala%doodle-turtle"
78
79[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
80[info] loading settings for project repo-build-build from plugins.sbt...
81[info] loading project definition from /build/repo/project/project
82[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
83[info] loading project definition from /build/repo/project
84[info] compiling 3 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
85[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
86[info] Compilation completed in 9.247s.
87[info] done compiling
88[info] loading settings for project repo from build.sbt...
89[info] resolving key references (29982 settings) ...
90[info] set scmInfo to https://github.com/creativescala/doodle
91[info] set current project to repo (in build file:/build/repo/)
92Execute setCrossScalaVersions: 3.8.0-RC2
93OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in turtleJVM/crossScalaVersions
94OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in unidocs/crossScalaVersions
95OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in rootJVM/crossScalaVersions
96OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in golden/crossScalaVersions
97[info] set scmInfo to https://github.com/creativescala/doodle
98OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in docs/crossScalaVersions
99OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in canvas/crossScalaVersions
100OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in coreJVM/crossScalaVersions
101OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in examplesJS/crossScalaVersions
102OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in repo/crossScalaVersions
103OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in interactJVM/crossScalaVersions
104OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in algebraJS/crossScalaVersions
105OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in examplesJVM/crossScalaVersions
106OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in java2d/crossScalaVersions
107OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in turtleJS/crossScalaVersions
108OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in coreJS/crossScalaVersions
109OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in rootJS/crossScalaVersions
110OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in reactorJS/crossScalaVersions
111OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in algebraJVM/crossScalaVersions
112OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in imageJVM/crossScalaVersions
113OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in imageJS/crossScalaVersions
114OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in reactorJVM/crossScalaVersions
115OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in interactJS/crossScalaVersions
116OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in svgJS/crossScalaVersions
117OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in svgJVM/crossScalaVersions
118[info] set current project to repo (in build file:/build/repo/)
119[info] Setting Scala version to 3.8.0-RC2 on 24 projects.
120[info] Switching Scala version on:
121[info] reactorJS (3.8.0-RC2)
122[info] imageJS (3.8.0-RC2)
123[info] unidocs (3.8.0-RC2)
124[info] rootJS (3.8.0-RC2)
125[info] docs (3.8.0-RC2)
126[info] reactorJVM (3.8.0-RC2)
127[info] coreJS (3.8.0-RC2)
128[info] examplesJS (3.8.0-RC2)
129[info] turtleJS (3.8.0-RC2)
130[info] coreJVM (3.8.0-RC2)
131[info] rootJVM (3.8.0-RC2)
132[info] interactJS (3.8.0-RC2)
133[info] interactJVM (3.8.0-RC2)
134[info] java2d (3.8.0-RC2)
135[info] examplesJVM (3.8.0-RC2)
136[info] algebraJVM (3.8.0-RC2)
137[info] algebraJS (3.8.0-RC2)
138[info] * repo (3.8.0-RC2)
139[info] turtleJVM (3.8.0-RC2)
140[info] imageJVM (3.8.0-RC2)
141[info] svgJVM (3.8.0-RC2)
142[info] svgJS (3.8.0-RC2)
143[info] golden (3.8.0-RC2)
144[info] canvas (3.8.0-RC2)
145[info] Excluding projects:
146[info] Reapplying settings...
147[info] set scmInfo to https://github.com/creativescala/doodle
148[info] set current project to repo (in build file:/build/repo/)
149Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
150[info] Reapplying settings...
151[info] set scmInfo to https://github.com/creativescala/doodle
152[info] set current project to repo (in build file:/build/repo/)
153[info] Defining Global / credentials, algebraJS / credentials and 22 others.
154[info] The new values will be used by Compile / scalafmtOnly, IntegrationTest / scalafmtOnly and 238 others.
155[info] Run `last` for details.
156[info] Reapplying settings...
157[info] set scmInfo to https://github.com/creativescala/doodle
158[info] set current project to repo (in build file:/build/repo/)
159Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
160[info] Reapplying settings...
161OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
162
163 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
164 Did you mean rootJVM / allExcludeDependencies ?
165 , retry without global scopes
166[info] Reapplying settings...
167[info] set scmInfo to https://github.com/creativescala/doodle
168[info] set current project to repo (in build file:/build/repo/)
169Execute removeScalacOptionsStartingWith: -P:wartremover
170[info] Reapplying settings...
171[info] set scmInfo to https://github.com/creativescala/doodle
172[info] set current project to repo (in build file:/build/repo/)
173[success] Total time: 0 s, completed Nov 28, 2025, 1:19:50 PM
174Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.6\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
175Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
176Starting build...
177Projects: Set(unidocs, reactorJVM, coreJVM, rootJVM, interactJVM, java2d, examplesJVM, algebraJVM, turtleJVM, imageJVM, svgJVM, golden)
178Starting build for ProjectRef(file:/build/repo/,interactJVM) (doodle-interact)... [0/12]
179OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
180OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
181OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
182Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/interact/jvm/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
183[info] compiling 29 Scala sources to /build/repo/core/jvm/target/scala-3.8.0-RC2/classes ...
184[warn] -- [E198] Unused Symbol Warning: /build/repo/core/shared/src/main/scala/doodle/core/Transform.scala:20:24
185[warn] 20 |import scala.annotation.tailrec
186[warn] | ^^^^^^^
187[warn] | unused import
188[warn] -- [E198] Unused Symbol Warning: /build/repo/core/shared/src/main/scala/doodle/random/Sampler.scala:54:4
189[warn] 54 | rng =>
190[warn] | ^^^
191[warn] | unused explicit parameter
192[warn] -- [E194] Potential Issue Warning: /build/repo/core/shared/src/main/scala/doodle/random/Random.scala:26:6
193[warn] 26 | def run(rng: scala.util.Random): A =
194[warn] | ^
195[warn] |Extension method run will never be selected from type Free
196[warn] |because Free already has a member with the same name and compatible parameter types.
197[warn] |
198[warn] | longer explanation available when compiling with `-explain`
199[warn] three warnings found
200[info] done compiling
201[info] compiling 64 Scala sources to /build/repo/algebra/jvm/target/scala-3.8.0-RC2/classes ...
202[warn] -- [E198] Unused Symbol Warning: /build/repo/algebra/jvm/src/main/scala/doodle/syntax/BufferedImageWriterSyntax.scala:54:8
203[warn] 54 | r: IORuntime
204[warn] | ^
205[warn] | unused implicit parameter
206[warn] -- [E198] Unused Symbol Warning: /build/repo/algebra/shared/src/main/scala/doodle/algebra/generic/Finalized.scala:23:17
207[warn] 23 |import cats.data.*
208[warn] | ^
209[warn] | unused import
210[warn] two warnings found
211[info] done compiling
212[info] compiling 20 Scala sources to /build/repo/interact/jvm/target/scala-3.8.0-RC2/classes ...
213[warn] -- [E198] Unused Symbol Warning: /build/repo/interact/shared/src/main/scala/doodle/interact/syntax/MouseOverSyntax.scala:28:6
214[warn] 28 | picture: Picture[Alg, A]
215[warn] | ^^^^^^^
216[warn] | unused explicit parameter
217[warn] one warning found
218[info] done compiling
219[info] compiling 14 Scala sources to /build/repo/core/jvm/target/scala-3.8.0-RC2/test-classes ...
220[info] done compiling
221[info] compiling 14 Scala sources to /build/repo/algebra/jvm/target/scala-3.8.0-RC2/test-classes ...
222[warn] -- [E198] Unused Symbol Warning: /build/repo/algebra/shared/src/test/scala/doodle/algebra/generic/TestAlgebra.scala:55:22
223[warn] 55 | fa.flatMap { (bb, rdr) =>
224[warn] | ^^
225[warn] | unused explicit parameter
226[warn] one warning found
227[info] done compiling
228[info] compiling 3 Scala sources to /build/repo/interact/jvm/target/scala-3.8.0-RC2/test-classes ...
229[info] done compiling
230[info] + Easing properties.followedBy sends [0.5,1.0] to second function: OK, passed 100 tests.
231[info] + Easing properties.reflect is its own inverse: OK, passed 100 tests.
232[info] + Easing properties.ends at 1: OK, proved property.
233[info] + Easing properties.starts at 0: OK, proved property.
234[info] + Easing properties.identity is the identity: OK, passed 100 tests.
235[info] + Easing properties.followedBy sends [0,0.5) to first function: OK, passed 100 tests.
236doodle.interact.animation.InterpolationSpec:
237 + upTo empty range produces no output 0.416s
238 + upToIncluding empty range produces single output 0.014s
239 + upTo is empty when steps is zero 0.019s
240 + upToIncluding is empty when steps is zero 0.021s
241 + upTo produces requested number of steps when range is not empty 0.027s
242 + upToIncluding produces requested number of steps when range is not empty 0.026s
243 + upTo produces expected data 0.01s
244 + upToIncluding produces expected data 0.018s
245 + upToIncluding ends on stop 0.01s
246 + map transforms data 0.013s
247 + constant is always constant 0.02s
248doodle.interact.animation.TransducerSpec:
249 + empty produces no output 0.402s
250 + pure produces just one output 0.01s
251 + toList generates all elements from the transducer 0.049s
252 + product produces shortest pairs 0.031s
253 + ++ combines transducers in series 0.026s
254 + and combines transducers in parallel 0.097s
255 + and retains last value of first transducer to stop 0.008s
256 + andThen passes last output to the second transducer 0.011s
257 + repeat repeats the given number of times 0.024s
258 + repeatForever seems to repeat forever 0.095s
259 + scanLeft produces cumulative results 0.007s
260 + Transducer.scanLeft produces expected output 0.249s
261 + Transducer.scanLeftUntil runs until the stop condition is met 0.011s
262Starting build for ProjectRef(file:/build/repo/,examplesJVM) (doodle-examples)... [1/12]
263Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/examples/jvm/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
264[info] compiling 42 Scala sources and 1 Java source to /build/repo/java2d/target/scala-3.8.0-RC2/classes ...
265[warn] -- [E198] Unused Symbol Warning: /build/repo/java2d/src/main/scala/doodle/java2d/algebra/Algebra.scala:64:22
266[warn] 64 | fa.flatMap { (bb, rdr) =>
267[warn] | ^^
268[warn] | unused explicit parameter
269[warn] -- [E198] Unused Symbol Warning: /build/repo/java2d/src/main/scala/doodle/java2d/effect/Frame.scala:100:43
270[warn] 100 | case DoNotBlock extends BlockingBehavior(canvas => IO.unit)
271[warn] | ^^^^^^
272[warn] | unused explicit parameter
273[warn] -- [E198] Unused Symbol Warning: /build/repo/java2d/src/main/scala/doodle/java2d/effect/RenderRequest.scala:24:37
274[warn] 24 |import doodle.java2d.algebra.reified.Reified
275[warn] | ^^^^^^^
276[warn] | unused import
277[warn] three warnings found
278[info] done compiling
279[info] compiling 20 Scala sources to /build/repo/svg/jvm/target/scala-3.8.0-RC2/classes ...
280[info] compiling 50 Scala sources to /build/repo/image/jvm/target/scala-3.8.0-RC2/classes ...
281[warn] -- [E198] Unused Symbol Warning: /build/repo/svg/jvm/src/main/scala/doodle/svg/algebra/Algebra.scala:79:24
282[warn] 79 | fa.flatMap { (bb, rdr) =>
283[warn] | ^^
284[warn] | unused explicit parameter
285[warn] -- [E198] Unused Symbol Warning: /build/repo/svg/shared/src/main/scala/doodle/svg/algebra/Filter.scala:37:25
286[warn] 37 | Finalized.leaf { dc =>
287[warn] | ^^
288[warn] | unused explicit parameter
289[warn] -- [E198] Unused Symbol Warning: /build/repo/svg/shared/src/main/scala/doodle/svg/algebra/Filter.scala:86:25
290[warn] 86 | Finalized.leaf { dc =>
291[warn] | ^^
292[warn] | unused explicit parameter
293[warn] -- [E198] Unused Symbol Warning: /build/repo/svg/shared/src/main/scala/doodle/svg/algebra/Filter.scala:112:25
294[warn] 112 | Finalized.leaf { dc =>
295[warn] | ^^
296[warn] | unused explicit parameter
297[warn] -- [E198] Unused Symbol Warning: /build/repo/svg/shared/src/main/scala/doodle/svg/algebra/Image.scala:37:23
298[warn] 37 | Finalized.leaf { dc =>
299[warn] | ^^
300[warn] | unused explicit parameter
301[warn] 5 warnings found
302[info] done compiling
303[warn] there was 1 deprecation warning; re-run with -deprecation for details
304[warn] one warning found
305[info] done compiling
306[info] compiling 6 Scala sources to /build/repo/reactor/jvm/target/scala-3.8.0-RC2/classes ...
307[warn] -- [E198] Unused Symbol Warning: /build/repo/reactor/shared/src/main/scala/doodle/reactor/syntax/AbstractReactorSyntax.scala:76:8
308[warn] 76 | r: IORuntime
309[warn] | ^
310[warn] | unused implicit parameter in extension method animateWithCanvasToIO
311[warn] one warning found
312[info] done compiling
313[info] compiling 1 Scala source to /build/repo/examples/jvm/target/scala-3.8.0-RC2/classes ...
314[warn] -- [E198] Unused Symbol Warning: /build/repo/examples/jvm/src/main/scala/doodle/examples/svg/SvgTaggedJvmExample.scala:34:15
315[warn] 34 | def drawLink(id: String): Unit =
316[warn] | ^^
317[warn] | unused explicit parameter
318[warn] one warning found
319[info] done compiling
320Starting build for ProjectRef(file:/build/repo/,svgJVM) (doodle-svg)... [2/12]
321Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/svg/jvm/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
322[info] compiling 5 Scala sources to /build/repo/svg/jvm/target/scala-3.8.0-RC2/test-classes ...
323[warn] -- [E198] Unused Symbol Warning: /build/repo/svg/shared/src/test/scala/doodle/svg/SvgLoadBitmapSpec.scala:21:19
324[warn] 21 |import doodle.core.*
325[warn] | ^
326[warn] | unused import
327[warn] -- [E198] Unused Symbol Warning: /build/repo/svg/shared/src/test/scala/doodle/svg/algebra/TestAlgebra.scala:60:24
328[warn] 60 | fa.flatMap { (bb, rdr) =>
329[warn] | ^^
330[warn] | unused explicit parameter
331[warn] two warnings found
332[info] done compiling
333doodle.svg.effect.SvgSpec:
334 + circle renders to svg circle 0.195s
335 + paths of path elements render correctly 0.015s
336 + monospaced fonts render correctly 0.015s
337 + paths of points render correctly 0.002s
338doodle.svg.SvgLoadBitmapSpec:
339 + LoadBitmap creates correct SvgImageRef from URL 0.181s
340 + LoadBitmap creates SvgImageRef with dimensions 0.025s
341 + LoadBitmap creates SvgImageRef with width only 0.022s
342 + LoadBitmap creates SvgImageRef with height only 0.017s
343 + image method creates Drawing with correct bounding box 0.008s
344 + image element is properly centered 0.011s
345 + default dimensions are used when not specified 0.006s
346 + image renders to SVG image element 0.006s
347 + image without dimensions renders correctly 0.003s
348 + image with only width renders correctly 0.003s
349doodle.svg.FilterSpec:
350 + gaussianBlur filter should render 0.334s
351 + boxBlur filter should render 0.007s
352 + detectEdges filter should render 0.003s
353 + sharpen filter should render 0.005s
354 + emboss filter should render 0.003s
355 + dropShadow filter should render 0.006s
356 + custom convolve filter should render 0.002s
357 + non-square kernel should render with two order values 0.004s
358 + filters should generate unique IDs 0.003s
359 + multiple filters can be applied 0.004s
360Starting build for ProjectRef(file:/build/repo/,unidocs) (doodle-docs)... [3/12]
361Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/unidocs/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
362Starting build for ProjectRef(file:/build/repo/,coreJVM) (doodle-core)... [4/12]
363Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/core/jvm/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
364[info] + Coordinate properties.oneHundredPercent evaluates correctly: OK, passed 100 tests.
365doodle.random.SamplerSuite:
366 + Sampler.cyclic produces items in expected order 0.02s
367 + Sampler.random produces all allowed items 0.002s
368 + Sampler.noRepeats does not repeat previous sample 0.005s
369[info] + Coordinate properties.addition of percent and point is correct: OK, passed 100 tests.
370doodle.core.ColorSuite:
371 + toRgb should convert to expected Rgb color 0.019s
372 + toOkLCh should convert to expected OkLCh color 0.005s
373 + Hsl with 0 saturation should convert to gray Rgb 0.0s
374 + Hsl spin should transform correctly 0.001s
375 + Fade in/out should transform correctly 0.001s
376 + parse hex colors correctly 0.008s
377[info] + Coordinate properties.minusOneHundredPercent evaluates correctly: OK, passed 100 tests.
378[info] + Normalized syntax..normalized: OK, passed 100 tests.
379[info] + Coordinate properties.subtraction of percent and point is correct: OK, passed 100 tests.
380doodle.core.ColorSpec:
381 + .toRgb andThen .toOklch is the identity 0.095s
382 + .toOklch andThen .toRgb is the identity 0.022s
383[info] + Transform.rotate rotate the point: OK, passed 100 tests.
384[info] + Transform.scale scale the x and y coordinates appropriately: OK, passed 100 tests.
385[info] + Transform.verticalReflection: OK, passed 100 tests.
386[info] + Transform.screenToLogical: OK, passed 100 tests.
387[info] + Transform.horizontalReflection: OK, passed 100 tests.
388[info] + ClosedPath properties.added element is last in the list of elements: OK, passed 100 tests.
389[info] + Transform.logicalToScreen: OK, passed 100 tests.
390[info] + Angle properties.angle has bijection to Double as radians: OK, passed 100 tests.
391[info] + Angle properties.angle negation is inverse: OK, passed 100 tests.
392[info] + Transform.andThen compose the transformations: OK, passed 100 tests.
393[info] + Angle properties.angle double negation is identity: OK, passed 100 tests.
394[info] + ClosedPath properties.appended list comes after original elements: OK, passed 100 tests.
395[info] + Angle properties.angle has bijection to Double as degrees: OK, passed 100 tests.
396[info] + Angle properties.angle has bijection to Double as turns: OK, passed 100 tests.
397[info] + Angle syntax properties..turns: OK, passed 100 tests.
398[info] + Angle syntax properties..degrees: OK, passed 100 tests.
399[info] + Angle syntax properties..radians: OK, passed 100 tests.
400[info] + OpenPath properties.added element is last in the list of elements: OK, passed 100 tests.
401[info] + OpenPath properties.appended list comes after original elements: OK, passed 100 tests.
402Starting build for ProjectRef(file:/build/repo/,java2d) (doodle-java2d)... [5/12]
403Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/java2d/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
404[info] compiling 6 Scala sources to /build/repo/java2d/target/scala-3.8.0-RC2/test-classes ...
405[info] done compiling
406doodle.java2d.effect.BlockingCircularQueueSuite:
407 + Sequential access returns expected values 0.011s
408doodle.java2d.BufferedImageWriteSuite:
409 + writing to file produces the same output as writing BufferedImage to file 0.231s
410doodle.java2d.ToPictureSuite:
411 + toPicture should work with png 0.375s
412 + toPicture should work with gif 0.026s
413 + toPicture should work with jpg 0.073s
414doodle.java2d.algebra.Java2dLoadBitmapSuite:
415 + LoadBitmap should successfully load a valid image file 0.016s
416 + LoadBitmap should return FileNotFound for non-existent file 0.008s
417 + LoadBitmap should return InvalidFormat for non-image file 0.005s
418 + LoadBitmap should work with Path 0.056s
419 + BufferedImage should convert to Picture using existing ToPicture 0.001s
420 + Complete flow: load image and convert to Picture 0.02s
421doodle.java2d.Base64WriterSuite:
422 + base64 should work with png 0.354s
423 + base64 should work with gif 0.042s
424 + base64 should work with jpg 0.089s
425doodle.java2d.FileWriterSuite:
426 + write should work with png 0.327s
427 + write should work with gif 0.028s
428 + write should work with pdf 0.224s
429 + write should work with jpg 0.004s
430Starting build for ProjectRef(file:/build/repo/,imageJVM) (doodle-image)... [6/12]
431Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/image/jvm/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
432Starting build for ProjectRef(file:/build/repo/,reactorJVM) (doodle-reactor)... [7/12]
433Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/reactor/jvm/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
434Starting build for ProjectRef(file:/build/repo/,rootJVM) (doodle)... [8/12]
435Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/jvm/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
436[info] compiling 6 Scala sources to /build/repo/turtle/jvm/target/scala-3.8.0-RC2/classes ...
437[info] done compiling
438Starting build for ProjectRef(file:/build/repo/,algebraJVM) (doodle-algebra)... [9/12]
439Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/algebra/jvm/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
440[info] + Generic algebra properties.On doesn't change the bounding box: OK, passed 100 tests.
441[info] + Generic algebra properties.Beside doubles the width: OK, passed 100 tests.
442[info] + Generic algebra properties.Above doubles the height: OK, passed 100 tests.
443[info] + Layout properties.hand generated path bounding boxes are correct: OK, proved property.
444[info] + Layout properties.hand generated at bounding boxes are correct: OK, proved property.
445[info] + Layout properties.margin expands bounding box by the correct amount: OK, passed 100 tests.
446[info] + Layout properties.beside generates bounding boxes with the correct size: OK, passed 100 tests.
447[info] + Layout properties.above doubles size of image: OK, passed 100 tests.
448[info] + Layout properties.on generates bounding boxes with the correct size: OK, passed 100 tests.
449[info] + Layout properties.above reifies correctly: OK, passed 100 tests.
450[info] + Layout properties.at never decreases the size of the bounding box: OK, passed 100 tests.
451[info] + Layout properties.size sets bounding box to the correct size: OK, passed 100 tests.
452[info] + Layout properties.above generates bounding boxes with the correct size: OK, passed 100 tests.
453[info] + Size properties.height matches bounding box height: OK, passed 100 tests.
454[info] + Text properties.strokeColor is preserved for text: OK, passed 100 tests.
455[info] + Size properties.size matches bounding box size: OK, passed 100 tests.
456[info] + Size properties.width matches bounding box width: OK, passed 100 tests.
457[info] + Style properties.last fillColor takes effect: OK, passed 100 tests.
458[info] + LoadBitmap properties.missing files return failed IO: OK, proved property.
459[info] + LoadBitmap properties.loadBitmap syntax works: OK, passed 100 tests.
460[info] + LoadBitmap properties.successful loading returns IO with bitmap: OK, passed 100 tests.
461Starting build for ProjectRef(file:/build/repo/,turtleJVM) (doodle-turtle)... [10/12]
462Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/turtle/jvm/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
463Starting build for ProjectRef(file:/build/repo/,golden) (doodle-golden)... [11/12]
464Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wvalue-discard, -Xkind-projector:underscores, --java-output-version:17, -Xsemanticdb, -semanticdb-target, /build/repo/golden/target/scala-3.8.0-RC2/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
465[info] compiling 9 Scala sources to /build/repo/golden/target/scala-3.8.0-RC2/test-classes ...
466[info] done compiling
467doodle.golden.FrameBackground:
468 + black-background 0.01s
469 + red-background 0.0s
470doodle.golden.GradientStroke:
471 + linear-gradient-stroke 0.264s
472 + radial-gradient-stroke 0.027s
473doodle.golden.Layout:
474 + layout-size 0.218s
475doodle.golden.ImageLayout:
476 + layout-at-debug 0.42s
477 + image-landmarks 0.041s
478 + image-size 0.033s
479doodle.golden.Text:
480 + text-serif-default 0.02s
481 + text-sans-serif-default 0.012s
482 + text-serif-48pt 0.011s
483 + text-sans-serif-48pt 0.019s
484 + text-on-circle 0.017s
485 + text-color 0.01s
486doodle.golden.Path:
487 + path-polygons 0.232s
488 + path-stars 0.06s
489 + path-rounded-rectangle 0.021s
490 + path-equilateral-triangle 0.021s
491 + path-polygons-1 0.041s
492 + path-stars-1 0.042s
493 + path-rounded-rectangle-1 0.012s
494 + path-equilateral-triangle-1 0.023s
495
496************************
497Build summary:
498[{
499 "module": "doodle-interact",
500 "compile": {"status": "ok", "tookMs": 27049, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
501 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
502 "test-compile": {"status": "ok", "tookMs": 8861, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
503 "test": {"status": "ok", "tookMs": 1766, "passed": 30, "failed": 0, "ignored": 0, "skipped": 0, "total": 30, "byFramework": [{"framework": "munit", "stats": {"passed": 24, "failed": 0, "ignored": 0, "skipped": 0, "total": 24}},{"framework": "unknown", "stats": {"passed": 6, "failed": 0, "ignored": 0, "skipped": 0, "total": 6}}]},
504 "publish": {"status": "skipped", "tookMs": 0},
505 "metadata": {
506 "crossScalaVersions": ["3.3.6"]
507}
508},{
509 "module": "doodle-examples",
510 "compile": {"status": "ok", "tookMs": 14256, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
511 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
512 "test-compile": {"status": "ok", "tookMs": 567, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
513 "test": {"status": "ok", "tookMs": 511, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
514 "publish": {"status": "skipped", "tookMs": 0},
515 "metadata": {
516 "crossScalaVersions": ["3.3.6"]
517}
518},{
519 "module": "doodle-svg",
520 "compile": {"status": "ok", "tookMs": 331, "warnings": 5, "errors": 0, "sourceVersion": "3.8"},
521 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
522 "test-compile": {"status": "ok", "tookMs": 1689, "warnings": 2, "errors": 0, "sourceVersion": "3.8"},
523 "test": {"status": "ok", "tookMs": 921, "passed": 24, "failed": 0, "ignored": 0, "skipped": 0, "total": 24, "byFramework": [{"framework": "munit", "stats": {"passed": 24, "failed": 0, "ignored": 0, "skipped": 0, "total": 24}}]},
524 "publish": {"status": "skipped", "tookMs": 0},
525 "metadata": {
526 "crossScalaVersions": ["3.3.6"]
527}
528},{
529 "module": "doodle-docs",
530 "compile": {"status": "ok", "tookMs": 59, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
531 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
532 "test-compile": {"status": "ok", "tookMs": 92, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
533 "test": {"status": "ok", "tookMs": 88, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
534 "publish": {"status": "skipped", "tookMs": 0},
535 "metadata": {
536 "crossScalaVersions": ["3.3.6"]
537}
538},{
539 "module": "doodle-core",
540 "compile": {"status": "ok", "tookMs": 46, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
541 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
542 "test-compile": {"status": "ok", "tookMs": 99, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
543 "test": {"status": "ok", "tookMs": 506, "passed": 35, "failed": 0, "ignored": 0, "skipped": 0, "total": 35, "byFramework": [{"framework": "munit", "stats": {"passed": 11, "failed": 0, "ignored": 0, "skipped": 0, "total": 11}},{"framework": "unknown", "stats": {"passed": 24, "failed": 0, "ignored": 0, "skipped": 0, "total": 24}}]},
544 "publish": {"status": "skipped", "tookMs": 0},
545 "metadata": {
546 "crossScalaVersions": ["3.3.6"]
547}
548},{
549 "module": "doodle-java2d",
550 "compile": {"status": "ok", "tookMs": 187, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
551 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
552 "test-compile": {"status": "ok", "tookMs": 1283, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
553 "test": {"status": "ok", "tookMs": 946, "passed": 18, "failed": 0, "ignored": 0, "skipped": 0, "total": 18, "byFramework": [{"framework": "munit", "stats": {"passed": 18, "failed": 0, "ignored": 0, "skipped": 0, "total": 18}}]},
554 "publish": {"status": "skipped", "tookMs": 0},
555 "metadata": {
556 "crossScalaVersions": ["3.3.6"]
557}
558},{
559 "module": "doodle-image",
560 "compile": {"status": "ok", "tookMs": 347, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
561 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
562 "test-compile": {"status": "ok", "tookMs": 485, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
563 "test": {"status": "ok", "tookMs": 380, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
564 "publish": {"status": "skipped", "tookMs": 0},
565 "metadata": {
566 "crossScalaVersions": ["3.3.6"]
567}
568},{
569 "module": "doodle-reactor",
570 "compile": {"status": "ok", "tookMs": 265, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
571 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
572 "test-compile": {"status": "ok", "tookMs": 345, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
573 "test": {"status": "ok", "tookMs": 298, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
574 "publish": {"status": "skipped", "tookMs": 0},
575 "metadata": {
576 "crossScalaVersions": ["3.3.6"]
577}
578},{
579 "module": "doodle",
580 "compile": {"status": "ok", "tookMs": 1408, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
581 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
582 "test-compile": {"status": "ok", "tookMs": 639, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
583 "test": {"status": "ok", "tookMs": 498, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
584 "publish": {"status": "skipped", "tookMs": 0},
585 "metadata": {
586 "crossScalaVersions": ["3.3.6"]
587}
588},{
589 "module": "doodle-algebra",
590 "compile": {"status": "ok", "tookMs": 115, "warnings": 2, "errors": 0, "sourceVersion": "3.8"},
591 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
592 "test-compile": {"status": "ok", "tookMs": 169, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
593 "test": {"status": "ok", "tookMs": 1195, "passed": 21, "failed": 0, "ignored": 0, "skipped": 0, "total": 21, "byFramework": [{"framework": "unknown", "stats": {"passed": 21, "failed": 0, "ignored": 0, "skipped": 0, "total": 21}}]},
594 "publish": {"status": "skipped", "tookMs": 0},
595 "metadata": {
596 "crossScalaVersions": ["3.3.6"]
597}
598},{
599 "module": "doodle-turtle",
600 "compile": {"status": "ok", "tookMs": 252, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
601 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
602 "test-compile": {"status": "ok", "tookMs": 328, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
603 "test": {"status": "ok", "tookMs": 407, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
604 "publish": {"status": "skipped", "tookMs": 0},
605 "metadata": {
606 "crossScalaVersions": ["3.3.6"]
607}
608},{
609 "module": "doodle-golden",
610 "compile": {"status": "ok", "tookMs": 248, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
611 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
612 "test-compile": {"status": "ok", "tookMs": 2318, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
613 "test": {"status": "ok", "tookMs": 1187, "passed": 22, "failed": 0, "ignored": 0, "skipped": 0, "total": 22, "byFramework": [{"framework": "munit", "stats": {"passed": 22, "failed": 0, "ignored": 0, "skipped": 0, "total": 22}}]},
614 "publish": {"status": "skipped", "tookMs": 0},
615 "metadata": {
616 "crossScalaVersions": ["3.3.6"]
617}
618}]
619************************
620[success] Total time: 122 s (0:02:02.0), completed Nov 28, 2025, 1:21:52 PM
621[0JChecking patch project/plugins.sbt...
622Checking patch project/build.properties...
623Checking patch build.sbt...
624Applied patch project/plugins.sbt cleanly.
625Applied patch project/build.properties cleanly.
626Applied patch build.sbt cleanly.