Include the ExitCode in the error message (#17663)
Include the ExitCode in the error message
This commit is contained in:
parent
d6cb79e64a
commit
b49dd9869e
|
|
@ -591,7 +591,6 @@ stages:
|
||||||
|
|
||||||
- template: jobs/default-build.yml
|
- template: jobs/default-build.yml
|
||||||
parameters:
|
parameters:
|
||||||
condition: ne(variables['Build.Reason'], 'PullRequest')
|
|
||||||
jobName: Helix_x64_daily
|
jobName: Helix_x64_daily
|
||||||
jobDisplayName: 'Tests: Helix x64 Daily'
|
jobDisplayName: 'Tests: Helix x64 Daily'
|
||||||
agentOs: Windows
|
agentOs: Windows
|
||||||
|
|
|
||||||
|
|
@ -240,12 +240,19 @@ namespace Microsoft.DotNet.OpenApi.Commands
|
||||||
|
|
||||||
if (process.ExitCode != 0)
|
if (process.ExitCode != 0)
|
||||||
{
|
{
|
||||||
var output = await process.StandardOutput.ReadToEndAsync();
|
using var csprojStream = projectFile.OpenRead();
|
||||||
var error = await process.StandardError.ReadToEndAsync();
|
using var csprojReader = new StreamReader(csprojStream);
|
||||||
await Out.WriteAsync(output);
|
var csprojContent = await csprojReader.ReadToEndAsync();
|
||||||
await Error.WriteAsync(error);
|
// We suspect that sometimes dotnet add package is giving a non-zero exit code when it has actually succeeded.
|
||||||
|
if (!csprojContent.Contains($"<PackageReference Include=\"{packageId}\" Version=\"{packageVersion}\""))
|
||||||
|
{
|
||||||
|
var output = await process.StandardOutput.ReadToEndAsync();
|
||||||
|
var error = await process.StandardError.ReadToEndAsync();
|
||||||
|
await Out.WriteAsync(output);
|
||||||
|
await Error.WriteAsync(error);
|
||||||
|
|
||||||
throw new ArgumentException($"Could not add package `{packageId}` to `{projectFile.Directory}` due to: `{error}`");
|
throw new ArgumentException($"Adding package `{packageId}` to `{projectFile.Directory}` returned ExitCode `{process.ExitCode}` and gave error `{error}` and output `{output}`");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,9 @@
|
||||||
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Microsoft.DotNet.OpenApi.Tests;
|
using Microsoft.DotNet.OpenApi.Tests;
|
||||||
using Microsoft.Extensions.Internal;
|
|
||||||
using Xunit;
|
using Xunit;
|
||||||
using Xunit.Abstractions;
|
using Xunit.Abstractions;
|
||||||
|
|
||||||
|
|
@ -23,8 +21,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new string[] { });
|
var run = app.Execute(new string[] { });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
Assert.Contains("Usage: openapi ", _output.ToString());
|
Assert.Contains("Usage: openapi ", _output.ToString());
|
||||||
}
|
}
|
||||||
|
|
@ -56,10 +53,9 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
public void OpenApi_Add_Empty_ShowsHelp()
|
public void OpenApi_Add_Empty_ShowsHelp()
|
||||||
{
|
{
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new string[] { "add" });
|
var appExitCode = app.Execute(new string[] { "add" });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(appExitCode);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
Assert.Contains("Usage: openapi add", _output.ToString());
|
Assert.Contains("Usage: openapi add", _output.ToString());
|
||||||
}
|
}
|
||||||
|
|
@ -70,8 +66,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new string[] { "add", "file", "--help" });
|
var run = app.Execute(new string[] { "add", "file", "--help" });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
Assert.Contains("Usage: openapi ", _output.ToString());
|
Assert.Contains("Usage: openapi ", _output.ToString());
|
||||||
}
|
}
|
||||||
|
|
@ -84,12 +79,10 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "file", project.NSwagJsonFile });
|
var run = app.Execute(new[] { "add", "file", project.NSwagJsonFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var secondRun = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
var secondRun = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(secondRun);
|
||||||
Assert.Equal(0, secondRun);
|
|
||||||
|
|
||||||
var csproj = new FileInfo(project.Project.Path);
|
var csproj = new FileInfo(project.Project.Path);
|
||||||
string content;
|
string content;
|
||||||
|
|
@ -116,15 +109,13 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "file", nswagJsonFile });
|
var run = app.Execute(new[] { "add", "file", nswagJsonFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
app = GetApplication();
|
app = GetApplication();
|
||||||
var absolute = Path.GetFullPath(nswagJsonFile, project.Project.Dir().Root);
|
var absolute = Path.GetFullPath(nswagJsonFile, project.Project.Dir().Root);
|
||||||
run = app.Execute(new[] { "add", "file", absolute });
|
run = app.Execute(new[] { "add", "file", absolute });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var csproj = new FileInfo(project.Project.Path);
|
var csproj = new FileInfo(project.Project.Path);
|
||||||
var projXml = new XmlDocument();
|
var projXml = new XmlDocument();
|
||||||
|
|
@ -143,18 +134,15 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "file", nswagJsonFile, "--code-generator", "NSwagTypeScript" });
|
var run = app.Execute(new[] { "add", "file", nswagJsonFile, "--code-generator", "NSwagTypeScript" });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
var csproj = new FileInfo(project.Project.Path);
|
var csproj = new FileInfo(project.Project.Path);
|
||||||
using (var csprojStream = csproj.OpenRead())
|
using var csprojStream = csproj.OpenRead();
|
||||||
using (var reader = new StreamReader(csprojStream))
|
using var reader = new StreamReader(csprojStream);
|
||||||
{
|
var content = await reader.ReadToEndAsync();
|
||||||
var content = await reader.ReadToEndAsync();
|
Assert.Contains("<PackageReference Include=\"NSwag.ApiDescription.Client\" Version=\"", content);
|
||||||
Assert.Contains("<PackageReference Include=\"NSwag.ApiDescription.Client\" Version=\"", content);
|
Assert.Contains($"<OpenApiReference Include=\"{nswagJsonFile}\" CodeGenerator=\"NSwagTypeScript\" />", content);
|
||||||
Assert.Contains($"<OpenApiReference Include=\"{nswagJsonFile}\" CodeGenerator=\"NSwagTypeScript\" />", content);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -166,18 +154,15 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "file", nswagJsonFile });
|
var run = app.Execute(new[] { "add", "file", nswagJsonFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
var csproj = new FileInfo(project.Project.Path);
|
var csproj = new FileInfo(project.Project.Path);
|
||||||
using (var csprojStream = csproj.OpenRead())
|
using var csprojStream = csproj.OpenRead();
|
||||||
using (var reader = new StreamReader(csprojStream))
|
using var reader = new StreamReader(csprojStream);
|
||||||
{
|
var content = await reader.ReadToEndAsync();
|
||||||
var content = await reader.ReadToEndAsync();
|
Assert.Contains("<PackageReference Include=\"NSwag.ApiDescription.Client\" Version=\"", content);
|
||||||
Assert.Contains("<PackageReference Include=\"NSwag.ApiDescription.Client\" Version=\"", content);
|
Assert.Contains($"<OpenApiReference Include=\"{nswagJsonFile}\"", content);
|
||||||
Assert.Contains($"<OpenApiReference Include=\"{nswagJsonFile}\"", content);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -189,8 +174,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "file", "--updateProject", project.Project.Path, nswagJsonFIle });
|
var run = app.Execute(new[] { "add", "file", "--updateProject", project.Project.Path, nswagJsonFIle });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
var csproj = new FileInfo(project.Project.Path);
|
var csproj = new FileInfo(project.Project.Path);
|
||||||
|
|
@ -210,14 +194,12 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "file", nswagJsonFile });
|
var run = app.Execute(new[] { "add", "file", nswagJsonFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
app = GetApplication();
|
app = GetApplication();
|
||||||
run = app.Execute(new[] { "add", "file", nswagJsonFile });
|
run = app.Execute(new[] { "add", "file", nswagJsonFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
var csproj = new FileInfo(project.Project.Path);
|
var csproj = new FileInfo(project.Project.Path);
|
||||||
|
|
|
||||||
|
|
@ -20,38 +20,33 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
{
|
{
|
||||||
var project = CreateBasicProject(withOpenApi: true);
|
var project = CreateBasicProject(withOpenApi: true);
|
||||||
|
|
||||||
using (var refProj1 = project.Project.Dir().SubDir("refProj1"))
|
using var refProj1 = project.Project.Dir().SubDir("refProj1");
|
||||||
using (var refProj2 = project.Project.Dir().SubDir("refProj2"))
|
using var refProj2 = project.Project.Dir().SubDir("refProj2");
|
||||||
{
|
var project1 = refProj1.WithCSharpProject("refProj");
|
||||||
var project1 = refProj1.WithCSharpProject("refProj");
|
project1
|
||||||
project1
|
.WithTargetFrameworks(TestTFM)
|
||||||
.WithTargetFrameworks(TestTFM)
|
.Dir()
|
||||||
.Dir()
|
.Create();
|
||||||
.Create();
|
|
||||||
|
|
||||||
var project2 = refProj2.WithCSharpProject("refProj2");
|
var project2 = refProj2.WithCSharpProject("refProj2");
|
||||||
project2
|
project2
|
||||||
.WithTargetFrameworks(TestTFM)
|
.WithTargetFrameworks(TestTFM)
|
||||||
.Dir()
|
.Dir()
|
||||||
.Create();
|
.Create();
|
||||||
|
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
|
|
||||||
var run = app.Execute(new[] { "add", "project", project1.Path, project2.Path});
|
var run = app.Execute(new[] { "add", "project", project1.Path, project2.Path });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
using (var csprojStream = new FileInfo(project.Project.Path).OpenRead())
|
using var csprojStream = new FileInfo(project.Project.Path).OpenRead();
|
||||||
using (var reader = new StreamReader(csprojStream))
|
using var reader = new StreamReader(csprojStream);
|
||||||
{
|
var content = await reader.ReadToEndAsync();
|
||||||
var content = await reader.ReadToEndAsync();
|
Assert.Contains("<PackageReference Include=\"NSwag.ApiDescription.Client\" Version=\"", content);
|
||||||
Assert.Contains("<PackageReference Include=\"NSwag.ApiDescription.Client\" Version=\"", content);
|
Assert.Contains($"<OpenApiProjectReference Include=\"{project1.Path}\"", content);
|
||||||
Assert.Contains($"<OpenApiProjectReference Include=\"{project1.Path}\"", content);
|
Assert.Contains($"<OpenApiProjectReference Include=\"{project2.Path}\"", content);
|
||||||
Assert.Contains($"<OpenApiProjectReference Include=\"{project2.Path}\"", content);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/12738")]
|
[Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/12738")]
|
||||||
|
|
@ -59,33 +54,29 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
{
|
{
|
||||||
var project = CreateBasicProject(withOpenApi: false);
|
var project = CreateBasicProject(withOpenApi: false);
|
||||||
|
|
||||||
using (var refProj = new TemporaryDirectory())
|
using var refProj = new TemporaryDirectory();
|
||||||
{
|
var refProjName = "refProj";
|
||||||
var refProjName = "refProj";
|
var csproj = refProj.WithCSharpProject(refProjName);
|
||||||
var csproj = refProj.WithCSharpProject(refProjName);
|
csproj
|
||||||
csproj
|
.WithTargetFrameworks(TestTFM)
|
||||||
.WithTargetFrameworks(TestTFM)
|
.Dir()
|
||||||
.Dir()
|
.Create();
|
||||||
.Create();
|
|
||||||
|
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "project", csproj.Path});
|
var run = app.Execute(new[] { "add", "project", csproj.Path });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
app = GetApplication();
|
app = GetApplication();
|
||||||
run = app.Execute(new[] { "add", "project", Path.Combine(csproj.Path, "..", "refProj.csproj")});
|
run = app.Execute(new[] { "add", "project", Path.Combine(csproj.Path, "..", "refProj.csproj") });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var projXml = new XmlDocument();
|
var projXml = new XmlDocument();
|
||||||
projXml.Load(project.Project.Path);
|
projXml.Load(project.Project.Path);
|
||||||
|
|
||||||
var openApiRefs = projXml.GetElementsByTagName(Commands.BaseCommand.OpenApiProjectReference);
|
var openApiRefs = projXml.GetElementsByTagName(Commands.BaseCommand.OpenApiProjectReference);
|
||||||
Assert.Single(openApiRefs);
|
Assert.Single(openApiRefs);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/12738")]
|
[Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/12738")]
|
||||||
|
|
@ -93,31 +84,26 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
{
|
{
|
||||||
var project = CreateBasicProject(withOpenApi: false);
|
var project = CreateBasicProject(withOpenApi: false);
|
||||||
|
|
||||||
using (var refProj = new TemporaryDirectory())
|
using var refProj = new TemporaryDirectory();
|
||||||
{
|
var refProjName = "refProj";
|
||||||
var refProjName = "refProj";
|
refProj
|
||||||
refProj
|
.WithCSharpProject(refProjName)
|
||||||
.WithCSharpProject(refProjName)
|
.WithTargetFrameworks(TestTFM)
|
||||||
.WithTargetFrameworks(TestTFM)
|
.Dir()
|
||||||
.Dir()
|
.Create();
|
||||||
.Create();
|
|
||||||
|
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var refProjFile = Path.Join(refProj.Root, $"{refProjName}.csproj");
|
var refProjFile = Path.Join(refProj.Root, $"{refProjName}.csproj");
|
||||||
var run = app.Execute(new[] { "add", "project", refProjFile });
|
var run = app.Execute(new[] { "add", "project", refProjFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
using(var csprojStream = new FileInfo(project.Project.Path).OpenRead())
|
using var csprojStream = new FileInfo(project.Project.Path).OpenRead();
|
||||||
using(var reader = new StreamReader(csprojStream))
|
using var reader = new StreamReader(csprojStream);
|
||||||
{
|
var content = await reader.ReadToEndAsync();
|
||||||
var content = await reader.ReadToEndAsync();
|
Assert.Contains("<PackageReference Include=\"NSwag.ApiDescription.Client\" Version=\"", content);
|
||||||
Assert.Contains("<PackageReference Include=\"NSwag.ApiDescription.Client\" Version=\"", content);
|
Assert.Contains($"<OpenApiProjectReference Include=\"{refProjFile}\"", content);
|
||||||
Assert.Contains($"<OpenApiProjectReference Include=\"{refProjFile}\"", content);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonName = "filename.json";
|
var expectedJsonName = "filename.json";
|
||||||
|
|
||||||
|
|
@ -58,8 +57,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", url});
|
var run = app.Execute(new[] { "add", "url", url});
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonName = "nodisposition.yaml";
|
var expectedJsonName = "nodisposition.yaml";
|
||||||
|
|
||||||
|
|
@ -92,8 +90,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", url });
|
var run = app.Execute(new[] { "add", "url", url });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonName = "filename.json";
|
var expectedJsonName = "filename.json";
|
||||||
|
|
||||||
|
|
@ -126,8 +123,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", url });
|
var run = app.Execute(new[] { "add", "url", url });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonName = "contoso.json";
|
var expectedJsonName = "contoso.json";
|
||||||
|
|
||||||
|
|
@ -159,8 +155,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonName = "filename.json";
|
var expectedJsonName = "filename.json";
|
||||||
|
|
||||||
|
|
@ -192,8 +187,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var firstExpectedJsonName = "filename.json";
|
var firstExpectedJsonName = "filename.json";
|
||||||
|
|
||||||
|
|
@ -219,8 +213,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
app = GetApplication();
|
app = GetApplication();
|
||||||
run = app.Execute(new[] { "add", "url", NoExtensionUrl });
|
run = app.Execute(new[] { "add", "url", NoExtensionUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var secondExpectedJsonName = "filename1.json";
|
var secondExpectedJsonName = "filename1.json";
|
||||||
|
|
||||||
|
|
@ -254,8 +247,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl, "--code-generator", "NSwagCSharp" });
|
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl, "--code-generator", "NSwagCSharp" });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonName = "filename.json";
|
var expectedJsonName = "filename.json";
|
||||||
|
|
||||||
|
|
@ -287,8 +279,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl, "--code-generator", "NSwagTypeScript" });
|
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl, "--code-generator", "NSwagTypeScript" });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonName = "filename.json";
|
var expectedJsonName = "filename.json";
|
||||||
|
|
||||||
|
|
@ -320,8 +311,7 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl, "--output-file", Path.Combine("outputdir", "file.yaml") });
|
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl, "--output-file", Path.Combine("outputdir", "file.yaml") });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonName = Path.Combine("outputdir", "file.yaml");
|
var expectedJsonName = Path.Combine("outputdir", "file.yaml");
|
||||||
|
|
||||||
|
|
@ -352,10 +342,9 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
|
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var outputFile = Path.Combine("outputdir", "file.yaml");
|
var outputFile = Path.Combine("outputdir", "file.yaml");
|
||||||
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl, "--output-file", outputFile });
|
var appExitCode = app.Execute(new[] { "add", "url", FakeOpenApiUrl, "--output-file", outputFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(appExitCode);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonName = Path.Combine("outputdir", "file.yaml");
|
var expectedJsonName = Path.Combine("outputdir", "file.yaml");
|
||||||
|
|
||||||
|
|
@ -380,8 +369,8 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
|
|
||||||
// Second reference, same output
|
// Second reference, same output
|
||||||
app = GetApplication();
|
app = GetApplication();
|
||||||
run = app.Execute(new[] { "add", "url", DifferentUrl, "--output-file", outputFile});
|
appExitCode = app.Execute(new[] { "add", "url", DifferentUrl, "--output-file", outputFile});
|
||||||
Assert.Equal(1, run);
|
Assert.Equal(1, appExitCode);
|
||||||
Assert.True(_error.ToString().Contains("Aborting to avoid conflicts."), $"Should have aborted to avoid conflicts");
|
Assert.True(_error.ToString().Contains("Aborting to avoid conflicts."), $"Should have aborted to avoid conflicts");
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
|
|
@ -412,14 +401,12 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
app = GetApplication();
|
app = GetApplication();
|
||||||
run = app.Execute(new[] { "add", "url", "--output-file", "openapi.yaml", FakeOpenApiUrl });
|
run = app.Execute(new[] { "add", "url", "--output-file", "openapi.yaml", FakeOpenApiUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
var csproj = new FileInfo(project.Project.Path);
|
var csproj = new FileInfo(project.Project.Path);
|
||||||
|
|
@ -470,14 +457,12 @@ namespace Microsoft.DotNet.OpenApi.Add.Tests
|
||||||
var url = ActualUrl;
|
var url = ActualUrl;
|
||||||
var run = app.Execute(new[] { "add", "url", url });
|
var run = app.Execute(new[] { "add", "url", url });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
app = GetApplication(realHttp: true);
|
app = GetApplication(realHttp: true);
|
||||||
run = app.Execute(new[] { "add", "url", url });
|
run = app.Execute(new[] { "add", "url", url });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
var csproj = new FileInfo(project.Project.Path);
|
var csproj = new FileInfo(project.Project.Path);
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,7 @@ namespace Microsoft.DotNet.OpenApi.Refresh.Tests
|
||||||
var app = GetApplication();
|
var app = GetApplication();
|
||||||
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
var run = app.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var expectedJsonPath = Path.Combine(_tempDir.Root, "filename.json");
|
var expectedJsonPath = Path.Combine(_tempDir.Root, "filename.json");
|
||||||
var json = await File.ReadAllTextAsync(expectedJsonPath);
|
var json = await File.ReadAllTextAsync(expectedJsonPath);
|
||||||
|
|
@ -38,8 +37,7 @@ namespace Microsoft.DotNet.OpenApi.Refresh.Tests
|
||||||
app = GetApplication();
|
app = GetApplication();
|
||||||
run = app.Execute(new[] { "refresh", FakeOpenApiUrl });
|
run = app.Execute(new[] { "refresh", FakeOpenApiUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var secondWriteTime = File.GetLastWriteTime(expectedJsonPath);
|
var secondWriteTime = File.GetLastWriteTime(expectedJsonPath);
|
||||||
Assert.True(firstWriteTime < secondWriteTime, $"File wasn't updated! {firstWriteTime} {secondWriteTime}");
|
Assert.True(firstWriteTime < secondWriteTime, $"File wasn't updated! {firstWriteTime} {secondWriteTime}");
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,7 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
||||||
var add = GetApplication();
|
var add = GetApplication();
|
||||||
var run = add.Execute(new[] { "add", "file", nswagJsonFile });
|
var run = add.Execute(new[] { "add", "file", nswagJsonFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
var csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
var csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
||||||
|
|
@ -45,8 +44,7 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
||||||
var remove = GetApplication();
|
var remove = GetApplication();
|
||||||
var removeRun = remove.Execute(new[] { "remove", nswagJsonFile });
|
var removeRun = remove.Execute(new[] { "remove", nswagJsonFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(removeRun);
|
||||||
Assert.Equal(0, removeRun);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
||||||
|
|
@ -74,8 +72,7 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
||||||
var add = GetApplication();
|
var add = GetApplication();
|
||||||
var run = add.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
var run = add.Execute(new[] { "add", "url", FakeOpenApiUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
var csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
var csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
||||||
|
|
@ -90,8 +87,7 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
||||||
var remove = GetApplication();
|
var remove = GetApplication();
|
||||||
var removeRun = remove.Execute(new[] { "remove", FakeOpenApiUrl });
|
var removeRun = remove.Execute(new[] { "remove", FakeOpenApiUrl });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(removeRun);
|
||||||
Assert.Equal(0, removeRun);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
||||||
|
|
@ -125,8 +121,7 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
||||||
var refProjFile = Path.Join(refProj.Root, $"{refProjName}.csproj");
|
var refProjFile = Path.Join(refProj.Root, $"{refProjName}.csproj");
|
||||||
var run = app.Execute(new[] { "add", "project", refProjFile });
|
var run = app.Execute(new[] { "add", "project", refProjFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
using (var csprojStream = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj")).OpenRead())
|
using (var csprojStream = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj")).OpenRead())
|
||||||
|
|
@ -140,8 +135,7 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
||||||
var remove = GetApplication();
|
var remove = GetApplication();
|
||||||
run = app.Execute(new[] { "remove", refProjFile });
|
run = app.Execute(new[] { "remove", refProjFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
using (var csprojStream = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj")).OpenRead())
|
using (var csprojStream = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj")).OpenRead())
|
||||||
|
|
@ -170,20 +164,17 @@ namespace Microsoft.DotNet.OpenApi.Remove.Tests
|
||||||
var add = GetApplication();
|
var add = GetApplication();
|
||||||
var run = add.Execute(new[] { "add", "file", nswagJsonFile });
|
var run = add.Execute(new[] { "add", "file", nswagJsonFile });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
add = GetApplication();
|
add = GetApplication();
|
||||||
run = add.Execute(new[] { "add", "file", swagFile2 });
|
run = add.Execute(new[] { "add", "file", swagFile2 });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(run);
|
||||||
Assert.Equal(0, run);
|
|
||||||
|
|
||||||
var remove = GetApplication();
|
var remove = GetApplication();
|
||||||
var removeRun = remove.Execute(new[] { "remove", nswagJsonFile, swagFile2 });
|
var removeRun = remove.Execute(new[] { "remove", nswagJsonFile, swagFile2 });
|
||||||
|
|
||||||
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
AssertNoErrors(removeRun);
|
||||||
Assert.Equal(0, removeRun);
|
|
||||||
|
|
||||||
// csproj contents
|
// csproj contents
|
||||||
var csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
var csproj = new FileInfo(Path.Join(_tempDir.Root, "testproj.csproj"));
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.DotNet.Openapi.Tools;
|
using Microsoft.DotNet.Openapi.Tools;
|
||||||
using Microsoft.Extensions.Tools.Internal;
|
using Microsoft.Extensions.Tools.Internal;
|
||||||
|
using Xunit;
|
||||||
using Xunit.Abstractions;
|
using Xunit.Abstractions;
|
||||||
|
|
||||||
namespace Microsoft.DotNet.OpenApi.Tests
|
namespace Microsoft.DotNet.OpenApi.Tests
|
||||||
|
|
@ -109,6 +110,12 @@ namespace Microsoft.DotNet.OpenApi.Tests
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void AssertNoErrors(int appExitCode)
|
||||||
|
{
|
||||||
|
Assert.True(string.IsNullOrEmpty(_error.ToString()), $"Threw error: {_error.ToString()}");
|
||||||
|
Assert.Equal(0, appExitCode);
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_outputHelper.WriteLine(_output.ToString());
|
_outputHelper.WriteLine(_output.ToString());
|
||||||
|
|
@ -150,7 +157,7 @@ namespace Microsoft.DotNet.OpenApi.Tests
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ContentDispositionHeaderValue _contentDisposition;
|
private readonly ContentDispositionHeaderValue _contentDisposition;
|
||||||
|
|
||||||
public TestHttpResponseMessageWrapper(
|
public TestHttpResponseMessageWrapper(
|
||||||
MemoryStream stream,
|
MemoryStream stream,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue