@@ -20,8 +20,29 @@ public sealed class NetFrameworkGenerationTests
2020 public void SharedAssemblyPolicy_keeps_netfx_polyfills_generation_private ( )
2121 {
2222 HostSharedAssemblies . Use ( new HostSharedAssemblyNames ( [ "RevitAPI" ] , [ "Autodesk." ] ) ) ;
23- Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "System.Runtime" ) , Is . True ) ;
24- Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "System.Memory" ) , Is . False ) ;
23+ Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "System" ) , Is . True ) ;
24+ Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "System.Core" ) , Is . True ) ;
25+ Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "System.Runtime" ) , Is . False ) ;
26+ Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "System.Custom" ) , Is . False ) ;
27+ Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "Microsoft.Custom" ) , Is . False ) ;
28+ Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "Microsoft.Win32.Registry" ) , Is . False ) ;
29+ Assert . That (
30+ new [ ]
31+ {
32+ "System.Buffers" ,
33+ "System.Collections.Immutable" ,
34+ "System.Diagnostics.DiagnosticSource" ,
35+ "System.IO.Hashing" ,
36+ "System.IO.Pipelines" ,
37+ "System.Memory" ,
38+ "System.Numerics.Vectors" ,
39+ "System.Runtime.CompilerServices.Unsafe" ,
40+ "System.Text.Encodings.Web" ,
41+ "System.Text.Json" ,
42+ "System.Threading.Channels" ,
43+ "System.Threading.Tasks.Extensions" ,
44+ } . All ( name => ! NUnitSharedAssemblyPolicy . IsShared ( name ) ) ,
45+ Is . True ) ;
2546 Assert . That ( NUnitSharedAssemblyPolicy . IsManagedAssemblyFile ( "HostSmokeTests.exe" ) , Is . True ) ;
2647 Assert . That ( NUnitSharedAssemblyPolicy . IsManagedAssemblyFile ( "nunit.framework.dll" ) , Is . True ) ;
2748 Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "System.Reflection.Metadata" ) , Is . False ) ;
@@ -30,6 +51,40 @@ public void SharedAssemblyPolicy_keeps_netfx_polyfills_generation_private()
3051 Assert . That ( NUnitSharedAssemblyPolicy . IsShared ( "Autodesk.Revit.DB" ) , Is . True ) ;
3152 }
3253
54+ [ Test ]
55+ public void GenerationBuilder_keeps_versioned_system_and_microsoft_dependencies_private ( )
56+ {
57+ var workspace = Path . Combine ( Path . GetTempPath ( ) , "DevTools" , "NUnit" , Guid . NewGuid ( ) . ToString ( "N" ) ) ;
58+ Directory . CreateDirectory ( workspace ) ;
59+ try
60+ {
61+ var testAssembly = NetFrameworkGenerationTestEnvironment . CreateGenerationOneAssembly (
62+ workspace ,
63+ "versioned-bcl-dependencies" ) ;
64+ var outputDirectory = Path . GetDirectoryName ( testAssembly ) ! ;
65+ var testDirectory = Path . GetDirectoryName ( typeof ( NetFrameworkGenerationTests ) . Assembly . Location ) ! ;
66+
67+ foreach ( var fileName in new [ ] { "System.Text.Json.dll" , "Microsoft.Bcl.AsyncInterfaces.dll" } )
68+ {
69+ File . Copy (
70+ Path . Combine ( testDirectory , fileName ) ,
71+ Path . Combine ( outputDirectory , fileName ) ,
72+ overwrite : true ) ;
73+ }
74+
75+ var generationsRoot = NetFrameworkGenerationTestEnvironment . CreateIsolatedGenerationsRoot ( ) ;
76+ var manifest = NetFrameworkGenerationTestEnvironment . CreateBuilder ( generationsRoot ) . Build ( testAssembly ) ;
77+
78+ Assert . That ( File . Exists ( Path . Combine ( manifest . ShadowDirectory , "System.Text.Json.dll" ) ) , Is . True ) ;
79+ Assert . That ( File . Exists ( Path . Combine ( manifest . ShadowDirectory , "Microsoft.Bcl.AsyncInterfaces.dll" ) ) , Is . True ) ;
80+ }
81+ finally
82+ {
83+ if ( Directory . Exists ( workspace ) )
84+ Directory . Delete ( workspace , recursive : true ) ;
85+ }
86+ }
87+
3388 [ Test ]
3489 public void Process_runs_on_clr_48 ( )
3590 {
@@ -155,6 +210,23 @@ public void Create_resolves_same_identity_dependency_per_requesting_generation()
155210 Assert . That ( factory . RetainedGenerationCount , Is . EqualTo ( 2 ) ) ;
156211 }
157212
213+ [ Test ]
214+ public void Create_resolves_root_dependency_per_requesting_generation ( )
215+ {
216+ var generationOne = NetFrameworkGenerationTestEnvironment . BuildRootDependencyGenerationOne ( ) ;
217+ var generationTwo = NetFrameworkGenerationTestEnvironment . BuildRootDependencyGenerationTwo ( ) ;
218+
219+ using var factory = new NetfxNUnitRuntimeSessionFactory ( ) ;
220+ using var sessionOne = factory . Create ( generationOne ) ;
221+ using var sessionTwo = factory . Create ( generationTwo ) ;
222+
223+ var caseOne = RunDependencyProbe ( sessionOne , generationOne ) ;
224+ var caseTwo = RunDependencyProbe ( sessionTwo , generationTwo ) ;
225+
226+ Assert . That ( caseOne . Output , Does . Contain ( "dependency-behavior=behavior-one" ) ) ;
227+ Assert . That ( caseTwo . Output , Does . Contain ( "dependency-behavior=behavior-two" ) ) ;
228+ }
229+
158230 [ Test ]
159231 public void Create_concurrent_generations_remain_isolated ( )
160232 {
@@ -423,4 +495,11 @@ private static NUnitCaseResult RunDependencyProbe(INUnitRuntimeSession session,
423495 Assert . That ( run . GenerationId , Is . EqualTo ( manifest . GenerationId ) ) ;
424496 return run . Cases . Single ( ) ;
425497 }
498+
499+ private sealed class NoOpEventSink : INUnitRuntimeEventSink
500+ {
501+ public void Publish ( NUnitRuntimeEvent runtimeEvent )
502+ {
503+ }
504+ }
426505}
0 commit comments