Allow directories as project arguments to run command.

This commit is contained in:
dasMulli 2017-03-24 06:44:53 +01:00
parent 485237a8a0
commit a4cb3fdf81
No known key found for this signature in database
GPG key ID: 18CD0491A7182D5F
2 changed files with 42 additions and 15 deletions

View file

@ -134,7 +134,26 @@ namespace Microsoft.DotNet.Tools.Run
{
if (string.IsNullOrWhiteSpace(Project))
{
string directory = Directory.GetCurrentDirectory();
Project = Directory.GetCurrentDirectory();
}
if (Directory.Exists(Project))
{
Project = FindSingleProjectInDirectory(Project);
}
if (Args == null)
{
_args = new List<string>();
}
else
{
_args = new List<string>(Args);
}
}
private static string FindSingleProjectInDirectory(string directory)
{
string[] projectFiles = Directory.GetFiles(directory, "*.*proj");
if (projectFiles.Length == 0)
@ -148,17 +167,7 @@ namespace Microsoft.DotNet.Tools.Run
throw new GracefulException(LocalizableStrings.RunCommandExceptionMultipleProjects, directory);
}
Project = projectFiles[0];
}
if (Args == null)
{
_args = new List<string>();
}
else
{
_args = new List<string>(Args);
}
return projectFiles[0];
}
}
}

View file

@ -118,6 +118,24 @@ namespace Microsoft.DotNet.Cli.Run.Tests
.And.HaveStdOutContaining("Hello World!");
}
[Fact]
public void ItRunsPortableAppsFromADifferentPathSpecifyingOnlyTheDirectoryWithoutBuilding()
{
var testAppName = "MSBuildTestApp";
var testInstance = TestAssets.Get(testAppName)
.CreateInstance()
.WithSourceFiles()
.WithRestoreFiles();
var testProjectDirectory = testInstance.Root.FullName;
new RunCommand()
.WithWorkingDirectory(testInstance.Root.Parent)
.ExecuteWithCapturedOutput($"--project {testProjectDirectory}")
.Should().Pass()
.And.HaveStdOutContaining("Hello World!");
}
[Fact]
public void ItRunsAppWhenRestoringToSpecificPackageDirectory()
{