Chromium Code Reviews| Index: tools/testing/dart/http_server.dart |
| diff --git a/tools/testing/dart/http_server.dart b/tools/testing/dart/http_server.dart |
| index 84a5b771913bb4f090f67243b8ed16cb8aca00e3..f7c83cf7517829d68301defacfc68ea0cf1f9762 100644 |
| --- a/tools/testing/dart/http_server.dart |
| +++ b/tools/testing/dart/http_server.dart |
| @@ -41,6 +41,7 @@ main() { |
| .canonicalize() |
| .toNativePath(); |
| TestingServerRunner._packageRootDir = new Path(args['package-root']); |
| + TestingServerRunner._buildDirectory = new Path(args['package-root']); |
|
ricow1
2013/02/06 08:13:28
setting the _buildDirectory to the package root ca
kustermann
2013/02/06 16:33:51
Done.
|
| TestingServerRunner.startHttpServer('127.0.0.1', |
| port: int.parse(args['port'])); |
| print('Server listening on port ' |
| @@ -59,16 +60,22 @@ main() { |
| class TestingServerRunner { |
| static List serverList = []; |
| static Path _packageRootDir = null; |
| + static Path _buildDirectory = null; |
| // Added as a getter so that the function will be called again each time the |
| // default request handler closure is executed. |
| static Path get packageRootDir => _packageRootDir; |
| + static Path get buildDirectory => _buildDirectory; |
| static setPackageRootDir(Map configuration) { |
| _packageRootDir = TestUtils.currentWorkingDirectory.join( |
| new Path(TestUtils.buildDir(configuration))); |
| } |
| + static setBuildDir(Map configuration) { |
| + _buildDirectory = new Path(TestUtils.buildDir(configuration)); |
| + } |
| + |
| static startHttpServer(String host, {int allowedPort:-1, int port: 0}) { |
| var basePath = TestUtils.dartDir(); |
| var httpServer = new HttpServer(); |
| @@ -78,10 +85,22 @@ class TestingServerRunner { |
| print('Test http server error: $e'); |
| }; |
| httpServer.defaultRequestHandler = (request, resp) { |
| + // TODO(kustermann,ricow): We could change this to the following scheme: |
|
ricow1
2013/02/06 08:13:28
file a bug
kustermann
2013/02/06 16:33:51
Done.
|
| + // http://host:port/root_dart/X -> $DartDir/X |
| + // http://host:port/root_build/X -> $BuildDir/X |
| + // http://host:port/root_packages/X -> $BuildDir/packages/X |
| + |
| var requestPath = new Path(request.path.substring(1)).canonicalize(); |
| var path = basePath.join(requestPath); |
| var file = new File(path.toNativePath()); |
| - |
| + // Since the build directory may not be located directly beneath the dart |
| + // root directory (if we pass it in, e.g., for dartium testing) we serve |
| + // files from the build directory explicitly. Please note that if |
| + // buildDirectory has the same name as a directory inside the dart repo |
| + // we will server files from the buildDirectory. |
| + if (requestPath.toString().startsWith(buildDirectory.toString())) { |
| + file = new File(requestPath.toNativePath()); |
| + } |
| if (requestPath.segments().contains(packagesDirName)) { |
| // Essentially implement the packages path rewriting, so we don't have |
| // to pass environment variables to the browsers. |