Index: lib/test.dart |
diff --git a/lib/test.dart b/lib/test.dart |
index 6abe99ec403e81849e44026c808535208c066f61..ed2f058b9ac47cd3ec2b4052fcfd7672dc70731c 100644 |
--- a/lib/test.dart |
+++ b/lib/test.dart |
@@ -50,10 +50,10 @@ Declarer get _declarer { |
_globalDeclarer = new Declarer(); |
scheduleMicrotask(() { |
var suite = |
- new Suite(_globalDeclarer.tests, |
- path: p.prettyUri(Uri.base), |
- platform: "VM") |
- .filter(TestPlatform.vm, os: currentOSGuess); |
+ new Suite(_globalDeclarer.tests, |
+ path: p.prettyUri(Uri.base), |
+ platform: "VM") |
+ .forPlatform(TestPlatform.vm, os: currentOSGuess); |
// TODO(nweiz): Set the exit code on the VM when issue 6943 is fixed. |
new NoIoCompactReporter([suite], color: true).run(); |
}); |
@@ -77,10 +77,30 @@ Declarer get _declarer { |
/// If [skip] is a String or `true`, the test is skipped. If it's a String, it |
/// should explain why the test is skipped; this reason will be printed instead |
/// of running the test. |
+/// |
+/// [onPlatform] allows tests to be configured on a platform-by-platform |
+/// basis. It's a map from strings that are parsed as [PlatformSelector]s to |
+/// annotation classes: [Timeout], [Skip], or lists of those. These |
+/// annotations apply only on the given platforms. For example: |
+/// |
+/// test("potentially slow test", () { |
+/// // ... |
+/// }, onPlatform: { |
+/// // This test is especially slow on Windows. |
+/// "windows": new Timeout.factor(2), |
+/// "browser": [ |
+/// new Skip("TODO: add browser support"), |
+/// // This will be slow on browsers once it works on them. |
+/// new Timeout.factor(2) |
+/// ] |
+/// }); |
+/// |
+/// If multiple platforms match, the annotations apply in order as through |
+/// they were in nested groups. |
void test(String description, body(), {String testOn, Timeout timeout, |
- skip}) => |
+ skip, Map<String, dynamic> onPlatform}) => |
_declarer.test(description, body, |
- testOn: testOn, timeout: timeout, skip: skip); |
+ testOn: testOn, timeout: timeout, skip: skip, onPlatform: onPlatform); |
/// Creates a group of tests. |
/// |
@@ -101,8 +121,28 @@ void test(String description, body(), {String testOn, Timeout timeout, |
/// If [skip] is a String or `true`, the group is skipped. If it's a String, it |
/// should explain why the group is skipped; this reason will be printed instead |
/// of running the group's tests. |
+/// |
+/// [onPlatform] allows groups to be configured on a platform-by-platform |
+/// basis. It's a map from strings that are parsed as [PlatformSelector]s to |
+/// annotation classes: [Timeout], [Skip], or lists of those. These |
+/// annotations apply only on the given platforms. For example: |
+/// |
+/// group("potentially slow tests", () { |
+/// // ... |
+/// }, onPlatform: { |
+/// // These tests are especially slow on Windows. |
+/// "windows": new Timeout.factor(2), |
+/// "browser": [ |
+/// new Skip("TODO: add browser support"), |
+/// // They'll be slow on browsers once it works on them. |
+/// new Timeout.factor(2) |
+/// ] |
+/// }); |
+/// |
+/// If multiple platforms match, the annotations apply in order as through |
+/// they were in nested groups. |
void group(String description, void body(), {String testOn, Timeout timeout, |
- skip}) => |
+ skip, Map<String, dynamic> onPlatform}) => |
_declarer.group(description, body, |
testOn: testOn, timeout: timeout, skip: skip); |