Index: test/io.dart |
diff --git a/test/io.dart b/test/io.dart |
index 1dbc377eebf599728281be8e342a6657c3354061..fc5456213bac20de5019a4024317ecdfe62875e9 100644 |
--- a/test/io.dart |
+++ b/test/io.dart |
@@ -5,16 +5,15 @@ |
library unittest.test.io; |
import 'dart:io'; |
+import 'dart:mirrors'; |
import 'package:path/path.dart' as p; |
import 'package:stack_trace/stack_trace.dart'; |
/// The root directory of the `unittest` package. |
final String packageDir = _computePackageDir(); |
-String _computePackageDir() { |
- var trace = new Trace.current(); |
- return p.dirname(p.dirname(p.fromUri(trace.frames.first.uri))); |
-} |
+String _computePackageDir() => |
+ p.dirname(p.dirname(_libraryPath(#unittest.test.io))); |
/// Runs the unittest executable with the package root set properly. |
ProcessResult runUnittest(List<String> args, {String workingDirectory}) { |
@@ -27,3 +26,14 @@ ProcessResult runUnittest(List<String> args, {String workingDirectory}) { |
return Process.runSync(Platform.executable, allArgs, |
workingDirectory: workingDirectory); |
} |
+ |
+/// Returns the path to the library named [libraryName]. |
+/// |
+/// The library name must be globally unique, or the wrong library path may be |
+/// returned. |
+String _libraryPath(Symbol libraryName) { |
+ var lib = currentMirrorSystem().findLibrary(libraryName); |
+ return p.fromUri(lib.uri); |
+} |
+ |
+ |