Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for extensions built for multiple targets #1416

Merged
merged 2 commits into from
Jun 10, 2024
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
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ build_script:
- ps: .\build.ps1 --target=Appveyor --configuration=Release

# disable built-in tests.
test: off
test: false

artifacts:
- path: package\*.nupkg
Expand Down
2 changes: 1 addition & 1 deletion cake/package-checks.cake
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ string[] AGENT_PDB_FILES_NETCORE = {
string[] CONSOLE_FILES = {
"nunit3-console.exe", "nunit3-console.exe.config" };
string[] CONSOLE_FILES_NETCORE = {
"nunit3-console.exe", "nunit3-console.dll", "nunit3-console.dll.config" };
"nunit3-console.exe", "nunit3-console.dll" };

//////////////////////////////////////////////////////////////////////
// PACKAGE CHECK IMPLEMENTATION
Expand Down
12 changes: 6 additions & 6 deletions cake/package-definitions.cake
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,12 @@ public void InitializePackageDefinitions(ICakeContext context)
source: NUGET_DIR + "runners/nunit.console-runner.netcore.nuspec",
checks: new PackageCheck[] {
HasFiles("LICENSE.txt", "NOTICES.txt"),
HasDirectory("tools/net8.0/any").WithFiles(CONSOLE_FILES_NETCORE).AndFiles(ENGINE_FILES).AndFile("nunit.console.nuget.addins")
HasDirectory("tools/net8.0").WithFiles(CONSOLE_FILES_NETCORE).AndFiles(ENGINE_CORE_FILES).AndFile("nunit.console.nuget.addins")
},
symbols: new PackageCheck[] {
HasDirectory("tools/net8.0/any").WithFile("nunit3-console.pdb").AndFiles(ENGINE_PDB_FILES)
HasDirectory("tools/net8.0").WithFile("nunit3-console.pdb").AndFiles(ENGINE_PDB_FILES)
},
executable: "tools/net8.0/any/nunit3-console.exe",
executable: "tools/net8.0/nunit3-console.exe",
tests: NetCoreRunnerTests),

NUnitConsoleRunnerNet60Package = new NuGetPackage(
Expand All @@ -122,12 +122,12 @@ public void InitializePackageDefinitions(ICakeContext context)
source: NUGET_DIR + "runners/nunit.console-runner.netcore.nuspec",
checks: new PackageCheck[] {
HasFiles("LICENSE.txt", "NOTICES.txt"),
HasDirectory("tools/net6.0/any").WithFiles(CONSOLE_FILES_NETCORE).AndFiles(ENGINE_FILES).AndFile("nunit.console.nuget.addins")
HasDirectory("tools/net6.0").WithFiles(CONSOLE_FILES_NETCORE).AndFiles(ENGINE_CORE_FILES).AndFile("nunit.console.nuget.addins")
},
symbols: new PackageCheck[] {
HasDirectory("tools/net6.0/any").WithFile("nunit3-console.pdb").AndFiles(ENGINE_PDB_FILES)
HasDirectory("tools/net6.0").WithFile("nunit3-console.pdb").AndFiles(ENGINE_PDB_FILES)
},
executable: "tools/net6.0/any/nunit3-console.exe",
executable: "tools/net6.0/nunit3-console.exe",
tests: NetCoreRunnerTests),

NUnitConsoleRunnerChocolateyPackage = new ChocolateyPackage(
Expand Down
4 changes: 4 additions & 0 deletions choco/nunit.choco.addins
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
# Extensions built for a single runtime target
../../nunit-extension-*/tools/ # find extensions installed under chocolatey

# Extensions built for multiple targets
../../nunit-extension-*/tools/*/ # find extensions installed under chocolatey
68 changes: 34 additions & 34 deletions nuget/runners/nunit.console-runner.netcore.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -29,41 +29,41 @@
<files>
<file src="../../LICENSE.txt" />
<file src="../../NOTICES.txt" />
<file src="net6.0/nunit3-console.exe" target="tools/net6.0/any" />
<file src="net6.0/nunit3-console.pdb" target="tools/net6.0/any" />
<file src="net6.0/nunit3-console.dll" target="tools/net6.0/any" />
<file src="net6.0/nunit3-console.dll.config" target="tools/net6.0/any" />
<file src="net6.0/nunit3-console.deps.json" target="tools/net6.0/any" />
<file src="net6.0/nunit3-console.runtimeconfig.json" target="tools/net6.0/any" />
<file src="net6.0/nunit.engine.core.dll" target="tools/net6.0/any" />
<file src="net6.0/nunit.engine.core.pdb" target="tools/net6.0/any" />
<file src="net6.0/nunit.engine.dll" target="tools/net6.0/any" />
<file src="net6.0/nunit.engine.pdb" target="tools/net6.0/any" />
<file src="net6.0/nunit.engine.api.dll" target="tools/net6.0/any" />
<file src="net6.0/nunit.engine.api.pdb" target="tools/net6.0/any" />
<file src="net6.0/nunit.engine.api.xml" target="tools/net6.0/any" />
<file src="net6.0/testcentric.engine.metadata.dll" target="tools/net6.0/any" />
<file src="net6.0/Microsoft.Extensions.DependencyModel.dll" target="tools/net6.0/any" />
<file src="../../nuget/runners/nunit.console.nuget.addins" target="tools/net6.0/any"/>
<file src="../../nuget/runners/DotnetToolSettings.xml" target="tools/net6.0/any"/>
<file src="net6.0/nunit3-console.exe" target="tools/net6.0/" />
<file src="net6.0/nunit3-console.pdb" target="tools/net6.0/" />
<file src="net6.0/nunit3-console.dll" target="tools/net6.0/" />
<file src="net6.0/nunit3-console.dll.config" target="tools/met6.0" />
<file src="net6.0/nunit3-console.deps.json" target="tools/net6.0" />
<file src="net6.0/nunit3-console.runtimeconfig.json" target="tools/net6.0" />
<file src="net6.0/nunit.engine.core.dll" target="tools/net6.0" />
<file src="net6.0/nunit.engine.core.pdb" target="tools/net6.0" />
<file src="net6.0/nunit.engine.dll" target="tools/net6.0" />
<file src="net6.0/nunit.engine.pdb" target="tools/net6.0" />
<file src="net6.0/nunit.engine.api.dll" target="tools/net6.0" />
<file src="net6.0/nunit.engine.api.pdb" target="tools/net6.0" />
<file src="net6.0/nunit.engine.api.xml" target="tools/net6.0" />
<file src="net6.0/testcentric.engine.metadata.dll" target="tools/net6.0" />
<file src="net6.0/Microsoft.Extensions.DependencyModel.dll" target="tools/net6.0" />
<file src="../../nuget/runners/nunit.console.nuget.addins" target="tools/net6.0"/>
<file src="../../nuget/runners/DotnetToolSettings.xml" target="tools/net6.0"/>

<file src="net8.0/nunit3-console.exe" target="tools/net8.0/any" />
<file src="net8.0/nunit3-console.pdb" target="tools/net8.0/any" />
<file src="net8.0/nunit3-console.dll" target="tools/net8.0/any" />
<file src="net8.0/nunit3-console.dll.config" target="tools/net8.0/any" />
<file src="net8.0/nunit3-console.deps.json" target="tools/net8.0/any" />
<file src="net8.0/nunit3-console.runtimeconfig.json" target="tools/net8.0/any" />
<file src="net8.0/nunit.engine.core.dll" target="tools/net8.0/any" />
<file src="net8.0/nunit.engine.core.pdb" target="tools/net8.0/any" />
<file src="net8.0/nunit.engine.dll" target="tools/net8.0/any" />
<file src="net8.0/nunit.engine.pdb" target="tools/net8.0/any" />
<file src="net8.0/nunit.engine.api.dll" target="tools/net8.0/any" />
<file src="net8.0/nunit.engine.api.pdb" target="tools/net8.0/any" />
<file src="net8.0/nunit.engine.api.xml" target="tools/net8.0/any" />
<file src="net8.0/testcentric.engine.metadata.dll" target="tools/net8.0/any" />
<file src="net8.0/Microsoft.Extensions.DependencyModel.dll" target="tools/net8.0/any" />
<file src="../../nuget/runners/nunit.console.nuget.addins" target="tools/net8.0/any"/>
<file src="../../nuget/runners/DotnetToolSettings.xml" target="tools/net8.0/any"/>
<file src="net8.0/nunit3-console.exe" target="tools/net8.0" />
<file src="net8.0/nunit3-console.pdb" target="tools/net8.0" />
<file src="net8.0/nunit3-console.dll" target="tools/net8.0" />
<file src="net8.0/nunit3-console.dll.config" target="tools/net8.0" />
<file src="net8.0/nunit3-console.deps.json" target="tools/net8.0" />
<file src="net8.0/nunit3-console.runtimeconfig.json" target="tools/net8.0" />
<file src="net8.0/nunit.engine.core.dll" target="tools/net8.0" />
<file src="net8.0/nunit.engine.core.pdb" target="tools/net8.0" />
<file src="net8.0/nunit.engine.dll" target="tools/net8.0" />
<file src="net8.0/nunit.engine.pdb" target="tools/net8.0" />
<file src="net8.0/nunit.engine.api.dll" target="tools/net8.0" />
<file src="net8.0/nunit.engine.api.pdb" target="tools/net8.0" />
<file src="net8.0/nunit.engine.api.xml" target="tools/net8.0" />
<file src="net8.0/testcentric.engine.metadata.dll" target="tools/net8.0" />
<file src="net8.0/Microsoft.Extensions.DependencyModel.dll" target="tools/net8.0" />
<file src="../../nuget/runners/nunit.console.nuget.addins" target="tools/net8.0"/>
<file src="../../nuget/runners/DotnetToolSettings.xml" target="tools/net8.0"/>

<file src="../../nunit_256.png" target="images"/>
</files>
Expand Down
9 changes: 7 additions & 2 deletions nuget/runners/nunit.console.nuget.addins
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# Extensions built for a single runtime target
../../NUnit.Extension.*/**/tools/ # nuget v2 layout
../../../NUnit.Extension.*/**/tools/ # nuget v3 layout
../../../../NUnit.Extension.*/**/tools/
../../nunit.extension.*/**/tools/ # nuget v2 layout
../../../nunit.extension.*/**/tools/ # nuget v3 layout
../../../../nunit.extension.*/**/tools/

# Extensions built for multiple targets
../../NUnit.Extension.*/**/tools/*/ # nuget v2 layout
../../../NUnit.Extension.*/**/tools/*/ # nuget v3 layout
../../nunit.extension.*/**/tools/*/ # nuget v2 layout
../../../nunit.extension.*/**/tools/*/ # nuget v3 layout
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,12 @@ private void ProcessAddinsFile(IDirectory baseDir, IFile addinsFile, bool fromWi
{
bool isWild = fromWildCard || entry.Contains("*");
var args = GetBaseDirAndPattern(baseDir, entry);
// TODO: See if we can handle '/tools/*/' efficiently by examining every
// assembly in the directory. Otherwise try this approach:
// 1. Check entry for ending with '/tools/*/'
// 2. If so, examine the directory name to see if it matches a tfm.
// 3. If it does, check to see if the implied runtime would be loadable.
// 4. If so, process it, if not, skip it.
if (entry.EndsWith("/"))
{
foreach (var dir in _directoryFinder.GetDirectories(args.Item1, args.Item2))
Expand Down