diff --git a/.github/workflows/steamkit2-build.yaml b/.github/workflows/steamkit2-build.yaml index 1cf120b9d..3f2335723 100644 --- a/.github/workflows/steamkit2-build.yaml +++ b/.github/workflows/steamkit2-build.yaml @@ -49,8 +49,16 @@ jobs: if: matrix.os == 'windows-latest' - name: Run Tests - if: matrix.configuration == 'Debug' - run: dotnet test --verbosity normal SteamKit2/Tests/Tests.csproj /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput='./Coverage/lcov.info' /p:Include="[SteamKit2]SteamKit*" /p:Exclude="[SteamKit2]SteamKit2*Internal*" + run: > + dotnet test + --configuration ${{ matrix.configuration }} + --verbosity normal + SteamKit2/Tests/Tests.csproj + /p:CollectCoverage=true + /p:CoverletOutputFormat=lcov + /p:CoverletOutput='./Coverage/lcov.info' + /p:Include="[SteamKit2]SteamKit*" + /p:Exclude="[SteamKit2]SteamKit2*Internal*" - name: Upload test coverage uses: codecov/codecov-action@v4 diff --git a/SteamKit2/Tests/AsyncJobFacts.cs b/SteamKit2/Tests/AsyncJobFacts.cs index ceebf2500..6a2cccc47 100644 --- a/SteamKit2/Tests/AsyncJobFacts.cs +++ b/SteamKit2/Tests/AsyncJobFacts.cs @@ -14,29 +14,45 @@ class Callback : CallbackMsg } [Fact] - public void AsyncJobCtorRegistersJob() + public void AysncJobCompletesOnCallback() { SteamClient client = new SteamClient(); AsyncJob asyncJob = new AsyncJob( client, 123 ); + Task asyncTask = asyncJob.ToTask(); - Assert.True( client.jobManager.asyncJobs.ContainsKey( asyncJob ), "Async job dictionary should contain the jobid key" ); - Assert.True( client.jobManager.asyncJobs.ContainsKey( 123 ), "Async job dictionary should contain jobid key as a value type" ); + client.PostCallback( new Callback { JobID = 123 } ); + + Assert.True( asyncTask.IsCompleted, "Async job should be completed after callback is posted" ); + Assert.False( asyncTask.IsCanceled, "Async job should not be canceled after callback is posted" ); + Assert.False( asyncTask.IsFaulted, "Async job should not be faulted after callback is posted" ); } [Fact] - public void AysncJobCompletesOnCallback() + public async Task AsyncJobGivesBackCallback() { SteamClient client = new SteamClient(); AsyncJob asyncJob = new AsyncJob( client, 123 ); - Task asyncTask = asyncJob.ToTask(); + Task jobTask = asyncJob.ToTask(); - client.PostCallback( new Callback { JobID = 123 } ); + Callback ourCallback = new Callback { JobID = 123 }; - Assert.True( asyncTask.IsCompleted, "Async job should be completed after callback is posted" ); - Assert.False( asyncTask.IsCanceled, "Async job should not be canceled after callback is posted" ); - Assert.False( asyncTask.IsFaulted, "Async job should not be faulted after callback is posted" ); + client.PostCallback( ourCallback ); + + Assert.Same( await jobTask, ourCallback ); + } + +#if DEBUG + [Fact] + public void AsyncJobCtorRegistersJob() + { + SteamClient client = new SteamClient(); + + AsyncJob asyncJob = new AsyncJob( client, 123 ); + + Assert.True( client.jobManager.asyncJobs.ContainsKey( asyncJob ), "Async job dictionary should contain the jobid key" ); + Assert.True( client.jobManager.asyncJobs.ContainsKey( 123 ), "Async job dictionary should contain jobid key as a value type" ); } [Fact] @@ -60,7 +76,7 @@ public async Task AsyncJobClearsOnTimeout() AsyncJob asyncJob = new AsyncJob( client, 123 ); asyncJob.Timeout = TimeSpan.FromMilliseconds( 50 ); - await Task.Delay( TimeSpan.FromMilliseconds( 70 ) ); + await Task.Delay( TimeSpan.FromMilliseconds( 70 ), TestContext.Current.CancellationToken ); client.jobManager.CancelTimedoutJobs(); Assert.False( client.jobManager.asyncJobs.ContainsKey( asyncJob ), "Async job dictionary should no longer contain jobid key after timeout" ); @@ -84,21 +100,6 @@ public async Task AsyncJobCancelsOnSetFailedTimeout() await Assert.ThrowsAsync( async () => await asyncTask ); } - [Fact] - public async Task AsyncJobGivesBackCallback() - { - SteamClient client = new SteamClient(); - - AsyncJob asyncJob = new AsyncJob( client, 123 ); - Task jobTask = asyncJob.ToTask(); - - Callback ourCallback = new Callback { JobID = 123 }; - - client.PostCallback( ourCallback ); - - Assert.Same( await jobTask, ourCallback ); - } - [Fact] public async Task AsyncJobTimesout() { @@ -109,7 +110,7 @@ public async Task AsyncJobTimesout() Task asyncTask = asyncJob.ToTask(); - await Task.Delay( TimeSpan.FromMilliseconds( 70 ) ); + await Task.Delay( TimeSpan.FromMilliseconds( 70 ), TestContext.Current.CancellationToken ); client.jobManager.CancelTimedoutJobs(); Assert.True( asyncTask.IsCompleted, "Async job should be completed yet" ); @@ -206,7 +207,7 @@ public async Task AsyncJobMultipleClearsOnTimeout() AsyncJobMultiple asyncJob = new AsyncJobMultiple( client, 123, ccall => true ); asyncJob.Timeout = TimeSpan.FromMilliseconds( 50 ); - await Task.Delay( TimeSpan.FromMilliseconds( 70 ) ); + await Task.Delay( TimeSpan.FromMilliseconds( 70 ), TestContext.Current.CancellationToken ); client.jobManager.CancelTimedoutJobs(); Assert.False( client.jobManager.asyncJobs.ContainsKey( asyncJob ), "Async job dictionary should no longer contain jobid key after timeout" ); @@ -232,7 +233,7 @@ public async Task AsyncJobMultipleExtendsTimeoutOnMessage() asyncJob.AddResult( new Callback { JobID = 123, IsFinished = false } ); // delay for what the original timeout would have been - await Task.Delay( TimeSpan.FromMilliseconds( 70 ) ); + await Task.Delay( TimeSpan.FromMilliseconds( 70 ), TestContext.Current.CancellationToken ); client.jobManager.CancelTimedoutJobs(); @@ -259,7 +260,7 @@ public async Task AsyncJobMultipleTimesout() Task.ResultSet> asyncTask = asyncJob.ToTask(); - await Task.Delay( TimeSpan.FromMilliseconds( 70 ) ); + await Task.Delay( TimeSpan.FromMilliseconds( 70 ), TestContext.Current.CancellationToken ); client.jobManager.CancelTimedoutJobs(); Assert.True( asyncTask.IsCompleted, "AsyncJobMultiple should be completed after job timeout" ); @@ -286,7 +287,7 @@ public async Task AsyncJobMultipleCompletesOnIncompleteResult() // adding a result will extend the job's timeout, but we'll cheat here and decrease it asyncJob.Timeout = TimeSpan.FromMilliseconds( 50 ); - await Task.Delay( TimeSpan.FromMilliseconds( 70 ) ); + await Task.Delay( TimeSpan.FromMilliseconds( 70 ), TestContext.Current.CancellationToken ); client.jobManager.CancelTimedoutJobs(); Assert.True( asyncTask.IsCompleted, "AsyncJobMultiple should be completed on partial (timed out) result set" ); @@ -412,5 +413,6 @@ static void WaitForTaskWithoutRunningInline( Task task ) using var cts = new CancellationTokenSource(); task.Wait( cts.Token ); } +#endif } } diff --git a/SteamKit2/Tests/CDNClientFacts.cs b/SteamKit2/Tests/CDNClientFacts.cs index 45ec58aa2..0c4c5ec40 100644 --- a/SteamKit2/Tests/CDNClientFacts.cs +++ b/SteamKit2/Tests/CDNClientFacts.cs @@ -9,6 +9,7 @@ namespace Tests { +#if DEBUG public class CDNClientFacts { [Fact] @@ -124,4 +125,5 @@ protected override Task SendAsync( HttpRequestMessage reque => Task.FromResult( new HttpResponseMessage( ( HttpStatusCode )418 ) ); } } +#endif } diff --git a/SteamKit2/Tests/CMClientFacts.cs b/SteamKit2/Tests/CMClientFacts.cs index 7816474c5..9f578128d 100644 --- a/SteamKit2/Tests/CMClientFacts.cs +++ b/SteamKit2/Tests/CMClientFacts.cs @@ -6,6 +6,8 @@ namespace Tests { +#if DEBUG + [Collection( nameof( NotThreadSafeResourceCollection ) )] public class CMClientFacts { [Fact] @@ -78,4 +80,5 @@ static byte[] Serialize(ISteamSerializableHeader hdr) return ms.ToArray(); } } +#endif } diff --git a/SteamKit2/Tests/CallbackManagerFacts.cs b/SteamKit2/Tests/CallbackManagerFacts.cs index c7c2ca7e8..0831b283d 100644 --- a/SteamKit2/Tests/CallbackManagerFacts.cs +++ b/SteamKit2/Tests/CallbackManagerFacts.cs @@ -222,7 +222,7 @@ void action( CallbackForTest cb ) for ( var i = 1; i <= callbacks.Length; i++ ) { - await mgr.RunWaitCallbackAsync(); + await mgr.RunWaitCallbackAsync( TestContext.Current.CancellationToken ); Assert.Equal( i, numCallbacksRun ); } diff --git a/SteamKit2/Tests/ClientMsgFacts.cs b/SteamKit2/Tests/ClientMsgFacts.cs index 107f835a5..95f8b4c89 100644 --- a/SteamKit2/Tests/ClientMsgFacts.cs +++ b/SteamKit2/Tests/ClientMsgFacts.cs @@ -4,6 +4,7 @@ namespace Tests { +#if DEBUG public class ClientMsgFacts { // this test vector is a packet meant for a ClientMsg @@ -67,4 +68,5 @@ static IPacketMsg BuildStructMsg() return CMClient.GetPacketMsg( structMsgData, DebugLogContext.Instance ); } } +#endif } diff --git a/SteamKit2/Tests/DebugLogFacts.cs b/SteamKit2/Tests/DebugLogFacts.cs index 288104443..3432ee865 100644 --- a/SteamKit2/Tests/DebugLogFacts.cs +++ b/SteamKit2/Tests/DebugLogFacts.cs @@ -1,9 +1,11 @@ -using SteamKit2; +using System.Threading.Tasks; +using SteamKit2; using Xunit; -using Xunit.Sdk; +using Xunit.v3; namespace Tests { +#if DEBUG class TestListener : IDebugListener { public void WriteLine( string category, string msg ) @@ -15,19 +17,21 @@ public void WriteLine( string category, string msg ) class DebugLogSetupTeardownAttribute : BeforeAfterTestAttribute { - public override void Before( System.Reflection.MethodInfo methodUnderTest ) + public override ValueTask Before( System.Reflection.MethodInfo methodUnderTest, IXunitTest test ) { DebugLog.ClearListeners(); + return ValueTask.CompletedTask; } - public override void After( System.Reflection.MethodInfo methodUnderTest ) + public override ValueTask After( System.Reflection.MethodInfo methodUnderTest, IXunitTest test ) { DebugLog.Enabled = false; DebugLog.ClearListeners(); + return ValueTask.CompletedTask; } } - [CollectionDefinition( nameof( DebugLogFacts ), DisableParallelization = true )] + [Collection( nameof( NotThreadSafeResourceCollection ) )] public class DebugLogFacts { [Fact, DebugLogSetupTeardown] @@ -163,4 +167,5 @@ public void CustomCMClientIDPrefixed() Assert.Equal( "My 1st message", message ); } } +#endif } diff --git a/SteamKit2/Tests/KeyValueFacts.cs b/SteamKit2/Tests/KeyValueFacts.cs index 6a3797844..0f9761eff 100644 --- a/SteamKit2/Tests/KeyValueFacts.cs +++ b/SteamKit2/Tests/KeyValueFacts.cs @@ -286,7 +286,7 @@ public void KeyValueBinarySerializationIsSymmetric() [Fact] public void KeyValues_TryReadAsBinary_ReadsBinary() { - var binary = Utils.DecodeHexString( TestObjectHex ); + var binary = Convert.FromHexString( TestObjectHex ); var kv = new KeyValue(); bool success; using ( var ms = new MemoryStream( binary ) ) @@ -305,7 +305,7 @@ public void KeyValues_TryReadAsBinary_ReadsBinary() [Fact] public void KeyValuesReadsBinaryWithLeftoverData() { - var binary = Utils.DecodeHexString( TestObjectHex + Guid.NewGuid().ToString().Replace("-", "", StringComparison.Ordinal) ); + var binary = Convert.FromHexString( TestObjectHex + Guid.NewGuid().ToString().Replace("-", "", StringComparison.Ordinal) ); var kv = new KeyValue(); bool success; using ( var ms = new MemoryStream( binary ) ) @@ -328,7 +328,7 @@ public void KeyValuesFailsToReadTruncatedBinary() // Test every possible truncation boundary we have. for ( int i = 0; i < TestObjectHex.Length; i += 2 ) { - var binary = Utils.DecodeHexString( TestObjectHex[ ..i ] ); + var binary = Convert.FromHexString( TestObjectHex[ ..i ] ); var kv = new KeyValue(); bool success; using ( var ms = new MemoryStream( binary ) ) @@ -345,7 +345,7 @@ public void KeyValuesFailsToReadTruncatedBinary() public void KeyValuesReadsBinaryWithMultipleChildren() { var hex = "00546573744f626a65637400016b6579310076616c75653100016b6579320076616c756532000808"; - var binary = Utils.DecodeHexString( hex ); + var binary = Convert.FromHexString( hex ); var kv = new KeyValue(); bool success; using ( var ms = new MemoryStream( binary ) ) @@ -603,7 +603,7 @@ public void KeyValuesBinaryPreserveEmptyObjects() public void DecodesBinaryWithFieldType10() { var hex = "00546573744F626A656374000A6B65790001020304050607080808"; - var binary = Utils.DecodeHexString( hex ); + var binary = Convert.FromHexString( hex ); var kv = new KeyValue(); using (var ms = new MemoryStream(binary)) { diff --git a/SteamKit2/Tests/MachineInfoFacts.cs b/SteamKit2/Tests/MachineInfoFacts.cs index c0b0005f2..0f9e82fab 100644 --- a/SteamKit2/Tests/MachineInfoFacts.cs +++ b/SteamKit2/Tests/MachineInfoFacts.cs @@ -7,6 +7,7 @@ namespace Tests { +#if DEBUG public class MachineInfoFacts { [Fact] @@ -90,7 +91,7 @@ public void GenerationIsThreadSafe() threads[i] = new Thread(state => { var provider = (IMachineInfoProvider)state; - trigger.Wait(); + trigger.Wait( TestContext.Current.CancellationToken ); HardwareUtils.Init(provider); HardwareUtils.GetMachineID(provider); }); @@ -201,4 +202,5 @@ sealed class ThrowingMachineInfoProvider : IMachineInfoProvider public byte[] GetMachineGuid() => throw new InvalidOperationException("This provider only throws."); } } +#endif } diff --git a/SteamKit2/Tests/NetHelpersFacts.cs b/SteamKit2/Tests/NetHelpersFacts.cs index ede49e5ad..23aff3d20 100644 --- a/SteamKit2/Tests/NetHelpersFacts.cs +++ b/SteamKit2/Tests/NetHelpersFacts.cs @@ -4,6 +4,7 @@ namespace Tests { +#if DEBUG public class NetHelpersFacts { [Fact] @@ -67,4 +68,5 @@ public void TryParseIPEndPoint() Assert.Equal( new IPEndPoint( IPAddress.IPv6Loopback, 1337 ), parsedIpv6 ); } } +#endif } diff --git a/SteamKit2/Tests/NotThreadSafeResourceCollection.cs b/SteamKit2/Tests/NotThreadSafeResourceCollection.cs new file mode 100644 index 000000000..c7cb8be0a --- /dev/null +++ b/SteamKit2/Tests/NotThreadSafeResourceCollection.cs @@ -0,0 +1,9 @@ +using Xunit; + +namespace Tests; + +[CollectionDefinition( nameof( NotThreadSafeResourceCollection ), DisableParallelization = true )] +public class NotThreadSafeResourceCollection +{ + // DebugLog is not thread-safe. +} diff --git a/SteamKit2/Tests/SmartCMServerListFacts.cs b/SteamKit2/Tests/SmartCMServerListFacts.cs index 0277b37bb..d481fc3bd 100644 --- a/SteamKit2/Tests/SmartCMServerListFacts.cs +++ b/SteamKit2/Tests/SmartCMServerListFacts.cs @@ -8,6 +8,7 @@ namespace Tests { + [Collection( nameof( NotThreadSafeResourceCollection ) )] public class SmartCMServerListFacts { public SmartCMServerListFacts() @@ -69,6 +70,51 @@ public void GetNextServerCandidate_ReturnsServer_IfListHasServers() Assert.Equal( ProtocolTypes.Tcp, nextRecord.ProtocolTypes ); } + [Fact] + public void GetNextServerCandidate_OnlyReturnsMatchingServerOfType() + { + var record = ServerRecord.CreateWebSocketServer( "localhost:443" ); + serverList.ReplaceList( new List() { record } ); + + var endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Tcp ); + Assert.Null( endPoint ); + endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Udp ); + Assert.Null( endPoint ); + endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Tcp | ProtocolTypes.Udp ); + Assert.Null( endPoint ); + + endPoint = serverList.GetNextServerCandidate( ProtocolTypes.WebSocket ); + Assert.Equal( record.EndPoint, endPoint.EndPoint ); + Assert.Equal( ProtocolTypes.WebSocket, endPoint.ProtocolTypes ); + + endPoint = serverList.GetNextServerCandidate( ProtocolTypes.All ); + Assert.Equal( record.EndPoint, endPoint.EndPoint ); + Assert.Equal( ProtocolTypes.WebSocket, endPoint.ProtocolTypes ); + + record = ServerRecord.CreateSocketServer( new IPEndPoint( IPAddress.Loopback, 27015 ) ); + serverList.ReplaceList( new List() { record } ); + + endPoint = serverList.GetNextServerCandidate( ProtocolTypes.WebSocket ); + Assert.Null( endPoint ); + + endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Tcp ); + Assert.Equal( record.EndPoint, endPoint.EndPoint ); + Assert.Equal( ProtocolTypes.Tcp, endPoint.ProtocolTypes ); + + endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Udp ); + Assert.Equal( record.EndPoint, endPoint.EndPoint ); + Assert.Equal( ProtocolTypes.Udp, endPoint.ProtocolTypes ); + + endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Tcp | ProtocolTypes.Udp ); + Assert.Equal( record.EndPoint, endPoint.EndPoint ); + Assert.Equal( ProtocolTypes.Tcp, endPoint.ProtocolTypes ); + + endPoint = serverList.GetNextServerCandidate( ProtocolTypes.All ); + Assert.Equal( record.EndPoint, endPoint.EndPoint ); + Assert.Equal( ProtocolTypes.Tcp, endPoint.ProtocolTypes ); + } + +#if DEBUG [Fact] public void GetNextServerCandidate_ReturnsServer_IfListHasServers_EvenIfAllServersAreBad() { @@ -138,50 +184,6 @@ public void GetNextServerCandidate_AllEndpointsByHostAreBad() Assert.Equal( serverBRecord.EndPoint, nextRecord.EndPoint ); Assert.Equal( ProtocolTypes.Tcp, nextRecord.ProtocolTypes ); } - - [Fact] - public void GetNextServerCandidate_OnlyReturnsMatchingServerOfType() - { - var record = ServerRecord.CreateWebSocketServer( "localhost:443" ); - serverList.ReplaceList( new List() { record } ); - - var endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Tcp ); - Assert.Null( endPoint ); - endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Udp ); - Assert.Null( endPoint ); - endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Tcp | ProtocolTypes.Udp); - Assert.Null( endPoint ); - - endPoint = serverList.GetNextServerCandidate( ProtocolTypes.WebSocket ); - Assert.Equal( record.EndPoint, endPoint.EndPoint ); - Assert.Equal( ProtocolTypes.WebSocket, endPoint.ProtocolTypes ); - - endPoint = serverList.GetNextServerCandidate( ProtocolTypes.All ); - Assert.Equal( record.EndPoint, endPoint.EndPoint ); - Assert.Equal( ProtocolTypes.WebSocket, endPoint.ProtocolTypes ); - - record = ServerRecord.CreateSocketServer( new IPEndPoint( IPAddress.Loopback, 27015 ) ); - serverList.ReplaceList( new List() { record } ); - - endPoint = serverList.GetNextServerCandidate( ProtocolTypes.WebSocket ); - Assert.Null( endPoint ); - - endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Tcp ); - Assert.Equal( record.EndPoint, endPoint.EndPoint ); - Assert.Equal( ProtocolTypes.Tcp, endPoint.ProtocolTypes ); - - endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Udp); - Assert.Equal( record.EndPoint, endPoint.EndPoint ); - Assert.Equal( ProtocolTypes.Udp, endPoint.ProtocolTypes ); - - endPoint = serverList.GetNextServerCandidate( ProtocolTypes.Tcp | ProtocolTypes.Udp ); - Assert.Equal( record.EndPoint, endPoint.EndPoint ); - Assert.Equal( ProtocolTypes.Tcp, endPoint.ProtocolTypes ); - - endPoint = serverList.GetNextServerCandidate( ProtocolTypes.All ); - Assert.Equal( record.EndPoint, endPoint.EndPoint ); - Assert.Equal( ProtocolTypes.Tcp, endPoint.ProtocolTypes ); - } [Fact] public void GetNextServerCandidate_MarkIterateAllCandidates() @@ -263,5 +265,6 @@ public void TryMark_ReturnsFalse_IfServerNotInList() var marked = serverList.TryMark( new IPEndPoint( IPAddress.Loopback, 27016 ), record.ProtocolTypes, ServerQuality.Good ); Assert.False( marked ); } +#endif } } diff --git a/SteamKit2/Tests/SteamConfigurationFacts.cs b/SteamKit2/Tests/SteamConfigurationFacts.cs index 9a6c08d7d..15c0c4366 100644 --- a/SteamKit2/Tests/SteamConfigurationFacts.cs +++ b/SteamKit2/Tests/SteamConfigurationFacts.cs @@ -57,12 +57,14 @@ public void DefaultHttpClientFactory() Assert.Equal( "SteamKit/" + steamKitAssemblyVersion.ToString( fieldCount: 3 ), client.DefaultRequestHeaders.UserAgent.ToString() ); } +#if DEBUG [Fact] public void DefaultMachineInfoProvider() { Assert.NotNull(configuration.MachineInfoProvider); Assert.IsNotType(configuration.MachineInfoProvider); } +#endif [Fact] public void ServerListProviderIsNothingFancy() diff --git a/SteamKit2/Tests/StreamHelpersFacts.cs b/SteamKit2/Tests/StreamHelpersFacts.cs index 1a2f58047..76c0d2e4c 100644 --- a/SteamKit2/Tests/StreamHelpersFacts.cs +++ b/SteamKit2/Tests/StreamHelpersFacts.cs @@ -10,6 +10,7 @@ namespace Tests { +#if DEBUG public class StreamHelpersFacts { [Fact] @@ -125,4 +126,5 @@ static IConvertible ReadValue(int threadNumber, Stream s) } } } +#endif } diff --git a/SteamKit2/Tests/Tests.csproj b/SteamKit2/Tests/Tests.csproj index 128ce97ce..1f0d59ef7 100644 --- a/SteamKit2/Tests/Tests.csproj +++ b/SteamKit2/Tests/Tests.csproj @@ -5,6 +5,7 @@ LatestMajor true true + Exe @@ -13,11 +14,15 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - - + all runtime; build; native; contentfiles; analyzers; buildtransitive + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + diff --git a/SteamKit2/Tests/WebAPIFacts.cs b/SteamKit2/Tests/WebAPIFacts.cs index ccf0156ee..e7f26229d 100644 --- a/SteamKit2/Tests/WebAPIFacts.cs +++ b/SteamKit2/Tests/WebAPIFacts.cs @@ -28,6 +28,7 @@ public void WebAPIAsyncHasDefaultTimeout() Assert.Equal( iface.Timeout, TimeSpan.FromSeconds( 100 ) ); } +#if DEBUG [Fact] public void SteamConfigWebAPIInterface() { @@ -41,6 +42,7 @@ public void SteamConfigWebAPIInterface() Assert.Equal( "hello world", iface.apiKey ); Assert.Equal( new Uri( "http://example.com" ), iface.httpClient.BaseAddress ); } +#endif [Fact] public async Task ThrowsWebAPIRequestExceptionIfRequestUnsuccessful() @@ -210,7 +212,7 @@ public async Task UsesSingleParameterArgumentsDictionary() Assert.Equal( "/IFooService/PerformFooOperation/v2/", request.RequestUri.AbsolutePath ); Assert.Equal( HttpMethod.Put, request.Method ); - var content = await request.Content.ReadAsStringAsync(); // This technically should be ReadAsFormDataAsync + var content = await request.Content.ReadAsStringAsync( TestContext.Current.CancellationToken ); // This technically should be ReadAsFormDataAsync var formData = HttpUtility.ParseQueryString( content ); Assert.Equal( 3, formData.Count ); Assert.Equal( "foo", formData[ "f" ] ); diff --git a/SteamKit2/Tests/WebSocketUriFacts.cs b/SteamKit2/Tests/WebSocketUriFacts.cs index 11bcd443c..fde3001ac 100644 --- a/SteamKit2/Tests/WebSocketUriFacts.cs +++ b/SteamKit2/Tests/WebSocketUriFacts.cs @@ -5,6 +5,7 @@ namespace Tests { +#if DEBUG public class WebSocketUriFacts { [Fact] @@ -38,4 +39,5 @@ class DummyEndPoint : EndPoint { } } +#endif }