Build Logs

creativescala/doodle • 3.8.0-RC5:2025-12-31

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-RC5
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-RC5"
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-RC5
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-RC5
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-RC5
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-RC5"
70"++3.8.0-RC5 -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-RC5 """{"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 8.432s.
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-RC5
93OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in turtleJVM/crossScalaVersions
94OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in unidocs/crossScalaVersions
95[info] set scmInfo to https://github.com/creativescala/doodle
96OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in rootJVM/crossScalaVersions
97OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in golden/crossScalaVersions
98OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in docs/crossScalaVersions
99OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in canvas/crossScalaVersions
100OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in coreJVM/crossScalaVersions
101OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in examplesJS/crossScalaVersions
102OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in repo/crossScalaVersions
103OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in interactJVM/crossScalaVersions
104OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in algebraJS/crossScalaVersions
105OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in examplesJVM/crossScalaVersions
106OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in java2d/crossScalaVersions
107OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in turtleJS/crossScalaVersions
108OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in coreJS/crossScalaVersions
109OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in rootJS/crossScalaVersions
110OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in reactorJS/crossScalaVersions
111OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in algebraJVM/crossScalaVersions
112OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in imageJVM/crossScalaVersions
113OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in imageJS/crossScalaVersions
114OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in reactorJVM/crossScalaVersions
115OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in interactJS/crossScalaVersions
116OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in svgJS/crossScalaVersions
117OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in svgJVM/crossScalaVersions
118[info] set current project to repo (in build file:/build/repo/)
119[info] Setting Scala version to 3.8.0-RC5 on 24 projects.
120[info] Switching Scala version on:
121[info] reactorJS (3.8.0-RC5)
122[info] imageJS (3.8.0-RC5)
123[info] unidocs (3.8.0-RC5)
124[info] rootJS (3.8.0-RC5)
125[info] docs (3.8.0-RC5)
126[info] reactorJVM (3.8.0-RC5)
127[info] coreJS (3.8.0-RC5)
128[info] examplesJS (3.8.0-RC5)
129[info] turtleJS (3.8.0-RC5)
130[info] coreJVM (3.8.0-RC5)
131[info] rootJVM (3.8.0-RC5)
132[info] interactJS (3.8.0-RC5)
133[info] interactJVM (3.8.0-RC5)
134[info] java2d (3.8.0-RC5)
135[info] examplesJVM (3.8.0-RC5)
136[info] algebraJVM (3.8.0-RC5)
137[info] algebraJS (3.8.0-RC5)
138[info] * repo (3.8.0-RC5)
139[info] turtleJVM (3.8.0-RC5)
140[info] imageJVM (3.8.0-RC5)
141[info] svgJVM (3.8.0-RC5)
142[info] svgJS (3.8.0-RC5)
143[info] golden (3.8.0-RC5)
144[info] canvas (3.8.0-RC5)
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 Dec 31, 2025, 9:30:16 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-RC5/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-RC5/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-RC5/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-RC5/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-RC5/test-classes ...
220[info] done compiling
221[info] compiling 14 Scala sources to /build/repo/algebra/jvm/target/scala-3.8.0-RC5/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-RC5/test-classes ...
229[info] done compiling
230[info] + Easing properties.starts at 0: OK, proved property.
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.followedBy sends [0,0.5) to first function: OK, passed 100 tests.
234[info] + Easing properties.followedBy sends [0.5,1.0] to second function: OK, passed 100 tests.
235[info] + Easing properties.identity is the identity: OK, passed 100 tests.
236doodle.interact.animation.InterpolationSpec:
237 + upTo empty range produces no output 0.348s
238 + upToIncluding empty range produces single output 0.013s
239 + upTo is empty when steps is zero 0.029s
240 + upToIncluding is empty when steps is zero 0.011s
241 + upTo produces requested number of steps when range is not empty 0.034s
242 + upToIncluding produces requested number of steps when range is not empty 0.028s
243 + upTo produces expected data 0.024s
244 + upToIncluding produces expected data 0.022s
245 + upToIncluding ends on stop 0.012s
246 + map transforms data 0.016s
247 + constant is always constant 0.021s
248doodle.interact.animation.TransducerSpec:
249 + empty produces no output 0.345s
250 + pure produces just one output 0.017s
251 + toList generates all elements from the transducer 0.061s
252 + product produces shortest pairs 0.055s
253 + ++ combines transducers in series 0.054s
254 + and combines transducers in parallel 0.078s
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.019s
258 + repeatForever seems to repeat forever 0.057s
259 + scanLeft produces cumulative results 0.006s
260 + Transducer.scanLeft produces expected output 0.221s
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-RC5/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-RC5/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 50 Scala sources to /build/repo/image/jvm/target/scala-3.8.0-RC5/classes ...
280[info] compiling 20 Scala sources to /build/repo/svg/jvm/target/scala-3.8.0-RC5/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-RC5/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-RC5/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-RC5/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-RC5/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.175s
335 + paths of path elements render correctly 0.026s
336 + monospaced fonts render correctly 0.015s
337 + paths of points render correctly 0.018s
338doodle.svg.SvgLoadBitmapSpec:
339 + LoadBitmap creates correct SvgImageRef from URL 0.152s
340 + LoadBitmap creates SvgImageRef with dimensions 0.015s
341 + LoadBitmap creates SvgImageRef with width only 0.014s
342 + LoadBitmap creates SvgImageRef with height only 0.011s
343 + image method creates Drawing with correct bounding box 0.023s
344 + image element is properly centered 0.015s
345 + default dimensions are used when not specified 0.006s
346 + image renders to SVG image element 0.005s
347 + image without dimensions renders correctly 0.003s
348 + image with only width renders correctly 0.002s
349doodle.svg.FilterSpec:
350 + gaussianBlur filter should render 0.294s
351 + boxBlur filter should render 0.007s
352 + detectEdges filter should render 0.003s
353 + sharpen filter should render 0.003s
354 + emboss filter should render 0.002s
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.002s
358 + filters should generate unique IDs 0.002s
359 + multiple filters can be applied 0.002s
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-RC5/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-RC5/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
364doodle.random.SamplerSuite:
365 + Sampler.cyclic produces items in expected order 0.019s
366 + Sampler.random produces all allowed items 0.001s
367 + Sampler.noRepeats does not repeat previous sample 0.003s
368doodle.core.ColorSuite:
369 + toRgb should convert to expected Rgb color 0.02s
370 + toOkLCh should convert to expected OkLCh color 0.001s
371 + Hsl with 0 saturation should convert to gray Rgb 0.001s
372 + Hsl spin should transform correctly 0.001s
373 + Fade in/out should transform correctly 0.001s
374 + parse hex colors correctly 0.009s
375doodle.core.ColorSpec:
376 + .toRgb andThen .toOklch is the identity 0.031s
377 + .toOklch andThen .toRgb is the identity 0.026s
378[info] + Transform.verticalReflection: OK, passed 100 tests.
379[info] + Transform.scale scale the x and y coordinates appropriately: OK, passed 100 tests.
380[info] + ClosedPath properties.added element is last in the list of elements: OK, passed 100 tests.
381[info] + Transform.andThen compose the transformations: OK, passed 100 tests.
382[info] + ClosedPath properties.appended list comes after original elements: OK, passed 100 tests.
383[info] + Transform.horizontalReflection: OK, passed 100 tests.
384[info] + Angle syntax properties..turns: OK, passed 100 tests.
385[info] + Transform.rotate rotate the point: OK, passed 100 tests.
386[info] + Transform.screenToLogical: OK, passed 100 tests.
387[info] + Angle syntax properties..radians: OK, passed 100 tests.
388[info] + Transform.logicalToScreen: OK, passed 100 tests.
389[info] + Angle syntax properties..degrees: OK, passed 100 tests.
390[info] + Coordinate properties.minusOneHundredPercent evaluates correctly: OK, passed 100 tests.
391[info] + Coordinate properties.addition of percent and point is correct: OK, passed 100 tests.
392[info] + Coordinate properties.oneHundredPercent evaluates correctly: OK, passed 100 tests.
393[info] + Coordinate properties.subtraction of percent and point is correct: OK, passed 100 tests.
394[info] + Angle properties.angle has bijection to Double as turns: OK, passed 100 tests.
395[info] + Angle properties.angle negation is inverse: OK, passed 100 tests.
396[info] + Angle properties.angle has bijection to Double as radians: OK, passed 100 tests.
397[info] + Angle properties.angle double negation is identity: OK, passed 100 tests.
398[info] + Angle properties.angle has bijection to Double as degrees: OK, passed 100 tests.
399[info] + OpenPath properties.added element is last in the list of elements: OK, passed 100 tests.
400[info] + Normalized syntax..normalized: 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-RC5/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-RC5/test-classes ...
405[info] done compiling
406doodle.java2d.BufferedImageWriteSuite:
407 + writing to file produces the same output as writing BufferedImage to file 0.189s
408doodle.java2d.effect.BlockingCircularQueueSuite:
409 + Sequential access returns expected values 0.003s
410doodle.java2d.ToPictureSuite:
411 + toPicture should work with png 0.377s
412 + toPicture should work with gif 0.029s
413 + toPicture should work with jpg 0.012s
414doodle.java2d.Base64WriterSuite:
415 + base64 should work with png 0.374s
416 + base64 should work with gif 0.032s
417 + base64 should work with jpg 0.017s
418doodle.java2d.algebra.Java2dLoadBitmapSuite:
419 + LoadBitmap should successfully load a valid image file 0.035s
420 + LoadBitmap should return FileNotFound for non-existent file 0.015s
421 + LoadBitmap should return InvalidFormat for non-image file 0.005s
422 + LoadBitmap should work with Path 0.011s
423 + BufferedImage should convert to Picture using existing ToPicture 0.0s
424 + Complete flow: load image and convert to Picture 0.016s
425doodle.java2d.FileWriterSuite:
426 + write should work with png 0.366s
427 + write should work with gif 0.021s
428 + write should work with pdf 0.129s
429 + write should work with jpg 0.002s
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-RC5/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-RC5/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-RC5/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-RC5/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-RC5/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
440[info] + Text properties.strokeColor is preserved for text: OK, passed 100 tests.
441[info] + Size properties.size matches bounding box size: OK, passed 100 tests.
442[info] + Size properties.height matches bounding box height: OK, passed 100 tests.
443[info] + Style properties.last fillColor takes effect: OK, passed 100 tests.
444[info] + Size properties.width matches bounding box width: OK, passed 100 tests.
445[info] + Layout properties.at never decreases the size of the bounding box: OK, passed 100 tests.
446[info] + Layout properties.above reifies correctly: OK, passed 100 tests.
447[info] + LoadBitmap properties.missing files return failed IO: OK, proved property.
448[info] + Layout properties.above generates bounding boxes with the correct size: OK, passed 100 tests.
449[info] + LoadBitmap properties.successful loading returns IO with bitmap: OK, passed 100 tests.
450[info] + Layout properties.hand generated path bounding boxes are correct: OK, proved property.
451[info] + LoadBitmap properties.loadBitmap syntax works: OK, passed 100 tests.
452[info] + Layout properties.margin expands bounding box by the correct amount: OK, passed 100 tests.
453[info] + Layout properties.size sets bounding box to the correct size: OK, passed 100 tests.
454[info] + Layout properties.beside generates bounding boxes with the correct size: OK, passed 100 tests.
455[info] + Layout properties.hand generated at bounding boxes are correct: OK, proved property.
456[info] + Layout properties.on generates bounding boxes with the correct size: OK, passed 100 tests.
457[info] + Generic algebra properties.Above doubles the height: OK, passed 100 tests.
458[info] + Generic algebra properties.Beside doubles the width: OK, passed 100 tests.
459[info] + Generic algebra properties.On doesn't change the bounding box: OK, passed 100 tests.
460[info] + Layout properties.above doubles size of image: 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-RC5/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-RC5/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-RC5/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.209s
472 + radial-gradient-stroke 0.059s
473doodle.golden.Layout:
474 + layout-size 0.283s
475doodle.golden.Text:
476 + text-serif-default 0.192s
477 + text-sans-serif-default 0.02s
478 + text-serif-48pt 0.019s
479 + text-sans-serif-48pt 0.025s
480 + text-on-circle 0.009s
481 + text-color 0.019s
482doodle.golden.ImageLayout:
483 + layout-at-debug 0.049s
484 + image-landmarks 0.038s
485 + image-size 0.02s
486doodle.golden.Path:
487 + path-polygons 0.275s
488 + path-stars 0.091s
489 + path-rounded-rectangle 0.021s
490 + path-equilateral-triangle 0.029s
491 + path-polygons-1 0.041s
492 + path-stars-1 0.042s
493 + path-rounded-rectangle-1 0.014s
494 + path-equilateral-triangle-1 0.024s
495
496************************
497Build summary:
498[{
499 "module": "doodle-interact",
500 "compile": {"status": "ok", "tookMs": 19957, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
501 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
502 "test-compile": {"status": "ok", "tookMs": 9006, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
503 "test": {"status": "ok", "tookMs": 1783, "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": 12520, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
511 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
512 "test-compile": {"status": "ok", "tookMs": 412, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
513 "test": {"status": "ok", "tookMs": 471, "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": 218, "warnings": 5, "errors": 0, "sourceVersion": "3.8"},
521 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
522 "test-compile": {"status": "ok", "tookMs": 1597, "warnings": 2, "errors": 0, "sourceVersion": "3.8"},
523 "test": {"status": "ok", "tookMs": 811, "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": 40, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
531 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
532 "test-compile": {"status": "ok", "tookMs": 71, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
533 "test": {"status": "ok", "tookMs": 71, "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": 41, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
541 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
542 "test-compile": {"status": "ok", "tookMs": 68, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
543 "test": {"status": "ok", "tookMs": 360, "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": 160, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
551 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
552 "test-compile": {"status": "ok", "tookMs": 1196, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
553 "test": {"status": "ok", "tookMs": 857, "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": 201, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
561 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
562 "test-compile": {"status": "ok", "tookMs": 255, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
563 "test": {"status": "ok", "tookMs": 265, "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": 262, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
571 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
572 "test-compile": {"status": "ok", "tookMs": 273, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
573 "test": {"status": "ok", "tookMs": 271, "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": 983, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
581 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
582 "test-compile": {"status": "ok", "tookMs": 536, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
583 "test": {"status": "ok", "tookMs": 389, "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": 83, "warnings": 2, "errors": 0, "sourceVersion": "3.8"},
591 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
592 "test-compile": {"status": "ok", "tookMs": 132, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
593 "test": {"status": "ok", "tookMs": 1109, "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": 279, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
601 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
602 "test-compile": {"status": "ok", "tookMs": 309, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
603 "test": {"status": "ok", "tookMs": 282, "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": 266, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
611 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
612 "test-compile": {"status": "ok", "tookMs": 2361, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
613 "test": {"status": "ok", "tookMs": 1227, "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: 71 s (0:01:11.0), completed Dec 31, 2025, 9:31:27 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.