@@ -8,19 +8,19 @@ namespace Microsoft.DotNet.Watch.UnitTests;
88public class DotNetWatchOptionsTests
99{
1010 [ Fact ]
11- public void TryParse_RequiredProjectOption ( )
11+ public void TryParse_RequiredSdkOption ( )
1212 {
13- // Project option is missing
14- var args = new [ ] { "--verbose " , "a" , "b" } ;
13+ // --sdk option is missing
14+ var args = new [ ] { "--project" , "proj ", "a" , "b" } ;
1515 Assert . False ( DotNetWatchOptions . TryParse ( args , out var options ) ) ;
1616 Assert . Null ( options ) ;
1717 }
1818
1919 [ Fact ]
20- public void TryParse_RequiredSdkOption ( )
20+ public void TryParse_RequiredProjectOrFileOption ( )
2121 {
22- // Project option is missing
23- var args = new [ ] { "--project" , "proj ", "a" , "b" } ;
22+ // --project and --file options are missing
23+ var args = new [ ] { "--verbose " , "a" , "b" } ;
2424 Assert . False ( DotNetWatchOptions . TryParse ( args , out var options ) ) ;
2525 Assert . Null ( options ) ;
2626 }
@@ -31,10 +31,28 @@ public void TryParse_ProjectAndSdkPaths()
3131 var args = new [ ] { "--sdk" , "sdk" , "--project" , "myproject.csproj" } ;
3232 Assert . True ( DotNetWatchOptions . TryParse ( args , out var options ) ) ;
3333 Assert . Equal ( "sdk" , options . SdkDirectory ) ;
34- Assert . Equal ( "myproject.csproj" , options . ProjectPath ) ;
34+ Assert . Equal ( "myproject.csproj" , options . Project . PhysicalPath ) ;
35+ Assert . Empty ( options . ApplicationArguments ) ;
36+ }
37+
38+ [ Fact ]
39+ public void TryParse_FilePath ( )
40+ {
41+ var args = new [ ] { "--sdk" , "sdk" , "--file" , "file.cs" } ;
42+ Assert . True ( DotNetWatchOptions . TryParse ( args , out var options ) ) ;
43+ Assert . Equal ( "sdk" , options . SdkDirectory ) ;
44+ Assert . Equal ( "file.cs" , options . Project . EntryPointFilePath ) ;
3545 Assert . Empty ( options . ApplicationArguments ) ;
3646 }
3747
48+ [ Fact ]
49+ public void TryParse_ProjectAndFilePaths ( )
50+ {
51+ var args = new [ ] { "--sdk" , "sdk" , "--project" , "myproject.csproj" , "--file" , "file.cs" } ;
52+ Assert . False ( DotNetWatchOptions . TryParse ( args , out var options ) ) ;
53+ Assert . Null ( options ) ;
54+ }
55+
3856 [ Fact ]
3957 public void TryParse_ApplicationArguments ( )
4058 {
@@ -95,22 +113,32 @@ public void TryParse_ConflictingOptions()
95113 }
96114
97115 [ Fact ]
98- public void TryParse_MultipleOptionValues ( )
116+ public void TryParse_Project_MultipleValues ( )
99117 {
100118 // Project option should only accept one value
101119 var args = new [ ] { "--sdk" , "sdk" , "--project" , "proj1" , "proj2" } ;
102120 Assert . True ( DotNetWatchOptions . TryParse ( args , out var options ) ) ;
103- Assert . Equal ( "proj1" , options . ProjectPath ) ;
121+ Assert . Equal ( "proj1" , options . Project . PhysicalPath ) ;
104122 AssertEx . SequenceEqual ( [ "proj2" ] , options . ApplicationArguments ) ;
105123 }
106-
124+
125+ [ Fact ]
126+ public void TryParse_File_MultipleValues ( )
127+ {
128+ // Project option should only accept one value
129+ var args = new [ ] { "--sdk" , "sdk" , "--file" , "file1.cs" , "file2.cs" } ;
130+ Assert . True ( DotNetWatchOptions . TryParse ( args , out var options ) ) ;
131+ Assert . Equal ( "file1.cs" , options . Project . EntryPointFilePath ) ;
132+ AssertEx . SequenceEqual ( [ "file2.cs" ] , options . ApplicationArguments ) ;
133+ }
134+
107135 [ Fact ]
108136 public void TryParse_AllOptionsSet ( )
109137 {
110138 var args = new [ ] { "--sdk" , "sdk" , "--project" , "myapp.csproj" , "--verbose" , "--no-launch-profile" , "arg1" , "arg2" , "arg3" } ;
111139 Assert . True ( DotNetWatchOptions . TryParse ( args , out var options ) ) ;
112140
113- Assert . Equal ( "myapp.csproj" , options . ProjectPath ) ;
141+ Assert . Equal ( "myapp.csproj" , options . Project . PhysicalPath ) ;
114142 Assert . Equal ( LogLevel . Debug , options . LogLevel ) ;
115143 Assert . True ( options . NoLaunchProfile ) ;
116144 AssertEx . SequenceEqual ( [ "arg1" , "arg2" , "arg3" ] , options . ApplicationArguments ) ;
0 commit comments