2016-10-27 18:46:43 -07: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 System.IO ;
using Microsoft.DotNet.Tools.Test.Utilities ;
using Xunit ;
namespace Microsoft.DotNet.Cli.Run.Tests
{
public class GivenDotnetRunBuildsCsproj : TestBase
{
[Fact]
public void ItCanRunAMSBuildProject ( )
{
var testAppName = "MSBuildTestApp" ;
2017-02-15 15:35:03 -08:00
var testInstance = TestAssets . Get ( testAppName )
. CreateInstance ( )
. WithSourceFiles ( ) ;
2016-10-27 18:46:43 -07:00
2017-02-15 15:35:03 -08:00
var testProjectDirectory = testInstance . Root . FullName ;
2016-10-27 18:46:43 -07:00
new RestoreCommand ( )
. WithWorkingDirectory ( testProjectDirectory )
. Execute ( "/p:SkipInvalidConfigurations=true" )
. Should ( ) . Pass ( ) ;
new BuildCommand ( )
. WithWorkingDirectory ( testProjectDirectory )
. Execute ( )
. Should ( ) . Pass ( ) ;
new RunCommand ( )
. WithWorkingDirectory ( testProjectDirectory )
. ExecuteWithCapturedOutput ( )
. Should ( ) . Pass ( )
. And . HaveStdOutContaining ( "Hello World!" ) ;
}
[Fact]
public void ItBuildsTheProjectBeforeRunning ( )
{
var testAppName = "MSBuildTestApp" ;
2017-02-15 15:35:03 -08:00
var testInstance = TestAssets . Get ( testAppName )
. CreateInstance ( )
. WithSourceFiles ( ) ;
2016-10-27 18:46:43 -07:00
2017-02-15 15:35:03 -08:00
var testProjectDirectory = testInstance . Root . FullName ;
2016-10-27 18:46:43 -07:00
new RestoreCommand ( )
. WithWorkingDirectory ( testProjectDirectory )
. Execute ( "/p:SkipInvalidConfigurations=true" )
. Should ( ) . Pass ( ) ;
new RunCommand ( )
. WithWorkingDirectory ( testProjectDirectory )
. ExecuteWithCapturedOutput ( )
. Should ( ) . Pass ( )
. And . HaveStdOutContaining ( "Hello World!" ) ;
}
[Fact]
public void ItCanRunAMSBuildProjectWhenSpecifyingAFramework ( )
{
var testAppName = "MSBuildTestApp" ;
2017-02-15 15:35:03 -08:00
var testInstance = TestAssets . Get ( testAppName )
. CreateInstance ( )
. WithSourceFiles ( ) ;
2016-10-27 18:46:43 -07:00
2017-02-15 15:35:03 -08:00
var testProjectDirectory = testInstance . Root . FullName ;
2016-10-27 18:46:43 -07:00
new RestoreCommand ( )
. WithWorkingDirectory ( testProjectDirectory )
. Execute ( "/p:SkipInvalidConfigurations=true" )
. Should ( ) . Pass ( ) ;
new RunCommand ( )
. WithWorkingDirectory ( testProjectDirectory )
2017-03-02 12:46:21 -08:00
. ExecuteWithCapturedOutput ( "--framework netcoreapp2.0" )
2016-10-27 18:46:43 -07:00
. Should ( ) . Pass ( )
2017-03-02 20:35:20 -08:00
. And . HaveStdOutContaining ( "Hello World!" ) ;
2016-10-27 18:46:43 -07:00
}
2017-03-02 20:35:20 -08:00
[Fact]
public void ItRunsPortableAppsFromADifferentPathAfterBuilding ( )
2016-10-27 18:46:43 -07:00
{
var testInstance = TestAssets . Get ( "MSBuildTestApp" )
. CreateInstance ( )
. WithSourceFiles ( )
. WithRestoreFiles ( ) ;
2017-03-02 20:35:20 -08:00
new BuildCommand ( )
. WithWorkingDirectory ( testInstance . Root )
. Execute ( )
. Should ( ) . Pass ( ) ;
new RunCommand ( )
. WithWorkingDirectory ( testInstance . Root )
. ExecuteWithCapturedOutput ( $"--no-build" )
. Should ( ) . Pass ( )
. And . HaveStdOutContaining ( "Hello World!" ) ;
}
[Fact]
public void ItRunsPortableAppsFromADifferentPathWithoutBuilding ( )
{
var testAppName = "MSBuildTestApp" ;
2016-10-27 18:46:43 -07:00
var testInstance = TestAssets . Get ( testAppName )
. CreateInstance ( )
. WithSourceFiles ( )
. WithRestoreFiles ( ) ;
2017-03-02 20:35:20 -08:00
var projectFile = testInstance . Root . GetFile ( testAppName + ".csproj" ) ;
2016-10-27 18:46:43 -07:00
2017-03-02 20:35:20 -08:00
new RunCommand ( )
. WithWorkingDirectory ( testInstance . Root . Parent )
. ExecuteWithCapturedOutput ( $"--project {projectFile.FullName}" )
. Should ( ) . Pass ( )
. And . HaveStdOutContaining ( "Hello World!" ) ;
2016-12-18 00:45:25 -08:00
}
[Fact]
public void ItRunsAppWhenRestoringToSpecificPackageDirectory ( )
{
2017-02-15 15:35:03 -08:00
var rootPath = TestAssets . CreateTestDirectory ( ) . FullName ;
2016-12-18 00:45:25 -08:00
string dir = "pkgs" ;
string args = $"--packages {dir}" ;
2017-03-02 12:46:21 -08:00
string newArgs = $"console -o \" { rootPath } \ "" ;
2017-01-31 17:31:37 -08:00
new NewCommandShim ( )
2016-12-18 00:45:25 -08:00
. WithWorkingDirectory ( rootPath )
2017-01-31 17:31:37 -08:00
. Execute ( newArgs )
2016-12-18 00:45:25 -08:00
. Should ( )
. Pass ( ) ;
new RestoreCommand ( )
. WithWorkingDirectory ( rootPath )
. Execute ( args )
. Should ( )
. Pass ( ) ;
new RunCommand ( )
. WithWorkingDirectory ( rootPath )
. ExecuteWithCapturedOutput ( )
. Should ( ) . Pass ( )
. And . HaveStdOutContaining ( "Hello World" ) ;
}
2016-10-27 18:46:43 -07:00
}
2017-03-02 20:35:20 -08:00
}