Skip to content

Commit 79cb823

Browse files
authored
Merge pull request #1494 from nunit/net80-engine
Fix packaging errors
2 parents e662ebf + c21d773 commit 79cb823

9 files changed

+129
-18
lines changed

build.cake

+95-15
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,31 @@ BuildSettings.Initialize(
1515

1616
//////////////////////////////////////////////////////////////////////
1717
// LISTS OF FILES USED IN CHECKING PACKAGES
18-
//////////////////////////////////////////////////////////////////////
18+
//////////////////////////////////////////////////////////////////////
1919

20+
FilePath[] ConsoleFiles = {
21+
"nunit3-console.dll", "nunit3-console.dll.config", "nunit3-console.exe", "nunit3-console.pdb",
22+
"nunit3-console.deps.json", "nunit3-console.runtimeconfig.json", "nunit.console.nuget.addins" };
2023
FilePath[] ENGINE_FILES = {
21-
"nunit.engine.dll", "nunit.engine.core.dll", "nunit.engine.api.dll", "testcentric.engine.metadata.dll" };
24+
"nunit.engine.dll", "nunit.engine.core.dll", "nunit.engine.api.dll", "testcentric.engine.metadata.dll" };
2225
FilePath[] ENGINE_PDB_FILES = {
23-
"nunit.engine.pdb", "nunit.engine.core.pdb", "nunit.engine.api.pdb"};
26+
"nunit.engine.pdb", "nunit.engine.core.pdb", "nunit.engine.api.pdb"};
2427
FilePath[] ENGINE_CORE_FILES = {
25-
"nunit.engine.core.dll", "nunit.engine.api.dll", "testcentric.engine.metadata.dll" };
28+
"nunit.engine.core.dll", "nunit.engine.api.dll", "testcentric.engine.metadata.dll" };
2629
FilePath[] ENGINE_CORE_PDB_FILES = {
27-
"nunit.engine.core.pdb", "nunit.engine.api.pdb"};
30+
"nunit.engine.core.pdb", "nunit.engine.api.pdb"};
2831
FilePath[] AGENT_FILES = {
29-
"nunit-agent.exe", "nunit-agent.exe.config",
30-
"nunit-agent-x86.exe", "nunit-agent-x86.exe.config",
31-
"nunit.engine.core.dll", "nunit.engine.api.dll", "testcentric.engine.metadata.dll"};
32+
"nunit-agent.exe", "nunit-agent.exe.config",
33+
"nunit-agent-x86.exe", "nunit-agent-x86.exe.config",
34+
"nunit.engine.core.dll", "nunit.engine.api.dll", "testcentric.engine.metadata.dll"};
3235
FilePath[] AGENT_FILES_NETCORE = {
33-
"nunit-agent.dll", "nunit-agent.dll.config",
34-
"nunit.engine.core.dll", "nunit.engine.api.dll", "testcentric.engine.metadata.dll",
35-
"Microsoft.Extensions.DependencyModel.dll"};
36+
"nunit-agent.dll", "nunit-agent.dll.config",
37+
"nunit.engine.core.dll", "nunit.engine.api.dll", "testcentric.engine.metadata.dll",
38+
"Microsoft.Extensions.DependencyModel.dll"};
3639
FilePath[] AGENT_PDB_FILES = {
37-
"nunit-agent.pdb", "nunit-agent-x86.pdb", "nunit.engine.core.pdb", "nunit.engine.api.pdb"};
40+
"nunit-agent.pdb", "nunit-agent-x86.pdb", "nunit.engine.core.pdb", "nunit.engine.api.pdb"};
3841
FilePath[] AGENT_PDB_FILES_NETCORE = {
39-
"nunit-agent.pdb", "nunit.engine.core.pdb", "nunit.engine.api.pdb"};
42+
"nunit-agent.pdb", "nunit.engine.core.pdb", "nunit.engine.api.pdb"};
4043

4144
//////////////////////////////////////////////////////////////////////
4245
// INDIVIDUAL PACKAGE DEFINITIONS
@@ -86,15 +89,24 @@ BuildSettings.Packages.AddRange(new PackageDefinition[] {
8689
NUnitConsoleRunnerNetCorePackage = new DotNetToolPackage(
8790
id: "NUnit.ConsoleRunner.NetCore",
8891
source: BuildSettings.NuGetDirectory + "runners/nunit.console-runner.netcore.nuspec",
89-
checks: new PackageCheck[] { HasFiles("nunit.exe") },
92+
checks: new PackageCheck[]
93+
{
94+
HasFiles("nunit.exe"),
95+
HasSomeDirectory(".store/nunit.consolerunner.netcore/**/tools/net6.0/any")
96+
.WithFiles(ENGINE_FILES).AndFiles(ConsoleFiles).AndFile("Microsoft.Extensions.DependencyModel.dll")
97+
},
9098
testRunner: new ConsoleRunnerSelfTester(BuildSettings.NuGetTestDirectory
9199
+ $"NUnit.ConsoleRunner.NetCore.{BuildSettings.PackageVersion}/nunit.exe"),
92100
tests: NetCoreRunnerTests),
93101

94102
NUnitConsoleRunnerNet80Package = new DotNetToolPackage(
95103
id: "NUnit.ConsoleRunner.Net80",
96104
source: BuildSettings.NuGetDirectory + "runners/nunit.console-runner.net80.nuspec",
97-
checks: new PackageCheck[] { HasFiles("nunit-net80.exe") },
105+
checks: new PackageCheck[] {
106+
HasFiles("nunit-net80.exe"),
107+
HasSomeDirectory(".store/nunit.consolerunner.net80/**/tools/net8.0/any")
108+
.WithFiles(ENGINE_FILES).AndFiles(ConsoleFiles).AndFile("Microsoft.Extensions.DependencyModel.dll")
109+
},
98110
testRunner: new ConsoleRunnerSelfTester(BuildSettings.NuGetTestDirectory
99111
+ $"NUnit.ConsoleRunner.Net80.{BuildSettings.PackageVersion}/nunit-net80.exe"),
100112
tests: NetCoreRunnerTests),
@@ -147,13 +159,19 @@ BuildSettings.Packages.AddRange(new PackageDefinition[] {
147159
HasFiles("LICENSE.txt", "NOTICES.txt"),
148160
HasDirectory("lib/net462").WithFiles(ENGINE_FILES),
149161
HasDirectory("lib/netstandard2.0").WithFiles(ENGINE_FILES),
162+
HasDirectory("lib/net6.0").WithFiles(ENGINE_FILES).AndFile("Microsoft.Extensions.DependencyModel.dll"),
163+
HasDirectory("lib/net8.0").WithFiles(ENGINE_FILES).AndFile("Microsoft.Extensions.DependencyModel.dll"),
150164
HasDirectory("contentFiles/any/lib/net462").WithFile("nunit.engine.nuget.addins"),
151165
HasDirectory("contentFiles/any/lib/netstandard2.0").WithFile("nunit.engine.nuget.addins"),
166+
HasDirectory("contentFiles/any/lib/net6.0").WithFile("nunit.engine.nuget.addins"),
167+
HasDirectory("contentFiles/any/lib/net8.0").WithFile("nunit.engine.nuget.addins"),
152168
HasDirectory("contentFiles/any/agents/net462").WithFiles(AGENT_FILES).AndFile("nunit.agent.addins")
153169
},
154170
symbols: new PackageCheck[] {
155171
HasDirectory("lib/net462").WithFiles(ENGINE_PDB_FILES),
156172
HasDirectory("lib/netstandard2.0").WithFiles(ENGINE_PDB_FILES),
173+
HasDirectory("lib/net6.0").WithFiles(ENGINE_PDB_FILES),
174+
HasDirectory("lib/net8.0").WithFiles(ENGINE_PDB_FILES),
157175
HasDirectory("contentFiles/any/agents/net462").WithFiles(AGENT_PDB_FILES)
158176
}),
159177

@@ -171,6 +189,68 @@ BuildSettings.Packages.AddRange(new PackageDefinition[] {
171189
})
172190
});
173191

192+
// Adhoc code to check content of a dotnet standalone executable
193+
// TODO: Incorporate this in the recipe itself
194+
195+
private static ExtendedDirectoryCheck HasSomeDirectory(string pattern) => new ExtendedDirectoryCheck(pattern);
196+
197+
public class ExtendedDirectoryCheck : PackageCheck
198+
{
199+
private string _directoryPattern;
200+
private List<FilePath> _files = new List<FilePath>();
201+
202+
public ExtendedDirectoryCheck(string directoryPattern)
203+
{
204+
// Assume it has no wildcard - checked in ApplyTo method
205+
_directoryPattern = directoryPattern;
206+
}
207+
208+
public ExtendedDirectoryCheck WithFiles(params FilePath[] files)
209+
{
210+
_files.AddRange(files);
211+
return this;
212+
}
213+
214+
public ExtendedDirectoryCheck AndFiles(params FilePath[] files)
215+
{
216+
return WithFiles(files);
217+
}
218+
219+
public ExtendedDirectoryCheck WithFile(FilePath file)
220+
{
221+
_files.Add(file);
222+
return this;
223+
}
224+
225+
public ExtendedDirectoryCheck AndFile(FilePath file)
226+
{
227+
return AndFiles(file);
228+
}
229+
230+
public override bool ApplyTo(DirectoryPath testDirPath)
231+
{
232+
if (_directoryPattern.Contains('*') || _directoryPattern.Contains('?')) // Wildcard
233+
{
234+
var absDirPattern = testDirPath.Combine(_directoryPattern).ToString();
235+
foreach (var dir in _context.GetDirectories(absDirPattern))
236+
{
237+
// Use first one found
238+
return CheckFilesExist(_files.Select(file => dir.CombineWithFilePath(file)));
239+
}
240+
}
241+
else // No wildcard
242+
{
243+
var absDirPath = testDirPath.Combine(_directoryPattern);
244+
if (!CheckDirectoryExists(absDirPath))
245+
return false;
246+
247+
return CheckFilesExist(_files.Select(file => absDirPath.CombineWithFilePath(file)));
248+
}
249+
250+
return false;
251+
}
252+
}
253+
174254
//////////////////////////////////////////////////////////////////////
175255
// TEST RUNNERS
176256
//////////////////////////////////////////////////////////////////////

nuget/engine/nunit.engine.nuspec

+20
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,26 @@
8080
<file src="netstandard2.0/testcentric.engine.metadata.dll" target="lib/netstandard2.0" />
8181
<file src="../../nuget/engine/nunit.engine.nuget.addins" target="contentFiles/any/lib/netstandard2.0"/>
8282

83+
<file src="net6.0/nunit.engine.dll" target="lib/net6.0" />
84+
<file src="net6.0/nunit.engine.pdb" target="lib/net6.0" />
85+
<file src="net6.0/nunit.engine.core.dll" target="lib/net6.0" />
86+
<file src="net6.0/nunit.engine.core.pdb" target="lib/net6.0" />
87+
<file src="net6.0/nunit.engine.api.dll" target="lib/net6.0" />
88+
<file src="net6.0/nunit.engine.api.pdb" target="lib/net6.0" />
89+
<file src="net6.0/testcentric.engine.metadata.dll" target="lib/net6.0" />
90+
<file src="net6.0/Microsoft.Extensions.DependencyModel.dll" target="lib/net6.0" />
91+
<file src="../../nuget/engine/nunit.engine.nuget.addins" target="contentFiles/any/lib/net6.0"/>
92+
93+
<file src="net8.0/nunit.engine.dll" target="lib/net8.0" />
94+
<file src="net8.0/nunit.engine.pdb" target="lib/net8.0" />
95+
<file src="net8.0/nunit.engine.core.dll" target="lib/net8.0" />
96+
<file src="net8.0/nunit.engine.core.pdb" target="lib/net8.0" />
97+
<file src="net8.0/nunit.engine.api.dll" target="lib/net8.0" />
98+
<file src="net8.0/nunit.engine.api.pdb" target="lib/net8.0" />
99+
<file src="net8.0/testcentric.engine.metadata.dll" target="lib/net8.0" />
100+
<file src="net8.0/Microsoft.Extensions.DependencyModel.dll" target="lib/net8.0" />
101+
<file src="../../nuget/engine/nunit.engine.nuget.addins" target="contentFiles/any/lib/net8.0"/>
102+
83103
<file src="../../nuget/engine/build/**/*" target="build" />
84104
<file src="../../nunit_256.png" target="images" />
85105
</files>

src/NUnitEngine/nunit.engine.tests/Helpers/ShadowCopyUtils.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Copyright (c) Charlie Poole, Rob Prouse and Contributors. MIT License - see LICENSE.txt
22

3+
#if NETFRAMEWORK
34
using System;
45
using System.Collections.Generic;
56
using System.IO;
@@ -40,3 +41,4 @@ from assemblyName in assemblyNames
4041
}
4142
}
4243
}
44+
#endif

src/NUnitEngine/nunit.engine.tests/Integration/DirectoryWithNeededAssemblies.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Copyright (c) Charlie Poole, Rob Prouse and Contributors. MIT License - see LICENSE.txt
22

3+
#if NETFRAMEWORK
34
using System;
45
using System.IO;
56
using NUnit.Engine.Tests.Helpers;
@@ -31,3 +32,4 @@ public void Dispose()
3132
}
3233
}
3334
}
35+
#endif

src/NUnitEngine/nunit.engine.tests/Integration/MockAssemblyInDirectoryWithFramework.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Copyright (c) Charlie Poole, Rob Prouse and Contributors. MIT License - see LICENSE.txt
22

3+
#if NETFRAMEWORK
34
using System;
45
using System.IO;
56
using NUnit.Framework;
@@ -25,3 +26,4 @@ public void Dispose()
2526
}
2627
}
2728
}
29+
#endif

src/NUnitEngine/nunit.engine.tests/Integration/RunnerInDirectoryWithoutFramework.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Copyright (c) Charlie Poole, Rob Prouse and Contributors. MIT License - see LICENSE.txt
22

3+
#if NETFRAMEWORK
34
using System;
45
using System.IO;
56
using System.Threading;
@@ -39,3 +40,4 @@ public void Dispose()
3940
}
4041
}
4142
}
43+
#endif

src/NUnitEngine/nunit.engine.tests/nunit.engine.tests.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<RootNamespace>NUnit.Engine.Tests</RootNamespace>
5-
<TargetFrameworks>net462;netcoreapp3.1</TargetFrameworks>
5+
<TargetFrameworks>net462;netcoreapp3.1;net6.0;net8.0</TargetFrameworks>
66
<OutputType>Exe</OutputType>
77
<SignAssembly>true</SignAssembly>
88
<AssemblyOriginatorKeyFile>..\..\nunit.snk</AssemblyOriginatorKeyFile>
@@ -23,7 +23,7 @@
2323
<PackageReference Include="NSubstitute" Version="2.0.3" />
2424
</ItemGroup>
2525

26-
<ItemGroup Condition="'$(TargetFramework)'=='net462'">
26+
<ItemGroup Condition="'$(TargetFramework)'!='netcoreapp3.1'">
2727
<PackageReference Include="NUnit" Version="4.2.2" />
2828
<PackageReference Include="NUnitLite" Version="4.2.2" />
2929
<PackageReference Include="NSubstitute" Version="5.1.0" />

src/NUnitEngine/nunit.engine/Runners/TestEventDispatcher.cs

+3
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ public void OnTestEvent(string report)
3333
}
3434
}
3535

36+
#if NET6_0 || NET8_0
37+
[Obsolete]
38+
#endif
3639
public override object InitializeLifetimeService()
3740
{
3841
return null;

src/NUnitEngine/nunit.engine/nunit.engine.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<RootNamespace>NUnit.Engine</RootNamespace>
5-
<TargetFrameworks>net462;netstandard2.0</TargetFrameworks>
5+
<TargetFrameworks>net462;netstandard2.0;net6.0;net8.0</TargetFrameworks>
66
<SignAssembly>true</SignAssembly>
77
<AssemblyOriginatorKeyFile>..\..\nunit.snk</AssemblyOriginatorKeyFile>
88
<DebugType>portable</DebugType>

0 commit comments

Comments
 (0)