diff --git a/README.md b/README.md
index 46c4b651..9c8457b1 100644
--- a/README.md
+++ b/README.md
@@ -607,7 +607,7 @@ All configuration options for the local task discovery are found on the
env |
Environment |
Environment.browser |
- The environment to run tests in ('vm' or 'browser') |
+ The environment to run tests in ('vm', 'browser', 'both') |
filename |
diff --git a/lib/src/tasks/gen_test_runner/api.dart b/lib/src/tasks/gen_test_runner/api.dart
index 03e3a965..1352611a 100644
--- a/lib/src/tasks/gen_test_runner/api.dart
+++ b/lib/src/tasks/gen_test_runner/api.dart
@@ -66,14 +66,17 @@ Future genTestRunner(TestRunnerConfig currentConfig) async {
}
});
+ if (currentConfig.genHtml && !currentConfig.check) {
+ await testHtmlFileGenerator(
+ currentDirectory, currentConfig.filename, currentConfig.htmlHeaders);
+ }
+
if (currentConfig.env == Environment.browser) {
- if (currentConfig.genHtml && !currentConfig.check) {
- await testHtmlFileGenerator(
- currentDirectory, currentConfig.filename, currentConfig.htmlHeaders);
- }
runnerLines.add('@TestOn(\'browser\')');
- } else {
+ } else if (currentConfig.env == Environment.vm) {
runnerLines.add('@TestOn(\'vm\')');
+ } else {
+ runnerLines.add('@TestOn(\'browser || vm\')');
}
runnerLines.add(
'library ${currentDirectory.replaceAll('/','.')}${currentConfig.filename};');
diff --git a/lib/src/tasks/gen_test_runner/config.dart b/lib/src/tasks/gen_test_runner/config.dart
index a765fe9f..ece808ab 100644
--- a/lib/src/tasks/gen_test_runner/config.dart
+++ b/lib/src/tasks/gen_test_runner/config.dart
@@ -26,7 +26,7 @@ const bool defaultGenHtml = false;
const bool defaultReact = true;
const List defaultHtmlHeaders = const [];
-enum Environment { vm, browser }
+enum Environment { vm, browser, both }
class TestRunnerConfig {
bool check = defaultCheck;
diff --git a/test/integration/gen_test_runner_test.dart b/test/integration/gen_test_runner_test.dart
index f6bb057a..fa424370 100644
--- a/test/integration/gen_test_runner_test.dart
+++ b/test/integration/gen_test_runner_test.dart
@@ -23,6 +23,8 @@ import 'package:path/path.dart' as path;
import 'package:test/test.dart';
const String browserAndVm = 'test_fixtures/gen_test_runner/browser_and_vm';
+const String browserAndVmRunner =
+ 'test_fixtures/gen_test_runner/browser_and_vm_runner';
const String checkFail = 'test_fixtures/gen_test_runner/check_fail';
const String checkPass = 'test_fixtures/gen_test_runner/check_pass';
const String defaultConfig = 'test_fixtures/gen_test_runner/default_config';
@@ -101,6 +103,17 @@ void main() {
shouldFileExist: false);
});
+ test('should create runner with both vm and browser annotation', () async {
+ Runner runner = await generateTestRunner(browserAndVmRunner);
+ expect(runner.exitCode, isZero);
+ String runnerPath =
+ path.join(browserAndVmRunner, 'test/generated_runner.dart');
+ File testRunner = new File(runnerPath);
+ String fileContents = testRunner.readAsStringSync();
+ expect(fileContents.contains('@TestOn(\'browser || vm\')'), isTrue);
+ verifyExistenceAndCleanup(runnerPath, shouldFileExist: true);
+ });
+
group('--check flag', () {
test('should succeed if the runner is up to date', () async {
Runner runner =
diff --git a/test_fixtures/gen_test_runner/browser_and_vm_runner/pubspec.yaml b/test_fixtures/gen_test_runner/browser_and_vm_runner/pubspec.yaml
new file mode 100644
index 00000000..27fd0b90
--- /dev/null
+++ b/test_fixtures/gen_test_runner/browser_and_vm_runner/pubspec.yaml
@@ -0,0 +1,6 @@
+name: test_generator_browser_and_vm_runner
+version: 0.0.0
+dev_dependencies:
+ dart_dev:
+ path: ../../..
+ test: '^0.12.0'
diff --git a/test_fixtures/gen_test_runner/browser_and_vm_runner/test/browser/browser_test.dart b/test_fixtures/gen_test_runner/browser_and_vm_runner/test/browser/browser_test.dart
new file mode 100644
index 00000000..4ee5ce22
--- /dev/null
+++ b/test_fixtures/gen_test_runner/browser_and_vm_runner/test/browser/browser_test.dart
@@ -0,0 +1,10 @@
+@TestOn('browser')
+library test_generator_browser_and_vm_runner.test.browser.browser_test;
+
+import 'package:test/test.dart';
+
+main() {
+ test('browser test', () {
+ expect(true, isTrue);
+ });
+}
diff --git a/test_fixtures/gen_test_runner/browser_and_vm_runner/test/vm/vm_test.dart b/test_fixtures/gen_test_runner/browser_and_vm_runner/test/vm/vm_test.dart
new file mode 100644
index 00000000..df99f8ff
--- /dev/null
+++ b/test_fixtures/gen_test_runner/browser_and_vm_runner/test/vm/vm_test.dart
@@ -0,0 +1,10 @@
+@TestOn('vm')
+library test_generator_browser_and_vm_runner.test.vm.vm_test;
+
+import 'package:test/test.dart';
+
+main() {
+ test('vm test', () {
+ expect(true, isTrue);
+ });
+}
diff --git a/test_fixtures/gen_test_runner/browser_and_vm_runner/tool/dev.dart b/test_fixtures/gen_test_runner/browser_and_vm_runner/tool/dev.dart
new file mode 100644
index 00000000..533532c6
--- /dev/null
+++ b/test_fixtures/gen_test_runner/browser_and_vm_runner/tool/dev.dart
@@ -0,0 +1,11 @@
+library test_generator_browser_and_vm_runner.tool.dev;
+
+import 'package:dart_dev/dart_dev.dart';
+
+main(List args) async {
+ config.genTestRunner.configs = [
+ new TestRunnerConfig(env: Environment.both, directory: 'test/'),
+ ];
+
+ await dev(args);
+}