Skip to content

Commit

Permalink
test(http_client_conformance_tests): add canRelyOnContentLength flag
Browse files Browse the repository at this point in the history
  • Loading branch information
Zekfad committed Feb 8, 2024
1 parent 5179d1c commit 74d79eb
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ export 'src/server_errors_test.dart' show testServerErrors;
/// If [canReceiveSetCookieHeaders] is `false` then tests that require that
/// "set-cookie" headers be received by the client will not be run.
///
/// If [canRelyOnContentLength] is `false` then tests that require that
/// "content-length" header to be fully reliable will not be run.
/// Web browsers are handling content decoding and original body size is not
/// available. See https://fetch.spec.whatwg.org/#ref-for-handle-content-codings%E2%91%A0
///
/// The tests are run against a series of HTTP servers that are started by the
/// tests. If the tests are run in the browser, then the test servers are
/// started in another process. Otherwise, the test servers are run in-process.
Expand All @@ -76,6 +81,7 @@ void testAll(
bool preservesMethodCase = false,
bool canSendCookieHeaders = false,
bool canReceiveSetCookieHeaders = false,
bool canRelyOnContentLength = true,
}) {
testRequestBody(clientFactory());
testRequestBodyStreamed(clientFactory(),
Expand All @@ -86,7 +92,8 @@ void testAll(
canStreamResponseBody: canStreamResponseBody);
testRequestHeaders(clientFactory());
testRequestMethods(clientFactory(), preservesMethodCase: preservesMethodCase);
testResponseHeaders(clientFactory());
testResponseHeaders(clientFactory(),
canRelyOnContentLength: canRelyOnContentLength);
testResponseStatusLine(clientFactory());
testRedirect(clientFactory(), redirectAlwaysAllowed: redirectAlwaysAllowed);
testServerErrors(clientFactory());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import 'response_headers_server_vm.dart'
if (dart.library.js_interop) 'response_headers_server_web.dart';

/// Tests that the [Client] correctly processes response headers.
void testResponseHeaders(Client client) async {
void testResponseHeaders(Client client,
{bool canRelyOnContentLength = true}) async {
group('server headers', () {
late String host;
late StreamChannel<Object?> httpServerChannel;
Expand Down Expand Up @@ -151,7 +152,9 @@ void testResponseHeaders(Client client) async {
httpServerChannel.sink.add('content-length: 100\r\n');
await expectLater(
client.get(Uri.http(host, '')), throwsA(isA<ClientException>()));
});
},
skip:
canRelyOnContentLength ? false : 'cannot rely on content length');
});

group('folded headers', () {
Expand Down

0 comments on commit 74d79eb

Please sign in to comment.