Move conformance test invocation into package:http (#718)

diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml
index 72a425a..75cce2f 100644
--- a/.github/workflows/dart.yml
+++ b/.github/workflows/dart.yml
@@ -125,16 +125,16 @@
         working-directory: pkgs/http_client_conformance_tests
         run: "dart format --output=none --set-exit-if-changed ."
   job_004:
-    name: "unit_test; Dart 2.14.0; PKGS: pkgs/http, pkgs/http_client_conformance_tests; `dart test --platform chrome`"
+    name: "unit_test; Dart 2.14.0; PKG: pkgs/http; `dart test --platform chrome`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@v3
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0;packages:pkgs/http-pkgs/http_client_conformance_tests;commands:test_1"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0;packages:pkgs/http;commands:test_1"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0;packages:pkgs/http-pkgs/http_client_conformance_tests
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0;packages:pkgs/http
             os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -152,30 +152,21 @@
         if: "always() && steps.pkgs_http_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/http
         run: dart test --platform chrome
-      - id: pkgs_http_client_conformance_tests_pub_upgrade
-        name: pkgs/http_client_conformance_tests; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/http_client_conformance_tests
-        run: dart pub upgrade
-      - name: "pkgs/http_client_conformance_tests; dart test --platform chrome"
-        if: "always() && steps.pkgs_http_client_conformance_tests_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/http_client_conformance_tests
-        run: dart test --platform chrome
     needs:
       - job_001
       - job_002
       - job_003
   job_005:
-    name: "unit_test; Dart 2.14.0; PKGS: pkgs/http, pkgs/http_client_conformance_tests; `dart test --platform vm`"
+    name: "unit_test; Dart 2.14.0; PKG: pkgs/http; `dart test --platform vm`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@v3
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0;packages:pkgs/http-pkgs/http_client_conformance_tests;commands:test_0"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0;packages:pkgs/http;commands:test_0"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0;packages:pkgs/http-pkgs/http_client_conformance_tests
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0;packages:pkgs/http
             os:ubuntu-latest;pub-cache-hosted;sdk:2.14.0
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -193,30 +184,21 @@
         if: "always() && steps.pkgs_http_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/http
         run: dart test --platform vm
-      - id: pkgs_http_client_conformance_tests_pub_upgrade
-        name: pkgs/http_client_conformance_tests; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/http_client_conformance_tests
-        run: dart pub upgrade
-      - name: "pkgs/http_client_conformance_tests; dart test --platform vm"
-        if: "always() && steps.pkgs_http_client_conformance_tests_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/http_client_conformance_tests
-        run: dart test --platform vm
     needs:
       - job_001
       - job_002
       - job_003
   job_006:
-    name: "unit_test; Dart dev; PKGS: pkgs/http, pkgs/http_client_conformance_tests; `dart test --platform chrome`"
+    name: "unit_test; Dart dev; PKG: pkgs/http; `dart test --platform chrome`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@v3
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http-pkgs/http_client_conformance_tests;commands:test_1"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http;commands:test_1"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http-pkgs/http_client_conformance_tests
+            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -234,30 +216,21 @@
         if: "always() && steps.pkgs_http_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/http
         run: dart test --platform chrome
-      - id: pkgs_http_client_conformance_tests_pub_upgrade
-        name: pkgs/http_client_conformance_tests; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/http_client_conformance_tests
-        run: dart pub upgrade
-      - name: "pkgs/http_client_conformance_tests; dart test --platform chrome"
-        if: "always() && steps.pkgs_http_client_conformance_tests_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/http_client_conformance_tests
-        run: dart test --platform chrome
     needs:
       - job_001
       - job_002
       - job_003
   job_007:
-    name: "unit_test; Dart dev; PKGS: pkgs/http, pkgs/http_client_conformance_tests; `dart test --platform vm`"
+    name: "unit_test; Dart dev; PKG: pkgs/http; `dart test --platform vm`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@v3
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http-pkgs/http_client_conformance_tests;commands:test_0"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http;commands:test_0"
           restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http-pkgs/http_client_conformance_tests
+            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:pkgs/http
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -275,15 +248,6 @@
         if: "always() && steps.pkgs_http_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/http
         run: dart test --platform vm
-      - id: pkgs_http_client_conformance_tests_pub_upgrade
-        name: pkgs/http_client_conformance_tests; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/http_client_conformance_tests
-        run: dart pub upgrade
-      - name: "pkgs/http_client_conformance_tests; dart test --platform vm"
-        if: "always() && steps.pkgs_http_client_conformance_tests_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/http_client_conformance_tests
-        run: dart test --platform vm
     needs:
       - job_001
       - job_002
diff --git a/pkgs/http/pubspec.yaml b/pkgs/http/pubspec.yaml
index be066ef..06fa0c9 100644
--- a/pkgs/http/pubspec.yaml
+++ b/pkgs/http/pubspec.yaml
@@ -14,6 +14,8 @@
 
 dev_dependencies:
   fake_async: ^1.2.0
+  http_client_conformance_tests:
+    path: ../http_client_conformance_tests/
   lints: ^1.0.0
   shelf: ^1.1.0
   stream_channel: ^2.1.0
diff --git a/pkgs/http_client_conformance_tests/test/browser_client_test.dart b/pkgs/http/test/html/client_conformance_test.dart
similarity index 72%
rename from pkgs/http_client_conformance_tests/test/browser_client_test.dart
rename to pkgs/http/test/html/client_conformance_test.dart
index cbc484b..422b7cc 100644
--- a/pkgs/http_client_conformance_tests/test/browser_client_test.dart
+++ b/pkgs/http/test/html/client_conformance_test.dart
@@ -11,10 +11,8 @@
 void main() {
   final client = BrowserClient();
 
-  group('testAll', () {
-    testAll(client,
-        redirectAlwaysAllowed: true,
-        canStreamRequestBody: false,
-        canStreamResponseBody: false);
-  });
+  testAll(client,
+      redirectAlwaysAllowed: true,
+      canStreamRequestBody: false,
+      canStreamResponseBody: false);
 }
diff --git a/pkgs/http_client_conformance_tests/test/io_client_test.dart b/pkgs/http/test/io/client_conformance_test.dart
similarity index 85%
rename from pkgs/http_client_conformance_tests/test/io_client_test.dart
rename to pkgs/http/test/io/client_conformance_test.dart
index 7a13aab..0706031 100644
--- a/pkgs/http_client_conformance_tests/test/io_client_test.dart
+++ b/pkgs/http/test/io/client_conformance_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-@TestOn('!js')
+@TestOn('vm')
 
 import 'package:http/io_client.dart';
 import 'package:http_client_conformance_tests/http_client_conformance_tests.dart';
@@ -11,7 +11,5 @@
 void main() {
   final client = IOClient();
 
-  group('testAll', () {
-    testAll(client);
-  });
+  testAll(client);
 }
diff --git a/pkgs/http_client_conformance_tests/README.md b/pkgs/http_client_conformance_tests/README.md
index 73642a3..e96e364 100644
--- a/pkgs/http_client_conformance_tests/README.md
+++ b/pkgs/http_client_conformance_tests/README.md
@@ -34,3 +34,6 @@
   });
 }
 ```
+
+**Note**: This package does not have it's own tests, instead it is
+exercised by the tests in `package:http`.
diff --git a/pkgs/http_client_conformance_tests/lib/src/utils.dart b/pkgs/http_client_conformance_tests/lib/src/utils.dart
index 72307e6..4b52d90 100644
--- a/pkgs/http_client_conformance_tests/lib/src/utils.dart
+++ b/pkgs/http_client_conformance_tests/lib/src/utils.dart
@@ -1,4 +1,6 @@
-import 'dart:isolate';
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
 
 import 'package:stream_channel/stream_channel.dart';
 import 'package:test/test.dart';
@@ -7,20 +9,7 @@
 /// 'redirect_server.dart'.
 ///
 /// See [spawnHybridUri].
-Future<StreamChannel<Object?>> startServer(String fileName) async {
-  try {
-    final fileUri = await Isolate.resolvePackageUri(Uri(
+Future<StreamChannel<Object?>> startServer(String fileName) async =>
+    spawnHybridUri(Uri(
         scheme: 'package',
         path: 'http_client_conformance_tests/src/$fileName'));
-    if (fileUri == null) {
-      throw StateError('The package could not be resolved');
-    }
-    return spawnHybridUri(fileUri);
-    // ignore: avoid_catching_errors
-  } on UnsupportedError {
-    // The current runtime environment (probably browser) does not support
-    // `Isolate.resolvePackageUri` so try to use a relative path. This will
-    // *not* work if `http_client_conformance_tests` is used as a package.
-    return spawnHybridUri('../lib/src/$fileName');
-  }
-}
diff --git a/pkgs/http_client_conformance_tests/mono_pkg.yaml b/pkgs/http_client_conformance_tests/mono_pkg.yaml
index 8b6b5d1..6a18a15 100644
--- a/pkgs/http_client_conformance_tests/mono_pkg.yaml
+++ b/pkgs/http_client_conformance_tests/mono_pkg.yaml
@@ -8,10 +8,3 @@
   - format:
     sdk:
     - dev
-- unit_test:
-  - test: --platform vm
-    os:
-    - linux
-  - test: --platform chrome
-    os:
-    - linux
diff --git a/pkgs/http_client_conformance_tests/pubspec.yaml b/pkgs/http_client_conformance_tests/pubspec.yaml
index bc52fd4..dd8ea26 100644
--- a/pkgs/http_client_conformance_tests/pubspec.yaml
+++ b/pkgs/http_client_conformance_tests/pubspec.yaml
@@ -11,7 +11,7 @@
 dependencies:
   async: ^2.8.2
   http: ^0.13.4
-  test: ^1.21.1
+  test: ^1.21.2
 
 dev_dependencies:
   lints: ^1.0.0