Build Logs

mbannour/mongoscala3codec • 3.8.0-RC6:2026-01-08

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-RC6
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-RC6"
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-RC6
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-RC6
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-RC6
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-RC6"
70"++3.8.0-RC6 -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-RC6 """{"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 8.926s.
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-RC6
89OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in benchmarks/crossScalaVersions
90OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in integrationTests/crossScalaVersions
91OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in examples/crossScalaVersions
92OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 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-RC6) in root/crossScalaVersions
94[info] set current project to MongoScala3Codec (in build file:/build/repo/)
95[info] Setting Scala version to 3.8.0-RC6 on 4 projects.
96[info] Switching Scala version on:
97[info] * root (3.8.0-RC6)
98[info] integrationTests (3.8.0-RC6)
99[info] benchmarks (3.8.0-RC6)
100[info] examples (3.8.0-RC6)
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 Jan 8, 2026, 2:58:06 AM
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-RC6/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-RC6/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-RC6/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] CaseClassBsonWriterSpec:
150[info] CaseClassBsonWriter
151[info] - should write simple primitive fields correctly
152[info] - should handle optional fields when encodeNone is false
153[info] - should handle optional fields when encodeNone is true
154[info] - should handle Some values in optional fields
155[info] - should respect @BsonProperty annotations
156[info] - should write Map[String, String] fields as BSON documents
157[info] - should write empty maps correctly
158[info] - should write Iterable fields as BSON arrays
159[info] - should write empty iterables correctly
160[info] GoldenResourcesSpec:
161[info] SimpleUser golden
162[info] - should match resource BSON exactly and decode back
163[info] UserWithNested golden
164[info] - should match nested structure from resource
165[info] UserWithCollections golden
166[info] - should match arrays from resource
167[info] Circle golden
168[info] - should match resource with discriminator field
169[info] CaseClassCodecGeneratorSpec:
170[info] CaseClassCodecGenerator
171[info] - should generate codec with correct encoder class
172[info] - should encode simple case class to BSON document correctly
173[info] - should handle optional fields when encodeNone is false
174[info] - should handle optional fields when encodeNone is true
175[info] - should handle Some values in optional fields
176[info] - should respect @BsonProperty annotations
177[info] - should throw exception for null values during encoding
178[info] CaseClassFactorySpec:
179[info] CaseClassFactory
180[info] - should instantiate a simple case class
181[info] - should instantiate a nested case class
182[info] - should instantiate a case class with optional fields
183[info] - should fail for unsupported types at compile time
184[info] - should throw an exception for missing required fields
185[info] - should throw an exception for invalid field data types
186[info] - should instantiate a case class with a Scala 3 enum field
187[info] - should throw an exception for invalid enum field values
188[info] - should instantiate a case class with all field types
189[info] - should instantiate a case class with a nested enum field
190[info] - should return a Inner(null)
191[info] - should instantiate a case class with an enum field using ordinal value
192[info] - should instantiate a case class with a custom enum codec using parameter field
193[info] - should instantiate Status from ordinal value
194[info] - should fail on invalid enum ordinal
195[info] - should use @BsonEnum annotation to decode from custom field
196[info] - should decode enum with @BsonEnum annotation from string representation of custom field
197[info] CodecConfigSpec:
198[info] CodecConfig
199[info] - should have correct default values
200[info] - should support custom noneHandling
201[info] - should support custom discriminatorField
202[info] - should support custom discriminatorStrategy
203[info] CodecConfig.shouldEncodeNone
204[info] - should return true when noneHandling is Encode
205[info] - should return false when noneHandling is Ignore
206[info] CodecConfig.withIgnoreNone
207[info] - should return config with Ignore noneHandling
208[info] CodecConfig.withEncodeNone
209[info] - should return config with Encode noneHandling
210[info] CodecConfig.withDiscriminatorField
211[info] - should return config with custom discriminator field
212[info] CodecConfig.withDiscriminatorStrategy
213[info] - should return config with custom strategy
214[info] CodecConfig
215[info] - should support method chaining
216[info] NoneHandling
217[info] - should have Encode case
218[info] - should have Ignore case
219[info] DiscriminatorStrategy
220[info] - should support SimpleName
221[info] - should support FullyQualifiedName
222[info] - should support Custom with mapping
223[info] CodecProviderMacroSpec:
224[info] CodecProviderMacro.createCodecProviderIgnoreNone
225[info] - should omit None fields from the BSON document
226[info] CodecProviderMacro.createCodecProviderEncodeNone
227[info] - should include None fields as null in the BSON document
228[info] - should return null for non-matching class types
229[info] - should return correct codec for matching class types
230[info] - should work with multiple providers in the same registry
231[info] AdditionalRegistryBuilderSpec:
232[info] RegistryBuilder.from
233[info] - should create builder from existing registry
234[info] RegistryBuilder
235[info] - should support building from existing registry
236[info] RegistryBuilder.configure
237[info] - should allow configuration updates
238[info] - should support multiple configuration updates
239[info] RegistryBuilder.ignoreNone
240[info] - should set NoneHandling to Ignore
241[info] RegistryBuilder.encodeNone
242[info] - should set NoneHandling to Encode
243[info] RegistryBuilder.registerAll
244[info] - should register multiple types
245[info] RegistryBuilder.register
246[info] - should register single type
247[info] - should support chaining multiple registers
248[info] RegistryBuilder
249[info] - should work with ignoreNone configuration
250[info] - should work with encodeNone configuration
251[info] - should support complex builder chains
252[info] CachedCodecRegistrySpec:
253[info] CachedCodecRegistry
254[info] - should cache codec lookups
255[info] - should handle multiple types
256[info] - should throw exception for unregistered types
257[info] - should cache multiple codec lookups independently
258[info] - should work with builder pattern
259[info] GoldenBsonStructureSpec:
260[info] SimpleUser BSON structure
261[info] - should match expected format
262[info] UserWithOptional BSON structure with NoneHandling.Encode
263[info] - should include null values
264[info] UserWithOptional BSON structure with NoneHandling.Ignore
265[info] - should omit None fields
266[info] UserWithNested BSON structure
267[info] - should correctly nest documents
268[info] UserWithCollections BSON structure
269[info] - should encode collections as arrays
270[info] Concrete case class (Circle) BSON structure
271[info] - should encode all fields correctly
272[info] Multiple related case classes
273[info] - should encode independently
274[info] Event-like case classes
275[info] - should handle different field counts
276[info] Empty collections BSON structure
277[info] - should encode as empty arrays
278[info] BSON round-trip
279[info] - should preserve exact ObjectId values
280[info] - should preserve field order in nested documents
281[info] MongoPathSpec:
282[info] - MongoPath.of should extract simple field name
283[info] - MongoPath.of should extract another simple field
284[info] - MongoPath.of should extract numeric field
285[info] - MongoPath.of should use @BsonProperty annotation value
286[info] - MongoPath.of should use @BsonProperty for name field
287[info] - MongoPath.of should use field name when no annotation present
288[info] - MongoPath.of should extract nested field path
289[info] - MongoPath.of should extract nested field with city
290[info] - MongoPath.of should respect @BsonProperty in nested field
291[info] - MongoPath.of should handle top-level field in model with nesting
292[info] - MongoPath.of should handle Option[String] field
293[info] - MongoPath.of should handle Option[Int] field
294[info] - MongoPath.of should handle Option[CaseClass] field
295[info] - MongoPath.of should handle nested field in Option[CaseClass]
296[info] - MongoPath.of should handle nested field with annotation in Option
297[info] - MongoPath.of should handle deeply nested field
298[info] - MongoPath.of should respect annotation in deep nesting
299[info] - MongoPath.of should handle annotation at first level of nesting
300[info] - MongoPath.of should handle middle level of deep nesting
301[info] - MongoPath.of should handle top-level annotation in mixed model
302[info] - MongoPath.of should handle normal field in mixed model
303[info] - MongoPath.of should handle nested object in mixed model
304[info] - MongoPath.of should handle nested annotation in mixed model
305[info] - MongoPath.of should handle single character field names
306[info] - MongoPath.of should handle underscore in field names
307[info] - MongoPath.of should handle camelCase field names
308[info] - MongoPath.of should handle List field
309[info] - MongoPath.of should handle Seq field
310[info] - MongoPath.of should handle Map field
311[info] - MongoPath.of should handle annotation with underscores
312[info] - MongoPath.of should handle annotation with dots
313[info] - MongoPath.of should handle single letter annotation
314[info] - MongoPath.of should handle complex combination of features
315[info] - MongoPath.of should handle Option[Option[T]]
316[info] - MongoPath.of should handle MongoDB _id field
317[info] - MongoPath.of should handle typical user model
318[info] - MongoPath.of should handle Seq field navigation with .each
319[info] - MongoPath.of should handle List field navigation with .each
320[info] - MongoPath.of should handle nested Seq field with @BsonProperty
321[info] - MongoPath.of should handle multiple levels with Seq navigation
322[info] - MongoPath.of should handle Seq with nested objects and annotations
323[info] - MongoPath.of should handle Option[Seq] field directly
324[info] - MongoPath.of should handle Seq[Option] with .each and .?
325[info] - MongoPath.of should handle real-world Employee example
326[info] - MongoPath.of should handle deeply nested Seq fields
327[info] - MongoPath.of should handle mixed nested objects and Seq
328[info] - MongoPath.of should handle Seq[String] field
329[info] - MongoPath.of should handle Seq[Int] field
330[info] - MongoPath.of should handle Seq[Double] field
331[info] - MongoPath.of should handle List[String] field
332[info] - MongoPath.of should handle Option[Seq[String]] field
333[info] - MongoPath.of should handle Option[List[Int]] field
334[info] - MongoPath.of should respect @BsonProperty on Seq field
335[info] - MongoPath.of should respect @BsonProperty on Seq field and navigate with .each
336[info] - MongoPath.of should handle @BsonProperty on both Seq field and nested field
337[info] - MongoPath.of should handle Vector[T] field
338[info] - MongoPath.of should handle Vector[T] field navigation with .each
339[info] - MongoPath.of should handle IndexedSeq[T] field
340[info] - MongoPath.of should handle IndexedSeq[T] field navigation with .each
341[info] - MongoPath.of should handle Iterable[T] field
342[info] - MongoPath.of should handle Iterable[T] field navigation with .each
343[info] - MongoPath.of should handle complete Employee model
344[info] - MongoPath.of should handle deep nesting with Option and Seq
345[info] - MongoPath.of should handle Seq inside Option inside Seq
346[info] - MongoPath.of should handle @BsonProperty with MongoDB _id convention
347[info] - MongoPath.of should handle multiple Seq fields
348[info] - MongoPath.of should handle Seq at different nesting levels
349[info] - MongoPath.of should handle BigDecimal fields
350[info] - MongoPath.of should handle BigInt fields
351[info] - MongoPath.of should handle Option[BigDecimal] fields
352[info] - MongoPath.of should handle Seq[BigDecimal] fields
353[info] - MongoPath.of should handle Long fields
354[info] - MongoPath.of should handle Float fields
355[info] - MongoPath.of should handle Byte fields
356[info] - MongoPath.of should handle Short fields
357[info] - MongoPath.of should handle Char fields
358[info] - MongoPath.of should handle all common Scala types
359[info] NegativeTestSpec:
360[info] Codec
361[info] - should throw exception when encoding null root value
362[info] - should handle None in optional fields with ignoreNone policy
363[info] - should encode None as null with encodeNone policy
364[info] - should throw exception when decoding invalid type for Int field
365[info] - should throw exception when required field is missing
366[info] - should throw exception when nested case class has invalid data
367[info] - should throw exception when codec is not registered
368[info] - should handle empty string fields correctly
369[info] - should handle boundary values for numeric types
370[info] - should handle empty collections correctly
371[info] CaseClassFieldMapperSpec:
372[info] CaseClassFieldMapper
373[info] - should map case class fields correctly
374[info] - should handle nested case classes and primitives correctly
375[info] - should fail for unsupported types at compile time
376[info] EnumValueCodecProviderSpec:
377[info] EnumValueCodecProvider
378[info] - should create provider with correct type handling
379[info] - should work with simple enum transformation functions
380[info] - should handle conversion errors gracefully
381[info] - should test enum transformation functions work correctly
382[info] RegistryBuilderEnhancementsSpec:
383[info] RegistryBuilder.just
384[info] - should register a single type and build immediately
385[info] RegistryBuilder.withTypes
386[info] - should register multiple types and build immediately
387[info] RegistryBuilder.registerIf
388[info] - should conditionally register types based on boolean
389[info] - should work with chained conditions
390[info] RegistryBuilder.currentConfig
391[info] - should return the current configuration
392[info] RegistryBuilder.codecCount
393[info] - should return the number of registered codecs
394[info] RegistryBuilder.providerCount
395[info] - should return the number of registered providers
396[info] RegistryBuilder.isEmpty
397[info] - should check if builder has no codecs or providers
398[info] RegistryBuilder.isCached
399[info] - should indicate if registry is cached
400[info] RegistryBuilder.hasCodecFor
401[info] - should check if codec is available for a type
402[info] RegistryBuilder.tryGetCodec
403[info] - should return Some(codec) if available
404[info] - should return None if codec is not available
405[info] RegistryBuilder.summary
406[info] - should provide a human-readable summary
407[info] - should show correct NoneHandling in summary
408[info] Convenience methods
409[info] - should simplify common patterns
410[info] State inspection methods
411[info] - should allow debugging and introspection
412[info] Performance optimizations
413[info] - should work correctly with new methods
414[info] Combined usage
415[info] - should demonstrate real-world patterns
416[info] PropertyBasedAdtSpec:
417[info] Circle codec
418[info] - should round-trip for arbitrary values
419[info] Rectangle codec
420[info] - should round-trip for arbitrary values
421[info] CaseClassMapperSpec:
422[info] CaseClassMapper
423[info] - should map simple sealed hierarchies
424[info] - should map sealed hierarchies with multiple subclasses
425[info] - should return the case class itself if no subclasses exist
426[info] - should fail for non-case classes !!! IGNORED !!!
427[info] - should handle nested case classes
428[info] ClassToCaseFlagMapSpec:
429[info] classToCaseClassMap
430[info] - should handle primitive types
431[info] - should identify case classes
432[info] - should identify sealed classes
433[info] - should handle nested case classes
434[info] - should not flag non-case classes as case classes
435[info] - should handle mixed types
436[info] BsonCodecSpec:
437[info] BsonCodec.fromCodec
438[info] - should create BsonCodec from MongoDB Codec
439[info] BsonCodec.toCodec
440[info] - should convert BsonCodec to MongoDB Codec
441[info] BsonCodec.encoderClass
442[info] - should return the correct runtime class
443[info] BsonCodec.imap
444[info] - should map codec to different type
445[info] BsonCodec.imap
446[info] - should handle complex transformations
447[info] BsonCodec.derived
448[info] - should create codec for case class
449[info] BsonCodec.derived
450[info] - should work with simple case classes
451[info] BsonCodec.encoderClass
452[info] - should return correct class for derived codec
453[info] BsonCodec
454[info] - should support chaining imap transformations
455[info] FieldNameMongoFieldResolverSpec:
456[info] - FieldNameExtractor extracts nested field names correctly
457[info] - extracts deeply nested structures with annotations
458[info] - handles collections and maps appropriately
459[info] - handles empty case class
460[info] - handles single field case class
461[info] - handles primitive types with annotations
462[info] - handles nested structures with multiple levels of annotations
463[info] - field mapping is consistent across multiple calls
464[info] - handles option types with nested case classes
465[info] - handles case classes with inheritance hierarchy
466[info] PropertyBasedCodecSpec:
467[info] SimplePerson codec
468[info] - should round-trip correctly for all generated values
469[info] PersonWithOption codec
470[info] - should round-trip correctly with Some values
471[info] - should round-trip correctly with NoneHandling.Ignore
472[info] PersonWithNested codec
473[info] - should round-trip correctly with nested case classes
474[info] CollectionHolder codec
475[info] - should round-trip correctly with List and Seq
476[info] MapHolder codec
477[info] - should round-trip correctly with Map fields
478[info] Codec
479[info] - should handle empty strings
480[info] - should handle Unicode characters
481[info] - should handle boundary values for Int
482[info] - should handle empty collections
483[info] - should handle empty maps
484[info] Codec with default values
485[info] - should use defaults when fields are missing
486[info] AnnotationNameSpec:
487[info] - findAnnotationValue should return the annotation value for a field with @BsonProperty
488[info] - findAnnotationValue should return None for a field without @BsonProperty
489[info] - findAnnotationValue should return None for a non-existent field
490[info] - findAnnotationValue should return None when no fields have annotations
491[info] - findAnnotationValue should return None for an empty case class
492[info] - findAnnotationValue should handle fields with multiple annotations
493[info] CodecTestKitSpec:
494[info] CodecTestKit.roundTrip
495[info] - should encode and decode values correctly
496[info] CodecTestKit.assertCodecSymmetry
497[info] - should pass for valid codecs
498[info] - should work with multiple data types
499[info] CodecTestKit.toBsonDocument
500[info] - should convert case class to BsonDocument
501[info] - should preserve all field types correctly
502[info] CodecTestKit.fromBsonDocument
503[info] - should decode BsonDocument to case class
504[info] CodecTestKit.assertBsonStructure
505[info] - should validate BSON structure
506[info] CodecTestKit with NoneHandling.Encode
507[info] - should encode None as null
508[info] - should encode Some values correctly
509[info] CodecTestKit with NoneHandling.Ignore
510[info] - should omit None fields
511[info] - should include Some values even with Ignore policy
512[info] CodecTestKit with collections
513[info] - should handle List fields
514[info] - should handle Set fields
515[info] - should handle empty collections
516[info] CodecTestKit.testRegistry
517[info] - should create minimal registry
518[info] CodecTestKit with edge cases
519[info] - should handle empty strings
520[info] - should handle special characters
521[info] - should handle Unicode characters
522[info] - should handle boundary values
523[info] CodecTestKit with nested case classes
524[info] - should handle complex nested structures
525[info] CodecTestKit.assertBsonContains
526[info] - should verify partial BSON structure
527[info] CodecTestKit.bsonEquivalent
528[info] - should ignore field order
529[info] - should detect missing fields
530[info] - should detect different values
531[info] CodecTestKit.checkCodecSymmetry
532[info] - should return Right for valid codec
533[info] CodecTestKit.codecSymmetryProperty
534[info] - should return true for valid codec
535[info] CodecTestKit.prettyPrint
536[info] - should format BSON documents readably
537[info] CodecTestKit.diff
538[info] - should identify missing fields
539[info] - should identify extra fields
540[info] - should identify mismatched values
541[info] - should return no differences for identical documents
542[info] CodecTestKit.roundTripWithContext
543[info] - should use custom encoder context
544[info] CodecTestKit.assertCodecSymmetryWithContext
545[info] - should support custom contexts
546[info] CodecTestKit.extractField
547[info] - should extract specific field values
548[info] - should return null for non-existent fields
549[info] CodecTestKit.bsonArraysEqual
550[info] - should compare arrays in order
551[info] - should detect different order
552[info] CodecTestKit.bsonArraysEquivalent
553[info] - should ignore element order
554[info] - should detect different elements
555[info] CodecTestKit.bsonDeepContains
556[info] - should verify nested field paths
557[info] - should detect mismatched nested values
558[info] CodecTestKit.deepDiff
559[info] - should report nested differences
560[info] - should handle array differences
561[info] - should return empty list for identical documents
562[info] CodecTestKit.bsonValuesEqual
563[info] - should handle nested documents
564[info] - should handle arrays recursively
565
566************************
567Build summary:
568[{
569 "module": "mongoscala3codec",
570 "compile": {"status": "ok", "tookMs": 12183, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
571 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
572 "test-compile": {"status": "ok", "tookMs": 45514, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
573 "test": {"status": "ok", "tookMs": 1185, "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: 61 s (0:01:01.0), completed Jan 8, 2026, 2:59:07 AM
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.