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); +}