V10.5.1/due diligence pack#158
Conversation
Relocate IConfigurable and Configurable from Cuemon.Core.Configuration to Cuemon.Kernel.Configuration. These types are foundational abstractions that belong in the kernel layer. Update core assembly exports accordingly.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Review Summary by QodoKernel refinement, XML serialization improvements, and comprehensive test expansion for v10.5.1
WalkthroughsDescription• Relocate IConfigurable and Configurable from Core to Kernel assembly - Maintain backward compatibility via TypeForwardedTo attributes • Add comprehensive XML serialization converter test coverage - Tests for DefaultXmlConverter, ExceptionConverter, FailureConverter, DynamicXmlConverter - Test assets LinkResponse and WrapperResponse for validation • Fix XML serialization edge cases and simplify collection logic - Add XmlRootAttribute fallback when MemberReference is null - Simplify XmlConverterDecoratorExtensions collection writing logic • Enhance CI pipeline security with fork-aware privileged job execution • Update all package dependencies to latest compatible versions Diagramflowchart LR
Core["Cuemon.Core<br/>IConfigurable<br/>Configurable"]
Kernel["Cuemon.Kernel<br/>IConfigurable<br/>Configurable"]
TypeForward["TypeForwardedTo<br/>Attributes"]
XmlTests["Comprehensive<br/>XML Tests"]
XmlFix["XML Serialization<br/>Bug Fixes"]
CI["CI Pipeline<br/>Fork Security"]
Deps["Dependency<br/>Updates"]
Core -- "Move types" --> Kernel
Kernel -- "Backward compat" --> TypeForward
XmlFix -- "Improve robustness" --> XmlTests
CI -- "Conditional execution" --> Deps
File Changes1. src/Cuemon.Core/Configuration/Configurable.cs
|
Code Review by Qodo
1. Block-scoped namespaces in tests
|
| sut.WriteXml(writer, exception, null); | ||
| writer.Flush(); | ||
| ms.Position = 0; | ||
| return new StreamReader(ms).ReadToEnd(); |
| sut.WriteXml(writer, (object)exception, null); | ||
| writer.Flush(); | ||
| ms.Position = 0; | ||
| var xml = new System.IO.StreamReader(ms).ReadToEnd(); |
| sut.WriteXml(writer, failure, null); | ||
| writer.Flush(); | ||
| ms.Position = 0; | ||
| var xml = new StreamReader(ms).ReadToEnd(); |
| sut.WriteXml(writer, failure, null); | ||
| writer.Flush(); | ||
| ms.Position = 0; | ||
| var xml = new StreamReader(ms).ReadToEnd(); |
| sut.WriteXml(writer, failure, null); | ||
| writer.Flush(); | ||
| ms.Position = 0; | ||
| var xml = new StreamReader(ms).ReadToEnd(); |
| sut.WriteXml(writer, failure, null); | ||
| writer.Flush(); | ||
| ms.Position = 0; | ||
| var xml = new StreamReader(ms).ReadToEnd(); |
| sut.WriteXml(writer, failure, null); | ||
| writer.Flush(); | ||
| ms.Position = 0; | ||
| var xml = new StreamReader(ms).ReadToEnd(); |
| public void AddExceptionConverter_WithStackTrace_ShouldIncludeStack() | ||
| { | ||
| Exception caught = null; | ||
| try { throw new InvalidOperationException("Stack test"); } catch (Exception ex) { caught = ex; } |
| public void AddExceptionDescriptorConverter_ShouldSerializeDescriptorWithError() | ||
| { | ||
| Exception caught = null; | ||
| try { throw new InvalidOperationException("Descriptor error"); } catch (Exception ex) { caught = ex; } |
| public void AddExceptionDescriptorConverter_ShouldSerializeFailureWhenRequested() | ||
| { | ||
| Exception caught = null; | ||
| try { throw new InvalidOperationException("With failure"); } catch (Exception ex) { caught = ex; } |
| namespace Cuemon.Xml.Serialization.Converters | ||
| { | ||
| public class DefaultXmlConverterTest : Test |
There was a problem hiding this comment.
1. Block-scoped namespaces in tests 📘 Rule violation ✧ Quality
Several newly added C# test files declare block-scoped namespaces (eg, namespace X { ... })
instead of file-scoped namespaces. This violates the requirement that new C# files use file-scoped
namespaces, and increases boilerplate and indentation churn.
Agent Prompt
## Issue description
Newly added test files use block-scoped namespaces (`namespace X { ... }`) instead of the required file-scoped form (`namespace X;`).
## Issue Context
The repo is using `LangVersion=latest`, so file-scoped namespaces are supported. This rule applies to *new* C# files.
## Fix Focus Areas
- test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[11-13]
- test/Cuemon.Xml.Tests/Extensions/Serialization/XmlSerializerOptionsDecoratorExtensionsTest.cs[4-8]
- test/Cuemon.Xml.Tests/XmlConvertDefaultSettingsCollection.cs[3-6]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| var sut = new ExceptionConverter(includeStackTrace, includeData); | ||
| using var ms = new MemoryStream(); | ||
| using var writer = XmlWriter.Create(ms, new XmlWriterSettings { OmitXmlDeclaration = true }); | ||
| sut.WriteXml(writer, exception, null); |
There was a problem hiding this comment.
2. using var in xml tests 📘 Rule violation ✧ Quality
New/modified test code introduces using var declarations instead of using (...) { ... } blocks.
This violates the required disposal pattern and can widen resource lifetimes beyond the smallest
necessary scope.
Agent Prompt
## Issue description
Test code uses `using var` declarations instead of `using (...) { ... }` blocks.
## Issue Context
The compliance rule requires explicit `using` blocks to keep disposable lifetimes as small and obvious as possible.
## Fix Focus Areas
- test/Cuemon.Xml.Tests/Serialization/Converters/ExceptionConverterTest.cs[17-20]
- test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[32-36]
- test/Cuemon.Xml.Tests/Serialization/Converters/FailureConverterTest.cs[30-49]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| [XmlRoot("Link")] | ||
| public record LinkResponse | ||
| { | ||
| public LinkResponse(string href, string rel) | ||
| { | ||
| Href = href; | ||
| Rel = rel; | ||
| } | ||
|
|
||
| public string Href { get; set; } | ||
|
|
||
| public string Rel { get; set; } | ||
|
|
||
| public string Title { get; set; } | ||
|
|
||
| public string Hreflang { get; set; } | ||
| } |
There was a problem hiding this comment.
3. Public test types lack xml docs 📘 Rule violation ✧ Quality
New public test/asset types and members are missing required XML documentation comments. This violates the rule requiring <summary> XML docs on all public/protected types and members in changed files.
Agent Prompt
## Issue description
New public/protected types and members in the change set are missing XML documentation comments.
## Issue Context
The compliance requirement expects `///` XML docs with at least `<summary>` (and appropriate `<param>`/`<returns>` where applicable) for public/protected declarations.
## Fix Focus Areas
- test/Cuemon.Xml.Tests/Assets/LinkResponse.cs[5-21]
- test/Cuemon.Xml.Tests/Assets/WrapperResponse.cs[7-22]
- test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs[11-17]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| public static bool TryGetXmlRootAttribute(this IDecorator<IHierarchy<object>> decorator, out XmlRootAttribute xmlAttribute) | ||
| { | ||
| xmlAttribute = decorator.Inner.HasMemberReference ? decorator.Inner.MemberReference.GetCustomAttribute<XmlRootAttribute>(true) : null; | ||
| xmlAttribute = decorator.Inner.HasMemberReference | ||
| ? decorator.Inner.MemberReference.GetCustomAttribute<XmlRootAttribute>(true) | ||
| : decorator.Inner.InstanceType.GetCustomAttribute<XmlRootAttribute>(true); | ||
| return xmlAttribute != null; |
There was a problem hiding this comment.
4. trygetxmlrootattribute missing guard 📘 Rule violation ≡ Correctness
TryGetXmlRootAttribute dereferences decorator without a top-of-method null guard, risking a NullReferenceException. This violates the requirement to use guard clauses (Validator.ThrowIfNull) for non-nullable parameters in modified methods.
Agent Prompt
## Issue description
`TryGetXmlRootAttribute` uses `decorator.Inner` without validating `decorator` is non-null.
## Issue Context
This method was modified in the PR, so it must conform to the guard-clause requirement.
## Fix Focus Areas
- src/Cuemon.Xml/Extensions/HierarchyDecoratorExtensions.cs[125-130]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| using Codebelt.Extensions.Xunit; | ||
| using Cuemon.Diagnostics; | ||
| using Cuemon.Extensions.IO; |
There was a problem hiding this comment.
5. Unused using cuemon.diagnostics; 📘 Rule violation ✧ Quality
XmlConverterDecoratorExtensionsTest.cs includes using Cuemon.Diagnostics; but does not reference anything from that namespace. This violates the requirement to keep using directives minimal and explicit.
Agent Prompt
## Issue description
The test file imports `Cuemon.Diagnostics` but does not use it.
## Issue Context
Keeping usings minimal reduces noise and avoids misleading dependencies.
## Fix Focus Areas
- test/Cuemon.Xml.Tests/Extensions/Serialization/Converters/XmlConverterDecoratorExtensionsTest.cs[1-8]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| w.WriteStartElement(q.Prefix, q.LocalName, q.Namespace); | ||
| foreach (var item in o) | ||
| { | ||
| if (item == null) { continue; } | ||
| var itemType = item.GetType(); | ||
| if (Decorator.Enclose(itemType).IsComplex()) | ||
| { | ||
| Decorator.Enclose(w).WriteObject(item, itemType, opts => opts.Settings.RootName = qe); | ||
| Decorator.Enclose(w).WriteObject(item, itemType); | ||
| } | ||
| else | ||
| { |
There was a problem hiding this comment.
6. Double-wrapped primitive items 🐞 Bug ≡ Correctness
In AddEnumerableConverter(flattenItems: true), primitive items are serialized inside a container element named q, but each item is also wrapped in the same q again, yielding nested duplicate tags (e.g., <Numbers><Numbers>1</Numbers>...</Numbers>). This is inconsistent with how DefaultXmlConverter delegates element-wrapping responsibility to converters and can break consumers expecting a stable XML shape.
Agent Prompt
### Issue description
`AddEnumerableConverter(flattenItems: true)` currently writes a container element using `q` and then (for primitive/non-complex items) also wraps each item in the same `q`, producing nested duplicate element names (e.g., `<Numbers><Numbers>1</Numbers>...</Numbers>`). This is an inconsistent XML shape and contradicts the intent in `DefaultXmlConverter` that converters should avoid duplicate wrapping.
### Issue Context
- Flattened mode should still produce a consistent, non-duplicative structure for primitive collections.
- `DefaultXmlConverter.WriteXmlChildrenEncapsulated` does **not** write the property wrapper element when a converter exists; the converter must therefore avoid generating duplicate wrappers.
### Fix Focus Areas
- Update primitive-item handling to avoid using `q` for both the container and each item. Options include:
- Keep the outer `q` container and serialize primitive items as `<Item>...</Item>` (or another distinct item name).
- Or reintroduce the prior conditional wrapping strategy (only create the outer wrapper when `writer.WriteState == WriteState.Start`), so property serialization doesn’t create nested `q`.
- Add/adjust unit tests for `flattenItems: true` with an `IEnumerable<int>`/`List<int>` property to lock in the intended shape.
- src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs[141-157]
- src/Cuemon.Xml/Serialization/Converters/DefaultXmlConverter.cs[346-366]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
There was a problem hiding this comment.
Pull request overview
This PR delivers a 10.5.1 “due diligence” update that tightens CI security (skip privileged jobs on fork PRs), refines kernel layering by relocating configuration abstractions into Cuemon.Kernel with type-forwarding for compatibility, and expands/updates XML serialization tests and release documentation.
Changes:
- Harden CI by introducing an
initjob that computes outputs and conditionally disables privileged jobs for fork-based PRs. - Relocate
IConfigurable<>/Configurable<>intoCuemon.Kerneland preserve backwards compatibility via type forwarding inCuemon.Core. - Expand XML serialization test coverage and update changelog / package release notes + dependency versions.
Reviewed changes
Copilot reviewed 70 out of 70 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| test/Cuemon.Xml.Tests/XmlConvertDefaultSettingsCollection.cs | Adds a non-parallelized xUnit collection for tests mutating global XML defaults. |
| test/Cuemon.Xml.Tests/Serialization/XmlSerializerTest.cs | Adds unit tests for XmlSerializer behaviors (defaults, converters, reader/writer settings). |
| test/Cuemon.Xml.Tests/Serialization/XmlSerializerOptionsTest.cs | Adds unit tests validating XmlSerializerOptions defaults and mutability. |
| test/Cuemon.Xml.Tests/Serialization/XmlQualifiedEntityTest.cs | Adds unit tests for XmlQualifiedEntity constructors and attribute handling. |
| test/Cuemon.Xml.Tests/Serialization/XmlConvertTest.cs | Adds unit tests for XmlConvert.DefaultSettings behavior and integration with XmlSerializer.Create. |
| test/Cuemon.Xml.Tests/Serialization/Formatters/XmlFormatterTest.cs | Extends formatter coverage with wrapper-response serialization assertions. |
| test/Cuemon.Xml.Tests/Serialization/DynamicXmlSerializableTest.cs | Adds unit tests for DynamicXmlSerializable delegate behavior and exceptions. |
| test/Cuemon.Xml.Tests/Serialization/DynamicXmlConverterTest.cs | Adds unit tests for DynamicXmlConverter capabilities, conversion, and root name behavior. |
| test/Cuemon.Xml.Tests/Serialization/Converters/XmlConverterTest.cs | Adds unit tests for base converter behaviors and object overload delegation. |
| test/Cuemon.Xml.Tests/Serialization/Converters/FailureConverterTest.cs | Adds serialization tests for FailureConverter across sensitivity modes. |
| test/Cuemon.Xml.Tests/Serialization/Converters/ExceptionConverterTest.cs | Adds round-trip and inclusion tests for exception XML conversion. |
| test/Cuemon.Xml.Tests/Serialization/Converters/DefaultXmlConverterTest.cs | Adds broad coverage for DefaultXmlConverter serialization/deserialization paths. |
| test/Cuemon.Xml.Tests/Extensions/Serialization/XmlSerializerOptionsDecoratorExtensionsTest.cs | Tests applying options to XmlConvert.DefaultSettings via decorator extension. |
| test/Cuemon.Xml.Tests/Extensions/Serialization/Converters/XmlConverterDecoratorExtensionsTest.cs | Adds tests for converter list decorator extensions and common converters. |
| test/Cuemon.Xml.Tests/Assets/WrapperResponse.cs | Adds test asset model used to validate collection flattening/structure. |
| test/Cuemon.Xml.Tests/Assets/LinkResponse.cs | Adds test asset record with XmlRoot("Link") to validate element naming. |
| src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs | Simplifies enumerable converter writing logic (notably for flattened output). |
| src/Cuemon.Xml/Extensions/HierarchyDecoratorExtensions.cs | Fixes TryGetXmlRootAttribute to fall back to InstanceType when MemberReference is absent. |
| src/Cuemon.Kernel/Configuration/IConfigurable.cs | Introduces IConfigurable<> in kernel layer. |
| src/Cuemon.Kernel/Configuration/Configurable.cs | Introduces Configurable<> base class in kernel layer with option validation. |
| src/Cuemon.Core/Properties/AssemblyInfo.cs | Adds type-forwarding entries for IConfigurable<> / Configurable<>. |
| src/Cuemon.Core/Configuration/IConfigurable.cs | Removes old IConfigurable<> definition (now in kernel). |
| src/Cuemon.Core/Configuration/Configurable.cs | Removes old Configurable<> definition (now in kernel). |
| Directory.Packages.props | Bumps various package versions to newer compatible releases. |
| CHANGELOG.md | Adds 10.5.1 release entry and compare link updates. |
| .nuget/Cuemon.Xml/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 and describes XML-related fixes/changes. |
| .nuget/Cuemon.Threading/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Resilience/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Net/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Kernel/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 and notes kernel surface additions. |
| .nuget/Cuemon.IO/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Data/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Core/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.Core.App/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt | Updates package release notes to 10.5.1 noting dependency upgrades. |
| .github/workflows/ci-pipeline.yml | Adds init job, derives dynamic build parameters, and gates privileged jobs on trusted contexts. |
| .docfx/Dockerfile.docfx | Updates NGINX base image version used in docfx container build. |
| [CollectionDefinition(nameof(XmlConvertDefaultSettingsCollection), DisableParallelization = true)] | ||
| public sealed class XmlConvertDefaultSettingsCollection : ICollectionFixture<XmlConvertDefaultSettingsCollection> | ||
| { |
There was a problem hiding this comment.
This collection definition declares itself as its own ICollectionFixture<T>, but the type is only used to group tests and disable parallelization (no fixture instance is consumed by tests). Consider removing : ICollectionFixture<XmlConvertDefaultSettingsCollection> (or introducing a separate fixture type) to avoid confusion about the collection vs. fixture roles.
| namespace Cuemon.Xml.Serialization | ||
| { | ||
| public class XmlSerializerTest : Test | ||
| { | ||
| public XmlSerializerTest(ITestOutputHelper output) : base(output) | ||
| { | ||
| } |
There was a problem hiding this comment.
This test class mutates the global static XmlConvert.DefaultSettings in multiple tests, but it is not part of the non-parallelized XmlConvertDefaultSettingsCollection. That can cause flaky tests when xUnit runs test classes in parallel. Add [Collection(nameof(XmlConvertDefaultSettingsCollection))] to this class (or otherwise ensure these tests are serialized).
| - `IConfigurable` and `Configurable` types relocated from `Cuemon.Core` to `Cuemon.Kernel` for improved architectural layering; `Cuemon.Core` maintains backward compatibility through `[TypeForwardedTo]` attributes, | ||
| - `XmlConverterDecoratorExtensions` class in the Cuemon.Extensions.Xml.Serialization.Converters namespace with simplified collection writing logic for improved maintainability, | ||
| - All package dependencies updated to latest compatible versions. |
There was a problem hiding this comment.
The changelog entry refers to XmlConverterDecoratorExtensions as being in the Cuemon.Extensions.Xml.Serialization.Converters namespace, but the updated code is in Cuemon.Xml.Serialization.Converters (see src/Cuemon.Xml/Extensions/Serialization/Converters/XmlConverterDecoratorExtensions.cs). Please update the namespace in this release note to avoid confusing consumers.
Update test expectation in AssemblyDecoratorExtensionsTest to reflect the correct count of threading types in the Cuemon.Threading namespace. Changed from 2 to 4 and updated variable naming for clarity.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #158 +/- ##
==========================================
+ Coverage 82.30% 82.90% +0.60%
==========================================
Files 602 602
Lines 19157 19157
Branches 2004 2001 -3
==========================================
+ Hits 15767 15882 +115
+ Misses 3328 3215 -113
+ Partials 62 60 -2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|



This pull request focuses on improving CI workflow security and maintainability, as well as updating documentation to reflect dependency upgrades. The main changes include conditional execution of privileged jobs in the CI pipeline for increased security, dynamic handling of build parameters, and updated release notes to communicate dependency updates.
CI pipeline improvements:
initjob to.github/workflows/ci-pipeline.ymlthat calculates workflow variables and determines if privileged jobs should run, based on whether the workflow is triggered by a fork or the main repository. This helps prevent privileged operations from running on untrusted code.build,integration_test,sonarcloud,codecov,codeql) to use outputs from theinitjob, conditionally skipping privileged jobs when run from forks. [1] [2] [3] [4]strong-name-key-filenameandbuild-switchesdynamic, based on the context provided by theinitjob. [1] [2] [3]Documentation and dependency updates:
Other updates:
.docfx/Dockerfile.docfxfrom1.29.5-alpineto1.30.0-alpine.