Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 library test.test.io; | 5 library test.test.io; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:convert'; | 8 import 'dart:convert'; |
|
kevmoo
2015/06/17 22:20:04
unused
nweiz
2015/06/17 22:41:08
Done.
| |
| 9 import 'dart:io'; | 9 import 'dart:io'; |
| 10 | 10 |
| 11 import 'package:path/path.dart' as p; | 11 import 'package:path/path.dart' as p; |
| 12 import 'package:test/src/util/io.dart'; | 12 import 'package:test/src/util/io.dart'; |
| 13 import 'package:test/src/utils.dart'; | 13 import 'package:test/src/utils.dart'; |
| 14 | 14 |
| 15 /// The path to the root directory of the `test` package. | 15 /// The path to the root directory of the `test` package. |
| 16 final String packageDir = p.dirname(p.dirname(libraryPath(#test.test.io))); | 16 final String packageDir = p.dirname(p.dirname(libraryPath(#test.test.io))); |
| 17 | 17 |
| 18 /// The path to the `pub` executable in the current Dart SDK. | 18 /// The path to the `pub` executable in the current Dart SDK. |
| 19 final _pubPath = p.absolute(p.join( | 19 final _pubPath = p.absolute(p.join( |
| 20 p.dirname(Platform.executable), | 20 p.dirname(Platform.executable), |
| 21 Platform.isWindows ? 'pub.bat' : 'pub')); | 21 Platform.isWindows ? 'pub.bat' : 'pub')); |
| 22 | 22 |
| 23 /// The platform-specific message emitted when a nonexistent file is loaded. | 23 /// The platform-specific message emitted when a nonexistent file is loaded. |
| 24 final String noSuchFileMessage = Platform.isWindows | 24 final String noSuchFileMessage = Platform.isWindows |
| 25 ? "The system cannot find the file specified." | 25 ? "The system cannot find the file specified." |
| 26 : "No such file or directory"; | 26 : "No such file or directory"; |
| 27 | 27 |
| 28 /// A decoder that converts raw bytes to a line-by-line stream. | |
| 29 final _lines = UTF8.decoder.fuse(const LineSplitter()); | |
| 30 | |
| 31 /// A regular expression that matches the output of "pub serve". | 28 /// A regular expression that matches the output of "pub serve". |
| 32 final _servingRegExp = | 29 final _servingRegExp = |
| 33 new RegExp(r'^Serving myapp [a-z]+ on http://localhost:(\d+)$'); | 30 new RegExp(r'^Serving myapp [a-z]+ on http://localhost:(\d+)$'); |
| 34 | 31 |
| 35 /// Runs the test executable with the package root set properly. | 32 /// Runs the test executable with the package root set properly. |
| 36 ProcessResult runTest(List<String> args, {String workingDirectory, | 33 ProcessResult runTest(List<String> args, {String workingDirectory, |
| 37 Map<String, String> environment}) { | 34 Map<String, String> environment}) { |
| 38 var allArgs = [ | 35 var allArgs = [ |
| 39 p.absolute(p.join(packageDir, 'bin/test.dart')), | 36 p.absolute(p.join(packageDir, 'bin/test.dart')), |
| 40 "--package-root=${p.join(packageDir, 'packages')}" | 37 "--package-root=${p.join(packageDir, 'packages')}" |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 110 /// Starts "pub serve". | 107 /// Starts "pub serve". |
| 111 /// | 108 /// |
| 112 /// This returns a pair of the pub serve process and the port it's serving on. | 109 /// This returns a pair of the pub serve process and the port it's serving on. |
| 113 Future<Pair<Process, int>> startPubServe({List<String> args, | 110 Future<Pair<Process, int>> startPubServe({List<String> args, |
| 114 String workingDirectory, Map<String, String> environment}) async { | 111 String workingDirectory, Map<String, String> environment}) async { |
| 115 var allArgs = ['serve', '--port', '0']; | 112 var allArgs = ['serve', '--port', '0']; |
| 116 if (args != null) allArgs.addAll(args); | 113 if (args != null) allArgs.addAll(args); |
| 117 | 114 |
| 118 var process = await startPub(allArgs, | 115 var process = await startPub(allArgs, |
| 119 workingDirectory: workingDirectory, environment: environment); | 116 workingDirectory: workingDirectory, environment: environment); |
| 120 var line = await _lines.bind(process.stdout) | 117 var line = await lineSplitter.bind(process.stdout) |
| 121 .firstWhere(_servingRegExp.hasMatch); | 118 .firstWhere(_servingRegExp.hasMatch); |
| 122 var match = _servingRegExp.firstMatch(line); | 119 var match = _servingRegExp.firstMatch(line); |
| 123 | 120 |
| 124 return new Pair(process, int.parse(match[1])); | 121 return new Pair(process, int.parse(match[1])); |
| 125 } | 122 } |
| 126 | 123 |
| 127 /// A wrapper around [ProcessResult] that normalizes the newline format across | 124 /// A wrapper around [ProcessResult] that normalizes the newline format across |
| 128 /// operating systems. | 125 /// operating systems. |
| 129 class _NormalizedProcessResult implements ProcessResult { | 126 class _NormalizedProcessResult implements ProcessResult { |
| 130 final ProcessResult _inner; | 127 final ProcessResult _inner; |
| 131 | 128 |
| 132 int get exitCode => _inner.exitCode; | 129 int get exitCode => _inner.exitCode; |
| 133 int get pid => _inner.pid; | 130 int get pid => _inner.pid; |
| 134 | 131 |
| 135 final String stdout; | 132 final String stdout; |
| 136 final String stderr; | 133 final String stderr; |
| 137 | 134 |
| 138 _NormalizedProcessResult(ProcessResult inner) | 135 _NormalizedProcessResult(ProcessResult inner) |
| 139 : _inner = inner, | 136 : _inner = inner, |
| 140 stdout = Platform.isWindows | 137 stdout = Platform.isWindows |
| 141 ? inner.stdout.replaceAll("\r\n", "\n") | 138 ? inner.stdout.replaceAll("\r\n", "\n") |
| 142 : inner.stdout, | 139 : inner.stdout, |
| 143 stderr = Platform.isWindows | 140 stderr = Platform.isWindows |
| 144 ? inner.stderr.replaceAll("\r\n", "\n") | 141 ? inner.stderr.replaceAll("\r\n", "\n") |
| 145 : inner.stderr; | 142 : inner.stderr; |
| 146 } | 143 } |
| OLD | NEW |