Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: test/test_pub.dart

Issue 1664563002: Refactor test servers to make them less global. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Code review changes Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/snapshot/upgrades_snapshot_test.dart ('k') | test/transformer/cache_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/test_pub.dart
diff --git a/test/test_pub.dart b/test/test_pub.dart
index 1ef30206f5835a58ce6e7d3c68adabb861a0edea..22da90d9b6229b68c749a15900e21b4272f96bfe 100644
--- a/test/test_pub.dart
+++ b/test/test_pub.dart
@@ -35,22 +35,12 @@ import 'package:scheduled_test/scheduled_process.dart';
import 'package:scheduled_test/scheduled_server.dart';
import 'package:scheduled_test/scheduled_stream.dart';
import 'package:scheduled_test/scheduled_test.dart' hide fail;
-import 'package:shelf/shelf.dart' as shelf;
-import 'package:shelf/shelf_io.dart' as shelf_io;
import 'descriptor.dart' as d;
+import 'descriptor_server.dart';
-export 'serve_packages.dart';
-
-/// The current [HttpServer] created using [serve].
-var _server;
-
-/// The list of paths that have been requested from the server since the last
-/// call to [getRequestedPaths].
-final _requestedPaths = <String>[];
-
-/// The cached value for [_portCompleter].
-Completer<int> _portCompleterCache;
+export 'descriptor_server.dart';
+export 'package_server.dart';
/// A [Matcher] that matches JavaScript generated by dart2js with minification
/// enabled.
@@ -66,91 +56,6 @@ Matcher isUnminifiedDart2JSOutput =
final _entrypoint = new Entrypoint(
pubRoot, new SystemCache.withSources(isOffline: true));
-/// The completer for [port].
-Completer<int> get _portCompleter {
- if (_portCompleterCache != null) return _portCompleterCache;
- _portCompleterCache = new Completer<int>();
- currentSchedule.onComplete.schedule(() {
- _portCompleterCache = null;
- }, 'clearing the port completer');
- return _portCompleterCache;
-}
-
-/// A future that will complete to the port used for the current server.
-Future<int> get port => _portCompleter.future;
-
-/// Gets the list of paths that have been requested from the server since the
-/// last time this was called (or since the server was first spun up).
-Future<List<String>> getRequestedPaths() {
- return schedule(() {
- var paths = _requestedPaths.toList();
- _requestedPaths.clear();
- return paths;
- }, "get previous network requests");
-}
-
-/// Creates an HTTP server to serve [contents] as static files.
-///
-/// This server will exist only for the duration of the pub run. Subsequent
-/// calls to [serve] replace the previous server.
-void serve([List<d.Descriptor> contents]) {
- var baseDir = d.dir("serve-dir", contents);
-
- _hasServer = true;
-
- schedule(() {
- return _closeServer().then((_) {
- return shelf_io.serve((request) {
- var path = p.posix.fromUri(request.url.path);
- _requestedPaths.add(path);
-
- return validateStream(baseDir.load(path))
- .then((stream) => new shelf.Response.ok(stream))
- .catchError((error) {
- return new shelf.Response.notFound('File "$path" not found.');
- });
- }, 'localhost', 0).then((server) {
- _server = server;
- _portCompleter.complete(_server.port);
- currentSchedule.onComplete.schedule(_closeServer);
- });
- });
- }, 'starting a server serving:\n${baseDir.describe()}');
-}
-
-/// Like [serve], but reports an error if a request ever comes in to the server.
-void serveErrors() {
- _hasServer = true;
-
- schedule(() async {
- await _closeServer();
-
- _server = await shelf_io.serve((request) {
- fail("The HTTP server received an unexpected request:\n"
- "${request.method} ${request.requestedUri}");
- return new shelf.Response.forbidden(null);
- }, 'localhost', 0);
-
- _portCompleter.complete(_server.port);
- currentSchedule.onComplete.schedule(_closeServer);
- });
-}
-
-/// Closes [_server].
-///
-/// Returns a [Future] that completes after the [_server] is closed.
-Future _closeServer() {
- if (_server == null) return new Future.value();
- var future = _server.close();
- _server = null;
- _hasServer = false;
- _portCompleterCache = null;
- return future;
-}
-
-/// `true` if the current test spins up an HTTP server.
-bool _hasServer = false;
-
/// Converts [value] into a YAML string.
String yaml(value) => JSON.encode(value);
@@ -405,8 +310,9 @@ Future<Map> getPubTestEnvironment([String tokenEndpoint]) async {
environment['_PUB_TEST_TOKEN_ENDPOINT'] = tokenEndpoint.toString();
}
- if (_hasServer) {
- environment['PUB_HOSTED_URL'] = "http://localhost:${await port}";
+ if (globalServer != null) {
+ environment['PUB_HOSTED_URL'] =
+ "http://localhost:${await globalServer.port}";
}
return environment;
« no previous file with comments | « test/snapshot/upgrades_snapshot_test.dart ('k') | test/transformer/cache_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698