2017-03-02 21:04:03 -08:00
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Microsoft.DotNet.Tools.Build ;
2017-02-14 10:41:58 -08:00
using FluentAssertions ;
using Xunit ;
namespace Microsoft.DotNet.Cli.MSBuild.Tests
{
public class GivenDotnetBuildInvocation
{
2018-04-02 15:14:32 -07:00
const string ExpectedPrefix = "exec <msbuildpath> -maxcpucount -verbosity:m" ;
2017-02-22 17:40:02 -08:00
2017-02-14 11:38:01 -08:00
[Theory]
2018-04-02 15:14:32 -07:00
[InlineData(new string[] { } , "-target:Build" ) ]
2018-04-26 10:53:54 -07:00
[InlineData(new string[] { "-o" , "foo" } , @"-target:Build -property:OutputPath=\""foo\""" ) ]
[InlineData(new string[] { "-property:Verbosity=diag" } , @"-target:Build -property:Verbosity=\""diag\""" ) ]
[InlineData(new string[] { "--output" , "foo" } , @"-target:Build -property:OutputPath=\""foo\""" ) ]
[InlineData(new string[] { "-o" , "foo1 foo2" } , @"-target:Build ""-property:OutputPath=\""foo1 foo2\""""" ) ]
2018-04-02 15:14:32 -07:00
[InlineData(new string[] { "--no-incremental" } , "-target:Rebuild" ) ]
2018-04-26 10:53:54 -07:00
[InlineData(new string[] { "-r" , "rid" } , @"-target:Build -property:RuntimeIdentifier=\""rid\""" ) ]
[InlineData(new string[] { "--runtime" , "rid" } , @"-target:Build -property:RuntimeIdentifier=\""rid\""" ) ]
[InlineData(new string[] { "-c" , "config" } , @"-target:Build -property:Configuration=\""config\""" ) ]
[InlineData(new string[] { "--configuration" , "config" } , @"-target:Build -property:Configuration=\""config\""" ) ]
[InlineData(new string[] { "--version-suffix" , "mysuffix" } , @"-target:Build -property:VersionSuffix=\""mysuffix\""" ) ]
[InlineData(new string[] { "--no-dependencies" } , @"-target:Build -property:BuildProjectReferences=\""false\""" ) ]
2018-04-02 15:14:32 -07:00
[InlineData(new string[] { "-v" , "diag" } , "-target:Build -verbosity:diag" ) ]
[InlineData(new string[] { "--verbosity" , "diag" } , "-target:Build -verbosity:diag" ) ]
2017-10-24 15:50:43 -07:00
[InlineData(new string[] { "--no-incremental" , "-o" , "myoutput" , "-r" , "myruntime" , "-v" , "diag" , "/ArbitrarySwitchForMSBuild" } ,
2018-04-26 10:53:54 -07:00
@"-target:Rebuild -property:OutputPath=\""myoutput\"" -property:RuntimeIdentifier=\""myruntime\"" -verbosity:diag /ArbitrarySwitchForMSBuild" ) ]
2017-02-22 17:40:02 -08:00
public void MsbuildInvocationIsCorrect ( string [ ] args , string expectedAdditionalArgs )
2017-02-14 10:41:58 -08:00
{
2017-02-22 17:40:02 -08:00
expectedAdditionalArgs = ( string . IsNullOrEmpty ( expectedAdditionalArgs ) ? "" : $" {expectedAdditionalArgs}" ) ;
2017-02-14 11:38:01 -08:00
var msbuildPath = "<msbuildpath>" ;
2017-10-24 15:50:43 -07:00
var command = BuildCommand . FromArgs ( args , msbuildPath ) ;
command . SeparateRestoreCommand . Should ( ) . BeNull ( ) ;
command . GetProcessStartInfo ( )
. Arguments . Should ( )
2018-04-02 15:14:32 -07:00
. Be ( $"{ExpectedPrefix} -restore -consoleloggerparameters:Summary{expectedAdditionalArgs}" ) ;
2017-10-24 15:50:43 -07:00
}
[Theory]
2018-04-26 10:53:54 -07:00
[InlineData(new string[] { "-f" , "tfm" } , "-target:Restore" , @"-target:Build -property:TargetFramework=\""tfm\""" ) ]
2017-10-24 15:50:43 -07:00
[InlineData(new string[] { "-o" , "myoutput" , "-f" , "tfm" , "-v" , "diag" , "/ArbitrarySwitchForMSBuild" } ,
2018-04-26 10:53:54 -07:00
@"-target:Restore -property:OutputPath=\""myoutput\"" -verbosity:diag /ArbitrarySwitchForMSBuild" ,
@"-target:Build -property:OutputPath=\""myoutput\"" -property:TargetFramework=\""tfm\"" -verbosity:diag /ArbitrarySwitchForMSBuild" ) ]
2017-10-24 15:50:43 -07:00
public void MsbuildInvocationIsCorrectForSeparateRestore (
string [ ] args ,
string expectedAdditionalArgsForRestore ,
string expectedAdditionalArgs )
{
expectedAdditionalArgs = ( string . IsNullOrEmpty ( expectedAdditionalArgs ) ? "" : $" {expectedAdditionalArgs}" ) ;
var msbuildPath = "<msbuildpath>" ;
var command = BuildCommand . FromArgs ( args , msbuildPath ) ;
command . SeparateRestoreCommand . GetProcessStartInfo ( )
. Arguments . Should ( )
. Be ( $"{ExpectedPrefix} {expectedAdditionalArgsForRestore}" ) ;
command . GetProcessStartInfo ( )
. Arguments . Should ( )
2018-04-02 15:14:32 -07:00
. Be ( $"{ExpectedPrefix} -nologo -consoleloggerparameters:Summary{expectedAdditionalArgs}" ) ;
2017-10-24 15:50:43 -07:00
2017-02-14 10:41:58 -08:00
}
}
}