| # Testing of source maps | |
| This folder contains two types of tests for validating sourcemaps: | |
| the debugging behavior and the stacktrace behavior. | |
| Running the tests requires building the sdk target: `ddc_stable_test`. | |
| 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_suite.dart -- sourcemaps/printing_class_fields | |
| ``` | |
| One can additionally get debug output for failing tests (i.e. tests with different outcome than | |
| expected), e.g.: | |
| ``` | |
| dart sourcemaps_suite.dart -Ddebug=true -- sourcemaps/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/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); | |
| [...] | |
| ``` |