[d16-4] [Tests] If we have server errors. Mark test as inconclusive. (#7417)

If we are getting errors (500,401..) do not mark a link all test as a
failure, but as inconclusive.

Fixes: https://github.com/xamarin/maccore/issues/2056
This commit is contained in:
monojenkins 2019-11-12 21:45:06 +01:00 коммит произвёл Manuel de la Pena
Родитель 9297672d22
Коммит b69e72ba5c
1 изменённых файлов: 22 добавлений и 6 удалений

Просмотреть файл

@ -21,15 +21,27 @@ 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;
waited = true;
bool success = !String.IsNullOrEmpty (content);
Assert.IsTrue (success, $"received {content.Length} bytes");
// 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]
@ -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 ();
Assert.IsTrue (waited, "async/await worked");
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);
}