55ae230fa4
- v2-ci.yml: upload-artifact@v4 -> @v3 + continue-on-error (act_runner reports as GHES and v4 refuses GHES, failing every run); runner-capacity diagnostic step; AKKA_TEST_TIMEFACTOR=3 on the test step. - Runtime/ControlPlane harnesses: akka.test.timefactor from AKKA_TEST_TIMEFACTOR (TestTimeFactor), single-expect-default 15s; ControlPlane gains PresenceBudget. - Leaked spinner threads: the infinite-loop timeout tests (Calculation, Host.IntegrationTests RoslynVirtualTagEvaluator, 3x Core.Scripting) pinned a core for the rest of the test process (abandoned, never stopped). Now a bounded 5 s wall-clock spin; outer compile-inclusive bound 30 s. - Real test races fixed: ScriptedAlarmEngine push-during-drain (Inactive is also the start state + persist-before-update => wait for the Cleared save); DriverReconnectE2e (both nodes host the driver; Created[] is last-writer-wins and ForceReconnect is a no-op while Connecting); ControlPlaneStarterOrder (lost-race heal waited for a 60 s refresh tick). - Fixed sleeps -> poll-for-condition: ReconnectSupervisor LastError, Modbus deadband steps (wait for observed reads), Modbus dispose hygiene precondition, FOCAS probe-loop log. - Short presence budgets -> PresenceBudget in the Runtime/ControlPlane tests seen failing on Gitea; Calculation Settle 10 -> 30 s. No assertion removed, nothing skipped. - infra/README.md §10 CI; stale TreatWarningsAsErrors comment in Directory.Build.props. Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
50 lines
2.8 KiB
XML
50 lines
2.8 KiB
XML
<Project>
|
|
<!--
|
|
Defaults inherited by every csproj. Individual projects may override.
|
|
|
|
TreatWarningsAsErrors is NOT set globally because test projects carry analyzer warnings
|
|
(e.g. xUnit1051) that would fail the build. src/ projects opt in to
|
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> in their own csproj — all 61 do as of #606.
|
|
It stays per-project rather than global only because the test projects are not yet clean.
|
|
-->
|
|
<PropertyGroup>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<Nullable>enable</Nullable>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<LangVersion>latest</LangVersion>
|
|
</PropertyGroup>
|
|
|
|
<!--
|
|
OTOPCUA0001 is an ERROR under src/ (#595): production code must route capability calls through
|
|
CapabilityInvoker. src/ is currently clean; test projects keep it a Warning and suppress it
|
|
per-csproj where they call drivers at the wire level. The path test is relative to this file
|
|
so it does not depend on where the repo is checked out; backslashes normalised for Windows.
|
|
-->
|
|
<PropertyGroup>
|
|
<_OtRepoRoot>$([System.String]::Copy('$(MSBuildThisFileDirectory)').Replace('\','/'))</_OtRepoRoot>
|
|
<_OtProjPath>$([System.String]::Copy('$(MSBuildProjectFullPath)').Replace('\','/'))</_OtProjPath>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="$(_OtProjPath.StartsWith('$(_OtRepoRoot)src/'))">
|
|
<WarningsAsErrors>$(WarningsAsErrors);OTOPCUA0001</WarningsAsErrors>
|
|
</PropertyGroup>
|
|
|
|
<!--
|
|
Wire the custom OTOPCUA0001 analyzer (UnwrappedCapabilityCallAnalyzer) into every project so
|
|
the CapabilityInvoker-wrapping rule is enforced tree-wide, not just against the analyzer's own
|
|
unit tests (arch-review 07/C-1 — the "built-but-never-wired" failure mode). Analyzer projects
|
|
target netstandard2.0 and are loaded into the compiler host, so OutputItemType="Analyzer" +
|
|
ReferenceOutputAssembly="false" is the correct incantation (the DLL is not linked). Excluded
|
|
from the analyzer project itself (self-reference cycle) and its test project (which already
|
|
references the analyzer directly). OTOPCUA0001 defaults to Warning; projects with genuine
|
|
intentional unwrapped calls (unit tests exercising drivers at the wire level, the invoker's own
|
|
internals) carry a scoped NoWarn / pragma — see the per-project suppressions.
|
|
-->
|
|
<ItemGroup Condition="'$(MSBuildProjectName)' != 'ZB.MOM.WW.OtOpcUa.Analyzers'
|
|
and '$(MSBuildProjectName)' != 'ZB.MOM.WW.OtOpcUa.Analyzers.Tests'">
|
|
<ProjectReference Include="$(MSBuildThisFileDirectory)src/Tooling/ZB.MOM.WW.OtOpcUa.Analyzers/ZB.MOM.WW.OtOpcUa.Analyzers.csproj"
|
|
OutputItemType="Analyzer"
|
|
ReferenceOutputAssembly="false"
|
|
PrivateAssets="all" />
|
|
</ItemGroup>
|
|
</Project>
|