Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: test/browser/language_tests.js

Issue 1956513004: Switch to actual unittest, stack trace, and path packages. Tag tests as failing that were ignored d… (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pubspec.yaml ('k') | test/codegen/expect/unittest.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 (function() { 5 (function() {
6 'use strict'; 6 'use strict';
7 7
8 let dart_sdk = dart_library.import('dart_sdk'); 8 let dart_sdk = dart_library.import('dart_sdk');
9 dart_sdk._isolate_helper.startRootIsolate(function() {}, []); 9 dart_sdk._isolate_helper.startRootIsolate(function() {}, []);
10 let async_helper = dart_library.import('async_helper').async_helper; 10 let async_helper = dart_library.import('async_helper').async_helper;
11 11 let unittest = dart_library.import('unittest');
12 let html_config = unittest.html_config;
12 // Test attributes are a list of strings, or a string for a single 13 // Test attributes are a list of strings, or a string for a single
13 // attribute. Valid attribues are: 14 // attribute. Valid attribues are:
14 // 15 //
15 // 'skip' - don't run the test 16 // 'skip' - don't run the test
16 // 'fail' - test fails 17 // 'fail' - test fails
17 // 'timeout' - test times out 18 // 'timeout' - test times out
18 // 'slow' - use 5s timeout instead of default 2s. 19 // 'slow' - use 5s timeout instead of default 2s.
19 // 'helper' - not a test, used by other tests. 20 // 'helper' - not a test, used by other tests.
20 // 'unittest' - run separately as a unittest test. 21 // 'unittest' - run separately as a unittest test.
21 // 22 //
22 // Common combinations: 23 // Common combinations:
23 const fail = 'fail'; 24 const fail = 'fail';
24 const skip_fail = ['skip', 'fail']; 25 const skip_fail = ['skip', 'fail'];
25 const skip_timeout = ['skip', 'timeout']; 26 const skip_timeout = ['skip', 'timeout'];
26 27
28 // The number of expected unittest errors should be zero but unfortunately
29 // there are a lot of broken html unittests.
30 let num_expected_unittest_errors = 5;
31
27 // TODO(jmesserly): separate StrongModeError from other errors. 32 // TODO(jmesserly): separate StrongModeError from other errors.
28 let all_status = { 33 let all_status = {
29 'language': { 34 'language': {
30 'arithmetic2_test': fail, 35 'arithmetic2_test': fail,
31 'assert_with_type_test_or_cast_test': skip_fail, 36 'assert_with_type_test_or_cast_test': skip_fail,
32 'assertion_test': skip_fail, 37 'assertion_test': skip_fail,
33 'async_await_test_none_multi': 'unittest', 38 'async_await_test_none_multi': 'unittest',
34 'async_star_await_pauses_test': skip_fail, 39 'async_star_await_pauses_test': skip_fail,
35 40
36 // TODO(jmesserly): figure out why this test is hanging. 41 // TODO(jmesserly): figure out why this test is hanging.
37 'async_star_cancel_and_throw_in_finally_test': skip_timeout, 42 'async_star_cancel_and_throw_in_finally_test': skip_timeout,
38 43
39 'async_star_cancel_while_paused_test': skip_fail, 44 'async_star_cancel_while_paused_test': skip_fail,
45 'async_star_regression_fisk_test': skip_fail,
40 46
41 // TODO(vsm): Re-enable. 47 // TODO(vsm): Re-enable.
42 // See https://github.com/dart-lang/dev_compiler/issues/456 48 // See https://github.com/dart-lang/dev_compiler/issues/456
43 'async_star_test_none_multi': ['unittest', 'skip', 'fail'], 49 'async_star_test_none_multi': ['unittest', 'skip', 'fail'],
44 'async_star_test_01_multi': ['unittest', 'skip', 'fail'], 50 'async_star_test_01_multi': ['unittest', 'skip', 'fail'],
45 'async_star_test_02_multi': ['unittest', 'skip', 'fail'], 51 'async_star_test_02_multi': ['unittest', 'skip', 'fail'],
46 'async_star_test_03_multi': ['unittest', 'skip', 'fail'], 52 'async_star_test_03_multi': ['unittest', 'skip', 'fail'],
47 'async_star_test_04_multi': ['unittest', 'skip', 'fail'], 53 'async_star_test_04_multi': ['unittest', 'skip', 'fail'],
48 'async_star_test_05_multi': ['unittest', 'skip', 'fail'], 54 'async_star_test_05_multi': ['unittest', 'skip', 'fail'],
49 55
56 'async_switch_test': skip_fail,
50 'asyncstar_throw_in_catch_test': skip_fail, 57 'asyncstar_throw_in_catch_test': skip_fail,
51 'await_future_test': skip_fail, 58 'await_future_test': skip_fail,
52 'bit_operations_test_none_multi': skip_fail, 59 'bit_operations_test_none_multi': skip_fail,
53 'bit_shift_test': skip_fail, 60 'bit_shift_test': skip_fail,
54 'bool_test': skip_fail, 61 'bool_test': skip_fail,
55 'bound_closure_equality_test': skip_fail, 62 'bound_closure_equality_test': skip_fail,
56 'branch_canonicalization_test': skip_fail, // JS bit operations truncate to 32 bits. 63 'branch_canonicalization_test': skip_fail, // JS bit operations truncate to 32 bits.
57 'call_closurization_test': skip_fail, 64 'call_closurization_test': skip_fail,
58 'call_function_apply_test': skip_fail, 65 'call_function_apply_test': skip_fail,
59 'call_operator_test': skip_fail, 66 'call_operator_test': skip_fail,
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 472
466 // TODO(vsm): List.toString is different in DDC 473 // TODO(vsm): List.toString is different in DDC
467 // https://github.com/dart-lang/dev_compiler/issues/445 474 // https://github.com/dart-lang/dev_compiler/issues/445
468 'setRange_1_test': skip_fail, 475 'setRange_1_test': skip_fail,
469 'setRange_2_test': skip_fail, 476 'setRange_2_test': skip_fail,
470 'setRange_3_test': skip_fail, 477 'setRange_3_test': skip_fail,
471 'setRange_4_test': skip_fail, 478 'setRange_4_test': skip_fail,
472 'setRange_5_test': skip_fail, 479 'setRange_5_test': skip_fail,
473 }, 480 },
474 481
482 // TODO(jacobr): enable more of the html tests in unittest once they have
483 // more hope of passing. Triage tests that can never run in this test
484 // runner and track them separately.
475 'lib/html': { 485 'lib/html': {
486 'async_spawnuri_test': ['unittest', 'skip', 'fail'],
487 'async_test': ['unittest', 'skip', 'fail'],
488 'audiobuffersourcenode_test': ['unittest', 'skip', 'fail'],
489 'audiocontext_test': ['unittest', 'skip', 'fail'],
490 'audioelement_test': ['unittest', 'skip', 'fail'],
491 'b_element_test': ['unittest', 'skip', 'fail'],
492 'blob_constructor_test': ['unittest', 'skip', 'fail'],
493 'cache_test': ['unittest', 'skip', 'fail'],
494 'callbacks_test': ['unittest', 'skip', 'fail'],
495 'canvas_pixel_array_type_alias_test': ['unittest'],
496 'canvasrenderingcontext2d_test': ['unittest'],
497 'canvas_test': ['unittest'],
498 'cdata_test': ['unittest', 'skip', 'fail'],
499 'client_rect_test': ['unittest', 'skip', 'fail'],
500 'cross_domain_iframe_test': ['unittest', 'skip', 'fail'],
501 'cross_frame_test': ['unittest', 'skip', 'fail'],
502 'crypto_test': ['unittest', 'skip', 'fail'],
503 'css_rule_list_test': ['unittest', 'skip', 'fail'],
504 'cssstyledeclaration_test': ['unittest', 'skip', 'fail'],
505 'css_test': ['unittest', 'skip', 'fail'],
506 'custom_element_method_clash_test': ['unittest', 'skip', 'fail'],
507 'custom_element_name_clash_test': ['unittest', 'skip', 'fail'],
508 'custom_elements_23127_test': ['unittest', 'skip', 'fail'],
509 'custom_elements_test': ['unittest', 'skip', 'fail'],
510 'custom_tags_test': ['unittest', 'skip', 'fail'],
511 'dart_object_local_storage_test': ['unittest', 'skip', 'fail'],
512 'datalistelement_test': ['unittest', 'skip', 'fail'],
513 'documentfragment_test': ['unittest', 'skip', 'fail'],
514 'document_test': ['unittest'],
515 'dom_constructors_test': ['unittest', 'skip', 'fail'],
516 'domparser_test': ['unittest', 'skip', 'fail'],
517 'element_add_test': ['unittest', 'skip', 'fail'],
518 'element_animate_test': ['unittest', 'skip', 'fail'],
519 'element_classes_svg_test': ['unittest', 'skip', 'fail'],
520 'element_classes_test': ['unittest', 'skip', 'fail'],
521 'element_constructor_1_test': ['unittest', 'skip', 'fail'],
522 'element_dimensions_test': ['unittest', 'skip', 'fail'],
523 'element_offset_test': ['unittest', 'skip', 'fail'],
524 'element_test': ['unittest', 'skip', 'fail'],
525 'element_types_constructors1_test': ['unittest', 'skip', 'fail'],
526 'element_types_constructors2_test': ['unittest', 'skip', 'fail'],
527 'element_types_constructors3_test': ['unittest', 'skip', 'fail'],
528 'element_types_constructors4_test': ['unittest', 'skip', 'fail'],
529 'element_types_constructors5_test': ['unittest', 'skip', 'fail'],
530 'element_types_constructors6_test': ['unittest', 'skip', 'fail'],
531 'element_types_test': ['unittest', 'skip', 'fail'],
532 'event_customevent_test': ['unittest', 'skip', 'fail'],
533 'events_test': ['unittest', 'skip', 'fail'],
534 'event_test': ['unittest', 'skip', 'fail'],
535 'exceptions_test': ['unittest', 'skip', 'fail'],
536 'fileapi_test': ['unittest', 'skip', 'fail'],
537 'filereader_test': ['unittest', 'skip', 'fail'],
538 'filteredelementlist_test': ['unittest', 'skip', 'fail'],
539 'fontface_loaded_test': ['unittest', 'skip', 'fail'],
540 'fontface_test': ['unittest', 'skip', 'fail'],
541 'form_data_test': ['unittest', 'skip', 'fail'],
542 'form_element_test': ['unittest', 'skip', 'fail'],
543 'geolocation_test': ['unittest', 'skip', 'fail'],
544 'hidden_dom_1_test': ['unittest', 'skip', 'fail'],
545 'hidden_dom_2_test': ['unittest', 'skip', 'fail'],
546 'history_test': ['unittest', 'skip', 'fail'],
547 'htmlcollection_test': ['unittest', 'skip', 'fail'],
548 'htmlelement_test': ['unittest', 'skip', 'fail'],
549 'htmloptionscollection_test': ['unittest', 'skip', 'fail'],
550 'indexeddb_1_test': ['unittest', 'skip', 'fail'],
551 'indexeddb_2_test': ['unittest', 'skip', 'fail'],
552 'indexeddb_3_test': ['unittest', 'skip', 'fail'],
553 'indexeddb_4_test': ['unittest', 'skip', 'fail'],
554 'indexeddb_5_test': ['unittest', 'skip', 'fail'],
555 'input_element_test': ['unittest', 'skip', 'fail'],
556 'instance_of_test': ['unittest', 'skip', 'fail'],
557 'interactive_test': ['unittest', 'skip', 'fail'],
558 'isolates_test': ['unittest', 'skip', 'fail'],
559 'js_function_getter_test': ['unittest', 'skip', 'fail'],
560 'js_function_getter_trust_types_test': ['unittest', 'skip', 'fail'],
561 'js_interop_1_test': ['unittest', 'skip', 'fail'],
562 'js_test': ['unittest', 'skip', 'fail'],
563 'js_typed_interop_anonymous2_exp_test': ['unittest', 'skip', 'fail'],
564 'js_typed_interop_anonymous2_test': ['unittest', 'skip', 'fail'],
565 'js_typed_interop_anonymous_exp_test': ['unittest', 'skip', 'fail'],
566 'js_typed_interop_anonymous_test': ['unittest', 'skip', 'fail'],
567 'js_typed_interop_anonymous_unreachable_exp_test': ['unittest', 'skip', 'f ail'],
568 'js_typed_interop_anonymous_unreachable_test': ['unittest', 'skip', 'fail' ],
569 'js_typed_interop_default_arg_test': ['unittest', 'skip', 'fail'],
570 'js_typed_interop_side_cast_exp_test': ['unittest', 'skip', 'fail'],
571 'js_typed_interop_side_cast_test': ['unittest', 'skip', 'fail'],
572 'js_typed_interop_test': ['unittest', 'skip', 'fail'],
573 'keyboard_event_test': ['unittest', 'skip', 'fail'],
574 'localstorage_test': ['unittest', 'skip', 'fail'],
575 'location_test': ['unittest', 'skip', 'fail'],
576 'mediasource_test': ['unittest', 'skip', 'fail'],
577 'media_stream_test': ['unittest', 'skip', 'fail'],
578 'messageevent_test': ['unittest', 'skip', 'fail'],
579 'mirrors_js_typed_interop_test': ['unittest', 'skip', 'fail'],
580 'mouse_event_test': ['unittest', 'skip', 'fail'],
581 'mutationobserver_test': ['unittest', 'skip', 'fail'],
582 'native_gc_test': ['unittest', 'skip', 'fail'],
583 'navigator_test': ['unittest', 'skip', 'fail'],
584 'node_test': ['unittest', 'skip', 'fail'],
585 'node_validator_important_if_you_suppress_make_the_bug_critical_test': ['u nittest', 'skip', 'fail'],
586 'non_instantiated_is_test': ['unittest', 'skip', 'fail'],
587 'notification_test': ['unittest', 'skip', 'fail'],
588 'performance_api_test': ['unittest', 'skip', 'fail'],
589 'postmessage_structured_test': ['unittest', 'skip', 'fail'],
590 'private_extension_member_test': ['unittest', 'skip', 'fail'],
591 'queryall_test': ['unittest', 'skip', 'fail'],
592 'query_test': ['unittest', 'skip', 'fail'],
593 'range_test': ['unittest', 'skip', 'fail'],
594 'request_animation_frame_test': ['unittest', 'skip', 'fail'],
595 'resource_http_test': ['unittest', 'skip', 'fail'],
596 'rtc_test': ['unittest', 'skip', 'fail'],
597 'selectelement_test': ['unittest', 'skip', 'fail'],
598 'serialized_script_value_test': ['unittest', 'skip', 'fail'],
599 'shadow_dom_test': ['unittest', 'skip', 'fail'],
600 'shadowroot_test': ['unittest', 'skip', 'fail'],
601 'speechrecognition_test': ['unittest', 'skip', 'fail'],
602 'storage_test': ['unittest', 'skip', 'fail'],
603 'streams_test': ['unittest', 'skip', 'fail'],
604 'svgelement_test': ['unittest', 'skip', 'fail'],
605 'svg_test': ['unittest', 'skip', 'fail'],
606 'table_test': ['unittest', 'skip', 'fail'],
607 'text_event_test': ['unittest', 'skip', 'fail'],
608 'touchevent_test': ['unittest', 'skip', 'fail'],
609 'track_element_constructor_test': ['unittest', 'skip', 'fail'],
610 'transferables_test': ['unittest', 'skip', 'fail'],
611 'transition_event_test': ['unittest', 'skip', 'fail'],
612 'trusted_html_tree_sanitizer_test': ['unittest', 'skip', 'fail'],
613 'typed_arrays_1_test': ['unittest', 'skip', 'fail'],
614 'typed_arrays_2_test': ['unittest', 'skip', 'fail'],
615 'typed_arrays_3_test': ['unittest', 'skip', 'fail'],
616 'typed_arrays_4_test': ['unittest', 'skip', 'fail'],
617 'typed_arrays_5_test': ['unittest', 'skip', 'fail'],
618 'typed_arrays_arraybuffer_test': ['unittest', 'skip', 'fail'],
619 'typed_arrays_dataview_test': ['unittest', 'skip', 'fail'],
620 'typed_arrays_range_checks_test': ['unittest', 'skip', 'fail'],
621 'typed_arrays_simd_test': ['unittest', 'skip', 'fail'],
622 'typing_test': ['unittest', 'skip', 'fail'],
623 'unknownelement_test': ['unittest', 'skip', 'fail'],
624 'uri_test': ['unittest', 'skip', 'fail'],
625 'url_test': ['unittest', 'skip', 'fail'],
626 'webgl_1_test': ['unittest', 'skip', 'fail'],
627 'websocket_test': ['unittest', 'skip', 'fail'],
628 'websql_test': ['unittest', 'skip', 'fail'],
629 'wheelevent_test': ['unittest', 'skip', 'fail'],
630 'window_eq_test': ['unittest', 'skip', 'fail'],
631 'window_mangling_test': ['unittest', 'skip', 'fail'],
632 'window_nosuchmethod_test': ['unittest', 'skip', 'fail'],
633 'window_test': ['unittest', 'skip', 'fail'],
634 'worker_api_test': ['unittest', 'skip', 'fail'],
635 'worker_test': ['unittest', 'skip', 'fail'],
636 'wrapping_collections_test': ['unittest', 'skip', 'fail'],
637 'xhr_cross_origin_test': ['unittest', 'skip', 'fail'],
638 'xhr_test': ['unittest', 'skip', 'fail'],
639 'xsltprocessor_test': ['unittest', 'skip', 'fail'],
640
641 'js_typed_interop_default_arg_test_none_multi': ['unittest', 'skip', 'fail '],
642 'js_typed_interop_default_arg_test_explicit_argument_multi': ['unittest', 'skip', 'fail'],
643 'js_typed_interop_default_arg_test_default_value_multi': ['unittest', 'ski p', 'fail']
476 }, 644 },
477 }; 645 };
478 646
479 let unittest_tests = []; 647 let unittest_tests = [];
480 648
481 let languageTestPattern = new RegExp('(.*)/([^/]*_test[^/]*)'); 649 let languageTestPattern = new RegExp('(.*)/([^/]*_test[^/]*)');
650 html_config.useHtmlConfiguration();
651 // We need to let Dart unittest control when tests are run not mocha.
652 // mocha.allowUncaught(true);
653 let dartUnittestsLeft = 0;
482 for (let testFile of dart_library.libraries()) { 654 for (let testFile of dart_library.libraries()) {
483 let match = languageTestPattern.exec(testFile); 655 let match = languageTestPattern.exec(testFile);
484 if (match != null) { 656 if (match != null) {
485 let status_group = match[1] 657 let status_group = match[1]
486 let name = match[2]; 658 let name = match[2];
487 let module = match[0]; 659 let module = match[0];
488 660
489 let status = all_status[status_group]; 661 let status = all_status[status_group];
490 if (status == null) throw "No status for '" + status_group + "'"; 662 if (status == null) throw "No status for '" + status_group + "'";
491 663
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 } else { 726 } else {
555 mainLibrary.main(); 727 mainLibrary.main();
556 } 728 }
557 } 729 }
558 730
559 if (!async_helper.asyncTestStarted) done(); 731 if (!async_helper.asyncTestStarted) done();
560 }); 732 });
561 } 733 }
562 } 734 }
563 735
564 for (let action of unittest_tests) { 736 let mochaOnError;
565 action(); 737 // We run these tests in a mocha test wrapper to avoid the confusing failure
566 } 738 // case of dart unittests being interleaved with mocha tests.
739 // In practice we are really just suppressing all mocha test behavior while
740 // Dart unittests run and then re-enabling it when the dart tests complete.
741 test('run all dart unittests', function(done) { // 'function' to allow `this.t imeout`
742 this.enableTimeouts(false);
743 // Suppress mocha on-error handling because it will mess up unittests.
744 mochaOnError = window.onerror;
745 window.onerror = function(err, url, line) {
746 console.error(err, url, line);
747 };
748 window.addEventListener('message', (event) => {
749 if (event.data == 'unittest-suite-done') {
750 window.console.log("Done running unittests");
751 let output = document.body.textContent;
752 // Restore the Mocha onerror handler in case future tests need to run.
753 window.onerror = mochaOnError;
754 this.enableTimeouts(true);
755
756 var matches = output.match(/ERROR/g);
757 let numErrors = matches ? matches.length : 0;
758 if (numErrors != num_expected_unittest_errors) {
759 output = "Expected " + num_expected_unittest_errors +
760 " failing unittests, got " + numErrors + ".\n" + output;
761 console.error(output);
762 done(new Error(output));
763 } else {
764 console.log(output);
765 done();
766 }
767 }
768 });
769
770 for (let action of unittest_tests) {
771 try {
772 action();
773 } catch (e) {
774 console.error("Caught error tying to setup test:", e);
775 }
776 }
777 });
567 })(); 778 })();
OLDNEW
« no previous file with comments | « pubspec.yaml ('k') | test/codegen/expect/unittest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698