Build Logs
shuwariafrica/world • 3.8.0-RC5:2025-12-31
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-RC5
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-RC5
32Execute tests: true
33sbt project found:
34No prepare script found for project shuwariafrica/world
35##################################
36Scala version: 3.8.0-RC5
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-RC5
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-RC5"
62"++3.8.0-RC5 -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-RC5 """{"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.253s.
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-RC5
83OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-native/crossScalaVersions
84OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-localeNative/crossScalaVersions
85OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-moneyNative/crossScalaVersions
86OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-money/crossScalaVersions
87OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-js/crossScalaVersions
88OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-moneyJS/crossScalaVersions
89OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-root/crossScalaVersions
90OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-commonJS/crossScalaVersions
91OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-jvm/crossScalaVersions
92OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-locale/crossScalaVersions
93OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-localeJS/crossScalaVersions
94OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 in world-commonNative/crossScalaVersions
95OpenCB::Changing crossVersion 3.7.3 -> 3.8.0-RC5 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-RC5 on 13 projects.
98[info] Switching Scala version on:
99[info] world-common (3.8.0-RC5)
100[info] world-moneyJS (3.8.0-RC5)
101[info] world-native (3.8.0-RC5)
102[info] world-moneyNative (3.8.0-RC5)
103[info] world-commonJS (3.8.0-RC5)
104[info] world-localeJS (3.8.0-RC5)
105[info] world-commonNative (3.8.0-RC5)
106[info] world-money (3.8.0-RC5)
107[info] world-locale (3.8.0-RC5)
108[info] * world-root (3.8.0-RC5)
109[info] world-localeNative (3.8.0-RC5)
110[info] world-js (3.8.0-RC5)
111[info] world-jvm (3.8.0-RC5)
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 31, 2025, 11:05:17 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-RC5/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-RC5/classes ...
147[info] done compiling
148[info] compiling 2 Scala sources to /build/repo/modules/common/.jvm/target/scala-3.8.0-RC5/test-classes ...
149[info] done compiling
150world.format.FormatterSuite:
151 + Formatter.apply should summon given instances 0.007s
152 + Formatter.apply should create instances from functions 0.002s
153 + Built-in String formatter should return identity 0.001s
154 + Built-in Int formatter should convert to string 0.001s
155 + Built-in Long formatter should convert to string 0.001s
156 + Built-in Double formatter should convert to string 0.0s
157 + Built-in BigDecimal formatter should convert to string 0.003s
158 + Built-in BigInt formatter should convert to string 0.001s
159 + Built-in Boolean formatter should convert to string 0.001s
160 + Custom formatter should be usable via extension method 0.004s
161 + Formatter instances should be comparable via CanEqual 0.001s
162 + Functional formatter should handle edge cases 0.001s
163world.common.NullableUtilitiesSuite:
164 + toOption should convert non-null value to Some 0.007s
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.002s
168 + mapOption should apply function to non-null value 0.001s
169 + mapOption should return None for null value 0.001s
170 + flatMapOption should apply function and flatten for non-null value 0.001s
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.001s
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.0s
179 + flatMapFlattenNull should apply function and flatten for non-null value 0.001s
180 + flatMapFlattenNull should return None for Some(null) 0.0s
181 + flatMapFlattenNull should return None for None 0.001s
182 + flatMapFlattenNull should propagate None from function 0.002s
183 + chaining nullable operations should work correctly 0.001s
184 + null in chain should short-circuit 0.001s
185 + Java interop scenario - System property handling 0.001s
186 + Option[A | Null] from map operation should flatten correctly 0.002s
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-RC5/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-RC5/classes ...
193[info] done compiling
194[info] compiling 2 Scala sources to /build/repo/modules/locale/.jvm/target/scala-3.8.0-RC5/test-classes ...
195[info] done compiling
196world.locale.format.LocaleFormatterSuite:
197 + Country formatter should display full name 0.017s
198 + Alpha2Code formatter should display uppercase code 0.005s
199 + Alpha2Code formatter should work after normalisation 0.002s
200 + Alpha3Code formatter should display uppercase code 0.001s
201 + Alpha3Code formatter should work with different cases 0.0s
202 + M49Code formatter should display numeric string 0.002s
203 + M49Code formatter should handle leading zeros correctly 0.004s
204 + M49Code formatter should handle large numbers 0.001s
205 + Formatters should be available via import 0.0s
206 + All Country singletons should format correctly 0.005s
207world.locale.country.CountryCodeSuite:
208 + Alpha2Code.from should succeed for valid 2-letter uppercase strings 0.156s
209 + Alpha2Code.from should fail for invalid strings 0.025s
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.01s
213 + Alpha3Code.from should normalise input before validation 0.003s
214 + M49Code.from should succeed for integers between 1 and 999 0.006s
215 + M49Code.from should fail for integers outside the 1-999 range 0.008s
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.005s
221 + M49Code should maintain value equality 0.0s
222world.locale.country.CountriesSuite:
223 + Generated Countries object should contain correct data for known countries 0.159s
224 + Countries 'all' set should contain known countries 0.209s
225 + Lookup methods should find countries by different codes 0.186s
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.0s
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-RC5/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-RC5/classes ...
234[info] done compiling
235[info] compiling 6 Scala sources to /build/repo/modules/money/.jvm/target/scala-3.8.0-RC5/test-classes ...
236[info] done compiling
237world.money.conversion.ConversionModelSuite:
238 + ConversionContext and ConversionQuery should be instantiated correctly 0.022s
239 + ConversionRate.inverse should correctly invert the base, term, and rate 0.011s
240 + ConversionRate.inverse should return Left for a zero rate 0.002s
241world.money.currency.NumericCodeSuite:
242 + NumericCode.from should succeed for integers between 0 and 999 0.064s
243 + NumericCode.from should fail for integers outside the 0-999 range 0.017s
244 + NumericCode.value should expose the underlying int 0.001s
245 + NumericCode should maintain value equality 0.0s
246 + NumericCode should handle edge values correctly 0.002s
247world.money.currency.CurrencyUsageSuite:
248 + CurrencyUsage.apply should retrieve territories for a given currency 0.059s
249 + `.usage` syntax extension should retrieve territories 0.001s
250world.money.currency.CurrencyValueSuite:
251 + apply should create CurrencyValue from various numeric types 0.079s
252 + fromString should parse valid strings and reject invalid ones 0.006s
253 + add and + operator should be equivalent 0.035s
254 + subtract and - operator should be equivalent 0.018s
255 + multiply and * operator should be equivalent 0.02s
256 + divide and / operator should be equivalent 0.026s
257 + division by zero should return an ArithmeticError 0.002s
258 + unary_- should negate the value 0.0s
259 + abs should return the absolute value 0.003s
260 + signum should return the correct sign 0.0s
261 + withScale should correctly adjust the scale and round 0.001s
262 + unwrap should expose underlying BigDecimal 0.0s
263 + CurrencyValue should handle zero correctly 0.002s
264 + CurrencyValue operations should respect CurrencyMathContext 0.003s
265 + CurrencyValue.fromString should handle edge cases 0.006s
266 + CurrencyValue.fromString should reject invalid inputs 0.007s
267 + CurrencyValue arithmetic should maintain precision 0.0s
268 + CurrencyValue comparison should work correctly 0.005s
269world.money.currency.CurrencyFactorySyntaxSuite:
270 + Currency-as-factory syntax should create correctly typed Money instances 0.001s
271world.money.currency.CurrencyMathContextSuite:
272 + CurrencyMathContext.Default should have correct properties 0.001s
273 + Default given instance should be CurrencyMathContext.Default 0.0s
274 + apply(MathContext) should create a CurrencyMathContext 0.001s
275 + apply(precision, mode) should create a CurrencyMathContext 0.002s
276 + contextual should summon the correct given instance 0.001s
277 + extension .value should unwrap to the underlying MathContext 0.0s
278world.money.currency.CcyCodeSuite:
279 + CcyCode.from should succeed for valid 3-letter uppercase strings 0.005s
280 + CcyCode.from should fail for invalid strings 0.008s
281 + CcyCode.from should normalise input before validation 0.002s
282 + CcyCode.value should expose the underlying string 0.001s
283 + CcyCode should maintain equality semantics 0.001s
284world.money.format.MoneyFormatterSuite:
285 + Money formatter should format with currency code and rounded value 0.307s
286 + Money formatter should handle zero-decimal currencies 0.0s
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.0s
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.0s
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.198s
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.001s
300 + Multiple Money instances with different currencies should format correctly 0.0s
301 + Formatter should work with ValueOf context 0.001s
302world.money.MoneySuite:
303 + Factory syntax (.KES, .JPY) should create correctly typed Money instances 0.001s
304 + Currency-as-factory syntax (Currencies.KES(...)) should create correctly typed instances 0.0s
305 + Money.from factory should create a Money instance from a runtime currency 0.001s
306 + Money.zero creates a zero-value instance 0.001s
307 + Addition and subtraction are inverse operations 0.024s
308 + Addition overloads work with various numeric types 0.003s
309 + Subtraction overloads work with various numeric types 0.001s
310 + Division by scalar works correctly 0.024s
311 + Adding different currencies fails to compile 0.007s
312 + Addition with zero is stable (a + 0 == a) 0.006s
313 + Multiplication by one is stable (a * 1 == a) 0.005s
314 + Negation is symmetrical (a + (-a) == 0) 0.007s
315 + Arithmetic operations should respect a given CurrencyMathContext 0.008s
316 + compare returns -1, 0, or 1 correctly 0.0s
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.004s
320 + rounded(mode) should use the specified rounding mode 0.0s
321 + convertTo should work correctly with a mock provider 0.007s
322 + abs always results in a non-negative amount 0.008s
323 + formatted should produce a standard representation 0.057s
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.0s
328 + total of amounts equals folded addition 0.04s
329 + Extension methods should work with ValueOf context 0.001s
330 + Extension methods should not allocate ValueOf on each call 0.0s
331 + signum should work without using valueOf parameter 0.001s
332 + compare should work without using valueOf parameter 0.001s
333 + Ordering instance should sort Money correctly 0.0s
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.004s
337 + rounded should use currency's default minor units 0.0s
338 + multiply and divide should be inverse operations 0.001s
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.001s
344 + allocate should fail when sum of ratios is zero 0.001s
345 + allocate should distribute evenly for equal ratios 0.005s
346 + allocate should distribute proportionally for different ratios 0.001s
347 + allocate should handle remainder distribution correctly 0.003s
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.001s
351 + allocate should handle large numbers of ratios 0.002s
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.049s
357world.money.currency.CurrencySuite:
358 + Currencies object should contain accessible, valid currency objects 0.212s
359 + HistoricCurrencies object should contain accessible, valid currency objects 0.201s
360 + Currencies.fromCode should find active currencies 0.003s
361 + Currencies.fromNumericCode should find active currencies 0.0s
362 + Currency.precisionOf should return correct minor units 0.004s
363 + Currency.validatePrecision should check decimal places correctly 0.004s
364 + Currency instances should have correct minorUnit values 0.001s
365 + Currency properties should be accessible 0.004s
366
367************************
368Build summary:
369[{
370 "module": "world-common",
371 "compile": {"status": "ok", "tookMs": 4339, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
372 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
373 "test-compile": {"status": "ok", "tookMs": 3088, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
374 "test": {"status": "ok", "tookMs": 400, "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": 12057, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
382 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
383 "test-compile": {"status": "ok", "tookMs": 1534, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
384 "test": {"status": "ok", "tookMs": 777, "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": 11455, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
392 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
393 "test-compile": {"status": "ok", "tookMs": 5353, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
394 "test": {"status": "ok", "tookMs": 795, "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: 42 s, completed Dec 31, 2025, 11:06:00 PM
402[0JChecking patch project/plugins.sbt...
403Checking patch build.sbt...
404Applied patch project/plugins.sbt cleanly.
405Applied patch build.sbt cleanly.