Address CR comments for the new migration tests
Changing the tests to also verify the error messages.
This commit is contained in:
parent
5016aea90c
commit
70a8872f45
2 changed files with 36 additions and 10 deletions
|
@ -271,22 +271,48 @@ namespace Microsoft.DotNet.Migration.Tests
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
// https://github.com/dotnet/cli/issues/4313
|
// https://github.com/dotnet/cli/issues/4313
|
||||||
[InlineData("TestDirWithNoProjects", true)]
|
[InlineData(true)]
|
||||||
[InlineData("TestDirWithNoProjects", false)]
|
[InlineData(false)]
|
||||||
public void It_migrates_no_projects_found(string projectDir, bool useGlobalJson)
|
public void Migration_outputs_error_when_no_projects_found(bool useGlobalJson)
|
||||||
{
|
{
|
||||||
// The migrate command should return 1 for failure.
|
var projectDirectory = TestAssetsManager.CreateTestDirectory("Migration_outputs_error_when_no_projects_found");
|
||||||
const int ExpectedResult = 1;
|
|
||||||
|
string argstr = string.Empty;
|
||||||
|
string errorMessage = string.Empty;
|
||||||
|
|
||||||
var projectDirectory = TestAssetsManager.CreateTestInstance(projectDir, callingMethod: "It_migrates_no_projects_found").WithLockFiles().Path;
|
|
||||||
if (useGlobalJson)
|
if (useGlobalJson)
|
||||||
{
|
{
|
||||||
MigrateProject(new[] { Path.Combine(projectDirectory, "global.json") }, ExpectedResult);
|
var globalJsonPath = Path.Combine(projectDirectory.Path, "global.json");
|
||||||
|
using (FileStream fs = File.Create(globalJsonPath))
|
||||||
|
{
|
||||||
|
using (StreamWriter sw = new StreamWriter(fs))
|
||||||
|
{
|
||||||
|
sw.WriteLine("{");
|
||||||
|
sw.WriteLine("\"projects\": [ \".\" ]");
|
||||||
|
sw.WriteLine("}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
argstr = globalJsonPath;
|
||||||
|
errorMessage = "Unable to find any projects in global.json";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MigrateProject(new[] { projectDirectory }, ExpectedResult);
|
argstr = projectDirectory.Path;
|
||||||
|
errorMessage = $"No project.json file found in '{projectDirectory.Path}'";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var result = new TestCommand("dotnet")
|
||||||
|
.WithWorkingDirectory(projectDirectory.Path)
|
||||||
|
.ExecuteWithCapturedOutput($"migrate {argstr}");
|
||||||
|
|
||||||
|
// Expecting an error exit code.
|
||||||
|
result.ExitCode.Should().Be(1);
|
||||||
|
|
||||||
|
// Verify the error messages. Note that debug builds also show the call stack, so we search
|
||||||
|
// for the error strings that should be present (rather than an exact match).
|
||||||
|
result.StdErr.Should().Contain(errorMessage);
|
||||||
|
result.StdErr.Should().Contain("Migration failed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void VerifyMigration(IEnumerable<string> expectedProjects, string rootDir)
|
private void VerifyMigration(IEnumerable<string> expectedProjects, string rootDir)
|
||||||
|
@ -404,12 +430,12 @@ namespace Microsoft.DotNet.Migration.Tests
|
||||||
result.Should().Pass();
|
result.Should().Pass();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MigrateProject(string[] migrateArgs, int expectedResult = 0)
|
private void MigrateProject(string[] migrateArgs)
|
||||||
{
|
{
|
||||||
var result =
|
var result =
|
||||||
MigrateCommand.Run(migrateArgs);
|
MigrateCommand.Run(migrateArgs);
|
||||||
|
|
||||||
result.Should().Be(expectedResult);
|
result.Should().Be(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DotnetNew(string projectDirectory, string dotnetNewType)
|
private void DotnetNew(string projectDirectory, string dotnetNewType)
|
||||||
|
|
Loading…
Reference in a new issue