()
| 340 | test.init(); |
| 341 | }); |
| 342 | function run() { |
| 343 | // each of these can by async |
| 344 | synchronize(function() { |
| 345 | test.setup(); |
| 346 | }); |
| 347 | synchronize(function() { |
| 348 | test.run(); |
| 349 | }); |
| 350 | synchronize(function() { |
| 351 | test.teardown(); |
| 352 | }); |
| 353 | synchronize(function() { |
| 354 | test.finish(); |
| 355 | }); |
| 356 | } |
| 357 | |
| 358 | // `bad` initialized at top of scope |
| 359 | // defer when previous test run passed, if storage is available |