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