Build Logs
shuwariafrica/world • 3.8.0-RC4:2025-12-22
Errors
0
Warnings
0
Total Lines
405
1##################################
2Clonning https://github.com/shuwariafrica/world.git into /build/repo using revision v0.0.1
3##################################
4Note: switching to '568ce7fa7698a19542ae314e56e76a9e1d74cf78'.
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
21----
22Preparing build for 3.8.0-RC4
23Scala binary version found: 3.8
24Implicitly using source version 3.8
25Scala binary version found: 3.8
26Implicitly using source version 3.8
27Would try to apply common scalacOption (best-effort, sbt/mill only):
28Append: ,REQUIRE:-source:3.8
29Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
30----
31Starting build for 3.8.0-RC4
32Execute tests: true
33sbt project found:
34No prepare script found for project shuwariafrica/world
35##################################
36Scala version: 3.8.0-RC4
37Targets: africa.shuwari%world-common africa.shuwari%world-locale africa.shuwari%world-money
38Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
39##################################
40Using extra scalacOptions: ,REQUIRE:-source:3.8
41Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
42[sbt_options] declare -a sbt_options=()
43[process_args] java_version = '21'
44[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21/rt.jar'
45# Executing command line:
46java
47-Dfile.encoding=UTF-8
48-Xmx10G
49-Xms6G
50-Xss8M
51-XX:ReservedCodeCacheSize=384M
52-Dcommunitybuild.scala=3.8.0-RC4
53-Dcommunitybuild.project.dependencies.add=
54-Xmx7G
55-Xms4G
56-Xss8M
57-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
58-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21
59-jar
60/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
61"setCrossScalaVersions 3.8.0-RC4"
62"++3.8.0-RC4 -v"
63"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
64"set every credentials := Nil"
65"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
66"removeScalacOptionsStartingWith -P:wartremover"
67
68moduleMappings
69"runBuild 3.8.0-RC4 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}""" africa.shuwari%world-common africa.shuwari%world-locale africa.shuwari%world-money"
70
71[info] [launcher] getting org.scala-sbt sbt 1.11.7 (this may take some time)...
72[info] welcome to sbt 1.11.7 (Eclipse Adoptium Java 21)
73[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
74[info] loading project definition from /build/repo/project
75[info] compiling 6 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
76[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
77[info] Compilation completed in 8.655s.
78[info] done compiling
79[info] loading settings for project world-root from build.sbt...
80[info] resolving key references (16194 settings) ...
81[info] set current project to world-root (in build file:/build/repo/)
82Execute setCrossScalaVersions: 3.8.0-RC4
83OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-native/crossScalaVersions
84OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-localeNative/crossScalaVersions
85OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-moneyNative/crossScalaVersions
86OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-money/crossScalaVersions
87OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-js/crossScalaVersions
88OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-moneyJS/crossScalaVersions
89OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-root/crossScalaVersions
90OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-commonJS/crossScalaVersions
91OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-jvm/crossScalaVersions
92OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-locale/crossScalaVersions
93OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-localeJS/crossScalaVersions
94OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-commonNative/crossScalaVersions
95OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC4 in world-common/crossScalaVersions
96[info] set current project to world-root (in build file:/build/repo/)
97[info] Setting Scala version to 3.8.0-RC4 on 13 projects.
98[info] Switching Scala version on:
99[info] world-common (3.8.0-RC4)
100[info] world-moneyJS (3.8.0-RC4)
101[info] world-native (3.8.0-RC4)
102[info] world-moneyNative (3.8.0-RC4)
103[info] world-commonJS (3.8.0-RC4)
104[info] world-localeJS (3.8.0-RC4)
105[info] world-commonNative (3.8.0-RC4)
106[info] world-money (3.8.0-RC4)
107[info] world-locale (3.8.0-RC4)
108[info] * world-root (3.8.0-RC4)
109[info] world-localeNative (3.8.0-RC4)
110[info] world-js (3.8.0-RC4)
111[info] world-jvm (3.8.0-RC4)
112[info] Excluding projects:
113[info] Reapplying settings...
114[info] set current project to world-root (in build file:/build/repo/)
115Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
116[info] Reapplying settings...
117[info] set current project to world-root (in build file:/build/repo/)
118[info] Defining Global / credentials, ThisBuild / credentials and 12 others.
119[info] The new values will be used by Compile / scalafmtOnly, Global / pgpSelectPassphrase and 94 others.
120[info] Run `last` for details.
121[info] Reapplying settings...
122[info] set current project to world-root (in build file:/build/repo/)
123Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
124[info] Reapplying settings...
125OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
126
127 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
128 Did you mean world-commonJS / allExcludeDependencies ?
129 , retry without global scopes
130[info] Reapplying settings...
131[info] set current project to world-root (in build file:/build/repo/)
132Execute removeScalacOptionsStartingWith: -P:wartremover
133[info] Reapplying settings...
134[info] set current project to world-root (in build file:/build/repo/)
135[success] Total time: 0 s, completed Dec 22, 2025, 8:02:19 PM
136Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
137Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
138Starting build...
139Projects: Set(world-common, world-locale, world-money)
140Starting build for ProjectRef(file:/build/repo/,world-common) (world-common)... [0/3]
141OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
142Compile scalacOptions: -Xsemanticdb, -semanticdb-target, /build/repo/modules/common/.jvm/target/scala-3.8.0-RC4/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
143OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
144OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
145OpenCB::Filter out '-Xfatal-warnings', matches setting pattern '^-?-Xfatal-warnings'
146[info] compiling 2 Scala sources to /build/repo/modules/common/.jvm/target/scala-3.8.0-RC4/classes ...
147[info] done compiling
148[info] compiling 2 Scala sources to /build/repo/modules/common/.jvm/target/scala-3.8.0-RC4/test-classes ...
149[info] done compiling
150world.format.FormatterSuite:
151 + Formatter.apply should summon given instances 0.009s
152 + Formatter.apply should create instances from functions 0.002s
153 + Built-in String formatter should return identity 0.0s
154 + Built-in Int formatter should convert to string 0.001s
155 + Built-in Long formatter should convert to string 0.002s
156 + Built-in Double formatter should convert to string 0.001s
157 + Built-in BigDecimal formatter should convert to string 0.002s
158 + Built-in BigInt formatter should convert to string 0.001s
159 + Built-in Boolean formatter should convert to string 0.0s
160 + Custom formatter should be usable via extension method 0.005s
161 + Formatter instances should be comparable via CanEqual 0.0s
162 + Functional formatter should handle edge cases 0.001s
163world.common.NullableUtilitiesSuite:
164 + toOption should convert non-null value to Some 0.009s
165 + toOption should convert null to None 0.002s
166 + toEither should convert non-null value to Right 0.001s
167 + toEither should convert null to Left with custom error 0.003s
168 + mapOption should apply function to non-null value 0.0s
169 + mapOption should return None for null value 0.0s
170 + flatMapOption should apply function and flatten for non-null value 0.002s
171 + flatMapOption should return None for null value 0.001s
172 + flatMapOption should propagate None from function 0.001s
173 + flattenNull should convert Some(non-null) to Some 0.001s
174 + flattenNull should convert Some(null) to None 0.0s
175 + flattenNull should convert None to None 0.001s
176 + mapFlattenNull should apply function to non-null value 0.001s
177 + mapFlattenNull should return None for Some(null) 0.001s
178 + mapFlattenNull should return None for None 0.001s
179 + flatMapFlattenNull should apply function and flatten for non-null value 0.001s
180 + flatMapFlattenNull should return None for Some(null) 0.001s
181 + flatMapFlattenNull should return None for None 0.001s
182 + flatMapFlattenNull should propagate None from function 0.0s
183 + chaining nullable operations should work correctly 0.001s
184 + null in chain should short-circuit 0.002s
185 + Java interop scenario - System property handling 0.002s
186 + Option[A | Null] from map operation should flatten correctly 0.001s
187Starting build for ProjectRef(file:/build/repo/,world-locale) (world-locale)... [1/3]
188Compile scalacOptions: -Xsemanticdb, -semanticdb-target, /build/repo/modules/locale/.jvm/target/scala-3.8.0-RC4/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
189[info] SourceGenerators: 2 country data file(s) changed. Regenerating Countries.scala...
190[info] Loaded 250 total unique country records.
191[info] SourceGenerators: Finished generating Countries.scala.
192[info] compiling 4 Scala sources to /build/repo/modules/locale/.jvm/target/scala-3.8.0-RC4/classes ...
193[info] done compiling
194[info] compiling 2 Scala sources to /build/repo/modules/locale/.jvm/target/scala-3.8.0-RC4/test-classes ...
195[info] done compiling
196world.locale.format.LocaleFormatterSuite:
197 + Country formatter should display full name 0.013s
198 + Alpha2Code formatter should display uppercase code 0.004s
199 + Alpha2Code formatter should work after normalisation 0.001s
200 + Alpha3Code formatter should display uppercase code 0.001s
201 + Alpha3Code formatter should work with different cases 0.004s
202 + M49Code formatter should display numeric string 0.002s
203 + M49Code formatter should handle leading zeros correctly 0.0s
204 + M49Code formatter should handle large numbers 0.0s
205 + Formatters should be available via import 0.001s
206 + All Country singletons should format correctly 0.002s
207world.locale.country.CountryCodeSuite:
208 + Alpha2Code.from should succeed for valid 2-letter uppercase strings 0.141s
209 + Alpha2Code.from should fail for invalid strings 0.017s
210 + Alpha2Code.from should normalise input before validation 0.001s
211 + Alpha3Code.from should succeed for valid 3-letter uppercase strings 0.007s
212 + Alpha3Code.from should fail for invalid strings 0.011s
213 + Alpha3Code.from should normalise input before validation 0.002s
214 + M49Code.from should succeed for integers between 1 and 999 0.007s
215 + M49Code.from should fail for integers outside the 1-999 range 0.01s
216 + Alpha2Code.value should expose the underlying string 0.001s
217 + Alpha3Code.value should expose the underlying string 0.001s
218 + M49Code.value should expose the underlying int 0.0s
219 + Alpha2Code should maintain equality semantics 0.002s
220 + Alpha3Code should maintain equality semantics 0.002s
221 + M49Code should maintain value equality 0.0s
222world.locale.country.CountriesSuite:
223 + Generated Countries object should contain correct data for known countries 0.142s
224 + Countries 'all' set should contain known countries 0.202s
225 + Lookup methods should find countries by different codes 0.184s
226 + Lookup fromName should find a country by its common name (case-insensitive) 0.003s
227 + Generic apply method should correctly delegate to other lookup methods 0.001s
228 + Lookup methods should return None for unknown identifiers 0.0s
229Starting build for ProjectRef(file:/build/repo/,world-money) (world-money)... [2/3]
230Compile scalacOptions: -Xsemanticdb, -semanticdb-target, /build/repo/modules/money/.jvm/target/scala-3.8.0-RC4/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
231[info] SourceGenerators: 4 currency data file(s) changed. Regenerating currency sources...
232[info] SourceGenerators: Finished generating 3 currency source file(s).
233[info] compiling 13 Scala sources to /build/repo/modules/money/.jvm/target/scala-3.8.0-RC4/classes ...
234[info] done compiling
235[info] compiling 6 Scala sources to /build/repo/modules/money/.jvm/target/scala-3.8.0-RC4/test-classes ...
236[info] done compiling
237world.money.currency.CurrencyMathContextSuite:
238 + CurrencyMathContext.Default should have correct properties 0.012s
239 + Default given instance should be CurrencyMathContext.Default 0.0s
240 + apply(MathContext) should create a CurrencyMathContext 0.001s
241 + apply(precision, mode) should create a CurrencyMathContext 0.0s
242 + contextual should summon the correct given instance 0.001s
243 + extension .value should unwrap to the underlying MathContext 0.001s
244world.money.currency.CurrencyUsageSuite:
245 + CurrencyUsage.apply should retrieve territories for a given currency 0.057s
246 + `.usage` syntax extension should retrieve territories 0.002s
247world.money.currency.NumericCodeSuite:
248 + NumericCode.from should succeed for integers between 0 and 999 0.056s
249 + NumericCode.from should fail for integers outside the 0-999 range 0.012s
250 + NumericCode.value should expose the underlying int 0.001s
251 + NumericCode should maintain value equality 0.0s
252 + NumericCode should handle edge values correctly 0.002s
253world.money.currency.CurrencyValueSuite:
254 + apply should create CurrencyValue from various numeric types 0.028s
255 + fromString should parse valid strings and reject invalid ones 0.003s
256 + add and + operator should be equivalent 0.035s
257 + subtract and - operator should be equivalent 0.008s
258 + multiply and * operator should be equivalent 0.009s
259 + divide and / operator should be equivalent 0.018s
260 + division by zero should return an ArithmeticError 0.002s
261 + unary_- should negate the value 0.0s
262 + abs should return the absolute value 0.001s
263 + signum should return the correct sign 0.0s
264 + withScale should correctly adjust the scale and round 0.002s
265 + unwrap should expose underlying BigDecimal 0.0s
266 + CurrencyValue should handle zero correctly 0.001s
267 + CurrencyValue operations should respect CurrencyMathContext 0.001s
268 + CurrencyValue.fromString should handle edge cases 0.003s
269 + CurrencyValue.fromString should reject invalid inputs 0.002s
270 + CurrencyValue arithmetic should maintain precision 0.001s
271 + CurrencyValue comparison should work correctly 0.001s
272world.money.conversion.ConversionModelSuite:
273 + ConversionContext and ConversionQuery should be instantiated correctly 0.002s
274 + ConversionRate.inverse should correctly invert the base, term, and rate 0.001s
275 + ConversionRate.inverse should return Left for a zero rate 0.0s
276world.money.currency.CcyCodeSuite:
277 + CcyCode.from should succeed for valid 3-letter uppercase strings 0.004s
278 + CcyCode.from should fail for invalid strings 0.01s
279 + CcyCode.from should normalise input before validation 0.002s
280 + CcyCode.value should expose the underlying string 0.0s
281 + CcyCode should maintain equality semantics 0.001s
282world.money.currency.CurrencyFactorySyntaxSuite:
283 + Currency-as-factory syntax should create correctly typed Money instances 0.0s
284world.money.format.MoneyFormatterSuite:
285 + Money formatter should format with currency code and rounded value 0.273s
286 + Money formatter should handle zero-decimal currencies 0.001s
287 + Money formatter should handle three-decimal currencies 0.0s
288 + Money formatter should handle negative amounts 0.001s
289 + Money formatter should handle zero amounts 0.001s
290 + Money formatter should work with factory syntax 0.0s
291 + Money formatter should handle large values 0.0s
292 + Money formatter should handle small fractional values 0.001s
293 + Currency formatter should display code and name 0.0s
294 + CurrencyDetails formatter should work for all currency types 0.001s
295 + HistoricCurrency formatter should display code and name 0.183s
296 + CurrencyValue formatter should display raw BigDecimal 0.001s
297 + CurrencyValue formatter should handle precision 0.0s
298 + CurrencyValue formatter should handle negative values 0.0s
299 + CurrencyValue formatter should handle zero 0.0s
300 + Multiple Money instances with different currencies should format correctly 0.0s
301 + Formatter should work with ValueOf context 0.0s
302world.money.MoneySuite:
303 + Factory syntax (.KES, .JPY) should create correctly typed Money instances 0.01s
304 + Currency-as-factory syntax (Currencies.KES(...)) should create correctly typed instances 0.001s
305 + Money.from factory should create a Money instance from a runtime currency 0.0s
306 + Money.zero creates a zero-value instance 0.001s
307 + Addition and subtraction are inverse operations 0.049s
308 + Addition overloads work with various numeric types 0.001s
309 + Subtraction overloads work with various numeric types 0.001s
310 + Division by scalar works correctly 0.044s
311 + Adding different currencies fails to compile 0.007s
312 + Addition with zero is stable (a + 0 == a) 0.016s
313 + Multiplication by one is stable (a * 1 == a) 0.004s
314 + Negation is symmetrical (a + (-a) == 0) 0.009s
315 + Arithmetic operations should respect a given CurrencyMathContext 0.003s
316 + compare returns -1, 0, or 1 correctly 0.001s
317 + given Ordering instance should sort a list of Money correctly 0.002s
318 + Comparing different currencies fails to compile 0.001s
319 + roundToDefault should round to the currency's minor units using HALF_UP 0.001s
320 + rounded(mode) should use the specified rounding mode 0.0s
321 + convertTo should work correctly with a mock provider 0.005s
322 + abs always results in a non-negative amount 0.008s
323 + formatted should produce a standard representation 0.122s
324 + total should sum all amounts in a collection 0.001s
325 + total should return zero for an empty collection 0.0s
326 + average should compute the arithmetic mean 0.003s
327 + average should return None for an empty collection 0.001s
328 + total of amounts equals folded addition 0.031s
329 + Extension methods should work with ValueOf context 0.0s
330 + Extension methods should not allocate ValueOf on each call 0.001s
331 + signum should work without using valueOf parameter 0.001s
332 + compare should work without using valueOf parameter 0.0s
333 + Ordering instance should sort Money correctly 0.001s
334 + Money case class should only have value field 0.0s
335 + Money should support pattern matching 0.0s
336 + Money.from should handle different numeric types 0.001s
337 + rounded should use currency's default minor units 0.001s
338 + multiply and divide should be inverse operations 0.002s
339 + Division by zero should return Left with ArithmeticError 0.001s
340 + Arithmetic with very large numbers should work 0.001s
341 + Arithmetic with very small numbers should maintain precision 0.0s
342 + allocate should fail with empty ratios 0.001s
343 + allocate should fail with negative ratios 0.0s
344 + allocate should fail when sum of ratios is zero 0.002s
345 + allocate should distribute evenly for equal ratios 0.003s
346 + allocate should distribute proportionally for different ratios 0.002s
347 + allocate should handle remainder distribution correctly 0.002s
348 + allocate should work with JPY (zero minor units) 0.001s
349 + allocate should work with OMR (three minor units) 0.002s
350 + allocate should handle single ratio 0.0s
351 + allocate should handle large numbers of ratios 0.001s
352 + allocate should handle ratios that don't sum to 1 0.002s
353 + allocate should handle very small amounts 0.002s
354 + allocate should handle zero amount 0.001s
355 + allocate always sums to original amount 0.085s
356 + allocate produces correct number of results 0.042s
357world.money.currency.CurrencySuite:
358 + Currencies object should contain accessible, valid currency objects 0.233s
359 + HistoricCurrencies object should contain accessible, valid currency objects 0.19s
360 + Currencies.fromCode should find active currencies 0.005s
361 + Currencies.fromNumericCode should find active currencies 0.001s
362 + Currency.precisionOf should return correct minor units 0.008s
363 + Currency.validatePrecision should check decimal places correctly 0.002s
364 + Currency instances should have correct minorUnit values 0.0s
365 + Currency properties should be accessible 0.001s
366
367************************
368Build summary:
369[{
370 "module": "world-common",
371 "compile": {"status": "ok", "tookMs": 6690, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
372 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
373 "test-compile": {"status": "ok", "tookMs": 3027, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
374 "test": {"status": "ok", "tookMs": 399, "passed": 35, "failed": 0, "ignored": 0, "skipped": 0, "total": 35, "byFramework": [{"framework": "munit", "stats": {"passed": 35, "failed": 0, "ignored": 0, "skipped": 0, "total": 35}}]},
375 "publish": {"status": "skipped", "tookMs": 0},
376 "metadata": {
377 "crossScalaVersions": ["3.7.3"]
378}
379},{
380 "module": "world-locale",
381 "compile": {"status": "ok", "tookMs": 12882, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
382 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
383 "test-compile": {"status": "ok", "tookMs": 1741, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
384 "test": {"status": "ok", "tookMs": 750, "passed": 30, "failed": 0, "ignored": 0, "skipped": 0, "total": 30, "byFramework": [{"framework": "munit", "stats": {"passed": 30, "failed": 0, "ignored": 0, "skipped": 0, "total": 30}}]},
385 "publish": {"status": "skipped", "tookMs": 0},
386 "metadata": {
387 "crossScalaVersions": ["3.7.3"]
388}
389},{
390 "module": "world-money",
391 "compile": {"status": "ok", "tookMs": 10897, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
392 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
393 "test-compile": {"status": "ok", "tookMs": 5470, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
394 "test": {"status": "ok", "tookMs": 781, "passed": 119, "failed": 0, "ignored": 0, "skipped": 0, "total": 119, "byFramework": [{"framework": "munit", "stats": {"passed": 119, "failed": 0, "ignored": 0, "skipped": 0, "total": 119}}]},
395 "publish": {"status": "skipped", "tookMs": 0},
396 "metadata": {
397 "crossScalaVersions": ["3.7.3"]
398}
399}]
400************************
401[success] Total time: 55 s, completed Dec 22, 2025, 8:03:13 PM
402[0JChecking patch project/plugins.sbt...
403Checking patch build.sbt...
404Applied patch project/plugins.sbt cleanly.
405Applied patch build.sbt cleanly.