https://dart-review.googlesource.com/c/sdk/+/149080 is required to get errors if you try use weak .dill files when passing the --sound-null-safety flag. Added a new build target to copy the sound SDK outline .dill to dart-sdk/lib/_internal. This is only part of dartdevc_test right now. We will decide in the future if we are going to include this in the released SDK or if we will have the build systems create them as needed. For now in testing scenarios it appears to be part of the SDK. Change-Id: I3b31a894841f59b437658104e7ee9443ee67db93 Fixes: https://github.com/dart-lang/sdk/issues/41694 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146962 Commit-Queue: Nicholas Shahan <nshahan@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com> Reviewed-by: Bob Nystrom <rnystrom@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
Testing of source maps
This folder contains two types of tests for validating sourcemaps: the debugging behavior and the stacktrace behavior.
For both there are 2 suits: One for (legacy) DDC and one for DDC with kernel (DDK).
Running the tests likely requires the compilation of the correct targets. DDK currently also
requires ddc_sdk.dill inside
{sdkroot}/{out,xcodebuild}/ReleaseX64/ddc_sdk.dill.
Except for that, running them should simply be a matter of executing the *_suite.dart files.
All tests are plain Dart files and goes in "testfiles" (debugging tests) or "stacktrace_testfiles" (stacktrace tests). They are automatically picked up by the testing framework.
Debugging tests (step tests)
See README.md in pkg/sourcemap_testing.
Debugging a test
One can filter which tests are run by running (from the sourcemap folder):
dart sourcemaps_ddc_suite.dart -- sourcemaps_ddc//printing_class_fields
One can additionally get debug output for failing tests (i.e. tests with different outcome than expected), e.g.:
dart sourcemaps_ddc_suite.dart -Ddebug=true -- sourcemaps_ddc//printing_class_fields
The latter is also useful in combination with /*fail*/ when adding new tests to see all the places
where the debugger stopped (both in JS positions and translated to dart positions).
For instance -Ddebug=true -- sourcemaps_ddk//next_through_catch_test with a /*fail*/
currently gives output like the following:
Stop #1
test.main = function() { | main() {
try { | try {
let value = /*STOP*/"world"; | var value = /*STOP*/"world";
dart.throw(dart.str`Hello, ${value}`); | // Comment
} catch (e) { | throw "Hello, $value";
Stop #2
try { | var value = "world";
let value = "world"; | // Comment
/*STOP*/dart.throw(dart.str`Hello, ${value}`); | /*STOP*/throw "Hello, $value";
} catch (e) { | }
let st = dart.stackTrace(e); | // Comment
Stop #3
dart.throw(dart.str`Hello, ${value}`); | }
} catch (e) { | // Comment
let st = /*STOP*/dart.stackTrace(e); | catch (e, /*STOP*/st) {
{ | print(e);
core.print(e); | print(st);
[...]