OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 define(['dart_sdk', 'async_helper', 'unittest', 'require'], | 5 define(['dart_sdk', 'async_helper', 'minitest', 'unittest', 'require'], |
6 function(dart_sdk, async_helper, unittest, require) { | 6 function(dart_sdk, async_helper, minitest, unittest, require) { |
7 'use strict'; | 7 'use strict'; |
8 | 8 |
9 async_helper = async_helper.async_helper; | 9 async_helper = async_helper.async_helper; |
| 10 minitest = minitest.minitest; |
10 | 11 |
11 dart_sdk._isolate_helper.startRootIsolate(function() {}, []); | 12 dart_sdk._isolate_helper.startRootIsolate(function() {}, []); |
12 let html_config = unittest.html_config; | 13 let html_config = unittest.html_config; |
13 // Test attributes are a list of strings, or a string for a single | 14 // Test attributes are a list of strings, or a string for a single |
14 // attribute. Valid attributes are: | 15 // attribute. Valid attributes are: |
15 // | 16 // |
16 // 'skip' - don't run the test | 17 // 'skip' - don't run the test |
17 // 'fail' - test fails | 18 // 'fail' - test fails |
18 // 'timeout' - test times out | 19 // 'timeout' - test times out |
19 // 'slow' - use 5s timeout instead of default 2s. | 20 // 'slow' - use 5s timeout instead of default 2s. |
20 // 'helper' - not a test, used by other tests. | 21 // 'helper' - not a test, used by other tests. |
21 // 'unittest' - run separately as a unittest test. | 22 // 'unittest' - run separately as a unittest test. |
22 // | 23 // |
23 // Common combinations: | 24 // Common combinations: |
24 const fail = 'fail'; | 25 const fail = 'fail'; |
25 const skip_fail = ['skip', 'fail']; | 26 const skip_fail = ['skip', 'fail']; |
26 const skip_timeout = ['skip', 'timeout']; | 27 const skip_timeout = ['skip', 'timeout']; |
27 | 28 |
| 29 // Tests marked with this are still using the deprecated unittest package |
| 30 // because they rely on its support for futures and asynchronous tests, which |
| 31 // expect and minitest do not handle. |
| 32 // TODO(rnystrom): Move all of these away from using the async test API so |
| 33 // they can stop using unittest. |
| 34 const async_unittest = ['unittest', 'skip', 'fail']; |
| 35 |
28 // The number of expected unittest errors should be zero but unfortunately | 36 // The number of expected unittest errors should be zero but unfortunately |
29 // there are a lot of broken html unittests. | 37 // there are a lot of broken html unittests. |
30 let num_expected_unittest_fails = 5; | 38 let num_expected_unittest_fails = 3; |
31 let num_expected_unittest_errors = 8; | 39 let num_expected_unittest_errors = 2; |
32 | 40 |
33 // TODO(jmesserly): separate StrongModeError from other errors. | 41 // TODO(jmesserly): separate StrongModeError from other errors. |
34 let all_status = { | 42 let all_status = { |
35 'language': { | 43 'language': { |
36 'assert_with_type_test_or_cast_test': skip_fail, | 44 'assert_with_type_test_or_cast_test': skip_fail, |
37 'assertion_test': skip_fail, | 45 'assertion_test': skip_fail, |
38 'async_await_test_none_multi': 'unittest', | 46 'async_await_test_none_multi': 'unittest', |
39 'async_await_test_02_multi': 'unittest', | 47 'async_await_test_02_multi': 'unittest', |
40 'async_await_test_03_multi': skip_fail, // Flaky on travis (#634) | 48 'async_await_test_03_multi': skip_fail, // Flaky on travis (#634) |
41 'async_star_await_pauses_test': skip_fail, | 49 'async_star_await_pauses_test': skip_fail, |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 'streamed_conversion_json_utf8_encode_test': skip_timeout, | 407 'streamed_conversion_json_utf8_encode_test': skip_timeout, |
400 'streamed_conversion_utf8_decode_test': skip_timeout, | 408 'streamed_conversion_utf8_decode_test': skip_timeout, |
401 'streamed_conversion_utf8_encode_test': skip_timeout, | 409 'streamed_conversion_utf8_encode_test': skip_timeout, |
402 'utf85_test': skip_timeout, | 410 'utf85_test': skip_timeout, |
403 }, | 411 }, |
404 | 412 |
405 // TODO(jacobr): enable more of the html tests in unittest once they have | 413 // TODO(jacobr): enable more of the html tests in unittest once they have |
406 // more hope of passing. Triage tests that can never run in this test | 414 // more hope of passing. Triage tests that can never run in this test |
407 // runner and track them separately. | 415 // runner and track them separately. |
408 'lib/html': { | 416 'lib/html': { |
409 'async_spawnuri_test': ['unittest', 'skip', 'fail'], | 417 'async_spawnuri_test': async_unittest, |
410 'async_test': ['unittest', 'skip', 'fail'], | 418 'async_test': async_unittest, |
411 'audiobuffersourcenode_test': ['unittest', 'skip', 'fail'], | 419 'audiobuffersourcenode_test': 'fail', // sdk#27578. |
412 'audiocontext_test': ['unittest', 'skip', 'fail'], | 420 'audiocontext_test': 'fail', // sdk#27578. |
413 'audioelement_test': ['unittest', 'skip', 'fail'], | 421 'blob_constructor_test': 'fail', // sdk#27578. |
414 'b_element_test': ['unittest', 'skip', 'fail'], | 422 'cache_test': 'fail', // sdk#27578. |
415 'blob_constructor_test': ['unittest', 'skip', 'fail'], | 423 'canvas_test': ['unittest'], |
416 'cache_test': ['unittest', 'skip', 'fail'], | |
417 'callbacks_test': ['unittest', 'skip', 'fail'], | |
418 'canvas_pixel_array_type_alias_test': ['unittest'], | |
419 'canvasrenderingcontext2d_test': ['unittest'], | 424 'canvasrenderingcontext2d_test': ['unittest'], |
420 'canvas_test': ['unittest'], | 425 'cross_domain_iframe_test': async_unittest, |
421 'cdata_test': ['unittest', 'skip', 'fail'], | 426 'crypto_test': 'fail', // sdk#27578. |
422 'client_rect_test': ['unittest', 'skip', 'fail'], | 427 'cssstyledeclaration_test': async_unittest, |
423 'cross_domain_iframe_test': ['unittest', 'skip', 'fail'], | 428 'css_test': async_unittest, |
424 'cross_frame_test': ['unittest', 'skip', 'fail'], | 429 |
425 'crypto_test': ['unittest', 'skip', 'fail'], | 430 // This is failing with a range error, I'm guessing because it's looking |
426 'css_rule_list_test': ['unittest', 'skip', 'fail'], | 431 // for a stylesheet and the page has none. |
427 'cssstyledeclaration_test': ['unittest', 'skip', 'fail'], | 432 'css_rule_list_test': 'fail', |
428 'css_test': ['unittest', 'skip', 'fail'], | 433 'custom_element_method_clash_test': async_unittest, |
429 'custom_element_method_clash_test': ['unittest', 'skip', 'fail'], | 434 'custom_element_name_clash_test': async_unittest, |
430 'custom_element_name_clash_test': ['unittest', 'skip', 'fail'], | 435 'custom_elements_23127_test': async_unittest, |
431 'custom_elements_23127_test': ['unittest', 'skip', 'fail'], | 436 'custom_elements_test': async_unittest, |
432 'custom_elements_test': ['unittest', 'skip', 'fail'], | 437 'datalistelement_test': 'fail', // sdk#27578. |
433 'custom_tags_test': ['unittest', 'skip', 'fail'], | 438 'dom_constructors_test': 'fail', // sdk#27578. |
434 'dart_object_local_storage_test': ['unittest', 'skip', 'fail'], | 439 'element_animate_test': async_unittest, |
435 'datalistelement_test': ['unittest', 'skip', 'fail'], | 440 'element_classes_test': 'fail', // sdk#27579. |
436 'documentfragment_test': ['unittest', 'skip', 'fail'], | 441 'element_classes_svg_test': 'fail', // sdk#27579. |
437 'document_test': ['unittest'], | 442 |
438 'dom_constructors_test': ['unittest', 'skip', 'fail'], | 443 // This fails because we get 150 instead of 10 on line 45. |
439 'domparser_test': ['unittest', 'skip', 'fail'], | 444 'element_dimensions_test': 'fail', |
440 'element_add_test': ['unittest', 'skip', 'fail'], | 445 |
441 'element_animate_test': ['unittest', 'skip', 'fail'], | 446 // Failure: 'Expected 364 to be in the inclusive range [111, 160].'. |
442 'element_classes_svg_test': ['unittest', 'skip', 'fail'], | 447 'element_offset_test': 'fail', |
443 'element_classes_test': ['unittest', 'skip', 'fail'], | 448 'element_test': async_unittest, |
444 'element_constructor_1_test': ['unittest', 'skip', 'fail'], | 449 'element_types_test': 'fail', // sdk#27578. |
445 'element_dimensions_test': ['unittest', 'skip', 'fail'], | 450 'event_customevent_test': async_unittest, |
446 'element_offset_test': ['unittest', 'skip', 'fail'], | 451 'events_test': async_unittest, |
447 'element_test': ['unittest', 'skip', 'fail'], | 452 |
448 'element_types_constructors1_test': ['unittest', 'skip', 'fail'], | 453 // Failure: "Failed to execute 'dispatchEvent' on 'EventTarget': parameter |
449 'element_types_constructors2_test': ['unittest', 'skip', 'fail'], | 454 // 1 is not of type 'Event'." |
450 'element_types_constructors3_test': ['unittest', 'skip', 'fail'], | 455 'event_test': 'fail', |
451 'element_types_constructors4_test': ['unittest', 'skip', 'fail'], | 456 'fileapi_test': async_unittest, |
452 'element_types_constructors5_test': ['unittest', 'skip', 'fail'], | 457 'filereader_test': async_unittest, |
453 'element_types_constructors6_test': ['unittest', 'skip', 'fail'], | 458 'fontface_loaded_test': async_unittest, |
454 'element_types_test': ['unittest', 'skip', 'fail'], | 459 |
455 'event_customevent_test': ['unittest', 'skip', 'fail'], | 460 // Failed because it's expecting "Ahem" but getting null. Maybe sdk#27579? |
456 'events_test': ['unittest', 'skip', 'fail'], | 461 'fontface_test': 'fail', |
457 'event_test': ['unittest', 'skip', 'fail'], | 462 'form_data_test': async_unittest, |
458 'exceptions_test': ['unittest', 'skip', 'fail'], | 463 'history_test': async_unittest, |
459 'fileapi_test': ['unittest', 'skip', 'fail'], | 464 |
460 'filereader_test': ['unittest', 'skip', 'fail'], | 465 // Failing because innerHtml should be 'Hello World' but was ''. |
461 'filteredelementlist_test': ['unittest', 'skip', 'fail'], | 466 'htmlelement_test': 'fail', |
462 'fontface_loaded_test': ['unittest', 'skip', 'fail'], | 467 'indexeddb_1_test': async_unittest, |
463 'fontface_test': ['unittest', 'skip', 'fail'], | 468 'indexeddb_2_test': async_unittest, |
464 'form_data_test': ['unittest', 'skip', 'fail'], | 469 'indexeddb_3_test': async_unittest, |
465 'form_element_test': ['unittest', 'skip', 'fail'], | 470 'indexeddb_4_test': async_unittest, |
466 'geolocation_test': ['unittest', 'skip', 'fail'], | 471 'indexeddb_5_test': async_unittest, |
467 'hidden_dom_1_test': ['unittest', 'skip', 'fail'], | 472 'input_element_test': 'fail', // sdk#27578. |
468 'hidden_dom_2_test': ['unittest', 'skip', 'fail'], | 473 'interactive_test': async_unittest, |
469 'history_test': ['unittest', 'skip', 'fail'], | 474 'isolates_test': async_unittest, |
470 'htmlcollection_test': ['unittest', 'skip', 'fail'], | 475 |
471 'htmlelement_test': ['unittest', 'skip', 'fail'], | 476 // Failing on "identical JS objects should have identical proxies". |
472 'htmloptionscollection_test': ['unittest', 'skip', 'fail'], | 477 'js_test': 'fail', |
473 'indexeddb_1_test': ['unittest', 'skip', 'fail'], | 478 'js_interop_1_test': async_unittest, |
474 'indexeddb_2_test': ['unittest', 'skip', 'fail'], | 479 |
475 'indexeddb_3_test': ['unittest', 'skip', 'fail'], | 480 // Failing because accessing "zSomeInvalidName" does not throw. |
476 'indexeddb_4_test': ['unittest', 'skip', 'fail'], | 481 'js_typed_interop_test': 'fail', |
477 'indexeddb_5_test': ['unittest', 'skip', 'fail'], | 482 |
478 'input_element_test': ['unittest', 'skip', 'fail'], | 483 // The "typed literal" test fails because the object does not have "_c". |
479 'instance_of_test': ['unittest', 'skip', 'fail'], | 484 'js_util_test': 'fail', |
480 'interactive_test': ['unittest', 'skip', 'fail'], | |
481 'isolates_test': ['unittest', 'skip', 'fail'], | |
482 'js_function_getter_test': 'unittest', | |
483 'js_function_getter_trust_types_test': 'unittest', | |
484 'js_interop_1_test': 'unittest', | |
485 'js_test': 'unittest', | |
486 'js_util_test': 'unittest', | |
487 'js_typed_interop_anonymous2_exp_test': 'unittest', | |
488 'js_typed_interop_anonymous2_test': 'unittest', | |
489 'js_typed_interop_anonymous_exp_test': 'unittest', | |
490 'js_typed_interop_anonymous_test': 'unittest', | |
491 'js_typed_interop_anonymous_unreachable_exp_test': 'unittest', | |
492 'js_typed_interop_anonymous_unreachable_test': 'unittest', | |
493 'js_typed_interop_default_arg_test': 'unittest', | |
494 'js_typed_interop_side_cast_exp_test': 'unittest', | |
495 'js_typed_interop_side_cast_test': 'unittest', | |
496 'js_typed_interop_test': 'unittest', | |
497 'keyboard_event_test': ['unittest', 'skip', 'fail'], | 485 'keyboard_event_test': ['unittest', 'skip', 'fail'], |
498 'localstorage_test': ['unittest', 'skip', 'fail'], | 486 'localstorage_test': ['unittest', 'skip', 'fail'], |
499 'location_test': ['unittest', 'skip', 'fail'], | 487 'location_test': ['unittest', 'skip', 'fail'], |
500 'mediasource_test': ['unittest', 'skip', 'fail'], | 488 'mediasource_test': ['unittest', 'skip', 'fail'], |
501 'media_stream_test': ['unittest', 'skip', 'fail'], | 489 'media_stream_test': ['unittest', 'skip', 'fail'], |
502 'messageevent_test': ['unittest', 'skip', 'fail'], | 490 'messageevent_test': ['unittest', 'skip', 'fail'], |
503 'mirrors_js_typed_interop_test': ['unittest', 'skip', 'fail'], | 491 'mirrors_js_typed_interop_test': ['unittest', 'skip', 'fail'], |
504 'mouse_event_test': ['unittest', 'skip', 'fail'], | 492 'mouse_event_test': ['unittest', 'skip', 'fail'], |
505 'mutationobserver_test': ['unittest', 'skip', 'fail'], | 493 'mutationobserver_test': ['unittest', 'skip', 'fail'], |
506 'native_gc_test': ['unittest', 'skip', 'fail'], | 494 'native_gc_test': ['unittest', 'skip', 'fail'], |
(...skipping 14 matching lines...) Expand all Loading... |
521 'selectelement_test': ['unittest', 'skip', 'fail'], | 509 'selectelement_test': ['unittest', 'skip', 'fail'], |
522 'serialized_script_value_test': ['unittest', 'skip', 'fail'], | 510 'serialized_script_value_test': ['unittest', 'skip', 'fail'], |
523 'shadow_dom_test': ['unittest', 'skip', 'fail'], | 511 'shadow_dom_test': ['unittest', 'skip', 'fail'], |
524 'shadowroot_test': ['unittest', 'skip', 'fail'], | 512 'shadowroot_test': ['unittest', 'skip', 'fail'], |
525 'speechrecognition_test': ['unittest', 'skip', 'fail'], | 513 'speechrecognition_test': ['unittest', 'skip', 'fail'], |
526 'storage_test': ['unittest', 'skip', 'fail'], | 514 'storage_test': ['unittest', 'skip', 'fail'], |
527 'streams_test': ['unittest', 'skip', 'fail'], | 515 'streams_test': ['unittest', 'skip', 'fail'], |
528 'svgelement_test': ['unittest', 'skip', 'fail'], | 516 'svgelement_test': ['unittest', 'skip', 'fail'], |
529 'svg_test': ['unittest', 'skip', 'fail'], | 517 'svg_test': ['unittest', 'skip', 'fail'], |
530 'table_test': ['unittest', 'skip', 'fail'], | 518 'table_test': ['unittest', 'skip', 'fail'], |
531 'text_event_test': ['unittest', 'skip', 'fail'], | |
532 'touchevent_test': ['unittest', 'skip', 'fail'], | 519 'touchevent_test': ['unittest', 'skip', 'fail'], |
533 'track_element_constructor_test': ['unittest', 'skip', 'fail'], | 520 'track_element_constructor_test': ['unittest', 'skip', 'fail'], |
534 'transferables_test': ['unittest', 'skip', 'fail'], | 521 'transferables_test': ['unittest', 'skip', 'fail'], |
535 'transition_event_test': ['unittest', 'skip', 'fail'], | 522 'transition_event_test': ['unittest', 'skip', 'fail'], |
536 'trusted_html_tree_sanitizer_test': ['unittest', 'skip', 'fail'], | 523 'trusted_html_tree_sanitizer_test': ['unittest', 'skip', 'fail'], |
537 'typed_arrays_1_test': ['unittest', 'skip', 'fail'], | 524 'typed_arrays_1_test': ['unittest', 'skip', 'fail'], |
538 'typed_arrays_2_test': ['unittest', 'skip', 'fail'], | 525 'typed_arrays_2_test': ['unittest', 'skip', 'fail'], |
539 'typed_arrays_3_test': ['unittest', 'skip', 'fail'], | 526 'typed_arrays_3_test': ['unittest', 'skip', 'fail'], |
540 'typed_arrays_4_test': ['unittest', 'skip', 'fail'], | 527 'typed_arrays_4_test': ['unittest', 'skip', 'fail'], |
541 'typed_arrays_5_test': ['unittest', 'skip', 'fail'], | 528 'typed_arrays_5_test': ['unittest', 'skip', 'fail'], |
(...skipping 15 matching lines...) Expand all Loading... |
557 'window_test': ['unittest', 'skip', 'fail'], | 544 'window_test': ['unittest', 'skip', 'fail'], |
558 'worker_api_test': ['unittest', 'skip', 'fail'], | 545 'worker_api_test': ['unittest', 'skip', 'fail'], |
559 'worker_test': ['unittest', 'skip', 'fail'], | 546 'worker_test': ['unittest', 'skip', 'fail'], |
560 'wrapping_collections_test': ['unittest', 'skip', 'fail'], | 547 'wrapping_collections_test': ['unittest', 'skip', 'fail'], |
561 'xhr_cross_origin_test': ['unittest', 'skip', 'fail'], | 548 'xhr_cross_origin_test': ['unittest', 'skip', 'fail'], |
562 'xhr_test': ['unittest', 'skip', 'fail'], | 549 'xhr_test': ['unittest', 'skip', 'fail'], |
563 'xsltprocessor_test': ['unittest', 'skip', 'fail'], | 550 'xsltprocessor_test': ['unittest', 'skip', 'fail'], |
564 | 551 |
565 'js_typed_interop_default_arg_test_none_multi': ['unittest', 'skip', 'fail
'], | 552 'js_typed_interop_default_arg_test_none_multi': ['unittest', 'skip', 'fail
'], |
566 'js_typed_interop_default_arg_test_explicit_argument_multi': ['unittest',
'skip', 'fail'], | 553 'js_typed_interop_default_arg_test_explicit_argument_multi': ['unittest',
'skip', 'fail'], |
567 'js_typed_interop_default_arg_test_default_value_multi': ['unittest', 'ski
p', 'fail'] | 554 |
| 555 // Failing when it gets 3 instead of 42. |
| 556 'js_typed_interop_default_arg_test_default_value_multi': 'fail', |
568 }, | 557 }, |
569 | 558 |
570 'lib/html/custom': { | 559 'lib/html/custom': { |
571 'attribute_changed_callback_test': ['unittest', 'skip', 'fail'], | 560 'attribute_changed_callback_test': ['unittest', 'skip', 'fail'], |
572 'constructor_calls_created_synchronously_test': | 561 'constructor_calls_created_synchronously_test': |
573 ['unittest', 'skip', 'fail'], | 562 ['unittest', 'skip', 'fail'], |
574 'created_callback_test': ['unittest', 'skip', 'fail'], | 563 'created_callback_test': ['unittest', 'skip', 'fail'], |
575 'document_register_basic_test': ['unittest', 'skip', 'fail'], | 564 'document_register_basic_test': ['unittest', 'skip', 'fail'], |
576 'document_register_type_extensions_test': ['unittest', 'skip', 'fail'], | 565 'document_register_type_extensions_test': ['unittest', 'skip', 'fail'], |
577 'element_upgrade_test': ['unittest', 'skip', 'fail'], | 566 'element_upgrade_test': ['unittest', 'skip', 'fail'], |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 throw new Error( | 802 throw new Error( |
814 "negative test marked as 'fail' " + | 803 "negative test marked as 'fail' " + |
815 "but passed by throwing:\n" + e); | 804 "but passed by throwing:\n" + e); |
816 } | 805 } |
817 } else { | 806 } else { |
818 if (e == null) { | 807 if (e == null) { |
819 throw new Error("test marked as 'fail' but passed"); | 808 throw new Error("test marked as 'fail' but passed"); |
820 } | 809 } |
821 } | 810 } |
822 } else { | 811 } else { |
823 if (negative) { | 812 try { |
824 assert.throws(mainLibrary.main); | 813 if (negative) { |
825 } else { | 814 assert.throws(mainLibrary.main); |
826 mainLibrary.main(); | 815 } else { |
| 816 mainLibrary.main(); |
| 817 } |
| 818 } finally { |
| 819 minitest.finishTests(); |
827 } | 820 } |
828 } | 821 } |
829 | 822 |
830 if (!async_helper.asyncTestStarted) done(); | 823 if (!async_helper.asyncTestStarted) done(); |
831 }); | 824 }); |
832 } | 825 } |
833 } | 826 } |
834 | 827 |
835 let mochaOnError; | 828 let mochaOnError; |
836 // We run these tests in a mocha test wrapper to avoid the confusing failure | 829 // We run these tests in a mocha test wrapper to avoid the confusing failure |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
888 | 881 |
889 for (let action of unittest_tests) { | 882 for (let action of unittest_tests) { |
890 try { | 883 try { |
891 action(); | 884 action(); |
892 } catch (e) { | 885 } catch (e) { |
893 console.error("Caught error tying to setup test:", e); | 886 console.error("Caught error tying to setup test:", e); |
894 } | 887 } |
895 } | 888 } |
896 }); | 889 }); |
897 }); | 890 }); |
OLD | NEW |