Skip to content

Commit 4201fe7

Browse files
CSHARP-3904: Protect xunit/logging infrastructure by DebuggerStepThrough. (#684)
CSHARP-3904: Protect xunit/logging infrastructure by DebuggerStepThrough.
1 parent cc0cc9d commit 4201fe7

13 files changed

+30
-1
lines changed

tests/MongoDB.Driver.Core.TestHelpers/Logging/LoggableTestClass.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
namespace MongoDB.Driver.Core.TestHelpers.Logging
2525
{
26+
[DebuggerStepThrough]
2627
public abstract class LoggableTestClass : IDisposable
2728
{
2829
private readonly XunitLogger _loggerBase;

tests/MongoDB.Driver.Core.TestHelpers/Logging/XUnitLoggerFactory.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@
1313
* limitations under the License.
1414
*/
1515

16+
using System.Diagnostics;
17+
1618
namespace MongoDB.Driver.Core.TestHelpers.Logging
1719
{
20+
[DebuggerStepThrough]
1821
internal sealed class XUnitLoggerFactory : ILoggerFactory
1922
{
2023
private readonly ILogger _loggerBase;

tests/MongoDB.Driver.Core.TestHelpers/Logging/XunitLogger.cs

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

1616
using System;
1717
using System.Collections.Generic;
18+
using System.Diagnostics;
1819
using MongoDB.Driver.Core.Misc;
1920
using Xunit.Abstractions;
2021

2122
namespace MongoDB.Driver.Core.TestHelpers.Logging
2223
{
24+
[DebuggerStepThrough]
2325
internal sealed class XunitLogger : ILogger
2426
{
2527
private readonly ITestOutputHelper _output;

tests/MongoDB.Driver.Core.TestHelpers/XunitExtensions/TimeoutEnforcing/TimeoutEnforcingTestInvoker.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
using System;
1717
using System.Collections.Generic;
18+
using System.Diagnostics;
1819
using System.Reflection;
1920
using System.Threading;
2021
using System.Threading.Tasks;
@@ -25,6 +26,7 @@
2526

2627
namespace MongoDB.Driver.Core.TestHelpers.XunitExtensions.TimeoutEnforcing
2728
{
29+
[DebuggerStepThrough]
2830
internal sealed class TimeoutEnforcingTestInvoker : XunitTestInvoker
2931
{
3032
public TimeoutEnforcingTestInvoker(
@@ -52,7 +54,10 @@ protected override async Task<decimal> InvokeTestMethodAsync(object testClassIns
5254
{
5355
var xUnitTestCase = Test.TestCase as IXunitTestCase;
5456
var timeoutMS = xUnitTestCase?.Timeout ?? 0;
55-
var timeout = timeoutMS <= 0 ? CoreTestConfiguration.DefaultTestTimeout : TimeSpan.FromMilliseconds(timeoutMS);
57+
var timeout = Debugger.IsAttached
58+
? Timeout.InfiniteTimeSpan // allow more flexible debugging expirience
59+
: timeoutMS <= 0 ? CoreTestConfiguration.DefaultTestTimeout : TimeSpan.FromMilliseconds(timeoutMS);
60+
5661

5762
var testLoggable = testClassInstance as LoggableTestClass;
5863

tests/MongoDB.Driver.Core.TestHelpers/XunitExtensions/TimeoutEnforcing/TimeoutEnforcingTestRunner.cs

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

1616
using System;
1717
using System.Collections.Generic;
18+
using System.Diagnostics;
1819
using System.Reflection;
1920
using System.Threading;
2021
using System.Threading.Tasks;
@@ -23,6 +24,7 @@
2324

2425
namespace MongoDB.Driver.Core.TestHelpers.XunitExtensions.TimeoutEnforcing
2526
{
27+
[DebuggerStepThrough]
2628
internal sealed class TimeoutEnforcingTestRunner : XunitTestRunner
2729
{
2830
public TimeoutEnforcingTestRunner(ITest test, IMessageBus messageBus, Type testClass, object[] constructorArguments, MethodInfo testMethod, object[] testMethodArguments, string skipReason, IReadOnlyList<BeforeAfterTestAttribute> beforeAfterAttributes, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource)

tests/MongoDB.Driver.Core.TestHelpers/XunitExtensions/TimeoutEnforcing/TimeoutEnforcingXunitTestAssemblyRunner.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@
1414
*/
1515

1616
using System.Collections.Generic;
17+
using System.Diagnostics;
1718
using System.Threading;
1819
using System.Threading.Tasks;
1920
using Xunit.Abstractions;
2021
using Xunit.Sdk;
2122

2223
namespace MongoDB.Driver.Core.TestHelpers.XunitExtensions.TimeoutEnforcing
2324
{
25+
[DebuggerStepThrough]
2426
internal sealed class TimeoutEnforcingXunitTestAssemblyRunner : XunitTestAssemblyRunner
2527
{
2628
public TimeoutEnforcingXunitTestAssemblyRunner(

tests/MongoDB.Driver.Core.TestHelpers/XunitExtensions/TimeoutEnforcing/TimeoutEnforcingXunitTestCaseRunner.cs

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

1616
using System;
1717
using System.Collections.Generic;
18+
using System.Diagnostics;
1819
using System.Reflection;
1920
using System.Threading;
2021
using Xunit.Abstractions;
2122
using Xunit.Sdk;
2223

2324
namespace MongoDB.Driver.Core.TestHelpers.XunitExtensions.TimeoutEnforcing
2425
{
26+
[DebuggerStepThrough]
2527
internal sealed class TimeoutEnforcingXunitTestCaseRunner : XunitTestCaseRunner
2628
{
2729
public TimeoutEnforcingXunitTestCaseRunner(

tests/MongoDB.Driver.Core.TestHelpers/XunitExtensions/TimeoutEnforcing/TimeoutEnforcingXunitTestClassRunner.cs

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

1616
using System;
1717
using System.Collections.Generic;
18+
using System.Diagnostics;
1819
using System.Threading;
1920
using System.Threading.Tasks;
2021
using Xunit.Abstractions;
2122
using Xunit.Sdk;
2223

2324
namespace MongoDB.Driver.Core.TestHelpers.XunitExtensions.TimeoutEnforcing
2425
{
26+
[DebuggerStepThrough]
2527
internal sealed class TimeoutEnforcingXunitTestClassRunner : XunitTestClassRunner
2628
{
2729
public TimeoutEnforcingXunitTestClassRunner(ITestClass testClass, IReflectionTypeInfo @class, IEnumerable<IXunitTestCase> testCases, IMessageSink diagnosticMessageSink, IMessageBus messageBus, ITestCaseOrderer testCaseOrderer, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource, IDictionary<Type, object> collectionFixtureMappings) : base(testClass, @class, testCases, diagnosticMessageSink, messageBus, testCaseOrderer, aggregator, cancellationTokenSource, collectionFixtureMappings)

tests/MongoDB.Driver.Core.TestHelpers/XunitExtensions/TimeoutEnforcing/TimeoutEnforcingXunitTestCollectionRunner.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@
1414
*/
1515

1616
using System.Collections.Generic;
17+
using System.Diagnostics;
1718
using System.Threading;
1819
using System.Threading.Tasks;
1920
using Xunit.Abstractions;
2021
using Xunit.Sdk;
2122

2223
namespace MongoDB.Driver.Core.TestHelpers.XunitExtensions.TimeoutEnforcing
2324
{
25+
[DebuggerStepThrough]
2426
internal sealed class TimeoutEnforcingXunitTestCollectionRunner : XunitTestCollectionRunner
2527
{
2628
public TimeoutEnforcingXunitTestCollectionRunner(

tests/MongoDB.Driver.Core.TestHelpers/XunitExtensions/TimeoutEnforcing/TimeoutEnforcingXunitTestFramework.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313
* limitations under the License.
1414
*/
1515

16+
using System.Diagnostics;
1617
using System.Reflection;
1718
using Xunit.Abstractions;
1819
using Xunit.Sdk;
1920

2021
namespace MongoDB.Driver.Core.TestHelpers.XunitExtensions.TimeoutEnforcing
2122
{
23+
[DebuggerStepThrough]
2224
public sealed class TimeoutEnforcingXunitTestFramework : XunitTestFramework
2325
{
2426
public TimeoutEnforcingXunitTestFramework(IMessageSink messageSink)

0 commit comments

Comments
 (0)