[Tests] If we have server errors. Mark test as inconclusive. (#7401)
If we are getting errors (500,401..) do not mark a link all test as a failure, but as inconclusive. Update the urls since msdn is giving always a 500. Fixes: https://github.com/xamarin/maccore/issues/2056
This commit is contained in:
Родитель
268f9e8c23
Коммит
ca98880277
|
@ -21,16 +21,28 @@ namespace LinkAnyTest {
|
|||
}
|
||||
|
||||
static bool waited;
|
||||
static bool requestError;
|
||||
static HttpStatusCode statusCode;
|
||||
|
||||
|
||||
// http://blogs.msdn.com/b/csharpfaq/archive/2012/06/26/understanding-a-simple-async-program.aspx
|
||||
// ref: https://bugzilla.xamarin.com/show_bug.cgi?id=7114
|
||||
static async Task GetWebPageAsync ()
|
||||
{
|
||||
Task<string> getWebPageTask = new HttpClient ().GetStringAsync ("http://msdn.microsoft.com");
|
||||
string content = await getWebPageTask;
|
||||
// do not use GetStringAsync, we are going to miss useful data, such as the resul code
|
||||
using (var client = new HttpClient ()) {
|
||||
HttpResponseMessage response = await client.GetAsync ("http://example.com");
|
||||
if(!response.IsSuccessStatusCode) {
|
||||
requestError = true;
|
||||
statusCode = response.StatusCode;
|
||||
} else {
|
||||
string content = await response.Content.ReadAsStringAsync ();
|
||||
waited = true;
|
||||
bool success = !String.IsNullOrEmpty (content);
|
||||
Assert.IsTrue (success, $"received {content.Length} bytes");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetWebPageAsyncTest ()
|
||||
|
@ -40,7 +52,11 @@ namespace LinkAnyTest {
|
|||
// we do not want the async code to get back to the AppKit thread, hanging the process
|
||||
SynchronizationContext.SetSynchronizationContext (null);
|
||||
GetWebPageAsync ().Wait ();
|
||||
if (requestError) {
|
||||
Assert.Inconclusive ($"Test cannot be trusted. Issues performing the request. Status code '{statusCode}'");
|
||||
} else {
|
||||
Assert.IsTrue (waited, "async/await worked");
|
||||
}
|
||||
} finally {
|
||||
SynchronizationContext.SetSynchronizationContext (current_sc);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче