Fix tests when running on non-US locale (#2501)
This commit is contained in:
parent
b124cb5283
commit
5b22616a63
|
|
@ -1,3 +1,6 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
@ -508,8 +511,9 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var startTask = hubConnection.StartAsync(cts.Token);
|
var startTask = hubConnection.StartAsync(cts.Token);
|
||||||
var exception = await Assert.ThrowsAnyAsync<OperationCanceledException>(() => startTask.OrTimeout());
|
await Assert.ThrowsAnyAsync<OperationCanceledException>(() => startTask.OrTimeout());
|
||||||
Assert.Equal("The operation was canceled.", exception.Message);
|
|
||||||
|
// We aren't worried about the exact message and it's localized so asserting it is non-trivial.
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,9 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
|
||||||
await hubConnection.StartAsync().OrTimeout();
|
await hubConnection.StartAsync().OrTimeout();
|
||||||
|
|
||||||
var exception = Assert.IsType<TimeoutException>(await closeTcs.Task.OrTimeout());
|
var exception = Assert.IsType<TimeoutException>(await closeTcs.Task.OrTimeout());
|
||||||
Assert.Equal("Server timeout (100.00ms) elapsed without receiving a message from the server.", exception.Message);
|
|
||||||
|
// We use an interpolated string so the tests are accurate on non-US machines.
|
||||||
|
Assert.Equal($"Server timeout ({hubConnection.ServerTimeout.TotalMilliseconds:0.00}ms) elapsed without receiving a message from the server.", exception.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -137,7 +139,9 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
|
||||||
var invokeTask = hubConnection.InvokeAsync("Method").OrTimeout();
|
var invokeTask = hubConnection.InvokeAsync("Method").OrTimeout();
|
||||||
|
|
||||||
var exception = await Assert.ThrowsAsync<TimeoutException>(() => invokeTask);
|
var exception = await Assert.ThrowsAsync<TimeoutException>(() => invokeTask);
|
||||||
Assert.Equal("Server timeout (2000.00ms) elapsed without receiving a message from the server.", exception.Message);
|
|
||||||
|
// We use an interpolated string so the tests are accurate on non-US machines.
|
||||||
|
Assert.Equal($"Server timeout ({hubConnection.ServerTimeout.TotalMilliseconds:0.00}ms) elapsed without receiving a message from the server.", exception.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -363,7 +363,9 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
|
||||||
var sseTransport = new ServerSentEventsTransport(httpClient, loggerFactory);
|
var sseTransport = new ServerSentEventsTransport(httpClient, loggerFactory);
|
||||||
|
|
||||||
var ex = await Assert.ThrowsAsync<ArgumentException>(() => sseTransport.StartAsync(new Uri("http://fakeuri.org"), TransferFormat.Binary).OrTimeout());
|
var ex = await Assert.ThrowsAsync<ArgumentException>(() => sseTransport.StartAsync(new Uri("http://fakeuri.org"), TransferFormat.Binary).OrTimeout());
|
||||||
Assert.Equal($"The 'Binary' transfer format is not supported by this transport.{Environment.NewLine}Parameter name: transferFormat", ex.Message);
|
|
||||||
|
Assert.Equal("transferFormat", ex.ParamName);
|
||||||
|
Assert.Equal($"The 'Binary' transfer format is not supported by this transport.", ex.GetLocalizationSafeMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.SignalR.Tests
|
||||||
|
{
|
||||||
|
public static class ExceptionMessageExtensions
|
||||||
|
{
|
||||||
|
public static string GetLocalizationSafeMessage(this ArgumentException argEx)
|
||||||
|
{
|
||||||
|
// Strip off the last line since it's "Parameter Name: [parameterName]" and:
|
||||||
|
// 1. We verify the parameter name separately
|
||||||
|
// 2. It is localized, so we don't want our tests to break in non-US environments
|
||||||
|
var message = argEx.Message;
|
||||||
|
var lastNewline = message.LastIndexOf(Environment.NewLine, StringComparison.Ordinal);
|
||||||
|
if (lastNewline < 0)
|
||||||
|
{
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
return message.Substring(0, lastNewline);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue