@@ -283,6 +283,42 @@ public async Task CanFindTheRealVsixPublisherExecutableAsync()
283283 AssertError ( result , "VSSDK: error VsixPub0031" ) ;
284284 }
285285
286+ [ Fact ]
287+ public async Task CanOverrideTheExtensionFilePathAsync ( )
288+ {
289+ TestProject project = CreateProject ( "Extension" ) ;
290+ WritePublishManifest ( "Extension/publish.json" ) ;
291+
292+ string extensionFileName = Path . Combine ( _directory . FullPath , "output" , "file.vsix" ) ;
293+ Directory . CreateDirectory ( Path . GetDirectoryName ( extensionFileName ) ) ;
294+ File . WriteAllText ( extensionFileName , "" ) ;
295+
296+ CompilationResult result = await BuildAsync ( project , new CompileOptions
297+ {
298+ Target = "PublishToMarketplace" ,
299+ Properties = new Properties
300+ {
301+ Configuration = "Release" ,
302+ PersonalAccessToken = "foo" ,
303+ PublishExtension = extensionFileName
304+ }
305+ } ) ;
306+
307+ Assert . Equal ( 0 , result . ExitCode ) ;
308+ AssertSequence (
309+ new [ ] {
310+ "MockVsixPublisher.exe" ,
311+ "---------------------" ,
312+ "publish" ,
313+ "-personalAccessToken foo" ,
314+ $ "-payload { extensionFileName } ",
315+ $ "-publishManifest { Path . Combine ( _directory . FullPath , "Extension" , "publish.json" ) } ",
316+ "Extension published successfully."
317+ } ,
318+ result . StandardOutput . Select ( ( x ) => x . Trim ( ) )
319+ ) ;
320+ }
321+
286322 private TestProject CreateProject ( string subDirectory )
287323 {
288324 TestProject project = new ( Path . Combine ( _directory . FullPath , subDirectory ) ) ;
@@ -396,6 +432,7 @@ private class Properties
396432 public string ? PublishManifest { get ; set ; }
397433 public string ? PersonalAccessToken { get ; set ; }
398434 public string ? PublishIgnoreWarnings { get ; set ; }
435+ public string ? PublishExtension { get ; set ; }
399436 }
400437 }
401438}
0 commit comments