@@ -140,7 +140,10 @@ public async Task StartSessionAsync_VerifiesCorrectProcessInfoAndProjectInfo()
140
140
const string expectedProjectPath = "C:\\ Test\\ Project.csproj" ;
141
141
const string expectedTf = "net6.0" ;
142
142
143
- var configuredProject = CreateConfiguredProjectWithCommonProperties ( expectedTf , expectedProjectPath ) ;
143
+ var configuredProject = CreateConfiguredProjectWithCommonProperties (
144
+ projectPath : expectedProjectPath ,
145
+ targetFrameworkIdentifier : ".NETCoreApp" ,
146
+ targetFrameworkVersion : "6.0" ) ;
144
147
145
148
var session = CreateInstance (
146
149
hotReloadAgentManagerClient : new Lazy < IHotReloadAgentManagerClient > ( ( ) => hotReloadAgentManagerClient . Object ) ,
@@ -193,7 +196,11 @@ public async Task StartSessionAsync_CallsAgentStartedWithCorrectParameters()
193
196
{
194
197
// Arrange
195
198
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
+
197
204
var cancellationToken = CancellationToken . None ;
198
205
199
206
RunningProjectInfo capturedProjectInfo = default ;
@@ -245,18 +252,36 @@ public async Task StartSessionAsync_CallsAgentStartedWithCorrectParameters()
245
252
Times . Once ) ;
246
253
}
247
254
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 )
250
270
{
251
271
// Arrange
252
272
var hotReloadAgentManagerClient = new Mock < IHotReloadAgentManagerClient > ( ) ;
253
- var configuredProject = CreateConfiguredProjectWithCommonProperties ( ) ;
273
+ var configuredProject = CreateConfiguredProjectWithCommonProperties (
274
+ targetFrameworkIdentifier : ".NETCoreApp" ,
275
+ targetFrameworkVersion : targetFrameworkVersion ) ;
276
+
254
277
var cancellationToken = CancellationToken . None ;
255
278
256
279
var session = CreateInstance (
257
280
hotReloadAgentManagerClient : new Lazy < IHotReloadAgentManagerClient > ( ( ) => hotReloadAgentManagerClient . Object ) ,
258
281
configuredProject : configuredProject ,
259
- debugLaunchOptions : 0 ) ;
282
+ debugLaunchOptions : isDebugging ? 0 : DebugLaunchOptions . NoDebug ,
283
+ projectSystemOptions : IProjectSystemOptionsFactory . ImplementIsCorDebugWebAssemblyDebuggerEnabledAsync ( isWasmCorDebugEnabled ) ,
284
+ callback : isWasmProject ? IProjectHotReloadSessionWebAssemblyCallbackFactory . Create ( ) : null ) ;
260
285
261
286
// Act
262
287
await session . StartSessionAsync ( cancellationToken ) ;
@@ -265,7 +290,7 @@ public async Task StartSessionAsync_WithDebugger_SetsCorrectFlags()
265
290
hotReloadAgentManagerClient . Verify (
266
291
client => client . AgentStartedAsync (
267
292
session ,
268
- HotReloadAgentFlags . IsDebuggedProcess ,
293
+ expectedFlags ,
269
294
It . IsAny < ManagedEditAndContinueProcessInfo > ( ) ,
270
295
It . IsAny < RunningProjectInfo > ( ) ,
271
296
cancellationToken ) ,
@@ -561,7 +586,8 @@ private static ProjectHotReloadSession CreateInstance(
561
586
DebugLaunchOptions debugLaunchOptions = DebugLaunchOptions . NoDebug ,
562
587
IProjectHotReloadBuildManager ? buildManager = null ,
563
588
IProjectHotReloadLaunchProvider ? launchProvider = null ,
564
- IHotReloadDebugStateProvider ? debugStateProvider = null )
589
+ IHotReloadDebugStateProvider ? debugStateProvider = null ,
590
+ IProjectSystemOptions ? projectSystemOptions = null )
565
591
{
566
592
hotReloadAgentManagerClient ??= new ( Mock . Of < IHotReloadAgentManagerClient > ) ;
567
593
hotReloadOutputService ??= new ( Mock . Of < IHotReloadDiagnosticOutputService > ) ;
@@ -586,6 +612,7 @@ private static ProjectHotReloadSession CreateInstance(
586
612
buildManager ??= new Mock < IProjectHotReloadBuildManager > ( ) . Object ;
587
613
launchProvider ??= new Mock < IProjectHotReloadLaunchProvider > ( ) . Object ;
588
614
configuredProject ??= CreateConfiguredProjectWithCommonProperties ( ) ;
615
+ projectSystemOptions ??= new Mock < IProjectSystemOptions > ( ) . Object ;
589
616
590
617
return new ProjectHotReloadSession (
591
618
name ,
@@ -598,15 +625,36 @@ private static ProjectHotReloadSession CreateInstance(
598
625
configuredProject ,
599
626
launchProfile ,
600
627
debugLaunchOptions ,
628
+ projectSystemOptions ,
601
629
debugStateProvider ) ;
602
630
}
603
631
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" )
605
637
{
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
+
606
648
var commonProperties = new Mock < IProjectProperties > ( ) ;
607
649
commonProperties . Setup ( p => p . GetEvaluatedPropertyValueAsync ( ConfigurationGeneral . TargetFrameworkProperty ) )
608
650
. ReturnsAsync ( targetFramework ) ;
609
651
652
+ commonProperties . Setup ( p => p . GetEvaluatedPropertyValueAsync ( ConfigurationGeneral . TargetFrameworkMonikerProperty ) )
653
+ . ReturnsAsync ( targetFrameworkMoniker ) ;
654
+
655
+ commonProperties . Setup ( p => p . GetEvaluatedPropertyValueAsync ( "WebAssemblyHotReloadCapabilities" ) )
656
+ . ReturnsAsync ( webAssemblyHotReloadCapabilities ) ;
657
+
610
658
var projectPropertiesProvider = new Mock < IProjectPropertiesProvider > ( ) ;
611
659
projectPropertiesProvider . Setup ( p => p . GetCommonProperties ( ) )
612
660
. Returns ( commonProperties . Object ) ;
0 commit comments