Use hostname that's bound in order to support "any" via HttpMultiServer (#858)
* Use hostname that's bound in order to support "any" via HttpMultiServer
diff --git a/dwds/lib/dwds.dart b/dwds/lib/dwds.dart
index 8cc88ef..97701af 100644
--- a/dwds/lib/dwds.dart
+++ b/dwds/lib/dwds.dart
@@ -93,7 +93,7 @@
extensionBackend = await ExtensionBackend.start(hostname);
extensionUri = Uri(
scheme: 'http',
- host: hostname,
+ host: extensionBackend.hostname,
port: extensionBackend.port,
path: r'$debug')
.toString();
diff --git a/dwds/test/debug_extension_test.dart b/dwds/test/debug_extension_test.dart
index 540e079..e1b7272 100644
--- a/dwds/test/debug_extension_test.dart
+++ b/dwds/test/debug_extension_test.dart
@@ -77,4 +77,34 @@
expect(result.body.contains('http://some-encoded-url:8081/'), isTrue);
});
});
+
+ group('With "any" hostname', () {
+ final context = TestContext();
+ final uriPattern = RegExp(r'dartExtensionUri = "([^"]+)";');
+
+ setUp(() async {
+ await context.setUp(enableDebugExtension: true, hostname: 'any');
+ });
+
+ tearDown(() async {
+ await context.tearDown();
+ });
+
+ test('generates an extensionUri with a valid valid hostname', () async {
+ var result = await http.get(
+ 'http://localhost:${context.port}/hello_world/main.dart$bootstrapJsExtension');
+ expect(result.body.contains('dartExtensionUri'), isTrue);
+ var extensionUri = Uri.parse(uriPattern.firstMatch(result.body).group(1));
+ expect(
+ extensionUri.host,
+ anyOf(
+ // The hostname should've been mapped from "any" to one of the local
+ // loopback addresses/IPs.
+ equals('localhost'),
+ equals('127.0.0.1'),
+ equals('::'),
+ equals('::1'),
+ ));
+ });
+ });
}
diff --git a/dwds/test/fixtures/context.dart b/dwds/test/fixtures/context.dart
index fa2736e..dde0a6b 100644
--- a/dwds/test/fixtures/context.dart
+++ b/dwds/test/fixtures/context.dart
@@ -70,6 +70,7 @@
bool enableDebugExtension,
bool autoRun,
bool enableDebugging,
+ String hostname,
bool waitToDebug,
UrlEncoder urlEncoder,
bool restoreBreakpoints}) async {
@@ -135,6 +136,7 @@
port = await findUnusedPort();
testServer = await TestServer.start(
+ hostname,
port,
daemonPort(workingDirectory),
pathToServe,
diff --git a/dwds/test/fixtures/server.dart b/dwds/test/fixtures/server.dart
index 957c182..f4b270f 100644
--- a/dwds/test/fixtures/server.dart
+++ b/dwds/test/fixtures/server.dart
@@ -42,6 +42,7 @@
}
static Future<TestServer> start(
+ String hostname,
int port,
int assetServerPort,
String target,
@@ -69,6 +70,7 @@
serveDevTools: serveDevTools,
enableDebugExtension: enableDebugExtension,
enableDebugging: enableDebugging,
+ hostname: hostname,
verbose: true,
urlEncoder: urlEncoder,
// ignore: deprecated_member_use_from_same_package