@@ -140,7 +140,10 @@ public async Task StartSessionAsync_VerifiesCorrectProcessInfoAndProjectInfo()
140140 const string expectedProjectPath = "C:\\ Test\\ Project.csproj" ;
141141 const string expectedTf = "net6.0" ;
142142
143- var configuredProject = CreateConfiguredProjectWithCommonProperties ( expectedTf , expectedProjectPath ) ;
143+ var configuredProject = CreateConfiguredProjectWithCommonProperties (
144+ projectPath : expectedProjectPath ,
145+ targetFrameworkIdentifier : ".NETCoreApp" ,
146+ targetFrameworkVersion : "6.0" ) ;
144147
145148 var session = CreateInstance (
146149 hotReloadAgentManagerClient : new Lazy < IHotReloadAgentManagerClient > ( ( ) => hotReloadAgentManagerClient . Object ) ,
@@ -193,7 +196,11 @@ public async Task StartSessionAsync_CallsAgentStartedWithCorrectParameters()
193196 {
194197 // Arrange
195198 var hotReloadAgentManagerClient = new Mock < IHotReloadAgentManagerClient > ( ) ;
196- var configuredProject = CreateConfiguredProjectWithCommonProperties ( "net6.0" , "C:\\ Test\\ Project.csproj" ) ;
199+ var configuredProject = CreateConfiguredProjectWithCommonProperties (
200+ "C:\\ Test\\ Project.csproj" ,
201+ targetFrameworkIdentifier : ".NETCoreApp" ,
202+ targetFrameworkVersion : "6.0" ) ;
203+
197204 var cancellationToken = CancellationToken . None ;
198205
199206 RunningProjectInfo capturedProjectInfo = default ;
@@ -245,18 +252,36 @@ public async Task StartSessionAsync_CallsAgentStartedWithCorrectParameters()
245252 Times . Once ) ;
246253 }
247254
248- [ Fact ]
249- public async Task StartSessionAsync_WithDebugger_SetsCorrectFlags ( )
255+ [ Theory ]
256+ // not debugging:
257+ [ InlineData ( false , true , false , "6.0" , HotReloadAgentFlags . None ) ]
258+ [ InlineData ( false , true , true , "6.0" , HotReloadAgentFlags . None ) ]
259+ // debugging non-wasm project:
260+ [ InlineData ( true , false , false , "6.0" , HotReloadAgentFlags . IsDebuggedProcess ) ]
261+ // debugging wasm project using legacy debugger:
262+ [ InlineData ( true , true , false , "6.0" , HotReloadAgentFlags . None ) ]
263+ [ InlineData ( true , true , true , "6.0" , HotReloadAgentFlags . None ) ]
264+ [ InlineData ( true , true , true , "7.0" , HotReloadAgentFlags . None ) ]
265+ [ InlineData ( true , true , true , "8.0" , HotReloadAgentFlags . None ) ]
266+ // debugging wasm project using new debugger:
267+ [ InlineData ( true , true , true , "9.0" , HotReloadAgentFlags . IsDebuggedProcess ) ]
268+ [ InlineData ( true , true , true , "10.0" , HotReloadAgentFlags . IsDebuggedProcess ) ]
269+ public async Task StartSessionAsync_WithDebugger_SetsCorrectFlags ( bool isDebugging , bool isWasmProject , bool isWasmCorDebugEnabled , string targetFrameworkVersion , HotReloadAgentFlags expectedFlags )
250270 {
251271 // Arrange
252272 var hotReloadAgentManagerClient = new Mock < IHotReloadAgentManagerClient > ( ) ;
253- var configuredProject = CreateConfiguredProjectWithCommonProperties ( ) ;
273+ var configuredProject = CreateConfiguredProjectWithCommonProperties (
274+ targetFrameworkIdentifier : ".NETCoreApp" ,
275+ targetFrameworkVersion : targetFrameworkVersion ) ;
276+
254277 var cancellationToken = CancellationToken . None ;
255278
256279 var session = CreateInstance (
257280 hotReloadAgentManagerClient : new Lazy < IHotReloadAgentManagerClient > ( ( ) => hotReloadAgentManagerClient . Object ) ,
258281 configuredProject : configuredProject ,
259- debugLaunchOptions : 0 ) ;
282+ debugLaunchOptions : isDebugging ? 0 : DebugLaunchOptions . NoDebug ,
283+ projectSystemOptions : IProjectSystemOptionsFactory . ImplementIsCorDebugWebAssemblyDebuggerEnabledAsync ( isWasmCorDebugEnabled ) ,
284+ callback : isWasmProject ? IProjectHotReloadSessionWebAssemblyCallbackFactory . Create ( ) : null ) ;
260285
261286 // Act
262287 await session . StartSessionAsync ( cancellationToken ) ;
@@ -265,7 +290,7 @@ public async Task StartSessionAsync_WithDebugger_SetsCorrectFlags()
265290 hotReloadAgentManagerClient . Verify (
266291 client => client . AgentStartedAsync (
267292 session ,
268- HotReloadAgentFlags . IsDebuggedProcess ,
293+ expectedFlags ,
269294 It . IsAny < ManagedEditAndContinueProcessInfo > ( ) ,
270295 It . IsAny < RunningProjectInfo > ( ) ,
271296 cancellationToken ) ,
@@ -561,7 +586,8 @@ private static ProjectHotReloadSession CreateInstance(
561586 DebugLaunchOptions debugLaunchOptions = DebugLaunchOptions . NoDebug ,
562587 IProjectHotReloadBuildManager ? buildManager = null ,
563588 IProjectHotReloadLaunchProvider ? launchProvider = null ,
564- IHotReloadDebugStateProvider ? debugStateProvider = null )
589+ IHotReloadDebugStateProvider ? debugStateProvider = null ,
590+ IProjectSystemOptions ? projectSystemOptions = null )
565591 {
566592 hotReloadAgentManagerClient ??= new ( Mock . Of < IHotReloadAgentManagerClient > ) ;
567593 hotReloadOutputService ??= new ( Mock . Of < IHotReloadDiagnosticOutputService > ) ;
@@ -586,6 +612,7 @@ private static ProjectHotReloadSession CreateInstance(
586612 buildManager ??= new Mock < IProjectHotReloadBuildManager > ( ) . Object ;
587613 launchProvider ??= new Mock < IProjectHotReloadLaunchProvider > ( ) . Object ;
588614 configuredProject ??= CreateConfiguredProjectWithCommonProperties ( ) ;
615+ projectSystemOptions ??= new Mock < IProjectSystemOptions > ( ) . Object ;
589616
590617 return new ProjectHotReloadSession (
591618 name ,
@@ -598,15 +625,36 @@ private static ProjectHotReloadSession CreateInstance(
598625 configuredProject ,
599626 launchProfile ,
600627 debugLaunchOptions ,
628+ projectSystemOptions ,
601629 debugStateProvider ) ;
602630 }
603631
604- private static ConfiguredProject CreateConfiguredProjectWithCommonProperties ( string targetFramework = "net6.0" , string projectPath = "C:\\ Test\\ Project.csproj" )
632+ private static ConfiguredProject CreateConfiguredProjectWithCommonProperties (
633+ string projectPath = "C:\\ Test\\ Project.csproj" ,
634+ string targetFrameworkIdentifier = ".NETCoreApp" ,
635+ string targetFrameworkVersion = "6.0" ,
636+ string webAssemblyHotReloadCapabilities = "Baseline" )
605637 {
638+ var targetFramework = targetFrameworkIdentifier switch
639+ {
640+ ".NETCoreApp" => "net" + targetFrameworkVersion ,
641+ ".NETFramework" => "net" + targetFrameworkVersion . Replace ( "." , "" ) ,
642+ ".NETStandard" => "netstandard" + targetFrameworkVersion ,
643+ _ => throw new ArgumentException ( )
644+ } ;
645+
646+ var targetFrameworkMoniker = $ "{ targetFrameworkIdentifier } , Version=v{ targetFrameworkVersion } ";
647+
606648 var commonProperties = new Mock < IProjectProperties > ( ) ;
607649 commonProperties . Setup ( p => p . GetEvaluatedPropertyValueAsync ( ConfigurationGeneral . TargetFrameworkProperty ) )
608650 . ReturnsAsync ( targetFramework ) ;
609651
652+ commonProperties . Setup ( p => p . GetEvaluatedPropertyValueAsync ( ConfigurationGeneral . TargetFrameworkMonikerProperty ) )
653+ . ReturnsAsync ( targetFrameworkMoniker ) ;
654+
655+ commonProperties . Setup ( p => p . GetEvaluatedPropertyValueAsync ( "WebAssemblyHotReloadCapabilities" ) )
656+ . ReturnsAsync ( webAssemblyHotReloadCapabilities ) ;
657+
610658 var projectPropertiesProvider = new Mock < IProjectPropertiesProvider > ( ) ;
611659 projectPropertiesProvider . Setup ( p => p . GetCommonProperties ( ) )
612660 . Returns ( commonProperties . Object ) ;
0 commit comments