Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
50a0ea2
Starting additions to COntract API
MarkDerman Dec 10, 2025
62832c6
Merge branch 'master' into DesignContracts-InvariantsAndPostcondition…
MarkDerman Dec 11, 2025
a27bede
Merge branch 'master' into DesignContracts-InvariantsAndPostcondition…
MarkDerman Dec 15, 2025
ae24654
Merge branch 'master' into DesignContracts-InvariantsAndPostcondition…
MarkDerman Dec 15, 2025
89ff1db
Starting with the rewriter and initial postcondition support.
MarkDerman Dec 15, 2025
118438b
Starting invariant support
MarkDerman Dec 15, 2025
16a3014
Merge branch 'master' into DesignContracts-InvariantsAndPostcondition…
MarkDerman Dec 19, 2025
274b055
Saving progress on Design Contracts
MarkDerman Dec 19, 2025
8ac1a62
Merge branch 'master' into DesignContracts-InvariantsAndPostcondition…
MarkDerman Dec 20, 2025
0235de6
Invariant weaving actually working, but unable to resolve test assert…
MarkDerman Dec 20, 2025
ea503f3
Cater for both flavours of attributes in tests so far...
MarkDerman Dec 20, 2025
c150f76
Merge branch 'master' into DesignContracts-InvariantsAndPostcondition…
MarkDerman Dec 21, 2025
57492a0
Merge branch 'master' into DesignContracts-InvariantsAndPostcondition…
MarkDerman Dec 21, 2025
2ce4c6e
Exclude analyzers for now
MarkDerman Dec 21, 2025
f010691
Icon mod
MarkDerman Dec 22, 2025
30f403b
Merge branch 'master' into DesignContracts-InvariantsAndPostcondition…
MarkDerman Dec 22, 2025
559fb5c
Saving progress...
MarkDerman Dec 22, 2025
090a31b
Nuget publich DC.Tooling
MarkDerman Dec 22, 2025
e9fcc3b
Exclude DC tests for now for publishing DC tooling
MarkDerman Dec 22, 2025
6b28e3e
Pre release publishes don't require tests
MarkDerman Dec 22, 2025
bdb3b6d
Saving progress
MarkDerman Dec 22, 2025
93e4766
Saving progress...
MarkDerman Dec 23, 2025
c576d58
Merge branch 'master' into DesignContractsV1-Mark
MarkDerman Dec 23, 2025
98e5ede
Saving progress...
MarkDerman Dec 23, 2025
9d8c5fb
Saving work...
MarkDerman Dec 23, 2025
ee8e606
Saving progress...
MarkDerman Dec 24, 2025
4695d2d
Assert and Assume added
MarkDerman Dec 24, 2025
e5f1f35
Saving progress...
MarkDerman Dec 24, 2025
2ee7862
Saving progress...
MarkDerman Dec 25, 2025
ab43901
Saving progress
MarkDerman Dec 25, 2025
9d6285e
Completed tests for ReporFailure
MarkDerman Dec 26, 2025
6e22b23
Saving progress
MarkDerman Dec 26, 2025
b51ef9c
Compile weaving working!
MarkDerman Dec 26, 2025
386ee45
Saving...
MarkDerman Dec 26, 2025
9c603e9
Saving
MarkDerman Dec 26, 2025
baa98ec
Added build weave logging, but not working as expected yet.
MarkDerman Dec 27, 2025
7e31378
Merge branch 'master' into DesignContractsV1
MarkDerman Jan 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ jobs:
dotnet-version: 10.x.x

- name: Run Unit Tests on .Net 10
if: github.ref == 'refs/heads/master'
run: dotnet test TestsOnly.sln -f net10.0 --verbosity quiet --filter "TestCategory!=IntegrationTest"

- name: Install GitVersion
Expand All @@ -58,6 +59,7 @@ jobs:
dotnet pack ./Configuration/AzureBlobJson/Odin.Configuration.AzureBlobJson.csproj --configuration $CONFIGURATION --output $PACKAGE_DIR
dotnet pack ./Data/SqlScriptsRunner/Odin.Data.SqlScriptsRunner.csproj --configuration $CONFIGURATION --output $PACKAGE_DIR
dotnet pack ./DesignContracts/Core/Odin.DesignContracts.csproj --configuration $CONFIGURATION --output $PACKAGE_DIR
dotnet pack ./DesignContracts/Tooling/Odin.DesignContracts.Tooling.csproj --configuration $CONFIGURATION --output $PACKAGE_DIR
dotnet pack ./Email/Mailgun/Odin.Email.Mailgun.csproj --configuration $CONFIGURATION --output $PACKAGE_DIR
dotnet pack ./Email/Office365/Odin.Email.Office365.csproj --configuration $CONFIGURATION --output $PACKAGE_DIR
dotnet pack ./Email/Core/Odin.Email.csproj --configuration $CONFIGURATION --output $PACKAGE_DIR
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ bld/
[Oo]bj/
[Ll]og/

# Locally provisioned build output to tools/ under DesignContracts
# Locally provisioned tools
tools/

# Visual Studio 2015 cache/options directory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Collections.Specialized;
using Odin.System;
using Odin.System;

namespace Odin.BackgroundProcessing
{
Expand Down
2 changes: 1 addition & 1 deletion BackgroundProcessing/Abstractions/JobDetails.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public sealed record JobDetails
/// <param name="scheduledFor"></param>
public JobDetails(string jobId, DateTimeOffset scheduledFor)
{
Precondition.Requires(!string.IsNullOrWhiteSpace(jobId));
Contract.Requires(!string.IsNullOrWhiteSpace(jobId));
JobId = jobId;
ScheduledFor = scheduledFor;
}
Expand Down
2 changes: 1 addition & 1 deletion BackgroundProcessing/Core/BackgroundProcessingOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public string Provider
get => _provider;
set
{
Precondition.Requires(!string.IsNullOrWhiteSpace(value));
Contract.Requires(!string.IsNullOrWhiteSpace(value));
_provider = value.Replace("BackgroundProcessor", "", StringComparison.OrdinalIgnoreCase);
}
}
Expand Down
8 changes: 4 additions & 4 deletions BackgroundProcessing/Core/DependencyInjectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public static void AddOdinBackgroundProcessing(
this IServiceCollection serviceCollection, IConfiguration configuration,
IConfigurationSection configurationSection, Func<IServiceProvider, string>? sqlServerConnectionStringFactory = null)
{
Precondition.RequiresNotNull(configurationSection);
Contract.RequiresNotNull(configurationSection);

BackgroundProcessingOptions options = new BackgroundProcessingOptions();
configurationSection.Bind(options);
Expand Down Expand Up @@ -131,8 +131,8 @@ public static void AddOdinBackgroundProcessing(
/// <param name="app"></param>
public static IApplicationBuilder UseBackgroundProcessing(this IApplicationBuilder app, IServiceProvider appServices)
{
Precondition.RequiresNotNull(appServices);
Precondition.RequiresNotNull(app);
Contract.RequiresNotNull(appServices);
Contract.RequiresNotNull(app);

BackgroundProcessingOptions options = appServices.GetRequiredService<BackgroundProcessingOptions>();
if (options.Provider == BackgroundProcessingProviders.Null)
Expand All @@ -142,7 +142,7 @@ public static IApplicationBuilder UseBackgroundProcessing(this IApplicationBuild

string providerAssemblyName = $"{Constants.RootNamespace}.{options.Provider}";
ResultValue<IBackgroundProcessorServiceInjector> serviceInjectorCreation =
Odin.System.Activator2.TryCreate<IBackgroundProcessorServiceInjector>($"{providerAssemblyName}ServiceInjector",providerAssemblyName);
Activator2.TryCreate<IBackgroundProcessorServiceInjector>($"{providerAssemblyName}ServiceInjector",providerAssemblyName);

if (serviceInjectorCreation.IsSuccess)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ public sealed class HangfireBackgroundProcessor : IBackgroundProcessor
/// <param name="logger"></param>
public HangfireBackgroundProcessor(IRecurringJobManagerV2 recurringJobManager, IBackgroundJobClient jobClient, ILoggerWrapper<HangfireBackgroundProcessor> logger)
{
Precondition.RequiresNotNull(recurringJobManager);
Precondition.RequiresNotNull(jobClient);
Precondition.RequiresNotNull(logger);
Contract.RequiresNotNull(recurringJobManager);
Contract.RequiresNotNull(jobClient);
Contract.RequiresNotNull(logger);
_recurringJobManager = recurringJobManager;
_jobClient = jobClient;
_logger = logger;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public sealed class HangfirePolicyAuthorisationFilter : IDashboardAuthorizationF
/// <param name="policyName"></param>
public HangfirePolicyAuthorisationFilter(string policyName)
{
Precondition.Requires(!string.IsNullOrWhiteSpace(policyName));
Contract.Requires(!string.IsNullOrWhiteSpace(policyName));
_policyName = policyName.Trim();
}

Expand Down
4 changes: 2 additions & 2 deletions BackgroundProcessing/Hangfire/HangfireServiceInjector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ public class HangfireServiceInjector : IBackgroundProcessorServiceInjector
public void TryAddBackgroundProcessor(IServiceCollection serviceCollection, IConfiguration configuration,
IConfigurationSection backgroundProcessingSection, Func<IServiceProvider, string>? connectionStringFactory = null)
{
Precondition.RequiresNotNull(serviceCollection);
Precondition.RequiresNotNull(backgroundProcessingSection);
Contract.RequiresNotNull(serviceCollection);
Contract.RequiresNotNull(backgroundProcessingSection);
IConfigurationSection? providerSection =
backgroundProcessingSection.GetSection(BackgroundProcessingProviders.Hangfire);
if (providerSection == null)
Expand Down
10 changes: 5 additions & 5 deletions Data/SqlScriptsRunner/SqlScriptsRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ private SqlScriptsRunner(Assembly assemblyWithEmbeddedScripts)
{
// Contract.Requires(logger);
// _logger = logger;
Precondition.Requires(assemblyWithEmbeddedScripts!=null!);
Contract.Requires(assemblyWithEmbeddedScripts!=null!);
_assemblyWithEmbeddedScripts = assemblyWithEmbeddedScripts!;
}

public static ResultValue<SqlScriptsRunner> CreateFromConnectionStringName(string connectionStringName,
Assembly assemblyWithEmbeddedScripts, IConfiguration configuration)
{
Precondition.Requires(configuration!=null!);
Precondition.Requires(assemblyWithEmbeddedScripts!=null!);
Contract.Requires(configuration!=null!);
Contract.Requires(assemblyWithEmbeddedScripts!=null!);
SqlScriptsRunner runner = new SqlScriptsRunner(assemblyWithEmbeddedScripts)
{
ConnectionString = configuration.GetConnectionString(connectionStringName)!
Expand All @@ -76,8 +76,8 @@ public static ResultValue<SqlScriptsRunner> CreateFromConnectionStringName(strin

public static ResultValue<SqlScriptsRunner> CreateFromConnectionString(string connectionString, Assembly assemblyWithEmbeddedScripts)
{
Precondition.Requires(assemblyWithEmbeddedScripts!=null!);
Precondition.Requires(!string.IsNullOrWhiteSpace(connectionString));
Contract.Requires(assemblyWithEmbeddedScripts!=null!);
Contract.Requires(!string.IsNullOrWhiteSpace(connectionString));
SqlScriptsRunner runner = new SqlScriptsRunner(assemblyWithEmbeddedScripts)
{
ConnectionString = connectionString
Expand Down
Loading
Loading