Skip to content

Commit f08460b

Browse files
committed
Add xUnit analyzers and take xUnit fixer suggestions (3 of 5): System.Web.Http.Test
- part of #65 - change `ExceptionResultTests` to not use `Assert.Same(...)` for `string`s (failed occassionally) Few manual changes: - workaround xUnit1026, `[Theory]` method doesn't use all parameters - add new data set properties or `GC.KeepAlive(...)` - `Assert.Equal<T>(...)` -> `Assert.Equal(...)` - use `Assert.IsAssignableFrom<T>(...)`, `Assert.IsType<T>(...)` and `Assert.Single(...)` return values - avoid Linq's `.Where` inside `Assert.Contains(...)` and similar
1 parent 7674394 commit f08460b

File tree

58 files changed

+459
-450
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+459
-450
lines changed

test/System.Web.Http.Test/Batch/BatchHttpRequestMessageExtensionsTest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ public void CopyBatchRequestProperties_AddsBatchHttpRequestContext()
4848

4949
// Assert
5050
HttpRequestContext context = subRequest.GetRequestContext();
51-
Assert.IsType<BatchHttpRequestContext>(context);
52-
BatchHttpRequestContext typedContext = (BatchHttpRequestContext)context;
51+
BatchHttpRequestContext typedContext = Assert.IsType<BatchHttpRequestContext>(context);
5352
Assert.Same(expectedOriginalContext, typedContext.BatchContext);
5453
}
5554
}

test/System.Web.Http.Test/Batch/HttpBatchHandlerTest.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
using System.Collections.Generic;
55
using System.Diagnostics.Contracts;
6-
using System.Linq;
76
using System.Net;
87
using System.Net.Http;
98
using System.Threading;
@@ -82,12 +81,11 @@ public void ExceptionLoggerGet_IfUnset_ReturnsExceptionLoggerFromConfiguration()
8281
IExceptionLogger exceptionLogger = product.ExceptionLogger;
8382

8483
// Assert
85-
Assert.IsType<CompositeExceptionLogger>(exceptionLogger);
86-
CompositeExceptionLogger compositeLogger = (CompositeExceptionLogger)exceptionLogger;
84+
CompositeExceptionLogger compositeLogger = Assert.IsType<CompositeExceptionLogger>(exceptionLogger);
8785
IEnumerable<IExceptionLogger> loggers = compositeLogger.Loggers;
8886
Assert.NotNull(loggers);
89-
Assert.Equal(1, loggers.Count());
90-
Assert.Same(expectedExceptionLogger, loggers.Single());
87+
IExceptionLogger logger = Assert.Single(loggers);
88+
Assert.Same(expectedExceptionLogger, logger);
9189
}
9290
}
9391
}
@@ -108,8 +106,7 @@ public void ExceptionHandlerGet_IfUnset_ReturnsExceptionHandlerFromConfiguration
108106
IExceptionHandler exceptionHandler = product.ExceptionHandler;
109107

110108
// Assert
111-
Assert.IsType<LastChanceExceptionHandler>(exceptionHandler);
112-
LastChanceExceptionHandler lastChanceHandler = (LastChanceExceptionHandler)exceptionHandler;
109+
LastChanceExceptionHandler lastChanceHandler = Assert.IsType<LastChanceExceptionHandler>(exceptionHandler);
113110
Assert.Same(expectedExceptionHandler, lastChanceHandler.InnerHandler);
114111
}
115112
}
@@ -257,7 +254,7 @@ public async Task SendAsync_IfExceptionHandlerSetsNullResult_PropogatesFaultedTa
257254
// Assert
258255
Assert.Same(expectedException, exception);
259256
Assert.NotNull(exception.StackTrace);
260-
Assert.True(exception.StackTrace.StartsWith(expectedStackTrace));
257+
Assert.StartsWith(expectedStackTrace, exception.StackTrace);
261258
}
262259
}
263260

test/System.Web.Http.Test/Controllers/ApiControllerTest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -863,8 +863,7 @@ public void RequestSet_UpdatesRequestBackedContextRequest()
863863
using (HttpRequestMessage expectedRequest = CreateRequest())
864864
{
865865
ApiController controller = CreateFakeController();
866-
Assert.IsType<RequestBackedHttpRequestContext>(controller.RequestContext); // Guard
867-
RequestBackedHttpRequestContext context = (RequestBackedHttpRequestContext)controller.RequestContext;
866+
RequestBackedHttpRequestContext context = Assert.IsType<RequestBackedHttpRequestContext>(controller.RequestContext); // Guard
868867

869868
// Act
870869
controller.Request = expectedRequest;

test/System.Web.Http.Test/Controllers/ExceptionFilterResultTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ public async Task ExecuteAsync_IfFaultedTaskExceptionIsUnhandled_PreservesExcept
310310
Assert.NotNull(expectedStackTrace);
311311
Assert.NotNull(exception);
312312
Assert.NotNull(exception.StackTrace);
313-
Assert.True(exception.StackTrace.StartsWith(expectedStackTrace));
313+
Assert.StartsWith(expectedStackTrace, exception.StackTrace);
314314
}
315315
}
316316

test/System.Web.Http.Test/Controllers/FilterGroupingTests.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ public void ActionFilters_ReturnsEmptyArray_WhenFiltersIsEmpty()
2222

2323
// Act
2424
IActionFilter[] actionFilters = product.ActionFilters;
25-
25+
2626
// Assert
2727
Assert.NotNull(actionFilters);
28-
Assert.Equal(0, actionFilters.Length);
28+
Assert.Empty(actionFilters);
2929
}
3030

3131
[Fact]
@@ -120,8 +120,8 @@ public void ActionFilters_ReturnsActionScopeActionFilters_WhenOverrideScopeIsAct
120120

121121
// Assert
122122
Assert.NotNull(actionFilters);
123-
Assert.Equal(1, actionFilters.Length);
124-
Assert.Same(expectedActionFilter, actionFilters[0]);
123+
IActionFilter singleFilter = Assert.Single(actionFilters);
124+
Assert.Same(expectedActionFilter, singleFilter);
125125
}
126126

127127
[Fact]
@@ -169,8 +169,8 @@ public void AuthorizationFilters_ReturnsActionScopeAuthorizationFilters_WhenOver
169169

170170
// Assert
171171
Assert.NotNull(authorizationFilters);
172-
Assert.Equal(1, authorizationFilters.Length);
173-
Assert.Same(expectedActionFilter, authorizationFilters[0]);
172+
IAuthorizationFilter authorizationFilter = Assert.Single(authorizationFilters);
173+
Assert.Same(expectedActionFilter, authorizationFilter);
174174
}
175175

176176
[Fact]
@@ -193,8 +193,8 @@ public void AuthenticationFilters_ReturnsActionScopeAuthenticationFilters_WhenOv
193193

194194
// Assert
195195
Assert.NotNull(authenticationFilters);
196-
Assert.Equal(1, authenticationFilters.Length);
197-
Assert.Same(expectedActionFilter, authenticationFilters[0]);
196+
IAuthenticationFilter authenticationFilter = Assert.Single(authenticationFilters);
197+
Assert.Same(expectedActionFilter, authenticationFilter);
198198
}
199199

200200
[Fact]
@@ -216,8 +216,8 @@ public void ExceptionFilters_ReturnsActionScopeExceptionFilters_WhenOverrideScop
216216

217217
// Assert
218218
Assert.NotNull(exceptionFilters);
219-
Assert.Equal(1, exceptionFilters.Length);
220-
Assert.Same(expectedActionFilter, exceptionFilters[0]);
219+
IExceptionFilter exceptionFilter = Assert.Single(exceptionFilters);
220+
Assert.Same(expectedActionFilter, exceptionFilter);
221221
}
222222

223223
[Fact]
@@ -237,10 +237,10 @@ public void FilterImplementingMultipleType_WhereOneTypeIsOverridden_AppearsOnlyI
237237

238238
// Assert
239239
Assert.NotNull(actionFilters);
240-
Assert.Equal(1, actionFilters.Length);
241-
Assert.Same(expectedInstance, actionFilters[0]);
240+
IActionFilter actionFilter = Assert.Single(actionFilters);
241+
Assert.Same(expectedInstance, actionFilter);
242242
Assert.NotNull(exceptionFilters);
243-
Assert.Equal(0, exceptionFilters.Length);
243+
Assert.Empty(exceptionFilters);
244244
}
245245

246246
private static IActionFilter CreateDummyActionFilter()

test/System.Web.Http.Test/Controllers/HttpControllerDescriptorTest.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public void GetFilters_InvokesGetCustomAttributesMethod()
123123
[Fact]
124124
public void Initialize_In_InheritenceHierarchy()
125125
{
126-
// Verifies that initialization is run in order with , and that they all mutate on the same descriptor object
126+
// Verifies that initialization is run in order with , and that they all mutate on the same descriptor object
127127
HttpConfiguration config = new HttpConfiguration();
128128

129129
// Act.
@@ -139,7 +139,7 @@ public void Initialize_In_InheritenceHierarchy()
139139
[Fact]
140140
public void Initialize_In_InheritenceHierarchy_Branching()
141141
{
142-
// Verifies that initialization is run in order with, and that they all mutate on the same descriptor object
142+
// Verifies that initialization is run in order with, and that they all mutate on the same descriptor object
143143
HttpConfiguration config = new HttpConfiguration();
144144

145145
// Act.
@@ -181,7 +181,7 @@ public void GetCustomAttributes_GetsInheritedAttributes()
181181

182182
var attributes = desc.GetCustomAttributes<MyConfigBaseAttribute>();
183183

184-
Assert.Equal(1, attributes.Count);
184+
Assert.Single(attributes);
185185
}
186186

187187
[Fact]
@@ -192,7 +192,7 @@ public void GetCustomAttributesInheritTrue_GetsInheritedAttributes()
192192

193193
var attributes = desc.GetCustomAttributes<MyConfigBaseAttribute>(inherit: true);
194194

195-
Assert.Equal(1, attributes.Count);
195+
Assert.Single(attributes);
196196
}
197197

198198
[Fact]
@@ -214,7 +214,7 @@ public void GetCustomAttributesInheritFalse_GetsDeclaredAttributes()
214214

215215
var attributes = desc.GetCustomAttributes<MyConfigDerived1Attribute>(inherit: false);
216216

217-
Assert.Equal(1, attributes.Count);
217+
Assert.Single(attributes);
218218
}
219219

220220
class NoopControllerConfigAttribute : Attribute, IControllerConfiguration
@@ -307,7 +307,7 @@ class MyDerived3Controller : MyDerived1Controller
307307
[Fact]
308308
public void Initialize_Append_A_Formatter()
309309
{
310-
// Verifies that controller inherit the formatter list from the global config, and can mutate it.
310+
// Verifies that controller inherit the formatter list from the global config, and can mutate it.
311311
HttpConfiguration config = new HttpConfiguration();
312312

313313
MediaTypeFormatter globalFormatter = new Mock<MediaTypeFormatter>().Object;
@@ -328,8 +328,8 @@ class MyControllerWithCustomFormatterConfigAttribute : Attribute, IControllerCon
328328
{
329329
public void Initialize(HttpControllerSettings settings, HttpControllerDescriptor controllerDescriptor)
330330
{
331-
// Appends to existing list. Formatter list has copy-on-write semantics.
332-
Assert.Equal(1, settings.Formatters.Count); // the one we already set
331+
// Appends to existing list. Formatter list has copy-on-write semantics.
332+
Assert.Single(settings.Formatters); // the one we already set
333333
settings.Formatters.Add(MyControllerWithCustomFormatter.CustomFormatter);
334334
}
335335
}

test/System.Web.Http.Test/Controllers/HttpParameterDescriptorTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void GetCustomAttributes_Returns_EmptyAttributes()
6161
HttpParameterDescriptor parameterDescriptor = new Mock<HttpParameterDescriptor> { CallBase = true }.Object;
6262
IEnumerable<object> attributes = parameterDescriptor.GetCustomAttributes<object>();
6363

64-
Assert.Equal(0, attributes.Count());
64+
Assert.Empty(attributes);
6565
}
6666

6767
[Fact]
@@ -70,7 +70,7 @@ public void GetCustomAttributes_AttributeType_Returns_EmptyAttributes()
7070
HttpParameterDescriptor parameterDescriptor = new Mock<HttpParameterDescriptor> { CallBase = true }.Object;
7171
IEnumerable<FromBodyAttribute> attributes = parameterDescriptor.GetCustomAttributes<FromBodyAttribute>();
7272

73-
Assert.Equal(0, attributes.Count());
73+
Assert.Empty(attributes);
7474
}
7575
}
7676
}

test/System.Web.Http.Test/Controllers/ReflectedHttpActionDescriptorTest.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
using System.Collections.Generic;
55
using System.Collections.ObjectModel;
6-
using System.Linq;
76
using System.Net;
87
using System.Net.Http;
98
using System.Reflection;
@@ -118,8 +117,8 @@ public void GetFilter_Returns_AttributedFilter()
118117
IEnumerable<IFilter> filters = actionDescriptor.GetFilters();
119118

120119
Assert.NotNull(filters);
121-
Assert.Equal(1, filters.Count());
122-
Assert.Equal(typeof(AuthorizeAttribute), filters.First().GetType());
120+
IFilter filter = Assert.Single(filters);
121+
Assert.IsType<AuthorizeAttribute>(filter);
123122
}
124123

125124
[Fact]
@@ -153,10 +152,10 @@ public void GetCustomAttributes_Returns_ActionAttributes()
153152
IEnumerable<HttpGetAttribute> httpGet = actionDescriptor.GetCustomAttributes<HttpGetAttribute>();
154153

155154
Assert.NotNull(filters);
156-
Assert.Equal(1, filters.Count());
157-
Assert.Equal(typeof(AuthorizeAttribute), filters.First().GetType());
155+
IFilter filter = Assert.Single(filters);
156+
Assert.IsType<AuthorizeAttribute>(filter);
158157
Assert.NotNull(httpGet);
159-
Assert.Equal(1, httpGet.Count());
158+
Assert.Single(httpGet);
160159
}
161160

162161
[Fact]
@@ -168,8 +167,8 @@ public void GetParameters_Returns_ActionParameters()
168167
Collection<HttpParameterDescriptor> parameterDescriptors = actionDescriptor.GetParameters();
169168

170169
Assert.Equal(2, parameterDescriptors.Count);
171-
Assert.NotNull(parameterDescriptors.Where(p => p.ParameterName == "firstName").FirstOrDefault());
172-
Assert.NotNull(parameterDescriptors.Where(p => p.ParameterName == "lastName").FirstOrDefault());
170+
Assert.Contains(parameterDescriptors, p => p.ParameterName == "firstName");
171+
Assert.Contains(parameterDescriptors, p => p.ParameterName == "lastName");
173172
}
174173

175174
[Fact]

test/System.Web.Http.Test/Controllers/ReflectedHttpParameterDescriptorTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ public void GetCustomAttributes_Returns_ParameterAttributes()
8888
ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo);
8989
object[] attributes = parameterDescriptor.GetCustomAttributes<object>().ToArray();
9090

91-
Assert.Equal(1, attributes.Length);
92-
Assert.Equal(typeof(FromBodyAttribute), attributes[0].GetType());
91+
object attribute = Assert.Single(attributes);
92+
Assert.IsType<FromBodyAttribute>(attribute);
9393
}
9494

9595
[Fact]
@@ -102,7 +102,7 @@ public void GetCustomAttributes_AttributeType_Returns_ParameterAttributes()
102102
ReflectedHttpParameterDescriptor parameterDescriptor = new ReflectedHttpParameterDescriptor(actionDescriptor, parameterInfo);
103103
IEnumerable<FromBodyAttribute> attributes = parameterDescriptor.GetCustomAttributes<FromBodyAttribute>();
104104

105-
Assert.Equal(1, attributes.Count());
105+
Assert.Single(attributes);
106106
}
107107
}
108108
}

test/System.Web.Http.Test/Controllers/RequestBackedHttpRequestContextTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ public void IncludeErrorDetailGet_ReturnsFalse_AsDefault()
236236
bool includeErrorDetail = context.IncludeErrorDetail;
237237

238238
// Assert
239-
Assert.Equal(false, includeErrorDetail);
239+
Assert.False(includeErrorDetail);
240240
}
241241

242242
[Theory]
@@ -305,7 +305,7 @@ public void IsLocalGet_ReturnsFalse_AsDefault()
305305
bool isLocal = context.IsLocal;
306306

307307
// Assert
308-
Assert.Equal(false, isLocal);
308+
Assert.False(isLocal);
309309
}
310310

311311
[Theory]

test/System.Web.Http.Test/Description/ApiParameterDescriptionTest.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System.Collections.Generic;
5-
using System.Linq;
65
using System.Reflection;
76
using System.Web.Http.Controllers;
87
using Microsoft.TestCommon;
@@ -25,8 +24,8 @@ public void GetBindableProperties_WorksOnlyFor_PublicInstanceProperties_WithPubl
2524
IEnumerable<PropertyInfo> bindableProperties = parameter.GetBindableProperties();
2625

2726
// Assert
28-
Assert.Equal(1, bindableProperties.Count());
29-
Assert.Equal("ValidProperty", bindableProperties.Single().Name);
27+
PropertyInfo bindableProperty = Assert.Single(bindableProperties);
28+
Assert.Equal("ValidProperty", bindableProperty.Name);
3029
}
3130
}
3231

test/System.Web.Http.Test/Dispatcher/DefaultHttpControllerSelectorTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public void SelectController_IsCaseInsensitive(string controllerTypeName)
125125
HttpControllerDescriptor descriptor = selector.SelectController(request);
126126

127127
// Assert
128-
Assert.IsType(typeof(HttpControllerDescriptor), descriptor);
128+
Assert.IsType<HttpControllerDescriptor>(descriptor);
129129
Assert.Equal(controllerType, descriptor.ControllerType);
130130
}
131131

test/System.Web.Http.Test/Dispatcher/HttpControllerDispatcherTest.cs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
using System.Collections.Generic;
55
using System.Diagnostics.Contracts;
6-
using System.Linq;
76
using System.Net;
87
using System.Net.Http;
98
using System.Runtime.ExceptionServices;
@@ -81,12 +80,11 @@ public void ExceptionLoggerGet_IfUnset_ReturnsExceptionLoggerFromConfiguration()
8180
IExceptionLogger exceptionLogger = product.ExceptionLogger;
8281

8382
// Assert
84-
Assert.IsType<CompositeExceptionLogger>(exceptionLogger);
85-
CompositeExceptionLogger compositeLogger = (CompositeExceptionLogger)exceptionLogger;
83+
CompositeExceptionLogger compositeLogger = Assert.IsType<CompositeExceptionLogger>(exceptionLogger);
8684
IEnumerable<IExceptionLogger> loggers = compositeLogger.Loggers;
8785
Assert.NotNull(loggers);
88-
Assert.Equal(1, loggers.Count());
89-
Assert.Same(expectedExceptionLogger, loggers.Single());
86+
IExceptionLogger logger = Assert.Single(loggers);
87+
Assert.Same(expectedExceptionLogger, logger);
9088
}
9189
}
9290
}
@@ -106,8 +104,7 @@ public void ExceptionHandlerGet_IfUnset_UsesExceptionHandlerFromConfiguration()
106104
IExceptionHandler exceptionHandler = product.ExceptionHandler;
107105

108106
// Assert
109-
Assert.IsType<LastChanceExceptionHandler>(exceptionHandler);
110-
LastChanceExceptionHandler lastChanceHandler = (LastChanceExceptionHandler)exceptionHandler;
107+
LastChanceExceptionHandler lastChanceHandler = Assert.IsType<LastChanceExceptionHandler>(exceptionHandler);
111108
Assert.Same(expectedExceptionHandler, lastChanceHandler.InnerHandler);
112109
}
113110
}
@@ -359,7 +356,7 @@ public async Task SendAsync_IfExceptionHandlerSetsNullResult_PropogatesFaultedTa
359356

360357
Assert.Same(exceptionInfo.SourceException, exception);
361358
Assert.NotNull(exception.StackTrace);
362-
Assert.True(exception.StackTrace.StartsWith(expectedStackTrace));
359+
Assert.StartsWith(expectedStackTrace, exception.StackTrace);
363360
}
364361
}
365362

@@ -486,8 +483,7 @@ public async Task SendAsync_CreatesControllerContextWithRequestBackedRequestCont
486483
HttpResponseMessage ignore = await invoker.SendAsync(request, CancellationToken.None);
487484

488485
// Assert
489-
Assert.IsType<RequestBackedHttpRequestContext>(requestContext);
490-
RequestBackedHttpRequestContext typedRequestContext = (RequestBackedHttpRequestContext)requestContext;
486+
RequestBackedHttpRequestContext typedRequestContext = Assert.IsType<RequestBackedHttpRequestContext>(requestContext);
491487
Assert.Same(request, typedRequestContext.Request);
492488
Assert.Same(configuration, typedRequestContext.Configuration);
493489
}
@@ -524,8 +520,7 @@ public async Task SendAsync_SetsRequestBackedRequestContextOnRequest_WhenRequest
524520
HttpResponseMessage ignore = await invoker.SendAsync(request, CancellationToken.None);
525521

526522
// Assert
527-
Assert.IsType<RequestBackedHttpRequestContext>(requestContext);
528-
RequestBackedHttpRequestContext typedRequestContext = (RequestBackedHttpRequestContext)requestContext;
523+
RequestBackedHttpRequestContext typedRequestContext = Assert.IsType<RequestBackedHttpRequestContext>(requestContext);
529524
Assert.Same(request, typedRequestContext.Request);
530525
Assert.Same(configuration, typedRequestContext.Configuration);
531526
}

0 commit comments

Comments
 (0)