Reordered ahead of items 5-12 on purpose: item 5 adds a fourth popup (mosstank-metaeditor.xml) and would otherwise need the same three-file manual edit this item retires. Every place a mosstank-*.xml file used to be named one at a time now globs mosstank*.xml instead, so adding a new popup panel needs exactly one new file, not four matching edits: - AcDream.Plugins.MossTank.csproj: <None Update="mosstank*.xml"> replaces four separate <None Update> entries. - AcDream.Plugins.MossTank.Tests.csproj: one globbed <None Include> with Link="%(Filename)%(Extension)" replaces four separate Include/Link pairs. - AcDream.App.csproj: a new _MossTankPluginMarkup item (Include="…/mosstank*.xml") replaces the literal four-file semicolon list in both CopyMossTankPluginToBuildOutput and …ToPublishOutput's Copy SourceFiles. - MossTankMarkupContractTests: AuthoredControlsInTheSameContainerNeverOverlapASibling (item 2's new pin) and NoButtonAnywhereUsesTheUnrenderableArrowGlyphs now iterate Directory.GetFiles(AppContext.BaseDirectory, "mosstank*.xml") instead of a hardcoded 4-file array/Theory. Left SecondaryPopupPanelsFitTheirOwnBoundsAndEveryBindingResolves alone — it pairs each file with its OWN expected w/h, which a glob can't supply. - LinuxPlatformBoundaryTests.ShippedPluginCopiesUseResolvedTargetPathsForBuildAndPublish now asserts on the glob pattern instead of the literal mosstank.xml substring the old Copy SourceFiles list contained. A missed file in any of these four places used to silently drop a panel at mount (fix round A's own #missing-popup-files near-miss) instead of failing the build; the glob makes that failure mode structurally impossible. tests/AcDream.Plugins.MossTank.Tests: 662/662 (665 -> 662: the 4-case Theory collapsed into 1 Fact with an internal loop — same coverage, 3 fewer reported xunit tests). tests/AcDream.App.Tests --filter Markup|Plugin|UiMenu|Slider: 276/3 skipped/279 (unchanged). Verified the glob actually copies all four files: `ls src/AcDream.App/bin/Release/net10.0/plugins/AcDream.Plugins.MossTank/*.xml` lists all four post-build. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
35 lines
1.4 KiB
XML
35 lines
1.4 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
<IsPackable>false</IsPackable>
|
|
<LangVersion>latest</LangVersion>
|
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
|
</PropertyGroup>
|
|
<ItemGroup>
|
|
<PackageReference Include="coverlet.collector" />
|
|
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
|
<PackageReference Include="xunit" />
|
|
<PackageReference Include="xunit.runner.visualstudio" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Using Include="Xunit" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\..\src\AcDream.Plugins.MossTank\AcDream.Plugins.MossTank.csproj" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<!-- Fix round B item 13: glob every mosstank*.xml plugin-panel file
|
|
(see AcDream.Plugins.MossTank.csproj's own comment) — %(Filename)
|
|
%(Extension) batching keeps each file's Link its own bare name
|
|
(mosstank-metaeditor.xml, etc.) instead of the source-relative path
|
|
MSBuild would otherwise use. -->
|
|
<None Include="..\..\src\AcDream.Plugins.MossTank\mosstank*.xml"
|
|
Link="%(Filename)%(Extension)"
|
|
CopyToOutputDirectory="PreserveNewest" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<None Include="Fixtures\vtank\**\*.*" CopyToOutputDirectory="PreserveNewest" />
|
|
</ItemGroup>
|
|
</Project>
|