Skip to content

Commit 1112627

Browse files
committed
Re-enabled FxCop analyzers and fixed all warnings
1 parent 902856a commit 1112627

29 files changed

Lines changed: 95 additions & 65 deletions

src/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Update="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
10+
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
1111
<PrivateAssets>all</PrivateAssets>
1212
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1313
</PackageReference>

src/bunit.core.tests/GlobalSuppressions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
using System.Diagnostics.CodeAnalysis;
77

88
[assembly: SuppressMessage("Usage", "BL0006:Do not use RenderTree types")]
9+
[assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "not in tests")]

src/bunit.core.tests/Rendering/TestRendererTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class TestRendererTest
2222
public async Task Test001()
2323
{
2424
// Arrange
25-
var sut = new TestRenderer(ServiceProvider, NullLoggerFactory.Instance);
25+
using var sut = new TestRenderer(ServiceProvider, NullLoggerFactory.Instance);
2626
var handler = new MockRenderEventHandler(completeHandleTaskSynchronously: true);
2727
sut.AddRenderEventHandler(handler);
2828

@@ -42,7 +42,7 @@ public async Task Test001()
4242
[Fact(DisplayName = "Multiple handlers can be added to the Renderer")]
4343
public void Test002()
4444
{
45-
var sut = new TestRenderer(ServiceProvider, NullLoggerFactory.Instance);
45+
using var sut = new TestRenderer(ServiceProvider, NullLoggerFactory.Instance);
4646
var handler1 = new MockRenderEventHandler(completeHandleTaskSynchronously: true);
4747
var handler2 = new MockRenderEventHandler(completeHandleTaskSynchronously: true);
4848

@@ -57,7 +57,7 @@ public void Test002()
5757
[Fact(DisplayName = "Handler is not invoked if removed from Renderer")]
5858
public void Test003()
5959
{
60-
var sut = new TestRenderer(ServiceProvider, NullLoggerFactory.Instance);
60+
using var sut = new TestRenderer(ServiceProvider, NullLoggerFactory.Instance);
6161
var handler1 = new MockRenderEventHandler(completeHandleTaskSynchronously: true);
6262
var handler2 = new MockRenderEventHandler(completeHandleTaskSynchronously: true);
6363
sut.AddRenderEventHandler(handler1);

src/bunit.core/ComponentParameterBuilder.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,9 @@ public ComponentParameterBuilder<TComponent> Add<TValue>(Expression<Func<TCompon
214214
/// <returns>A <see cref="ComponentParameterBuilder{TComponent}"/> which can be chained</returns>
215215
public ComponentParameterBuilder<TComponent> Add<TChildComponent>(Expression<Func<TComponent, RenderFragment?>> parameterSelector, Action<ComponentParameterBuilder<TChildComponent>>? childParameterBuilder = null) where TChildComponent : class, IComponent
216216
{
217+
if (parameterSelector is null)
218+
throw new ArgumentNullException(nameof(parameterSelector));
219+
217220
var (name, isCascading) = GetDetailsFromExpression(parameterSelector);
218221

219222
RenderFragment childContentFragment;

src/bunit.core/Extensions/WaitForHelpers/WaitForHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ public abstract class WaitForHelper : IDisposable
4747
/// </summary>
4848
protected WaitForHelper(IRenderedFragmentBase renderedFragment, Func<bool> completeChecker, TimeSpan? timeout = null)
4949
{
50+
_renderedFragment = renderedFragment ?? throw new ArgumentNullException(nameof(renderedFragment));
51+
_completeChecker = completeChecker ?? throw new ArgumentNullException(nameof(completeChecker));
5052
_logger = renderedFragment.Services.CreateLogger<WaitForHelper>();
5153
_completionSouce = new TaskCompletionSource<object?>();
52-
_renderedFragment = renderedFragment;
53-
_completeChecker = completeChecker;
5454
_timer = new Timer(OnTimeout, this, Timeout.InfiniteTimeSpan, Timeout.InfiniteTimeSpan);
5555

5656
_renderedFragment.OnAfterRender += OnAfterRender;

src/bunit.core/GlobalSuppressions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,8 @@
66
using System.Diagnostics.CodeAnalysis;
77

88
[assembly: SuppressMessage("Usage", "BL0006:Do not use RenderTree types")]
9+
[assembly: SuppressMessage("Design", "CA1063:Implement IDisposable Correctly")]
10+
[assembly: SuppressMessage("Design", "CA1031:Do not catch general exception types")]
11+
[assembly: SuppressMessage("Globalization", "CA1303:Do not pass literals as localized parameters")]
12+
[assembly: SuppressMessage("Usage", "CA1816:Dispose methods should call SuppressFinalize")]
13+
[assembly: SuppressMessage("Design", "CA1032:Implement standard exception constructors")]

src/bunit.core/RazorTesting/FixtureBase.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Diagnostics.CodeAnalysis;
34
using System.Threading.Tasks;
45

56
using Microsoft.AspNetCore.Components;
@@ -22,13 +23,13 @@ public abstract class FixtureBase<TFixture> : RazorTestBase
2223
/// Gets or sets the setup action to perform before the <see cref="Test"/> action,
2324
/// <see cref="TestAsync"/> action and <see cref="Tests"/> and <see cref="TestsAsync"/> actions are invoked.
2425
/// </summary>
25-
[Parameter] public Action<TFixture>? Setup { private get; set; }
26+
[Parameter] public Action<TFixture>? Setup { get; set; }
2627

2728
/// <summary>
2829
/// Gets or sets the asynchronous setup action to perform before the <see cref="Test"/> action,
2930
/// <see cref="TestAsync"/> action and <see cref="Tests"/> and <see cref="TestsAsync"/> actions are invoked.
3031
/// </summary>
31-
[Parameter] public Func<TFixture, Task>? SetupAsync { private get; set; }
32+
[Parameter] public Func<TFixture, Task>? SetupAsync { get; set; }
3233

3334
/// <summary>
3435
/// Gets or sets the first test action to invoke, after the <see cref="Setup"/> action has
@@ -37,7 +38,7 @@ public abstract class FixtureBase<TFixture> : RazorTestBase
3738
/// Use this to assert against the <see cref="ComponentUnderTest"/> and <see cref="Fragment"/>'s
3839
/// defined in the fixture.
3940
/// </summary>
40-
[Parameter] public Action<TFixture>? Test { private get; set; }
41+
[Parameter] public Action<TFixture>? Test { get; set; }
4142

4243
/// <summary>
4344
/// Gets or sets the first test action to invoke, after the <see cref="SetupAsync"/> action has
@@ -46,7 +47,7 @@ public abstract class FixtureBase<TFixture> : RazorTestBase
4647
/// Use this to assert against the <see cref="ComponentUnderTest"/> and <see cref="Fragment"/>'s
4748
/// defined in the fixture.
4849
/// </summary>
49-
[Parameter] public Func<TFixture, Task>? TestAsync { private get; set; }
50+
[Parameter] public Func<TFixture, Task>? TestAsync { get; set; }
5051

5152
/// <summary>
5253
/// Gets or sets the test actions to invoke, one at the time, in the order they are placed
@@ -56,7 +57,7 @@ public abstract class FixtureBase<TFixture> : RazorTestBase
5657
/// Use this to assert against the <see cref="ComponentUnderTest"/> and <see cref="Fragment"/>'s
5758
/// defined in the fixture.
5859
/// </summary>
59-
[Parameter] public IReadOnlyCollection<Action<TFixture>>? Tests { private get; set; }
60+
[Parameter] public IReadOnlyCollection<Action<TFixture>>? Tests { get; set; }
6061

6162
/// <summary>
6263
/// Gets or sets the test actions to invoke, one at the time, in the order they are placed
@@ -66,7 +67,8 @@ public abstract class FixtureBase<TFixture> : RazorTestBase
6667
/// Use this to assert against the <see cref="ComponentUnderTest"/> and <see cref="Fragment"/>'s
6768
/// defined in the fixture.
6869
/// </summary>
69-
[Parameter] public IReadOnlyCollection<Func<TFixture, Task>>? TestsAsync { private get; set; }
70+
[Parameter]
71+
public IReadOnlyCollection<Func<TFixture, Task>>? TestsAsync { get; set; }
7072

7173
/// <inheritdoc/>
7274
public override Task SetParametersAsync(ParameterView parameters)

src/bunit.core/RazorTesting/RazorTestBase.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ void IComponent.Attach(RenderHandle renderHandle) { }
8080
/// </summary>
8181
protected void TryRun<T>(Action<T> action, T input)
8282
{
83+
if (action is null)
84+
throw new ArgumentNullException(nameof(action));
8385
try
8486
{
8587
action(input);
@@ -95,6 +97,8 @@ protected void TryRun<T>(Action<T> action, T input)
9597
/// </summary>
9698
protected async Task TryRunAsync<T>(Func<T, Task> action, T input)
9799
{
100+
if (action is null)
101+
throw new ArgumentNullException(nameof(action));
98102
try
99103
{
100104
await action(input).ConfigureAwait(false);

src/bunit.core/Rendering/TestRenderer.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@ namespace Bunit.Rendering
1717
/// </summary>
1818
public class TestRenderer : Renderer, ITestRenderer, IRenderEventProducer
1919
{
20-
private static readonly Type CascadingValueType = typeof(CascadingValue<>);
2120
private readonly ILogger _logger;
21+
private readonly List<IRenderEventHandler> _renderEventHandlers = new List<IRenderEventHandler>();
2222
private Exception? _unhandledException;
23-
private List<IRenderEventHandler> _renderEventHandlers = new List<IRenderEventHandler>();
2423

2524
/// <inheritdoc/>
2625
public override Dispatcher Dispatcher { get; } = Dispatcher.CreateDefault();
@@ -109,7 +108,7 @@ public int RenderFragment(RenderFragment renderFragment)
109108
{
110109
_logger.LogDebug(new EventId(12, nameof(DispatchEventAsync)), $"Finished trigger asynchronously for '{fieldInfo.FieldValue}'");
111110
}
112-
}, TaskContinuationOptions.OnlyOnRanToCompletion);
111+
}, TaskScheduler.Default);
113112
}
114113

115114
return result;

src/bunit.testassets/BlazorE2E/RenderFragmentToggler.razor

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,6 @@
1515

1616
static RenderFragment ExampleFragment = builder =>
1717
{
18-
// TODO: Improve syntax
19-
// Ideally we'd support inline Razor syntax here and are investigating this
20-
// Could be:
21-
// static RenderFragment ExampleFragment()
22-
// => @<p>Some text<div>Child text</div></p>; // spaced over multiple lines, of course
23-
// Failing that, we could have an C#-based representation, e.g.,
24-
// new Element.P { "Some text", new Element.Div { "Child text" } }, etc.
2518
builder.OpenElement(100, "p");
2619
builder.AddAttribute(101, "name", "fragment-element");
2720
builder.AddAttribute(102, "style", "color: red");

0 commit comments

Comments
 (0)