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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}