Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 2m27s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 2m30s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m45s
Add ErsatzTV.Architecture.Tests asserting the solution's layering, so a "just import it here" violation fails the build instead of eroding the architecture over time: - Core must not depend on Application/Infrastructure*/Scanner, nor on EF Core / Pomelo / Microsoft.Data.Sqlite / Dapper. - FFmpeg (lowest layer) must not depend on any other ErsatzTV layer. - Application must not depend on the concrete Infrastructure.Sqlite/.MySql providers (only the Infrastructure abstraction). - Infrastructure must not depend on Application or the concrete providers. Uses NetArchTest.eNhancedEdition — the maintained fork; the original NetArchTest.Rules is unmaintained since 2021 and its older Mono.Cecil doesn't reliably parse .NET 10 assemblies. Runs via the existing `dotnet test` in CI. Rules verified with a negative control (a known-true dependency asserted forbidden fails as expected — so they're not vacuous). Refs #12 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
39 lines
1.8 KiB
XML
39 lines
1.8 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
|
|
<PropertyGroup>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
<NoWarn>VSTHRD200,CA1873</NoWarn>
|
|
<IsPackable>false</IsPackable>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
|
<PackageReference Include="NetArchTest.eNhancedEdition" />
|
|
<PackageReference Include="NUnit" />
|
|
<PackageReference Include="NUnit3TestAdapter" />
|
|
<PackageReference Include="NUnit.Analyzers">
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
<PrivateAssets>all</PrivateAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="coverlet.collector">
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
<PrivateAssets>all</PrivateAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="Shouldly" />
|
|
</ItemGroup>
|
|
|
|
<!-- Reference every layer so its assembly lands in the test output for NetArchTest to analyze. -->
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\ErsatzTV.Core\ErsatzTV.Core.csproj" />
|
|
<ProjectReference Include="..\ErsatzTV.FFmpeg\ErsatzTV.FFmpeg.csproj" />
|
|
<ProjectReference Include="..\ErsatzTV.Application\ErsatzTV.Application.csproj" />
|
|
<ProjectReference Include="..\ErsatzTV.Infrastructure\ErsatzTV.Infrastructure.csproj" />
|
|
<ProjectReference Include="..\ErsatzTV.Infrastructure.Sqlite\ErsatzTV.Infrastructure.Sqlite.csproj" />
|
|
<ProjectReference Include="..\ErsatzTV.Infrastructure.MySql\ErsatzTV.Infrastructure.MySql.csproj" />
|
|
<ProjectReference Include="..\ErsatzTV.Scanner\ErsatzTV.Scanner.csproj" />
|
|
</ItemGroup>
|
|
|
|
</Project>
|