Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Commit f1ed409

Browse files
committed
Uniformly render failing tests so that the build output is visible
This should make it easier to diagnose failed unit tests on CI, instead of having just a simple [FAIL] like we do now.
1 parent 0e92c8a commit f1ed409

13 files changed

Lines changed: 66 additions & 54 deletions

src/Build/NuGet.Build.Packaging.Tests/Builder.NuGetizer.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
using System;
2-
using System.Diagnostics;
32
using System.IO;
43
using System.Linq;
54
using System.Reflection;
65
using System.Threading;
76
using Microsoft.Build.Execution;
87
using Microsoft.Build.Framework;
9-
using NuGet.Packaging;
8+
using Xunit;
109
using Xunit.Abstractions;
1110
using Xunit.Sdk;
1211

@@ -83,7 +82,15 @@ public TargetResult(BuildResult result, string target, TestOutputLogger logger)
8382

8483
public TargetResultCode ResultCode => BuildResult[Target].ResultCode;
8584

86-
public override string ToString()
85+
public void AssertSuccess(ITestOutputHelper output)
86+
{
87+
if (ResultCode != TargetResultCode.Success)
88+
output.WriteLine(this.ToString());
89+
90+
Assert.Equal(TargetResultCode.Success, ResultCode);
91+
}
92+
93+
public override string ToString()
8794
{
8895
return string.Join(Environment.NewLine, Logger.Warnings
8996
.Select(e => e.Message)

src/Build/NuGet.Build.Packaging.Tests/given_a_complex_pack.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public void when_getting_package_target_path_then_gets_package_metadata()
2323
{
2424
var result = Builder.BuildScenario(nameof(given_a_complex_pack), new { Configuration = "Release" }, projectName: "a", target: "GetPackageTargetPath", output: output);
2525

26-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
26+
result.AssertSuccess(output);
2727

2828
var metadata = result.Items.FirstOrDefault();
2929

@@ -38,7 +38,7 @@ public void when_preparing_a_then_contains_assemblies_and_direct_dependency()
3838
{
3939
var result = Builder.BuildScenario(nameof(given_a_complex_pack), new { Configuration = "Release" }, projectName: "a", target: "GetPackageContents", output: output);
4040

41-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
41+
result.AssertSuccess(output);
4242

4343
Assert.Contains(result.Items, item => item.Matches(new
4444
{
@@ -74,7 +74,7 @@ public void when_preparing_b_then_contains_assemblies_and_direct_dependency()
7474
{
7575
var result = Builder.BuildScenario(nameof(given_a_complex_pack), new { Configuration = "Release" }, projectName: "b", target: "GetPackageContents", output: output);
7676

77-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
77+
result.AssertSuccess(output);
7878

7979
Assert.Contains(result.Items, item => item.Matches(new
8080
{
@@ -110,7 +110,7 @@ public void when_preparing_c_then_contains_external_dependency()
110110
{
111111
var result = Builder.BuildScenario(nameof(given_a_complex_pack), new { Configuration = "Release" }, projectName: "c", target: "GetPackageContents", output: output);
112112

113-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
113+
result.AssertSuccess(output);
114114

115115
Assert.Contains(result.Items, item => item.Matches(new
116116
{
@@ -138,7 +138,7 @@ public void when_preparing_d_without_package_id_then_does_not_set_package_path()
138138
{
139139
var result = Builder.BuildScenario(nameof(given_a_complex_pack), projectName: "d", target: "GetPackageContents", output: output);
140140

141-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
141+
result.AssertSuccess(output);
142142

143143
Assert.Contains(result.Items, item => item.Matches(new
144144
{
@@ -180,8 +180,8 @@ public void when_packing_b_then_contains_assemblies_and_direct_dependency()
180180
{
181181
var result = Builder.BuildScenario(nameof(given_a_complex_pack), projectName: "b", target: "Pack", output: output);
182182

183-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
184-
183+
result.AssertSuccess(output);
184+
185185
var manifest = result.Items[0].GetManifest();
186186

187187
Assert.Contains(manifest.Files, file => file.Target == @"lib\net45\b.dll");
@@ -199,7 +199,7 @@ public void when_packing_c_then_contains_external_dependency()
199199
{
200200
var result = Builder.BuildScenario(nameof(given_a_complex_pack), projectName: "c", target: "Pack", output: output);
201201

202-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
202+
result.AssertSuccess(output);
203203

204204
var manifest = result.Items[0].GetManifest();
205205

src/Build/NuGet.Build.Packaging.Tests/given_a_custom_build_project.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public void when_packing_then_can_include_content()
1919
{
2020
var result = Builder.BuildScenario(nameof(given_a_custom_build_project));
2121

22-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
23-
22+
result.AssertSuccess(output);
23+
2424
Assert.Contains(result.Items, item => item.Matches(new
2525
{
2626
PackagePath = "Readme.txt",

src/Build/NuGet.Build.Packaging.Tests/given_a_library_with_content.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public void when_library_is_not_packable_then_still_contains_content_files()
1919
{
2020
var result = Builder.BuildScenario(nameof(given_a_library_with_content));
2121

22-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
22+
result.AssertSuccess(output);
2323

2424
Assert.Contains(result.Items, item => item.Matches(new
2525
{
@@ -35,7 +35,7 @@ public void when_global_include_content_is_false_then_does_not_contain_content_f
3535
IncludeContentInPackage = "false"
3636
});
3737

38-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
38+
result.AssertSuccess(output);
3939

4040
Assert.DoesNotContain(result.Items, item => item.Matches(new
4141
{
@@ -51,7 +51,7 @@ public void when_library_is_packable_then_contains_content_files_in_anylang_tfm_
5151
PackageId = "ContentPackage"
5252
});
5353

54-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
54+
result.AssertSuccess(output);
5555

5656
Assert.Contains(result.Items, item => item.Matches(new
5757
{
@@ -67,7 +67,8 @@ public void when_none_item_has_no_include_in_package_then_it_is_not_included()
6767
PackageId = "ContentPackage",
6868
});
6969

70-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
70+
result.AssertSuccess(output);
71+
7172
Assert.DoesNotContain(result.Items, item => item.Matches(new
7273
{
7374
TargetPath = "none.txt",
@@ -82,7 +83,8 @@ public void when_none_item_has_include_in_package_true_then_it_is_included()
8283
PackageId = "ContentPackage",
8384
});
8485

85-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
86+
result.AssertSuccess(output);
87+
8688
Assert.Contains(result.Items, item => item.Matches(new
8789
{
8890
TargetPath = "none-with-include-true.txt",
@@ -97,7 +99,8 @@ public void when_none_item_has_include_in_package_false_then_it_is_included()
9799
PackageId = "ContentPackage",
98100
});
99101

100-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
102+
result.AssertSuccess(output);
103+
101104
Assert.DoesNotContain(result.Items, item => item.Matches(new
102105
{
103106
TargetPath = "none-with-include-false.txt",
@@ -112,7 +115,8 @@ public void when_content_item_has_include_in_package_false_then_it_is_not_includ
112115
PackageId = "ContentPackage",
113116
});
114117

115-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
118+
result.AssertSuccess(output);
119+
116120
Assert.DoesNotContain(result.Items, item => item.Matches(new
117121
{
118122
TargetPath = "content-with-include-false.txt",
@@ -127,7 +131,8 @@ public void when_content_item_has_include_in_package_true_then_it_is_included()
127131
PackageId = "ContentPackage",
128132
});
129133

130-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
134+
result.AssertSuccess(output);
135+
131136
Assert.Contains(result.Items, item => item.Matches(new
132137
{
133138
TargetPath = "content-with-include-true.txt",

src/Build/NuGet.Build.Packaging.Tests/given_a_library_with_non_nugetized_reference.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void when_include_in_package_false_then_does_not_fail()
4343
IncludeInPackage = "false"
4444
}, projectName: "a", target: "GetPackageContents", output: output);
4545

46-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
46+
result.AssertSuccess(output);
4747
}
4848
}
4949
}

src/Build/NuGet.Build.Packaging.Tests/given_a_library_with_project_reference.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public void when_getting_package_contents_then_retrieves_main_assembly_transitiv
2323
{
2424
var result = Builder.BuildScenario(nameof(given_a_library_with_project_reference), output: output);
2525

26-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
26+
result.AssertSuccess(output);
2727

2828
// TODO: build some helpers to make this easier to assert.
2929
Assert.True(result.Items.Any(i => i.GetMetadata("FileName") == "a" && i.GetMetadata("Extension") == ".dll" && i.GetMetadata("Kind") == PackageItemKind.Lib), "Did not include main project output as Library");
@@ -36,7 +36,7 @@ public void when_getting_package_contents_then_retrieves_symbols_transitively()
3636
{
3737
var result = Builder.BuildScenario(nameof(given_a_library_with_project_reference), output: output);
3838

39-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
39+
result.AssertSuccess(output);
4040

4141
// TODO: build some helpers to make this easier to assert.
4242
Assert.True(result.Items.Any(i => i.GetMetadata("FileName") == "a" && i.GetMetadata("Extension") == ".pdb" && i.GetMetadata("Kind") == PackageItemKind.Lib), "Did not include main project symbols");
@@ -50,7 +50,7 @@ public void when_include_in_package_false_then_does_not_include_referenced_proje
5050
properties: new { IncludeInPackage = "false" },
5151
output: output);
5252

53-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
53+
result.AssertSuccess(output);
5454

5555
Assert.DoesNotContain(result.Items, item => item.Matches(new
5656
{

src/Build/NuGet.Build.Packaging.Tests/given_a_localized_library.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public void when_getting_package_contents_then_contains_localized_resources()
1919
{
2020
var result = Builder.BuildScenario(nameof(given_a_localized_library));
2121

22-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
22+
result.AssertSuccess(output);
2323

2424
Assert.True(result.Items.Any(i => i.GetMetadata("PackagePath") == "lib\\net45\\es-AR\\library.resources.dll"));
2525
}

src/Build/NuGet.Build.Packaging.Tests/given_a_multi_platform_solution.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public void then_includes_primary_output_from_platforms()
2323
{
2424
var result = Builder.BuildScenario(nameof(given_a_multi_platform_solution), output: output);
2525

26-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
26+
result.AssertSuccess(output);
2727

2828
Assert.Contains(result.Items, item => item.Matches(new
2929
{
@@ -44,7 +44,7 @@ public void then_includes_direct_dependency_from_platforms()
4444
{
4545
var result = Builder.BuildScenario(nameof(given_a_multi_platform_solution), output: output);
4646

47-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
47+
result.AssertSuccess(output);
4848

4949
Assert.Contains(result.Items, item => item.Matches(new
5050
{
@@ -65,7 +65,7 @@ public void then_includes_platform_and_language_quickstart_content()
6565
{
6666
var result = Builder.BuildScenario(nameof(given_a_multi_platform_solution), output: output);
6767

68-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
68+
result.AssertSuccess(output);
6969

7070
Assert.Contains(result.Items, item => item.Matches(new
7171
{
@@ -86,7 +86,7 @@ public void then_includes_platform_docs_from_before_get_package_contents()
8686
{
8787
var result = Builder.BuildScenario(nameof(given_a_multi_platform_solution), output: output);
8888

89-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
89+
result.AssertSuccess(output);
9090

9191
Assert.Contains(result.Items, item => item.Matches(new
9292
{

src/Build/NuGet.Build.Packaging.Tests/given_a_packaging_project.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public void when_getting_contents_then_includes_referenced_project_outputs()
2424
{
2525
var result = Builder.BuildScenario(nameof(given_a_packaging_project), target: "GetPackageContents", output: output);
2626

27-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
27+
result.AssertSuccess(output);
2828

2929
Assert.Contains(result.Items, item => item.Matches(new
3030
{
@@ -45,7 +45,7 @@ public void when_getting_contents_then_includes_referenced_project_satellite_ass
4545
{
4646
var result = Builder.BuildScenario(nameof(given_a_packaging_project), target: "GetPackageContents", output: output);
4747

48-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
48+
result.AssertSuccess(output);
4949

5050
Assert.Contains(result.Items, item => item.Matches(new
5151
{
@@ -58,7 +58,7 @@ public void when_getting_contents_then_includes_referenced_project_dependencies(
5858
{
5959
var result = Builder.BuildScenario(nameof(given_a_packaging_project), target: "GetPackageContents", output: output);
6060

61-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
61+
result.AssertSuccess(output);
6262

6363
Assert.Contains(result.Items, item => item.Matches(new
6464
{
@@ -75,7 +75,7 @@ public void when_getting_contents_then_includes_referenced_project_dependency_sa
7575
{
7676
var result = Builder.BuildScenario(nameof(given_a_packaging_project), target: "GetPackageContents", output: output);
7777

78-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
78+
result.AssertSuccess(output);
7979

8080
Assert.Contains(result.Items, item => item.Matches(new
8181
{
@@ -88,7 +88,7 @@ public void when_getting_contents_then_includes_referenced_packagable_project_as
8888
{
8989
var result = Builder.BuildScenario(nameof(given_a_packaging_project), target: "GetPackageContents", output: output);
9090

91-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
91+
result.AssertSuccess(output);
9292

9393
Assert.Contains(result.Items, item => item.Matches(new
9494
{
@@ -102,7 +102,7 @@ public void when_getting_contents_then_does_not_include_referenced_project_nuget
102102
{
103103
var result = Builder.BuildScenario(nameof(given_a_packaging_project), target: "GetPackageContents", output: output);
104104

105-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
105+
result.AssertSuccess(output);
106106

107107
Assert.DoesNotContain(result.Items, item => item.Matches(new
108108
{
@@ -115,7 +115,7 @@ public void when_getting_contents_from_packaging_project_then_referenced_outputs
115115
{
116116
var result = Builder.BuildScenario(nameof(given_a_packaging_project), target: "GetPackageContents", output: output);
117117

118-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
118+
result.AssertSuccess(output);
119119

120120
Assert.Contains(result.Items, item => item.Matches(new
121121
{

src/Build/NuGet.Build.Packaging.Tests/given_a_packaging_project_with_reference_assembly.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public void when_getting_contents_then_includes_reference_assembly()
2424
{
2525
var result = Builder.BuildScenario(nameof(given_a_packaging_project_with_reference_assembly), target: "GetPackageContents", output: output);
2626

27-
Assert.Equal(TargetResultCode.Success, result.ResultCode);
27+
result.AssertSuccess(output);
2828

2929
Assert.Contains(result.Items, item => item.Matches(new
3030
{

0 commit comments

Comments
 (0)