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

Side by Side Diff: sdk/lib/_internal/pub/test/test_pub.dart

Issue 19647002: Use PUB_HOSTED_SERVER to set server URL for pub tests. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/_internal/pub/test/install/switch_source_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// Test infrastructure for testing pub. Unlike typical unit tests, most pub 5 /// Test infrastructure for testing pub. Unlike typical unit tests, most pub
6 /// tests are integration tests that stage some stuff on the file system, run 6 /// tests are integration tests that stage some stuff on the file system, run
7 /// pub, and then validate the results. This library provides an API to build 7 /// pub, and then validate the results. This library provides an API to build
8 /// tests like that. 8 /// tests like that.
9 library test_pub; 9 library test_pub;
10 10
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 }); 84 });
85 } 85 }
86 86
87 /// Creates an HTTP server to serve [contents] as static files. This server will 87 /// Creates an HTTP server to serve [contents] as static files. This server will
88 /// exist only for the duration of the pub run. 88 /// exist only for the duration of the pub run.
89 /// 89 ///
90 /// Subsequent calls to [serve] will replace the previous server. 90 /// Subsequent calls to [serve] will replace the previous server.
91 void serve([List<d.Descriptor> contents]) { 91 void serve([List<d.Descriptor> contents]) {
92 var baseDir = d.dir("serve-dir", contents); 92 var baseDir = d.dir("serve-dir", contents);
93 93
94 _hasServer = true;
95
94 schedule(() { 96 schedule(() {
95 return _closeServer().then((_) { 97 return _closeServer().then((_) {
96 return SafeHttpServer.bind("localhost", 0).then((server) { 98 return SafeHttpServer.bind("localhost", 0).then((server) {
97 _server = server; 99 _server = server;
98 server.listen((request) { 100 server.listen((request) {
99 currentSchedule.heartbeat(); 101 currentSchedule.heartbeat();
100 var response = request.response; 102 var response = request.response;
101 try { 103 try {
102 var path = request.uri.path.replaceFirst("/", ""); 104 var path = request.uri.path.replaceFirst("/", "");
103 _requestedPaths.add(path); 105 _requestedPaths.add(path);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 if (_server == null) return new Future.value(); 139 if (_server == null) return new Future.value();
138 _server.close(); 140 _server.close();
139 _server = null; 141 _server = null;
140 _portCompleterCache = null; 142 _portCompleterCache = null;
141 // TODO(nweiz): Remove this once issue 4155 is fixed. Pumping the event loop 143 // TODO(nweiz): Remove this once issue 4155 is fixed. Pumping the event loop
142 // *seems* to be enough to ensure that the server is actually closed, but I'm 144 // *seems* to be enough to ensure that the server is actually closed, but I'm
143 // putting this at 10ms to be safe. 145 // putting this at 10ms to be safe.
144 return sleep(10); 146 return sleep(10);
145 } 147 }
146 148
149 /// `true` if the current test spins up an HTTP server.
150 bool _hasServer = false;
151
147 /// The [d.DirectoryDescriptor] describing the server layout of `/api/packages` 152 /// The [d.DirectoryDescriptor] describing the server layout of `/api/packages`
148 /// on the test server. 153 /// on the test server.
149 /// 154 ///
150 /// This contains metadata for packages that are being served via 155 /// This contains metadata for packages that are being served via
151 /// [servePackages]. It's `null` if [servePackages] has not yet been called for 156 /// [servePackages]. It's `null` if [servePackages] has not yet been called for
152 /// this test. 157 /// this test.
153 d.DirectoryDescriptor _servedApiPackageDir; 158 d.DirectoryDescriptor _servedApiPackageDir;
154 159
155 /// The [d.DirectoryDescriptor] describing the server layout of `/packages` on 160 /// The [d.DirectoryDescriptor] describing the server layout of `/packages` on
156 /// the test server. 161 /// the test server.
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 if (tokenEndpoint == null) tokenEndpoint = new Future.value(); 456 if (tokenEndpoint == null) tokenEndpoint = new Future.value();
452 var environmentFuture = tokenEndpoint.then((tokenEndpoint) { 457 var environmentFuture = tokenEndpoint.then((tokenEndpoint) {
453 var environment = {}; 458 var environment = {};
454 environment['_PUB_TESTING'] = 'true'; 459 environment['_PUB_TESTING'] = 'true';
455 environment['PUB_CACHE'] = pathInSandbox(cachePath); 460 environment['PUB_CACHE'] = pathInSandbox(cachePath);
456 environment['DART_SDK'] = pathInSandbox(sdkPath); 461 environment['DART_SDK'] = pathInSandbox(sdkPath);
457 if (tokenEndpoint != null) { 462 if (tokenEndpoint != null) {
458 environment['_PUB_TEST_TOKEN_ENDPOINT'] = 463 environment['_PUB_TEST_TOKEN_ENDPOINT'] =
459 tokenEndpoint.toString(); 464 tokenEndpoint.toString();
460 } 465 }
466
467 // If there is a server running, tell pub what its URL is so hosted
468 // dependencies will look there.
469 if (_hasServer) {
470 return port.then((p) {
471 environment['PUB_HOSTED_URL'] = "http://localhost:$p";
472 return environment;
473 });
474 }
475
461 return environment; 476 return environment;
462 }); 477 });
463 478
464 return new PubProcess.start(dartBin, dartArgs, environment: environmentFuture, 479 return new PubProcess.start(dartBin, dartArgs, environment: environmentFuture,
465 workingDirectory: pathInSandbox(appPath), 480 workingDirectory: pathInSandbox(appPath),
466 description: args.isEmpty ? 'pub' : 'pub ${args.first}'); 481 description: args.isEmpty ? 'pub' : 'pub ${args.first}');
467 } 482 }
468 483
469 /// A subclass of [ScheduledProcess] that parses pub's verbose logging output 484 /// A subclass of [ScheduledProcess] that parses pub's verbose logging output
470 /// and makes [nextLine], [nextErrLine], [remainingStdout], and 485 /// and makes [nextLine], [nextErrLine], [remainingStdout], and
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 }; 617 };
603 if (dependencies != null) { 618 if (dependencies != null) {
604 package["dependencies"] = dependencyListToMap(dependencies); 619 package["dependencies"] = dependencyListToMap(dependencies);
605 } 620 }
606 return package; 621 return package;
607 } 622 }
608 623
609 /// Describes a map representing a dependency on a package in the package 624 /// Describes a map representing a dependency on a package in the package
610 /// repository. 625 /// repository.
611 Map dependencyMap(String name, [String versionConstraint]) { 626 Map dependencyMap(String name, [String versionConstraint]) {
612 var url = port.then((p) => "http://localhost:$p"); 627 var dependency = {"hosted": name};
613 var dependency = {"hosted": {"name": name, "url": url}};
614 if (versionConstraint != null) dependency["version"] = versionConstraint; 628 if (versionConstraint != null) dependency["version"] = versionConstraint;
615 return dependency; 629 return dependency;
616 } 630 }
617 631
618 /// Converts a list of dependencies as passed to [package] into a hash as used 632 /// Converts a list of dependencies as passed to [package] into a hash as used
619 /// in a pubspec. 633 /// in a pubspec.
620 Future<Map> dependencyListToMap(List<Map> dependencies) { 634 Future<Map> dependencyListToMap(List<Map> dependencies) {
621 return awaitObject(dependencies).then((resolvedDependencies) { 635 return awaitObject(dependencies).then((resolvedDependencies) {
622 var result = <String, Map>{}; 636 var result = <String, Map>{};
623 for (var dependency in resolvedDependencies) { 637 for (var dependency in resolvedDependencies) {
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 bool matches(item, Map matchState) { 805 bool matches(item, Map matchState) {
792 if (item is! Pair) return false; 806 if (item is! Pair) return false;
793 return _firstMatcher.matches(item.first, matchState) && 807 return _firstMatcher.matches(item.first, matchState) &&
794 _lastMatcher.matches(item.last, matchState); 808 _lastMatcher.matches(item.last, matchState);
795 } 809 }
796 810
797 Description describe(Description description) { 811 Description describe(Description description) {
798 description.addAll("(", ", ", ")", [_firstMatcher, _lastMatcher]); 812 description.addAll("(", ", ", ")", [_firstMatcher, _lastMatcher]);
799 } 813 }
800 } 814 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/pub/test/install/switch_source_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698