< Summary - Kestrun — Combined Coverage

Information
Class: Kestrun.Utilities.Yaml.YamlSerializerFactory
Assembly: Kestrun
File(s): /home/runner/work/Kestrun/Kestrun/src/CSharp/Kestrun/Utilities/Yaml/YamlSerializerFactory.cs
Tag: Kestrun/Kestrun@2d87023b37eb91155071c91dd3d6a2eeb3004705
Line coverage
84%
Covered lines: 22
Uncovered lines: 4
Coverable lines: 26
Total lines: 72
Line coverage: 84.6%
Branch coverage
66%
Covered branches: 8
Total branches: 12
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 10/13/2025 - 16:52:37 Line coverage: 84.6% (22/26) Branch coverage: 66.6% (8/12) Total lines: 72 Tag: Kestrun/Kestrun@10d476bee71c71ad215bb8ab59f219887b5b4a5e 10/13/2025 - 16:52:37 Line coverage: 84.6% (22/26) Branch coverage: 66.6% (8/12) Total lines: 72 Tag: Kestrun/Kestrun@10d476bee71c71ad215bb8ab59f219887b5b4a5e

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
GetSerializer(...)66.66%131284.61%

File(s)

/home/runner/work/Kestrun/Kestrun/src/CSharp/Kestrun/Utilities/Yaml/YamlSerializerFactory.cs

#LineLine coverage
 1using YamlDotNet.Serialization;
 2using YamlDotNet.Serialization.TypeResolvers;
 3
 4namespace Kestrun.Utilities.Yaml;
 5
 6/// <summary>
 7/// Factory for creating YamlDotNet serializers with specified options
 8/// </summary>
 9public static class YamlSerializerFactory
 10{
 11    /// <summary>
 12    /// Builds a YamlDotNet serializer according to <paramref name="options"/>,
 13    /// then passes it through BuilderUtils.BuildSerializer(...) to apply
 14    /// omit-null/flow-style knobs (as in your PowerShell version).
 15    /// </summary>
 16    public static ISerializer GetSerializer(SerializationOptions options)
 17    {
 2118        var builder = new SerializerBuilder();
 19
 2120        var jsonCompatible = options.HasFlag(SerializationOptions.JsonCompatible);
 21
 2122        if (options.HasFlag(SerializationOptions.Roundtrip))
 23        {
 024            builder = builder.EnsureRoundtrip();
 25        }
 26
 2127        if (options.HasFlag(SerializationOptions.DisableAliases))
 28        {
 629            builder = builder.DisableAliases();
 30        }
 2131        if (options.HasFlag(SerializationOptions.EmitDefaults))
 32        {
 2133            builder = builder.ConfigureDefaultValuesHandling(DefaultValuesHandling.Preserve);
 34        }
 35        else
 36        {
 37            // This matches your old OmitNullValues/EmitDefaults combo
 038            builder = builder.ConfigureDefaultValuesHandling(DefaultValuesHandling.OmitNull);
 39        }
 40
 2141        if (jsonCompatible)
 42        {
 043            builder = builder.JsonCompatible();
 44        }
 45
 2146        if (options.HasFlag(SerializationOptions.DefaultToStaticType))
 47        {
 048            builder = builder.WithTypeResolver(new StaticTypeResolver());
 49        }
 50
 2151        if (options.HasFlag(SerializationOptions.WithIndentedSequences))
 52        {
 753            builder = builder.WithIndentedSequences();
 54        }
 55
 56        // Extras handled by your helper (same as PS):
 2157        var omitNullValues = options.HasFlag(SerializationOptions.OmitNullValues);
 2158        var useFlowStyle = options.HasFlag(SerializationOptions.UseFlowStyle);
 2159        var useSequenceFlowStyle = options.HasFlag(SerializationOptions.UseSequenceFlowStyle);
 60
 61        // Apply the common settings via your shared utility method
 2162        builder = BuilderUtils.BuildSerializer(
 2163            builder,
 2164            omitNullValues,
 2165            useFlowStyle,
 2166            useSequenceFlowStyle,
 2167            jsonCompatible
 2168        );
 69
 2170        return builder.Build();
 71    }
 72}