Skip to content

Commit

Permalink
Merge branch 'main' into fix/crons-2
Browse files Browse the repository at this point in the history
  • Loading branch information
bitsandfoxes committed May 24, 2024
2 parents 07dcc56 + d2505f2 commit a868b2e
Show file tree
Hide file tree
Showing 31 changed files with 77 additions and 25 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ jobs:
run: dotnet test Sentry-CI-Build-${{ runner.os }}.slnf -c Release --no-build --nologo -l GitHubActions -l "trx;LogFilePrefix=testresults_${{ runner.os }}" --collect "XPlat Code Coverage"

- name: Upload code coverage
uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be
uses: codecov/codecov-action@6d798873df2b1b8e5846dba6fb86631229fbcb17

- name: Upload build and test outputs
if: failure()
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
uses: ./.github/actions/environment

- name: Initialize CodeQL
uses: github/codeql-action/init@cdcdbb579706841c47f7063dda365e292e5cad7a # pin@v2
uses: github/codeql-action/init@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # pin@v2
with:
languages: csharp

Expand All @@ -46,6 +46,6 @@ jobs:
run: dotnet build Sentry-CI-CodeQL.slnf --no-restore --nologo

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@cdcdbb579706841c47f7063dda365e292e5cad7a # pin@v2
uses: github/codeql-action/analyze@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # pin@v2
with:
category: '/language:csharp'
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## Unreleased

### API Changes

- SentryOptions.EnableTracing has been marked as Obsolete ([#3381](https://github.com/getsentry/sentry-dotnet/pull/3381))

### Features

- The SDK now supports monitor upserting. You can programmatically set up your monitors via the options callback in `SentrySdk.CaptureCheckIn` ([#3330](https://github.com/getsentry/sentry-dotnet/pull/3330))
Expand All @@ -10,6 +14,13 @@

- P/Invoke warning for GetWindowThreadProcessId no longer shows when using Sentry in UWP applications ([#3372](https://github.com/getsentry/sentry-dotnet/pull/3372))

### Dependencies

- Update Perfview/TraceEvent to v3.1.10 (patched) ([#3382](https://github.com/getsentry/sentry-dotnet/pull/3382))
- Bump Native SDK from v0.7.2 to v0.7.4 ([#3385](https://github.com/getsentry/sentry-dotnet/pull/3385))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#074)
- [diff](https://github.com/getsentry/sentry-native/compare/0.7.2...0.7.4)

## 4.6.2

### Fixes
Expand Down
2 changes: 1 addition & 1 deletion modules/perfview
Submodule perfview updated 121 files
2 changes: 1 addition & 1 deletion modules/sentry-native
Submodule sentry-native updated 55 files
+12 −0 .craft.yml
+28 −12 .github/workflows/ci.yml
+7 −0 .gitignore
+23 −0 CHANGELOG.md
+5 −1 CMakeLists.txt
+1 −0 CONTRIBUTING.md
+8 −1 README.md
+17 −0 examples/example.c
+1 −1 external/crashpad
+1 −1 include/sentry.h
+75 −0 ndk/README.md
+207 −0 ndk/build.gradle.kts
+ ndk/debug.keystore
+53 −0 ndk/gradle.properties
+ ndk/gradle/wrapper/gradle-wrapper.jar
+7 −0 ndk/gradle/wrapper/gradle-wrapper.properties
+249 −0 ndk/gradlew
+92 −0 ndk/gradlew.bat
+17 −0 ndk/lib/CMakeLists.txt
+29 −0 ndk/lib/api/sentry-android-ndk.api
+93 −0 ndk/lib/build.gradle.kts
+22 −0 ndk/lib/proguard-rules.pro
+199 −0 ndk/lib/src/main/java/io/sentry/ndk/DebugImage.java
+18 −0 ndk/lib/src/main/java/io/sentry/ndk/INativeScope.java
+18 −0 ndk/lib/src/main/java/io/sentry/ndk/NativeModuleListLoader.java
+55 −0 ndk/lib/src/main/java/io/sentry/ndk/NativeScope.java
+64 −0 ndk/lib/src/main/java/io/sentry/ndk/NdkOptions.java
+42 −0 ndk/lib/src/main/java/io/sentry/ndk/SentryNdk.java
+489 −0 ndk/lib/src/main/jni/sentry.c
+4 −0 ndk/lib/src/main/res/values/public.xml
+18 −0 ndk/sample/CMakeLists.txt
+70 −0 ndk/sample/build.gradle.kts
+34 −0 ndk/sample/proguard-rules.pro
+18 −0 ndk/sample/src/main/AndroidManifest.xml
+25 −0 ndk/sample/src/main/cpp/ndk-sample.cpp
+54 −0 ndk/sample/src/main/java/io/sentry/ndk/sample/MainActivity.java
+11 −0 ndk/sample/src/main/java/io/sentry/ndk/sample/NdkSample.java
+36 −0 ndk/sample/src/main/res/layout/activity_main.xml
+19 −0 ndk/settings.gradle
+1 −0 scripts/bump-version.sh
+310 −0 scripts/mvnw
+182 −0 scripts/mvnw.cmd
+12 −0 scripts/settings.xml
+15 −2 scripts/start-android.sh
+4 −0 src/backends/sentry_backend_breakpad.cpp
+4 −0 src/backends/sentry_backend_crashpad.cpp
+28 −22 src/backends/sentry_backend_inproc.c
+34 −1 src/sentry_os.c
+3 −0 src/sentry_os.h
+30 −38 src/sentry_tracing.c
+28 −15 tests/assertions.py
+39 −4 tests/test_integration_crashpad.py
+6 −2 tests/test_integration_http.py
+34 −2 tests/test_integration_stdout.py
+4 −4 tests/unit/test_tracing.c
2 changes: 1 addition & 1 deletion samples/Sentry.Samples.AspNetCore.Basic/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public static void Main(string[] args)
o.Dsn = "https://eb18e953812b41c3aeb042e666fd3b5c@o447951.ingest.sentry.io/5428537";
// Enable Sentry performance monitoring
o.EnableTracing = true;
o.TracesSampleRate = 1.0;
#if DEBUG
// Log debug information about the Sentry SDK
Expand Down
2 changes: 1 addition & 1 deletion samples/Sentry.Samples.AspNetCore.Blazor.Server/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
builder.WebHost.UseSentry(options =>
{
options.Dsn = "https://eb18e953812b41c3aeb042e666fd3b5c@o447951.ingest.sentry.io/5428537";
options.EnableTracing = true;
options.TracesSampleRate = 1.0;
options.Debug = true;
});

Expand Down
2 changes: 1 addition & 1 deletion samples/Sentry.Samples.AspNetCore.Grpc/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public static void Main(string[] args)
options.Release =
"e386dfd"; // Could also be any format, such as: 2.0, or however version of your app is
options.EnableTracing = true;
options.TracesSampleRate = 1.0;
options.MaxBreadcrumbs = 200;
Expand Down
2 changes: 1 addition & 1 deletion samples/Sentry.Samples.AspNetCore.Mvc/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
options.MaxBreadcrumbs = 200;
options.EnableTracing = true;
options.TracesSampleRate = 1.0;
// Set a proxy for outgoing HTTP connections
options.HttpProxy = null; // new WebProxy("https://localhost:3128");
Expand Down
2 changes: 1 addition & 1 deletion samples/Sentry.Samples.Azure.Functions.Worker/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{
builder.UseSentry(host, options =>
{
options.EnableTracing = true;
options.TracesSampleRate = 1.0;
// options.Debug = true;
});
})
Expand Down
4 changes: 2 additions & 2 deletions samples/Sentry.Samples.Console.Basic/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
// If you are writing a background service of any kind, you should remove this.
options.IsGlobalModeEnabled = true;
// This option will enable Sentry's tracing features. You still need to start transactions and spans.
options.EnableTracing = true;
// This option tells Sentry to capture 100% of traces. You still need to start transactions and spans.
options.TracesSampleRate = 1.0;
});

// This starts a new transaction and attaches it to the scope.
Expand Down
2 changes: 1 addition & 1 deletion samples/Sentry.Samples.Console.Profiling/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ private static void Main()
options.Debug = true;
// options.AutoSessionTracking = true;
options.IsGlobalModeEnabled = true;
options.EnableTracing = true;
options.TracesSampleRate = 1.0;
// Make sure to reduce the sampling rate in production.
options.ProfilesSampleRate = 1.0;
Expand Down
2 changes: 1 addition & 1 deletion samples/Sentry.Samples.EntityFramework/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{
o.Debug = true; // To see SDK logs on the console
o.Dsn = "https://eb18e953812b41c3aeb042e666fd3b5c@o447951.ingest.sentry.io/5428537";
o.EnableTracing = true;
o.TracesSampleRate = 1.0;
// Add the EntityFramework integration to the SentryOptions of your app startup code:
o.AddEntityFramework();
Expand Down
1 change: 0 additions & 1 deletion samples/Sentry.Samples.GraphQL.Client.Http/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
options.CaptureFailedRequests = true;
options.SendDefaultPii = true;
options.TracesSampleRate = 1.0;
options.EnableTracing = true;
});

var transaction = SentrySdk.StartTransaction("Program Main", "function");
Expand Down
2 changes: 1 addition & 1 deletion samples/Sentry.Samples.GraphQL.Server/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public static WebApplication BuildWebApplication(string[] args)
{
// A DSN is required. You can set it here, or in configuration, or in an environment variable.
// o.Dsn = "...Your DSN Here...";
o.EnableTracing = true;
o.TracesSampleRate = 1.0;
o.Debug = true;
o.SendDefaultPii = true;
o.UseOpenTelemetry(); // <-- Configure Sentry to use OpenTelemetry trace information
Expand Down
2 changes: 1 addition & 1 deletion src/Sentry.Profiling/Sentry.Profiling.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

<ItemGroup>
<ProjectReference Include="..\..\src\Sentry\Sentry.csproj" />
<PackageReference Include="Microsoft.Diagnostics.NETCore.Client" Version="0.2.452401" />
<PackageReference Include="Microsoft.Diagnostics.NETCore.Client" Version="0.2.510501" />
<!-- This triggers the build of this project and its dependencies. We don't need all of them but this is the easiest way -->
<!-- to make sure the project builds/cleans etc in tandem with this. Packaging copies the 2 DLLs we need below -->
<ProjectReference Include="../../modules/perfview/src/TraceEvent/TraceEvent.csproj" PrivateAssets="all" />
Expand Down
2 changes: 2 additions & 0 deletions src/Sentry/BindableSentryOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@ public void ApplyTo(SentryOptions options)
options.FailedRequestTargets = FailedRequestTargets?.Select(s => new SubstringOrRegexPattern(s)).ToList() ?? options.FailedRequestTargets;
options.InitCacheFlushTimeout = InitCacheFlushTimeout ?? options.InitCacheFlushTimeout;
options.DefaultTags = DefaultTags ?? options.DefaultTags;
#pragma warning disable CS0618 // Type or member is obsolete
options.EnableTracing = EnableTracing ?? options.EnableTracing;
#pragma warning restore CS0618 // Type or member is obsolete
options.TracesSampleRate = TracesSampleRate ?? options.TracesSampleRate;
options.ProfilesSampleRate = ProfilesSampleRate ?? options.ProfilesSampleRate;
options.TracePropagationTargets = TracePropagationTargets?.Select(s => new SubstringOrRegexPattern(s)).ToList() ?? options.TracePropagationTargets;
Expand Down
4 changes: 4 additions & 0 deletions src/Sentry/Internal/Hub.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,9 @@ public async Task ConfigureScopeAsync(Func<Scope, Task> configureScope)
// Additionally, we will always sample out if tracing is explicitly disabled.
// Do not invoke the TracesSampler, evaluate the TracesSampleRate, and override any sampling decision
// that may have been already set (i.e.: from a sentry-trace header).
#pragma warning disable CS0618 // Type or member is obsolete
if (!IsEnabled || _options.EnableTracing is false)
#pragma warning restore CS0618 // Type or member is obsolete
{
transaction.IsSampled = false;
transaction.SampleRate = 0.0;
Expand All @@ -152,7 +154,9 @@ public async Task ConfigureScopeAsync(Func<Scope, Task> configureScope)
// Random sampling runs only if the sampling decision hasn't been made already.
if (transaction.IsSampled == null)
{
#pragma warning disable CS0618 // Type or member is obsolete
var sampleRate = _options.TracesSampleRate ?? (_options.EnableTracing is true ? 1.0 : 0.0);
#pragma warning restore CS0618 // Type or member is obsolete
transaction.IsSampled = _randomValuesFactory.NextBool(sampleRate);
transaction.SampleRate = sampleRate;
}
Expand Down
2 changes: 2 additions & 0 deletions src/Sentry/Platforms/Android/SentrySdk.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,9 @@ private static void InitSentryAndroidSdk(SentryOptions options)
// These options we have behind feature flags
if (options is { IsPerformanceMonitoringEnabled: true, Native.EnableTracing: true })
{
#pragma warning disable CS0618 // Type or member is obsolete
o.EnableTracing = (JavaBoolean?)options.EnableTracing;
#pragma warning restore CS0618 // Type or member is obsolete
o.TracesSampleRate = (JavaDouble?)options.TracesSampleRate;
if (options.TracesSampler is { } tracesSampler)
Expand Down
2 changes: 2 additions & 0 deletions src/Sentry/Platforms/Cocoa/SentrySdk.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,12 @@ private static void InitSentryCocoaSdk(SentryOptions options)
// These options we have behind feature flags
if (options is { IsPerformanceMonitoringEnabled: true, Native.EnableTracing: true })
{
#pragma warning disable CS0618 // Type or member is obsolete
if (options.EnableTracing != null)
{
nativeOptions.EnableTracing = options.EnableTracing.Value;
}
#pragma warning restore CS0618 // Type or member is obsolete

nativeOptions.TracesSampleRate = options.TracesSampleRate;

Expand Down
3 changes: 3 additions & 0 deletions src/Sentry/SentryOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -753,12 +753,14 @@ public IList<SubstringOrRegexPattern> FailedRequestTargets
/// Indicates whether the performance feature is enabled, via any combination of
/// <see cref="EnableTracing"/>, <see cref="TracesSampleRate"/>, or <see cref="TracesSampler"/>.
/// </summary>
#pragma warning disable CS0618 // Type or member is obsolete
internal bool IsPerformanceMonitoringEnabled => EnableTracing switch
{
false => false,
null => TracesSampler is not null || TracesSampleRate is > 0.0,
true => TracesSampler is not null || TracesSampleRate is > 0.0 or null
};
#pragma warning restore CS0618 // Type or member is obsolete

/// <summary>
/// Indicates whether profiling is enabled, via any combination of
Expand Down Expand Up @@ -795,6 +797,7 @@ public IList<SubstringOrRegexPattern> FailedRequestTargets
/// </item>
/// </list>
/// </summary>
[Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }

private double? _tracesSampleRate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public Fixture()
var options = new SentryOptions
{
Dsn = ValidDsn,
EnableTracing = true,
TracesSampleRate = 1.0,
};

var client = Substitute.For<ISentryClient>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ public void Configure_BindsConfigurationToOptions()
FailedRequestTargets = new List<SubstringOrRegexPattern> { "target1", "target2" },
InitCacheFlushTimeout = TimeSpan.FromSeconds(27),
// DefaultTags = Dictionary<string,string>,
#pragma warning disable CS0618 // Type or member is obsolete
EnableTracing = true,
#pragma warning restore CS0618 // Type or member is obsolete
TracesSampleRate = 0.8f,
TracePropagationTargets = new List<SubstringOrRegexPattern> { "target3", "target4" },
StackTraceMode = StackTraceMode.Enhanced,
Expand Down Expand Up @@ -94,7 +96,9 @@ public void Configure_BindsConfigurationToOptions()
["FailedRequestTargets:1"] = expected.FailedRequestTargets.Last().ToString(),
["InitCacheFlushTimeout"] = expected.InitCacheFlushTimeout.ToString(),
["DefaultTags"] = expected.DefaultTags.ToString(),
#pragma warning disable CS0618 // Type or member is obsolete
["EnableTracing"] = expected.EnableTracing.ToString(),
#pragma warning restore CS0618 // Type or member is obsolete
["TracesSampleRate"] = expected.TracesSampleRate.Value.ToString(CultureInfo.InvariantCulture),
["TracePropagationTargets:0"] = expected.TracePropagationTargets.First().ToString(),
["TracePropagationTargets:1"] = expected.TracePropagationTargets.Last().ToString(),
Expand Down Expand Up @@ -152,7 +156,9 @@ public void Configure_BindsConfigurationToOptions()
actual.CaptureFailedRequests.Should().Be(expected.CaptureFailedRequests);
actual.FailedRequestTargets.Should().BeEquivalentTo(expected.FailedRequestTargets);
actual.InitCacheFlushTimeout.Should().Be(expected.InitCacheFlushTimeout);
#pragma warning disable CS0618 // Type or member is obsolete
actual.EnableTracing.Should().Be(expected.EnableTracing);
#pragma warning restore CS0618 // Type or member is obsolete
actual.TracesSampleRate.Should().Be(expected.TracesSampleRate);
actual.TracePropagationTargets.Should().BeEquivalentTo(expected.TracePropagationTargets);
actual.StackTraceMode.Should().Be(expected.StackTraceMode);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public Fixture()
Options = new SentryOptions
{
Dsn = ValidDsn,
EnableTracing = true,
TracesSampleRate = 1.0,
AutoSessionTracking = false
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,7 @@ namespace Sentry
public string? Dsn { get; set; }
public bool EnableScopeSync { get; set; }
public bool EnableSpotlight { get; set; }
[System.Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }
public string? Environment { get; set; }
public Sentry.ExperimentalMetricsOptions? ExperimentalMetrics { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,7 @@ namespace Sentry
public string? Dsn { get; set; }
public bool EnableScopeSync { get; set; }
public bool EnableSpotlight { get; set; }
[System.Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }
public string? Environment { get; set; }
public Sentry.ExperimentalMetricsOptions? ExperimentalMetrics { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -660,6 +660,7 @@ namespace Sentry
public string? Dsn { get; set; }
public bool EnableScopeSync { get; set; }
public bool EnableSpotlight { get; set; }
[System.Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }
public string? Environment { get; set; }
public Sentry.ExperimentalMetricsOptions? ExperimentalMetrics { get; set; }
Expand Down
1 change: 1 addition & 0 deletions test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,7 @@ namespace Sentry
public string? Dsn { get; set; }
public bool EnableScopeSync { get; set; }
public bool EnableSpotlight { get; set; }
[System.Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }
public string? Environment { get; set; }
public Sentry.ExperimentalMetricsOptions? ExperimentalMetrics { get; set; }
Expand Down
14 changes: 9 additions & 5 deletions test/Sentry.Tests/HubTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public Fixture()
Options = new SentryOptions
{
Dsn = ValidDsn,
EnableTracing = true,
TracesSampleRate = 1.0,
AutoSessionTracking = false
};

Expand Down Expand Up @@ -591,7 +591,7 @@ public void StartTransaction_StaticSampling_SampledOut()
public void StartTransaction_EnableTracing_SampledIn()
{
// Arrange
_fixture.Options.EnableTracing = true;
_fixture.Options.TracesSampleRate = 1.0;
var hub = _fixture.GetSut();

// Act
Expand All @@ -606,7 +606,9 @@ public void StartTransaction_DisableTracing_SampledOut()
{
// Arrange
_fixture.Options.TracesSampleRate = 1.0;
#pragma warning disable CS0618 // Type or member is obsolete
_fixture.Options.EnableTracing = false;
#pragma warning restore CS0618 // Type or member is obsolete
var hub = _fixture.GetSut();

// Act
Expand All @@ -620,7 +622,7 @@ public void StartTransaction_DisableTracing_SampledOut()
public void StartTransaction_SameInstrumenter_SampledIn()
{
// Arrange
_fixture.Options.EnableTracing = true;
_fixture.Options.TracesSampleRate = 1.0;
_fixture.Options.Instrumenter = Instrumenter.Sentry; // The default... making it explicit for this test though
var hub = _fixture.GetSut();

Expand All @@ -640,7 +642,7 @@ public void StartTransaction_SameInstrumenter_SampledIn()
public void StartTransaction_DifferentInstrumenter_SampledIn()
{
// Arrange
_fixture.Options.EnableTracing = true;
_fixture.Options.TracesSampleRate = 1.0;
_fixture.Options.Instrumenter = Instrumenter.OpenTelemetry;
var hub = _fixture.GetSut();

Expand All @@ -661,7 +663,7 @@ public void StartTransaction_EnableTracing_Sampler_SampledIn()
{
// Arrange
_fixture.Options.TracesSampler = _ => 1.0;
_fixture.Options.EnableTracing = true;
_fixture.Options.TracesSampleRate = 1.0;
var hub = _fixture.GetSut();

// Act
Expand All @@ -676,7 +678,9 @@ public void StartTransaction_DisableTracing_Sampler_SampledOut()
{
// Arrange
_fixture.Options.TracesSampler = _ => 1.0;
#pragma warning disable CS0618 // Type or member is obsolete
_fixture.Options.EnableTracing = false;
#pragma warning restore CS0618 // Type or member is obsolete
var hub = _fixture.GetSut();

// Act
Expand Down
Loading

0 comments on commit a868b2e

Please sign in to comment.