From a78226a71bd2644c14a483508ae832eca2636c13 Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Tue, 10 Apr 2018 14:08:10 -0700 Subject: [PATCH 1/9] fix node tests in subdirs --- CHANGELOG.md | 4 ++++ lib/src/runner/node/platform.dart | 6 ++---- pubspec.yaml | 2 +- test/runner/precompiled_test.dart | 21 ++++++++++++++------- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d01602618..11695c6bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.12.34+1 + +* Fixed an issue `--precompiled` node tests in subdirectories. + ## 0.12.34 * Requires at least Dart 1.24.0. diff --git a/lib/src/runner/node/platform.dart b/lib/src/runner/node/platform.dart index 89fb9e60a..2a8ca81d8 100644 --- a/lib/src/runner/node/platform.dart +++ b/lib/src/runner/node/platform.dart @@ -194,9 +194,7 @@ class NodePlatform extends PlatformPlugin int socketPort, String precompiledPath) async { StackTraceMapper mapper; - var jsPath = - p.join(precompiledPath, p.basename(testPath) + ".node_test.dart.js"); - + var jsPath = p.join(precompiledPath, testPath + ".node_test.dart.js"); if (!suiteConfig.jsTrace) { var mapPath = jsPath + '.map'; var resolver = await SyncPackageResolver @@ -248,7 +246,7 @@ class NodePlatform extends PlatformPlugin try { return await Process.start(settings.executable, settings.arguments.toList()..add(jsPath)..add(socketPort.toString()), - environment: {'NODE_PATH': nodePath}); + environment: {'NODE_PATH': nodePath}w); } catch (error, stackTrace) { await new Future.error( new ApplicationException( diff --git a/pubspec.yaml b/pubspec.yaml index 770ed64e7..be617b15e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: test -version: 0.12.34 +version: 0.12.34+1 author: Dart Team description: A library for writing dart unit tests. homepage: https://github.com/dart-lang/test diff --git a/test/runner/precompiled_test.dart b/test/runner/precompiled_test.dart index ac0012771..2ec5c48e9 100644 --- a/test/runner/precompiled_test.dart +++ b/test/runner/precompiled_test.dart @@ -71,7 +71,8 @@ void main() { group("node tests", () { test("run a precompiled version of a test rather than recompiling", () async { - await d.file("test.dart", """ + await d.dir("test", [ + d.file("test.dart", """ import "package:test/src/bootstrap/node.dart"; import "package:test/test.dart"; @@ -79,15 +80,16 @@ void main() { internalBootstrapNodeTest(() => () => test("success", () { expect(true, isTrue); })); - }""").create(); + }""") + ]).create(); await _writePackagesFile(); - var jsPath = p.join(d.sandbox, "test.dart.node_test.dart.js"); + var jsPath = p.join(d.sandbox, "test", "test.dart.node_test.dart.js"); var dart2js = await TestProcess.start( p.join(sdkDir, "bin", "dart2js"), [ await PackageResolver.current.processArgument, - "test.dart", + p.join("test", "test.dart"), "--out=$jsPath", ], workingDirectory: d.sandbox); @@ -97,10 +99,15 @@ void main() { await jsFile.writeAsString( preamble.getPreamble(minified: true) + await jsFile.readAsString()); - await d.file("test.dart", "invalid dart}").create(); + await d.dir("test", [d.file("test.dart", "invalid dart}")]).create(); - var test = await runTest( - ["-p", "node", "--precompiled", d.sandbox, "test.dart"]); + var test = await runTest([ + "-p", + "node", + "--precompiled", + d.sandbox, + p.join("test", "test.dart") + ]); expect(test.stdout, containsInOrder(["+0: success", "+1: All tests passed!"])); await test.shouldExit(0); From 196ec3ba8d70712895179ebd03f355239f9de2fd Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Tue, 10 Apr 2018 14:14:31 -0700 Subject: [PATCH 2/9] remove typo --- lib/src/runner/node/platform.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/runner/node/platform.dart b/lib/src/runner/node/platform.dart index 2a8ca81d8..0510711ad 100644 --- a/lib/src/runner/node/platform.dart +++ b/lib/src/runner/node/platform.dart @@ -246,7 +246,7 @@ class NodePlatform extends PlatformPlugin try { return await Process.start(settings.executable, settings.arguments.toList()..add(jsPath)..add(socketPort.toString()), - environment: {'NODE_PATH': nodePath}w); + environment: {'NODE_PATH': nodePath}); } catch (error, stackTrace) { await new Future.error( new ApplicationException( From fe884a50cf99bdfd2b8c4c3f75f5d6da71146c3c Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Tue, 10 Apr 2018 14:17:00 -0700 Subject: [PATCH 3/9] code review updates --- lib/src/runner/node/platform.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/runner/node/platform.dart b/lib/src/runner/node/platform.dart index 0510711ad..30fbefd6d 100644 --- a/lib/src/runner/node/platform.dart +++ b/lib/src/runner/node/platform.dart @@ -194,7 +194,7 @@ class NodePlatform extends PlatformPlugin int socketPort, String precompiledPath) async { StackTraceMapper mapper; - var jsPath = p.join(precompiledPath, testPath + ".node_test.dart.js"); + var jsPath = p.join(precompiledPath, '$testPath.node_test.dart.js'); if (!suiteConfig.jsTrace) { var mapPath = jsPath + '.map'; var resolver = await SyncPackageResolver From 4b653aaf8692d171268f07f6e7c4ea60d7ea2a1e Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Mon, 16 Apr 2018 12:05:11 -0700 Subject: [PATCH 4/9] fix some dart2 type issues in the bootstrapping code --- lib/src/bootstrap/node.dart | 2 +- lib/src/runner/node/socket_channel.dart | 2 +- lib/src/runner/remote_listener.dart | 4 ++-- lib/src/util/stack_trace_mapper.dart | 4 ++-- lib/src/utils.dart | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/src/bootstrap/node.dart b/lib/src/bootstrap/node.dart index 35ed62eae..672abe2ca 100644 --- a/lib/src/bootstrap/node.dart +++ b/lib/src/bootstrap/node.dart @@ -13,7 +13,7 @@ import "../util/stack_trace_mapper.dart"; void internalBootstrapNodeTest(Function getMain()) { var channel = serializeSuite(getMain, beforeLoad: () async { var serialized = await suiteChannel("test.node.mapper").stream.first; - if (serialized == null) return; + if (serialized == null || serialized is! Map) return; setStackTraceMapper(StackTraceMapper.deserialize(serialized)); }); socketChannel().pipe(channel); diff --git a/lib/src/runner/node/socket_channel.dart b/lib/src/runner/node/socket_channel.dart index 322f1926a..12a96ada7 100644 --- a/lib/src/runner/node/socket_channel.dart +++ b/lib/src/runner/node/socket_channel.dart @@ -30,7 +30,7 @@ class _Socket { /// Returns a [StreamChannel] of JSON-encodable objects that communicates over a /// socket whose port is given by `process.argv[2]`. -StreamChannel socketChannel() { +StreamChannel socketChannel() { var controller = new StreamChannelController( allowForeignErrors: false, sync: true); var net = _require("net"); diff --git a/lib/src/runner/remote_listener.dart b/lib/src/runner/remote_listener.dart index db1ff215b..47dc88c79 100644 --- a/lib/src/runner/remote_listener.dart +++ b/lib/src/runner/remote_listener.dart @@ -49,8 +49,8 @@ class RemoteListener { // This has to be synchronous to work around sdk#25745. Otherwise, there'll // be an asynchronous pause before a syntax error notification is sent, // which will cause the send to fail entirely. - var controller = - new StreamChannelController(allowForeignErrors: false, sync: true); + var controller = new StreamChannelController( + allowForeignErrors: false, sync: true); var channel = new MultiChannel(controller.local); var verboseChain = true; diff --git a/lib/src/util/stack_trace_mapper.dart b/lib/src/util/stack_trace_mapper.dart index 52375d9f1..4c02a3159 100644 --- a/lib/src/util/stack_trace_mapper.dart +++ b/lib/src/util/stack_trace_mapper.dart @@ -60,8 +60,8 @@ class StackTraceMapper { sdkRoot: Uri.parse(serialized['sdkRoot']), packageResolver: packageRoot.isNotEmpty ? new SyncPackageResolver.root(Uri.parse(serialized['packageRoot'])) - : new SyncPackageResolver.config( - _deserializePackageConfigMap(serialized['packageConfigMap'])), + : new SyncPackageResolver.config(_deserializePackageConfigMap( + serialized['packageConfigMap'].cast())), mapUrl: Uri.parse(serialized['mapUrl'])); } diff --git a/lib/src/utils.dart b/lib/src/utils.dart index 60d55e5e2..0a69fe707 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -37,7 +37,7 @@ final lineSplitter = new StreamTransformer, String>( /// /// Note that this is only safe for channels whose messages are guaranteed not /// to contain newlines. -final chunksToLines = new StreamChannelTransformer( +final chunksToLines = new StreamChannelTransformer( const LineSplitter(), new StreamSinkTransformer.fromHandlers( handleData: (data, sink) => sink.add("$data\n"))); From 33dc399bad0dbdeada962e5b8d2ff1b4db5a6d1a Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Mon, 16 Apr 2018 12:05:58 -0700 Subject: [PATCH 5/9] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11695c6bf..64e367f01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ## 0.12.34+1 * Fixed an issue `--precompiled` node tests in subdirectories. +* Fixed some dart2 issues with node test bootstrapping code so that dartdevc + tests can run. ## 0.12.34 From b0611af70bb790a024335537e2a96a192b9d7c63 Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Mon, 16 Apr 2018 13:32:59 -0700 Subject: [PATCH 6/9] update minimum sdk constraint to 2.0.0-dev.22.0 --- CHANGELOG.md | 5 ++++- pubspec.yaml | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index adf2f1f67..08e895441 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ -## 0.12.34+1 +## 0.12.35 +* Dropped support for Dart 1. Going forward only Dart 2 will be supported. + * If you experience blocking issues and are still on the Dart 1 sdk, we will + consider bug fixes on a per-case basis based on severity and impact. * Fixed an issue `--precompiled` node tests in subdirectories. * Fixed some dart2 issues with node test bootstrapping code so that dartdevc tests can run. diff --git a/pubspec.yaml b/pubspec.yaml index be617b15e..078406ef3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,10 @@ name: test -version: 0.12.34+1 +version: 0.12.35 author: Dart Team description: A library for writing dart unit tests. homepage: https://github.com/dart-lang/test environment: - sdk: '>=1.24.0 <2.0.0' + sdk: '>=2.0.0-dev.22.0 <2.0.0' dependencies: analyzer: '>=0.26.4 <0.32.0' args: '>=0.13.1 <2.0.0' From 3eacda67ca2d46dfe660f1ce84ff6838edace72b Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Mon, 16 Apr 2018 13:38:24 -0700 Subject: [PATCH 7/9] remove stable tests from travis since its no longer supported --- .travis.yml | 34 +++++----------------------------- dart_test.yaml | 1 - 2 files changed, 5 insertions(+), 30 deletions(-) diff --git a/.travis.yml b/.travis.yml index 29218b8eb..610f141a9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,9 +5,9 @@ sudo: required dist: trusty dart: - - stable + - dev -env: FORCE_TEST_EXIT=true DARTIUM_EXPIRATION_TIME=1550044800LL +env: FORCE_TEST_EXIT=true # Content shell needs these fonts. addons: @@ -38,9 +38,9 @@ before_install: - ln -s `pwd`/`echo drt-linux-*`/content_shell bin/content_shell dart_task: - # Browser tests take particularly long on Dartium, so we split them up into different tasks. - - test: --platform dartium - install_dartium: true + + - dart_task: dartfmt + - dart_task: dartanalyzer # Split the tests into five shards to help parallelize them across Travis workers. - test: --preset travis --total-shards 5 --shard-index 0 @@ -54,30 +54,6 @@ dart_task: - test: --preset travis --total-shards 5 --shard-index 4 install_dartium: true -matrix: - include: - # Browser tests take particularly long, so we split them up into different tasks. - - dart: dev - dart_task: {test: --platform chrome} - - # Split the tests into five shards to help parallelize them across Travis workers. - # Don't run Dartium tests on dev because 2.0.0 doesn't support Dartium anymore. - - dart: dev - dart_task: {test: --preset travis --total-shards 5 --shard-index 0 -x dartium} - - dart: dev - dart_task: {test: --preset travis --total-shards 5 --shard-index 1 -x dartium} - - dart: dev - dart_task: {test: --preset travis --total-shards 5 --shard-index 2 -x dartium} - - dart: dev - dart_task: {test: --preset travis --total-shards 5 --shard-index 3 -x dartium} - - dart: dev - dart_task: {test: --preset travis --total-shards 5 --shard-index 4 -x dartium} - - - dart: dev - dart_task: dartfmt - - dart: dev - dart_task: dartanalyzer - # Only building master means that we don't run two builds for each pull request. branches: only: [master, /feature\..*/] diff --git a/dart_test.yaml b/dart_test.yaml index 503c8f5b1..41845a02d 100644 --- a/dart_test.yaml +++ b/dart_test.yaml @@ -30,7 +30,6 @@ tags: firefox: {add_tags: [dart2js]} chrome: {add_tags: [dart2js]} phantomjs: {add_tags: [dart2js]} - dartium: {add_tags: [browser]} safari: add_tags: [dart2js] From 54b5f34e2593842520e5b8bbfa6562900ab7f9b6 Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Mon, 16 Apr 2018 14:08:18 -0700 Subject: [PATCH 8/9] skip dartium tests, dont install dartium --- .travis.yml | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 610f141a9..8f585e22e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,16 +43,11 @@ dart_task: - dart_task: dartanalyzer # Split the tests into five shards to help parallelize them across Travis workers. - - test: --preset travis --total-shards 5 --shard-index 0 - install_dartium: true - - test: --preset travis --total-shards 5 --shard-index 1 - install_dartium: true - - test: --preset travis --total-shards 5 --shard-index 2 - install_dartium: true - - test: --preset travis --total-shards 5 --shard-index 3 - install_dartium: true - - test: --preset travis --total-shards 5 --shard-index 4 - install_dartium: true + - test: --preset travis --total-shards 5 --shard-index 0 -x dartium + - test: --preset travis --total-shards 5 --shard-index 1 -x dartium + - test: --preset travis --total-shards 5 --shard-index 2 -x dartium + - test: --preset travis --total-shards 5 --shard-index 3 -x dartium + - test: --preset travis --total-shards 5 --shard-index 4 -x dartium # Only building master means that we don't run two builds for each pull request. branches: From c25be01e0628acd46f9c1a2f1e628c0ad6bfb9da Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Tue, 17 Apr 2018 06:57:46 -0700 Subject: [PATCH 9/9] try and fix up yaml format --- .travis.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8f585e22e..4f101d6d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,10 +38,8 @@ before_install: - ln -s `pwd`/`echo drt-linux-*`/content_shell bin/content_shell dart_task: - - - dart_task: dartfmt - - dart_task: dartanalyzer - + - dartfmt + - dartanalyzer # Split the tests into five shards to help parallelize them across Travis workers. - test: --preset travis --total-shards 5 --shard-index 0 -x dartium - test: --preset travis --total-shards 5 --shard-index 1 -x dartium