Index: pkg/analysis_testing/lib/reflective_tests.dart |
diff --git a/pkg/analysis_testing/lib/reflective_tests.dart b/pkg/analysis_testing/lib/reflective_tests.dart |
index 2c737f7910d74df36c85d58208c30837eccd80af..ec293189682dd9dcef06763c2560fa95169727f9 100644 |
--- a/pkg/analysis_testing/lib/reflective_tests.dart |
+++ b/pkg/analysis_testing/lib/reflective_tests.dart |
@@ -45,20 +45,26 @@ void runReflectiveTests(Type type) { |
return; |
} |
String memberName = MirrorSystem.getName(symbol); |
+ wrapTest() { |
+ var result = _runTest(classMirror, symbol); |
+ if (result is Future) { |
+ // We can't just return the future because of dartbug.com/20153. So |
+ // use expectAsync() to ensure that the test doesn't end until the |
+ // future completes. TODO(paulberry): get rid of this workaround once |
+ // 20153 is fixed. |
+ result.then(expectAsync((_) {})); |
+ } |
+ } |
// test_ |
if (memberName.startsWith('test_')) { |
String testName = memberName.substring('test_'.length); |
- test(testName, () { |
- return _runTest(classMirror, symbol); |
- }); |
+ test(testName, wrapTest); |
return; |
} |
// solo_test_ |
if (memberName.startsWith('solo_test_')) { |
String testName = memberName.substring('solo_test_'.length); |
- solo_test(testName, () { |
- return _runTest(classMirror, symbol); |
- }); |
+ solo_test(testName, wrapTest); |
} |
}); |
} |