Index: test/io.dart |
diff --git a/test/io.dart b/test/io.dart |
index d9e419d3e11d975cf4c3b87389b721555bb04c36..f3b174ce8228f3592223df13d817f464b6221222 100644 |
--- a/test/io.dart |
+++ b/test/io.dart |
@@ -18,6 +18,11 @@ final _pubPath = p.absolute(p.join( |
p.dirname(Platform.executable), |
Platform.isWindows ? 'pub.bat' : 'pub')); |
+/// The platform-specific message emitted when a nonexistent file is loaded. |
+final String noSuchFileMessage = Platform.isWindows |
+ ? "The system cannot find the file specified." |
+ : "No such file or directory"; |
+ |
/// Runs the test executable with the package root set properly. |
ProcessResult runTest(List<String> args, {String workingDirectory, |
Map<String, String> environment}) { |
@@ -46,16 +51,18 @@ ProcessResult runDart(List<String> args, {String workingDirectory, |
}).toList()..addAll(args); |
// TODO(nweiz): Use ScheduledProcess once it's compatible. |
- return Process.runSync(p.absolute(Platform.executable), allArgs, |
- workingDirectory: workingDirectory, environment: environment); |
+ return new _NormalizedProcessResult(Process.runSync( |
+ p.absolute(Platform.executable), allArgs, |
+ workingDirectory: workingDirectory, environment: environment)); |
} |
/// Runs Pub. |
ProcessResult runPub(List<String> args, {String workingDirectory, |
Map<String, String> environment}) { |
// TODO(nweiz): Use ScheduledProcess once it's compatible. |
- return Process.runSync(_pubPath, args, |
- workingDirectory: workingDirectory, environment: environment); |
+ return new _NormalizedProcessResult(Process.runSync( |
+ _pubPath, args, |
+ workingDirectory: workingDirectory, environment: environment)); |
} |
/// Starts the test executable with the package root set properly. |
@@ -90,3 +97,24 @@ Future<Process> startPub(List<String> args, {String workingDirectory, |
return Process.start(_pubPath, args, |
workingDirectory: workingDirectory, environment: environment); |
} |
+ |
+/// A wrapper around [ProcessResult] that normalizes the newline format across |
+/// operating systems. |
+class _NormalizedProcessResult implements ProcessResult { |
+ final ProcessResult _inner; |
+ |
+ int get exitCode => _inner.exitCode; |
+ int get pid => _inner.pid; |
+ |
+ final String stdout; |
+ final String stderr; |
+ |
+ _NormalizedProcessResult(ProcessResult inner) |
+ : _inner = inner, |
+ stdout = Platform.isWindows |
+ ? inner.stdout.replaceAll("\r\n", "\n") |
+ : inner.stdout, |
+ stderr = Platform.isWindows |
+ ? inner.stderr.replaceAll("\r\n", "\n") |
+ : inner.stderr; |
+} |