Build Logs
mbannour/mongoscala3codec • 3.8.0-RC5:2025-12-31
Errors
10
Warnings
9
Total Lines
586
1##################################
2Clonning https://github.com/mbannour/mongoscala3codec.git into /build/repo using revision v0.0.7
3##################################
4Note: switching to 'c42ca5f9f21fc1b5fa56516cbe0b05476001fc2f'.
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.7.1
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 scala3Version = "3.7.1"
35Replacement: val scala3Version = "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 scala3Version = "3.7.1"' in build.sbt
40----
41Starting build for 3.8.0-RC5
42Execute tests: true
43sbt project found:
44Sbt version 1.10.6 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 mbannour/mongoscala3codec
47##################################
48Scala version: 3.8.0-RC5
49Targets: io.github.mbannour%mongoscala3codec
50Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.7.1\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}
51##################################
52Using extra scalacOptions: ,REQUIRE:-source:3.8
53Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
54[sbt_options] declare -a sbt_options=()
55[process_args] java_version = '17'
56[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
57# Executing command line:
58java
59-Dfile.encoding=UTF-8
60-Dcommunitybuild.scala=3.8.0-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 scala3Version = \"3.7.1\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}""" io.github.mbannour%mongoscala3codec"
78
79[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
80[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
81[info] loading project definition from /build/repo/project
82[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
83[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
84[info] Compilation completed in 9.622s.
85[info] done compiling
86[info] loading settings for project root from build.sbt...
87[info] set current project to MongoScala3Codec (in build file:/build/repo/)
88Execute setCrossScalaVersions: 3.8.0-RC5
89OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in benchmarks/crossScalaVersions
90OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in integrationTests/crossScalaVersions
91OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in examples/crossScalaVersions
92OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in root/crossScalaVersions
93OpenCB::Limitting incorrect crossVersions List(3.3.1, 3.4.2, 3.6.3, 3.6.4, 3.7.1) -> List(3.8.0-RC5) in root/crossScalaVersions
94[info] set current project to MongoScala3Codec (in build file:/build/repo/)
95[info] Setting Scala version to 3.8.0-RC5 on 4 projects.
96[info] Switching Scala version on:
97[info] * root (3.8.0-RC5)
98[info] integrationTests (3.8.0-RC5)
99[info] benchmarks (3.8.0-RC5)
100[info] examples (3.8.0-RC5)
101[info] Excluding projects:
102[info] Reapplying settings...
103[info] set current project to MongoScala3Codec (in build file:/build/repo/)
104Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
105[info] Reapplying settings...
106[info] set current project to MongoScala3Codec (in build file:/build/repo/)
107[info] Defining Global / credentials, benchmarks / credentials and 2 others.
108[info] The new values will be used by Compile / scalafmtOnly, Global / pgpSelectPassphrase and 31 others.
109[info] Run `last` for details.
110[info] Reapplying settings...
111[info] set current project to MongoScala3Codec (in build file:/build/repo/)
112Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
113[info] Reapplying settings...
114OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
115
116 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
117 Did you mean allExcludeDependencies ?
118 , retry without global scopes
119[info] Reapplying settings...
120[info] set current project to MongoScala3Codec (in build file:/build/repo/)
121Execute removeScalacOptionsStartingWith: -P:wartremover
122[info] Reapplying settings...
123[info] set current project to MongoScala3Codec (in build file:/build/repo/)
124[success] Total time: 0 s, completed Dec 31, 2025, 10:58:36 PM
125Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.7.1\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}
126Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
127Starting build...
128Projects: Set(root)
129Starting build for ProjectRef(file:/build/repo/,root) (mongoscala3codec)... [0/1]
130OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
131OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
132OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
133OpenCB::Filter out '-Werror', matches setting pattern '^-?-Werror'
134Compile scalacOptions: -Xsemanticdb, -semanticdb-target, /build/repo/target/scala-3.8.0-RC5/meta, -encoding, utf8, -explain-types, -language:higherKinds, -language:implicitConversions, -Xunchecked-java-output-version:17, -unchecked, -Xcheck-macros, -Yretain-trees, -Wunused:all, -Wconf:msg=unused local definition:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
135[info] compiling 18 Scala sources to /build/repo/target/scala-3.8.0-RC5/classes ...
136[info] done compiling
137OpenCB::Filter out '-source', matches setting pattern '^-?-source(:.*)?'
138[info] compiling 22 Scala sources to /build/repo/target/scala-3.8.0-RC5/test-classes ...
139[warn] Failed to parse `-Wconf` configuration: msg=unused local definition:s,cat=unused:s,msg=can be rewritten automatically under:s
140[warn] unknown category: unused
141[warn] Note: for multiple filters, use `-Wconf:filter1:action1,filter2:action2`
142[warn] or alternatively `-Wconf:filter1:action1 -Wconf:filter2:action2`
143[warn] -- [E198] Unused Symbol Warning: /build/repo/src/test/scala/io/github/mbannour/mongo/codecs/RegistryBuilderEnhancementsSpec.scala:152:8
144[warn] 152 | val codec = builder.tryGetCodec[SimpleUser]
145[warn] | ^^^^^
146[warn] | unused local definition
147[warn] two warnings found
148[info] done compiling
149[info] GoldenResourcesSpec:
150[info] SimpleUser golden
151[info] - should match resource BSON exactly and decode back
152[info] UserWithNested golden
153[info] - should match nested structure from resource
154[info] UserWithCollections golden
155[info] - should match arrays from resource
156[info] Circle golden
157[info] - should match resource with discriminator field
158[info] NegativeTestSpec:
159[info] Codec
160[info] - should throw exception when encoding null root value
161[info] - should handle None in optional fields with ignoreNone policy
162[info] - should encode None as null with encodeNone policy
163[info] - should throw exception when decoding invalid type for Int field
164[info] - should throw exception when required field is missing
165[info] - should throw exception when nested case class has invalid data
166[info] - should throw exception when codec is not registered
167[info] - should handle empty string fields correctly
168[info] - should handle boundary values for numeric types
169[info] - should handle empty collections correctly
170[info] GoldenBsonStructureSpec:
171[info] SimpleUser BSON structure
172[info] - should match expected format
173[info] UserWithOptional BSON structure with NoneHandling.Encode
174[info] - should include null values
175[info] UserWithOptional BSON structure with NoneHandling.Ignore
176[info] - should omit None fields
177[info] UserWithNested BSON structure
178[info] - should correctly nest documents
179[info] UserWithCollections BSON structure
180[info] - should encode collections as arrays
181[info] Concrete case class (Circle) BSON structure
182[info] - should encode all fields correctly
183[info] Multiple related case classes
184[info] - should encode independently
185[info] Event-like case classes
186[info] - should handle different field counts
187[info] Empty collections BSON structure
188[info] - should encode as empty arrays
189[info] BSON round-trip
190[info] - should preserve exact ObjectId values
191[info] - should preserve field order in nested documents
192[info] CaseClassFieldMapperSpec:
193[info] CaseClassFieldMapper
194[info] - should map case class fields correctly
195[info] - should handle nested case classes and primitives correctly
196[info] - should fail for unsupported types at compile time
197[info] CaseClassBsonWriterSpec:
198[info] CaseClassBsonWriter
199[info] - should write simple primitive fields correctly
200[info] - should handle optional fields when encodeNone is false
201[info] - should handle optional fields when encodeNone is true
202[info] - should handle Some values in optional fields
203[info] - should respect @BsonProperty annotations
204[info] - should write Map[String, String] fields as BSON documents
205[info] - should write empty maps correctly
206[info] - should write Iterable fields as BSON arrays
207[info] - should write empty iterables correctly
208[info] FieldNameMongoFieldResolverSpec:
209[info] - FieldNameExtractor extracts nested field names correctly
210[info] - extracts deeply nested structures with annotations
211[info] - handles collections and maps appropriately
212[info] - handles empty case class
213[info] - handles single field case class
214[info] - handles primitive types with annotations
215[info] - handles nested structures with multiple levels of annotations
216[info] - field mapping is consistent across multiple calls
217[info] - handles option types with nested case classes
218[info] - handles case classes with inheritance hierarchy
219[info] CachedCodecRegistrySpec:
220[info] CachedCodecRegistry
221[info] - should cache codec lookups
222[info] - should handle multiple types
223[info] - should throw exception for unregistered types
224[info] - should cache multiple codec lookups independently
225[info] - should work with builder pattern
226[info] RegistryBuilderEnhancementsSpec:
227[info] RegistryBuilder.just
228[info] - should register a single type and build immediately
229[info] RegistryBuilder.withTypes
230[info] - should register multiple types and build immediately
231[info] RegistryBuilder.registerIf
232[info] - should conditionally register types based on boolean
233[info] - should work with chained conditions
234[info] RegistryBuilder.currentConfig
235[info] - should return the current configuration
236[info] RegistryBuilder.codecCount
237[info] - should return the number of registered codecs
238[info] RegistryBuilder.providerCount
239[info] - should return the number of registered providers
240[info] RegistryBuilder.isEmpty
241[info] - should check if builder has no codecs or providers
242[info] RegistryBuilder.isCached
243[info] - should indicate if registry is cached
244[info] RegistryBuilder.hasCodecFor
245[info] - should check if codec is available for a type
246[info] RegistryBuilder.tryGetCodec
247[info] - should return Some(codec) if available
248[info] - should return None if codec is not available
249[info] RegistryBuilder.summary
250[info] - should provide a human-readable summary
251[info] - should show correct NoneHandling in summary
252[info] Convenience methods
253[info] - should simplify common patterns
254[info] State inspection methods
255[info] - should allow debugging and introspection
256[info] Performance optimizations
257[info] - should work correctly with new methods
258[info] Combined usage
259[info] - should demonstrate real-world patterns
260[info] ClassToCaseFlagMapSpec:
261[info] classToCaseClassMap
262[info] - should handle primitive types
263[info] - should identify case classes
264[info] - should identify sealed classes
265[info] - should handle nested case classes
266[info] - should not flag non-case classes as case classes
267[info] - should handle mixed types
268[info] AdditionalRegistryBuilderSpec:
269[info] RegistryBuilder.from
270[info] - should create builder from existing registry
271[info] RegistryBuilder
272[info] - should support building from existing registry
273[info] RegistryBuilder.configure
274[info] - should allow configuration updates
275[info] - should support multiple configuration updates
276[info] RegistryBuilder.ignoreNone
277[info] - should set NoneHandling to Ignore
278[info] RegistryBuilder.encodeNone
279[info] - should set NoneHandling to Encode
280[info] RegistryBuilder.registerAll
281[info] - should register multiple types
282[info] RegistryBuilder.register
283[info] - should register single type
284[info] - should support chaining multiple registers
285[info] RegistryBuilder
286[info] - should work with ignoreNone configuration
287[info] - should work with encodeNone configuration
288[info] - should support complex builder chains
289[info] MongoPathSpec:
290[info] - MongoPath.of should extract simple field name
291[info] - MongoPath.of should extract another simple field
292[info] - MongoPath.of should extract numeric field
293[info] - MongoPath.of should use @BsonProperty annotation value
294[info] - MongoPath.of should use @BsonProperty for name field
295[info] - MongoPath.of should use field name when no annotation present
296[info] - MongoPath.of should extract nested field path
297[info] - MongoPath.of should extract nested field with city
298[info] - MongoPath.of should respect @BsonProperty in nested field
299[info] - MongoPath.of should handle top-level field in model with nesting
300[info] - MongoPath.of should handle Option[String] field
301[info] - MongoPath.of should handle Option[Int] field
302[info] - MongoPath.of should handle Option[CaseClass] field
303[info] - MongoPath.of should handle nested field in Option[CaseClass]
304[info] - MongoPath.of should handle nested field with annotation in Option
305[info] - MongoPath.of should handle deeply nested field
306[info] - MongoPath.of should respect annotation in deep nesting
307[info] - MongoPath.of should handle annotation at first level of nesting
308[info] - MongoPath.of should handle middle level of deep nesting
309[info] - MongoPath.of should handle top-level annotation in mixed model
310[info] - MongoPath.of should handle normal field in mixed model
311[info] - MongoPath.of should handle nested object in mixed model
312[info] - MongoPath.of should handle nested annotation in mixed model
313[info] - MongoPath.of should handle single character field names
314[info] - MongoPath.of should handle underscore in field names
315[info] - MongoPath.of should handle camelCase field names
316[info] - MongoPath.of should handle List field
317[info] - MongoPath.of should handle Seq field
318[info] - MongoPath.of should handle Map field
319[info] - MongoPath.of should handle annotation with underscores
320[info] - MongoPath.of should handle annotation with dots
321[info] - MongoPath.of should handle single letter annotation
322[info] - MongoPath.of should handle complex combination of features
323[info] - MongoPath.of should handle Option[Option[T]]
324[info] - MongoPath.of should handle MongoDB _id field
325[info] - MongoPath.of should handle typical user model
326[info] - MongoPath.of should handle Seq field navigation with .each
327[info] - MongoPath.of should handle List field navigation with .each
328[info] - MongoPath.of should handle nested Seq field with @BsonProperty
329[info] - MongoPath.of should handle multiple levels with Seq navigation
330[info] - MongoPath.of should handle Seq with nested objects and annotations
331[info] - MongoPath.of should handle Option[Seq] field directly
332[info] - MongoPath.of should handle Seq[Option] with .each and .?
333[info] - MongoPath.of should handle real-world Employee example
334[info] - MongoPath.of should handle deeply nested Seq fields
335[info] - MongoPath.of should handle mixed nested objects and Seq
336[info] - MongoPath.of should handle Seq[String] field
337[info] - MongoPath.of should handle Seq[Int] field
338[info] - MongoPath.of should handle Seq[Double] field
339[info] - MongoPath.of should handle List[String] field
340[info] - MongoPath.of should handle Option[Seq[String]] field
341[info] - MongoPath.of should handle Option[List[Int]] field
342[info] - MongoPath.of should respect @BsonProperty on Seq field
343[info] - MongoPath.of should respect @BsonProperty on Seq field and navigate with .each
344[info] - MongoPath.of should handle @BsonProperty on both Seq field and nested field
345[info] - MongoPath.of should handle Vector[T] field
346[info] - MongoPath.of should handle Vector[T] field navigation with .each
347[info] - MongoPath.of should handle IndexedSeq[T] field
348[info] - MongoPath.of should handle IndexedSeq[T] field navigation with .each
349[info] - MongoPath.of should handle Iterable[T] field
350[info] - MongoPath.of should handle Iterable[T] field navigation with .each
351[info] - MongoPath.of should handle complete Employee model
352[info] - MongoPath.of should handle deep nesting with Option and Seq
353[info] - MongoPath.of should handle Seq inside Option inside Seq
354[info] - MongoPath.of should handle @BsonProperty with MongoDB _id convention
355[info] - MongoPath.of should handle multiple Seq fields
356[info] - MongoPath.of should handle Seq at different nesting levels
357[info] - MongoPath.of should handle BigDecimal fields
358[info] - MongoPath.of should handle BigInt fields
359[info] - MongoPath.of should handle Option[BigDecimal] fields
360[info] - MongoPath.of should handle Seq[BigDecimal] fields
361[info] - MongoPath.of should handle Long fields
362[info] - MongoPath.of should handle Float fields
363[info] - MongoPath.of should handle Byte fields
364[info] - MongoPath.of should handle Short fields
365[info] - MongoPath.of should handle Char fields
366[info] - MongoPath.of should handle all common Scala types
367[info] CaseClassMapperSpec:
368[info] CaseClassMapper
369[info] - should map simple sealed hierarchies
370[info] - should map sealed hierarchies with multiple subclasses
371[info] - should return the case class itself if no subclasses exist
372[info] - should fail for non-case classes !!! IGNORED !!!
373[info] - should handle nested case classes
374[info] EnumValueCodecProviderSpec:
375[info] EnumValueCodecProvider
376[info] - should create provider with correct type handling
377[info] - should work with simple enum transformation functions
378[info] - should handle conversion errors gracefully
379[info] - should test enum transformation functions work correctly
380[info] CodecTestKitSpec:
381[info] CodecTestKit.roundTrip
382[info] - should encode and decode values correctly
383[info] CodecTestKit.assertCodecSymmetry
384[info] - should pass for valid codecs
385[info] - should work with multiple data types
386[info] CodecTestKit.toBsonDocument
387[info] - should convert case class to BsonDocument
388[info] - should preserve all field types correctly
389[info] CodecTestKit.fromBsonDocument
390[info] - should decode BsonDocument to case class
391[info] CodecTestKit.assertBsonStructure
392[info] - should validate BSON structure
393[info] CodecTestKit with NoneHandling.Encode
394[info] - should encode None as null
395[info] - should encode Some values correctly
396[info] CodecTestKit with NoneHandling.Ignore
397[info] - should omit None fields
398[info] - should include Some values even with Ignore policy
399[info] CodecTestKit with collections
400[info] - should handle List fields
401[info] - should handle Set fields
402[info] - should handle empty collections
403[info] CodecTestKit.testRegistry
404[info] - should create minimal registry
405[info] CodecTestKit with edge cases
406[info] - should handle empty strings
407[info] - should handle special characters
408[info] - should handle Unicode characters
409[info] - should handle boundary values
410[info] CodecTestKit with nested case classes
411[info] - should handle complex nested structures
412[info] CodecTestKit.assertBsonContains
413[info] - should verify partial BSON structure
414[info] CodecTestKit.bsonEquivalent
415[info] - should ignore field order
416[info] - should detect missing fields
417[info] - should detect different values
418[info] CodecTestKit.checkCodecSymmetry
419[info] - should return Right for valid codec
420[info] CodecTestKit.codecSymmetryProperty
421[info] - should return true for valid codec
422[info] CodecTestKit.prettyPrint
423[info] - should format BSON documents readably
424[info] CodecTestKit.diff
425[info] - should identify missing fields
426[info] - should identify extra fields
427[info] - should identify mismatched values
428[info] - should return no differences for identical documents
429[info] CodecTestKit.roundTripWithContext
430[info] - should use custom encoder context
431[info] CodecTestKit.assertCodecSymmetryWithContext
432[info] - should support custom contexts
433[info] CodecTestKit.extractField
434[info] - should extract specific field values
435[info] - should return null for non-existent fields
436[info] CodecTestKit.bsonArraysEqual
437[info] - should compare arrays in order
438[info] - should detect different order
439[info] CodecTestKit.bsonArraysEquivalent
440[info] - should ignore element order
441[info] - should detect different elements
442[info] CodecTestKit.bsonDeepContains
443[info] - should verify nested field paths
444[info] - should detect mismatched nested values
445[info] CodecTestKit.deepDiff
446[info] - should report nested differences
447[info] - should handle array differences
448[info] - should return empty list for identical documents
449[info] CodecTestKit.bsonValuesEqual
450[info] - should handle nested documents
451[info] - should handle arrays recursively
452[info] CaseClassFactorySpec:
453[info] CaseClassFactory
454[info] - should instantiate a simple case class
455[info] - should instantiate a nested case class
456[info] - should instantiate a case class with optional fields
457[info] - should fail for unsupported types at compile time
458[info] - should throw an exception for missing required fields
459[info] - should throw an exception for invalid field data types
460[info] - should instantiate a case class with a Scala 3 enum field
461[info] - should throw an exception for invalid enum field values
462[info] - should instantiate a case class with all field types
463[info] - should instantiate a case class with a nested enum field
464[info] - should return a Inner(null)
465[info] - should instantiate a case class with an enum field using ordinal value
466[info] - should instantiate a case class with a custom enum codec using parameter field
467[info] - should instantiate Status from ordinal value
468[info] - should fail on invalid enum ordinal
469[info] - should use @BsonEnum annotation to decode from custom field
470[info] - should decode enum with @BsonEnum annotation from string representation of custom field
471[info] CodecProviderMacroSpec:
472[info] CodecProviderMacro.createCodecProviderIgnoreNone
473[info] - should omit None fields from the BSON document
474[info] CodecProviderMacro.createCodecProviderEncodeNone
475[info] - should include None fields as null in the BSON document
476[info] - should return null for non-matching class types
477[info] - should return correct codec for matching class types
478[info] - should work with multiple providers in the same registry
479[info] CaseClassCodecGeneratorSpec:
480[info] CaseClassCodecGenerator
481[info] - should generate codec with correct encoder class
482[info] - should encode simple case class to BSON document correctly
483[info] - should handle optional fields when encodeNone is false
484[info] - should handle optional fields when encodeNone is true
485[info] - should handle Some values in optional fields
486[info] - should respect @BsonProperty annotations
487[info] - should throw exception for null values during encoding
488[info] BsonCodecSpec:
489[info] BsonCodec.fromCodec
490[info] - should create BsonCodec from MongoDB Codec
491[info] BsonCodec.toCodec
492[info] - should convert BsonCodec to MongoDB Codec
493[info] BsonCodec.encoderClass
494[info] - should return the correct runtime class
495[info] BsonCodec.imap
496[info] - should map codec to different type
497[info] BsonCodec.imap
498[info] - should handle complex transformations
499[info] BsonCodec.derived
500[info] - should create codec for case class
501[info] BsonCodec.derived
502[info] - should work with simple case classes
503[info] BsonCodec.encoderClass
504[info] - should return correct class for derived codec
505[info] BsonCodec
506[info] - should support chaining imap transformations
507[info] CodecConfigSpec:
508[info] CodecConfig
509[info] - should have correct default values
510[info] - should support custom noneHandling
511[info] - should support custom discriminatorField
512[info] - should support custom discriminatorStrategy
513[info] CodecConfig.shouldEncodeNone
514[info] - should return true when noneHandling is Encode
515[info] - should return false when noneHandling is Ignore
516[info] CodecConfig.withIgnoreNone
517[info] - should return config with Ignore noneHandling
518[info] CodecConfig.withEncodeNone
519[info] - should return config with Encode noneHandling
520[info] CodecConfig.withDiscriminatorField
521[info] - should return config with custom discriminator field
522[info] CodecConfig.withDiscriminatorStrategy
523[info] - should return config with custom strategy
524[info] CodecConfig
525[info] - should support method chaining
526[info] NoneHandling
527[info] - should have Encode case
528[info] - should have Ignore case
529[info] DiscriminatorStrategy
530[info] - should support SimpleName
531[info] - should support FullyQualifiedName
532[info] - should support Custom with mapping
533[info] PropertyBasedAdtSpec:
534[info] Circle codec
535[info] - should round-trip for arbitrary values
536[info] Rectangle codec
537[info] - should round-trip for arbitrary values
538[info] AnnotationNameSpec:
539[info] - findAnnotationValue should return the annotation value for a field with @BsonProperty
540[info] - findAnnotationValue should return None for a field without @BsonProperty
541[info] - findAnnotationValue should return None for a non-existent field
542[info] - findAnnotationValue should return None when no fields have annotations
543[info] - findAnnotationValue should return None for an empty case class
544[info] - findAnnotationValue should handle fields with multiple annotations
545[info] PropertyBasedCodecSpec:
546[info] SimplePerson codec
547[info] - should round-trip correctly for all generated values
548[info] PersonWithOption codec
549[info] - should round-trip correctly with Some values
550[info] - should round-trip correctly with NoneHandling.Ignore
551[info] PersonWithNested codec
552[info] - should round-trip correctly with nested case classes
553[info] CollectionHolder codec
554[info] - should round-trip correctly with List and Seq
555[info] MapHolder codec
556[info] - should round-trip correctly with Map fields
557[info] Codec
558[info] - should handle empty strings
559[info] - should handle Unicode characters
560[info] - should handle boundary values for Int
561[info] - should handle empty collections
562[info] - should handle empty maps
563[info] Codec with default values
564[info] - should use defaults when fields are missing
565
566************************
567Build summary:
568[{
569 "module": "mongoscala3codec",
570 "compile": {"status": "ok", "tookMs": 13120, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
571 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
572 "test-compile": {"status": "ok", "tookMs": 46785, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
573 "test": {"status": "ok", "tookMs": 1815, "passed": 293, "failed": 0, "ignored": 1, "skipped": 0, "total": 294, "byFramework": [{"framework": "unknown", "stats": {"passed": 293, "failed": 0, "ignored": 1, "skipped": 0, "total": 294}}]},
574 "publish": {"status": "skipped", "tookMs": 0},
575 "metadata": {
576 "crossScalaVersions": ["3.3.1", "3.4.2", "3.6.3", "3.6.4", "3.7.1", "3.7.1"]
577}
578}]
579************************
580[success] Total time: 64 s (0:01:04.0), completed Dec 31, 2025, 10:59:40 PM
581[0JChecking patch project/plugins.sbt...
582Checking patch project/build.properties...
583Checking patch build.sbt...
584Applied patch project/plugins.sbt cleanly.
585Applied patch project/build.properties cleanly.
586Applied patch build.sbt cleanly.