Implement TimeProvider injection for deterministic timestamps across various services and modules

This commit is contained in:
master
2026-01-11 10:12:12 +02:00
parent 7f7eb8b228
commit f6ef1ef337
10 changed files with 54 additions and 18 deletions

View File

@@ -20,6 +20,7 @@ public sealed class Spdx3Parser : ISpdx3Parser
{
private readonly ISpdx3ContextResolver _contextResolver;
private readonly ILogger<Spdx3Parser> _logger;
private readonly TimeProvider _timeProvider;
private static readonly JsonSerializerOptions JsonOptions = new()
{
@@ -34,10 +35,12 @@ public sealed class Spdx3Parser : ISpdx3Parser
/// </summary>
public Spdx3Parser(
ISpdx3ContextResolver contextResolver,
ILogger<Spdx3Parser> logger)
ILogger<Spdx3Parser> logger,
TimeProvider? timeProvider = null)
{
_contextResolver = contextResolver;
_logger = logger;
_timeProvider = timeProvider ?? TimeProvider.System;
}
/// <inheritdoc />
@@ -697,7 +700,7 @@ public sealed class Spdx3Parser : ISpdx3Parser
var createdStr = GetStringProperty(ciElement, "created");
if (!DateTimeOffset.TryParse(createdStr, out var created))
{
created = DateTimeOffset.UtcNow;
created = _timeProvider.GetUtcNow();
}
var profileStrings = GetStringArrayProperty(ciElement, "profile");