Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
70 changes: 13 additions & 57 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,82 +4,38 @@ on:
push:
branches: [ main, dev, feature/*, fix/*, release/* ]

pull_request:
branches: [ main ]

release:
types: [ published ]
branches: [ main ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Setup .NET
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@v5
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x

# Create Local NuGet Source
10.0.x
# dotnet-quality: 'preview' # When using preview versions
dotnet-quality: 'ga' # General Availability

- name: Create Local NuGet Directory
run: mkdir ~/nuget

- name: Add Local Nuget Source
run: dotnet nuget add source ~/nuget

# ServiceProviderExtensions

- name: Restore Dependency.ServiceProviderExtensions
run: dotnet restore ./src/*/*/ServiceProviderExtensions.csproj

- name: Build Dependency.ServiceProviderExtensions
run: dotnet build ./src/*/*/ServiceProviderExtensions.csproj --no-restore -c Release

- name: Pack Dependency.ServiceProviderExtensions
run: dotnet pack ./src/*/*/ServiceProviderExtensions.csproj --no-restore -o ~/nuget -c Release

- name: Restore Dependency.ServiceProviderExtensions.Tests
run: dotnet restore ./src/*/*/ServiceProviderExtensions.Tests.csproj

- name: Test Dependency.ServiceProviderExtensions.Tests
run: dotnet test ./src/*/*/ServiceProviderExtensions.Tests.csproj --no-restore -c Release

# Dependency.Core

- name: Restore Dependency.Core
run: dotnet restore ./src/*/*/Dependency.Core.csproj

- name: Build Dependency.Core
run: dotnet build ./src/*/*/Dependency.Core.csproj --no-restore -c Release

- name: Pack Dependency.Core
run: dotnet pack ./src/*/*/Dependency.Core.csproj --no-restore -o ~/nuget -c Release

- name: Restore Dependency.Core.Tests
run: dotnet restore ./src/*/*/Dependency.Core.Tests.csproj

- name: Test Dependency.Core.Tests
run: dotnet test ./src/*/*/Dependency.Core.Tests.csproj --no-restore -c Release

# Dependency

- name: Restore Dependency
run: dotnet restore ./src/*/*/Dependency.csproj
- name: Restore solution
run: dotnet restore src/Dependency.slnx

- name: Build Dependency
run: dotnet build ./src/*/*/Dependency.csproj --no-restore -c Release
- name: Build solution
run: dotnet build src/Dependency.slnx --no-restore -c Release

- name: Pack Dependency
run: dotnet pack ./src/*/*/Dependency.csproj --no-restore -o ~/nuget -c Release
- name: Test solution
run: dotnet test src/Dependency.slnx --no-restore -c Release

# Push
- name: Pack solution
run: dotnet pack src/Dependency.slnx --no-restore -o ~/nuget -c Release

- name: Push Packages
if: ${{ github.event_name == 'release' }}
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2020-2023 Andrei Sergeev, Pavel Moskovoy
Copyright (c) 2020-2026 Andrei Sergeev, Pavel Moskovoy

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
19 changes: 19 additions & 0 deletions src/Dependency.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Solution>
<Folder Name="/.sln/">
<File Path="../.github/workflows/dotnet.yml" />
<File Path="../LICENSE" />
<File Path="../.gitignore" />
<File Path="../README.md" />
</Folder>
<Folder Name="/dependency-core/">
<Project Path="./dependency-core/Core.Tests/Dependency.Core.Tests.csproj" />
<Project Path="./dependency-core/Core/Dependency.Core.csproj" />
</Folder>
<Folder Name="/dependency-service-provider-extensions/">
<Project Path="./dependency-service-provider-extensions/ServiceProviderExtensions.Tests/ServiceProviderExtensions.Tests.csproj" />
<Project Path="./dependency-service-provider-extensions/ServiceProviderExtensions/ServiceProviderExtensions.csproj" />
</Folder>
<Folder Name="/dependency/">
<Project Path="./dependency/Dependency/Dependency.csproj" />
</Folder>
</Solution>
19 changes: 10 additions & 9 deletions src/dependency-core/Core.Tests/Dependency.Core.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>enable</Nullable>
<InvariantGlobalization>true</InvariantGlobalization>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<NoWarn>$(NoWarn);IDE0130;xUnit1046</NoWarn>
<IsPackable>false</IsPackable>
<Authors>Andrei Sergeev, Pavel Moskovoy</Authors>
<Copyright>Copyright © 2020-2023 Andrei Sergeev, Pavel Moskovoy</Copyright>
<Copyright>Copyright © 2020-2026 Andrei Sergeev, Pavel Moskovoy</Copyright>
<RootNamespace>PrimeFuncPack.Tests</RootNamespace>
<AssemblyName>PrimeFuncPack.Dependency.Core.Tests</AssemblyName>
</PropertyGroup>
Expand All @@ -18,18 +19,18 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Moq" Version="4.20.70" />
<PackageReference Include="PrimeFuncPack.UnitTest.Data" Version="3.1.0" />
<PackageReference Include="xunit" Version="2.6.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.5">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="PrimeFuncPack.UnitTest.Data" Version="3.1.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.0">
<PackageReference Include="coverlet.collector" Version="10.0.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit.v3" Version="3.2.2" />
</ItemGroup>

</Project>
</Project>
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Moq;
using Xunit;

namespace PrimeFuncPack.Tests;

internal static class ServiceProviderTestSource
{
public static IEnumerable<object?[]> NullableProviders
public static TheoryData<IServiceProvider> NullableProviders
=>
new[]
new()
{
null,
null!,
Mock.Of<IServiceProvider>()
}
.Select(
sp => new object?[] { sp });
};
}
47 changes: 14 additions & 33 deletions src/dependency-core/Core.Tests/TestData/TestEntitySource.cs
Original file line number Diff line number Diff line change
@@ -1,50 +1,31 @@
using System.Collections.Generic;
using System.Linq;
using PrimeFuncPack.UnitTest;
using Xunit;
using static PrimeFuncPack.UnitTest.TestData;

namespace PrimeFuncPack.Tests;

internal static class TestEntitySource
{
public static IEnumerable<object?[]> RefTypes
public static TheoryData<RefType> RefTypes
=>
new[]
{
[
PlusFifteenIdRefType,
MinusFifteenIdRefType,
null
}
.ToNullableTestSourceValues();
new(null!)
];

public static IEnumerable<object?[]> RecordTypes
public static TheoryData<RecordType> RecordTypes
=>
new[]
{
[
PlusFifteenIdSomeStringNameRecord,
ZeroIdNullNameRecord,
null
}
.ToNullableTestSourceValues();
new(null!)
];

public static IEnumerable<object[]> StructTypes
public static TheoryData<StructType> StructTypes
=>
new[]
{
[
SomeTextStructType,
default
}
.ToTestSourceValues();

private static IEnumerable<object[]> ToTestSourceValues<T>(
this IEnumerable<T> source)
where T : notnull
=>
source.Select(
value => new object[] { value });

private static IEnumerable<object?[]> ToNullableTestSourceValues<T>(
this IEnumerable<T> source)
=>
source.Select(
value => new object?[] { value });
new(default)
];
}
9 changes: 5 additions & 4 deletions src/dependency-core/Core/Dependency.Core.csproj
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>enable</Nullable>
<InvariantGlobalization>true</InvariantGlobalization>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<NoWarn>$(NoWarn);IDE0130</NoWarn>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/pfpack/pfpack-dependency</PackageProjectUrl>
<RepositoryUrl>https://github.com/pfpack/pfpack-dependency</RepositoryUrl>
<Company>pfpack</Company>
<Authors>Andrei Sergeev, Pavel Moskovoy</Authors>
<Copyright>Copyright © 2020-2023 Andrei Sergeev, Pavel Moskovoy</Copyright>
<Copyright>Copyright © 2020-2026 Andrei Sergeev, Pavel Moskovoy</Copyright>
<Description>PrimeFuncPack Dependency.Core is a core library for .NET providing a functional programming based technology to build consistent dependency trees validated in the compile time.</Description>
<RootNamespace>PrimeFuncPack</RootNamespace>
<AssemblyName>PrimeFuncPack.Dependency.Core</AssemblyName>
<Version>2.1.0</Version>
<Version>2.2.0-preview.1</Version>
</PropertyGroup>

<ItemGroup>
Expand All @@ -32,7 +33,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="PrimeFuncPack.Core.Unit" Version="2.2.1" />
<PackageReference Include="PrimeFuncPack.Core.Unit" Version="4.0.1" />
</ItemGroup>

</Project>
4 changes: 3 additions & 1 deletion src/dependency-core/Core/Dependency/Empty/Empty.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ namespace PrimeFuncPack;

partial class Dependency
{
public static Dependency<Unit> Empty() => new(default(Unit));
public static Dependency<Unit> Empty()
=>
new(default(Unit));
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ internal sealed partial class InternalDependencyResolver<TDependency>
private readonly Func<TDependency>? factory;

private readonly Func<IServiceProvider, TDependency>? resolver;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ public InternalDependencyResolver(
Func<IServiceProvider, TDependency> resolver)
=>
(this.resolver, tag) = (resolver, Tag.Resolver);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ partial class InternalDependencyResolver<TDependency>

_ => throw new InvalidOperationException("An unexpected tag value.")
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ partial class InternalDependencyResolver<TDependency>
private enum Tag
{
Instance,

Factory,

Resolver
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ internal static class InternalPipelineExtensions
internal static TResult InternalPipe<T, TResult>(this T value, Func<T, TResult> pipe)
=>
pipe.Invoke(value);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ internal static TResult InternalResolveThenMap<T, TResult>(
Func<IServiceProvider, T, TResult> map)
=>
serviceProvider.InternalPipe(resolver).InternalPipe(dependency => map.Invoke(serviceProvider, dependency));
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>enable</Nullable>
<InvariantGlobalization>true</InvariantGlobalization>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<NoWarn>$(NoWarn);IDE0130;xUnit1046</NoWarn>
<IsPackable>false</IsPackable>
<Authors>Andrei Sergeev, Pavel Moskovoy</Authors>
<Copyright>Copyright © 2020-2023 Andrei Sergeev, Pavel Moskovoy</Copyright>
<Copyright>Copyright © 2020-2026 Andrei Sergeev, Pavel Moskovoy</Copyright>
<RootNamespace>PrimeFuncPack.Tests</RootNamespace>
<AssemblyName>PrimeFuncPack.Dependency.ServiceProviderExtensions.Tests</AssemblyName>
</PropertyGroup>
Expand All @@ -18,18 +19,18 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Moq" Version="4.20.70" />
<PackageReference Include="PrimeFuncPack.UnitTest.Data" Version="3.1.0" />
<PackageReference Include="xunit" Version="2.6.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.5">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="PrimeFuncPack.UnitTest.Data" Version="3.1.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.0">
<PackageReference Include="coverlet.collector" Version="10.0.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit.v3" Version="3.2.2" />
</ItemGroup>

</Project>
Loading