blob: 2d05cfed8149ff293918b1f9783367f8e9a62fce [file] [log] [blame] [edit]
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
(function() {
'use strict';
let _isolate_helper = dart_library.import('dart/_isolate_helper');
_isolate_helper.startRootIsolate(function() {}, []);
let async_helper = dart_library.import('async_helper/async_helper');
// TODO(jmesserly): separate StrongModeError from other errors.
let expectedFailures = new Set([
'arithmetic2_test',
'assert_with_type_test_or_cast_test',
'assertion_test',
'async_star_await_pauses_test',
'async_star_cancel_while_paused_test',
'async_star_regression_fisk_test',
'async_switch_test',
'asyncstar_throw_in_catch_test',
'await_future_test',
'bit_operations_test_none_multi',
'bit_shift_test',
'bool_test',
'bound_closure_equality_test',
'call_closurization_test',
'call_function_apply_test',
'call_operator_test',
'call_property_test',
'call_test',
'call_this_test',
'call_through_null_getter_test',
'call_with_no_such_method_test',
'canonical_const2_test',
'canonical_const_test',
'cascade_precedence_test',
'cast_test_01_multi',
'cast_test_02_multi',
'cast_test_03_multi',
'cast_test_07_multi',
'cast_test_10_multi',
'cast_test_12_multi',
'cast_test_13_multi',
'cast_test_14_multi',
'cast_test_15_multi',
'cha_deopt1_test',
'cha_deopt2_test',
'cha_deopt3_test',
'classes_static_method_clash_test',
'closure_call_wrong_argument_count_negative_test',
'closure_in_constructor_test',
'closure_with_super_field_test',
'closures_initializer_test',
'code_after_try_is_executed_test_01_multi',
'compile_time_constant10_test_none_multi',
'compile_time_constant_a_test',
'compile_time_constant_b_test',
'compile_time_constant_d_test',
'compile_time_constant_i_test',
'compile_time_constant_k_test_none_multi',
'compile_time_constant_o_test_none_multi',
'const_constructor3_test_03_multi',
'const_escape_frog_test',
'const_evaluation_test_01_multi',
'const_map4_test',
'const_switch_test_02_multi',
'const_switch_test_04_multi',
'constructor11_test',
'constructor12_test',
'ct_const_test',
'cyclic_type2_test',
'cyclic_type_test_00_multi',
'cyclic_type_test_01_multi',
'cyclic_type_test_02_multi',
'cyclic_type_test_03_multi',
'cyclic_type_test_04_multi',
'cyclic_type_variable_test_none_multi',
'deferred_call_empty_before_load_test',
'deferred_closurize_load_library_test',
'deferred_constant_list_test',
'deferred_function_type_test',
'deferred_inlined_test',
'deferred_load_inval_code_test',
'deferred_mixin_test',
'deferred_no_such_method_test',
'deferred_not_loaded_check_test',
'deferred_only_constant_test',
'deferred_optimized_test',
'deferred_redirecting_factory_test',
'deferred_regression_22995_test',
'deferred_shadow_load_library_test',
'deferred_shared_and_unshared_classes_test',
'deferred_static_seperate_test',
'double_int_to_string_test',
'double_to_string_test',
'dynamic_test',
'enum_mirror_test',
'exception_test',
'execute_finally6_test',
'expect_test',
'extends_test_lib',
'external_test_10_multi',
'external_test_13_multi',
'external_test_20_multi',
'f_bounded_quantification3_test',
'factory_type_parameter_test',
'fast_method_extraction_test',
'field_increment_bailout_test',
'field_optimization3_test',
'field_test',
'final_syntax_test_08_multi',
'first_class_types_literals_test_01_multi',
'first_class_types_literals_test_02_multi',
'first_class_types_literals_test_none_multi',
'first_class_types_test',
'for_in2_test',
'for_variable_capture_test',
'function_propagation_test',
'function_subtype0_test',
'function_subtype1_test',
'function_subtype2_test',
'function_subtype3_test',
'function_subtype_bound_closure0_test',
'function_subtype_bound_closure1_test',
'function_subtype_bound_closure2_test',
'function_subtype_bound_closure3_test',
'function_subtype_bound_closure4_test',
'function_subtype_bound_closure5_test',
'function_subtype_bound_closure5a_test',
'function_subtype_bound_closure6_test',
'function_subtype_call0_test',
'function_subtype_call1_test',
'function_subtype_call2_test',
'function_subtype_cast0_test',
'function_subtype_cast1_test',
'function_subtype_cast2_test',
'function_subtype_cast3_test',
'function_subtype_factory0_test',
'function_subtype_inline0_test',
'function_subtype_local0_test',
'function_subtype_local1_test',
'function_subtype_local2_test',
'function_subtype_local3_test',
'function_subtype_local4_test',
'function_subtype_local5_test',
'function_subtype_named1_test',
'function_subtype_named2_test',
'function_subtype_not0_test',
'function_subtype_not1_test',
'function_subtype_not2_test',
'function_subtype_not3_test',
'function_subtype_optional1_test',
'function_subtype_optional2_test',
'function_subtype_top_level0_test',
'function_subtype_top_level1_test',
'function_subtype_typearg0_test',
'function_subtype_typearg2_test',
'function_subtype_typearg4_test',
'function_type_alias2_test',
'function_type_alias3_test',
'function_type_alias4_test',
'function_type_alias6_test_none_multi',
'function_type_alias_test',
'function_type_call_getter_test',
'gc_test',
'generic2_test',
'generic_deep_test',
'generic_field_mixin2_test',
'generic_field_mixin3_test',
'generic_field_mixin4_test',
'generic_field_mixin5_test',
'generic_field_mixin_test',
'generic_inheritance_test',
'generic_instanceof2_test',
'generic_instanceof3_test',
'generic_instanceof_test',
'generic_is_check_test',
'generic_native_test',
'generic_parameterized_extends_test',
'getter_closure_execution_order_test',
'getter_override2_test_00_multi',
'getters_setters_test',
'hash_code_mangling_test',
'identical_closure2_test',
'if_null_behavior_test_14_multi',
'infinite_switch_label_test',
'infinity_test',
'instance_creation_in_function_annotation_test',
'instanceof2_test',
'instanceof4_test_01_multi',
'instanceof4_test_none_multi',
'instanceof_optimized_test',
'int_test',
'integer_division_by_zero_test',
'interceptor_test',
'is_nan_test',
'issue10747_test',
'issue13179_test',
'issue21079_test',
'issue21957_test',
'issue_1751477_test',
'issue_22780_test_01_multi',
'issue_23914_test',
'js_properties_test',
'lazy_static3_test',
'least_upper_bound_expansive_test_none_multi',
'left_shift_test',
'list_is_test',
'list_literal3_test',
'many_generic_instanceof_test',
'map_literal10_test',
'map_literal7_test',
'memory_swap_test',
'method_invocation_test',
'mint_arithmetic_test',
'mixin_forwarding_constructor3_test',
'mixin_generic_test',
'mixin_implements_test',
'mixin_issue10216_2_test',
'mixin_mixin2_test',
'mixin_mixin3_test',
'mixin_mixin4_test',
'mixin_mixin5_test',
'mixin_mixin6_test',
'mixin_mixin7_test',
'mixin_mixin_bound2_test',
'mixin_mixin_bound_test',
'mixin_mixin_test',
'mixin_regress_13688_test',
'mixin_type_parameter1_test',
'mixin_type_parameter2_test',
'mixin_type_parameter3_test',
'modulo_test',
'named_argument_test',
'named_parameter_clash_test',
'namer2_test',
'nan_identical_test',
'nested_switch_label_test',
'no_such_method3_test',
'no_such_method_empty_selector_test',
'no_such_method_subtype_test',
'null_no_such_method_test',
'number_identifier_test_05_multi',
'number_identity2_test',
'numbers_test',
'operator4_test',
'operator_test',
'optimized_hoisting_checked_mode_assert_test',
'positive_bit_operations_test',
'prefix_test1',
'prefix_test2',
'redirecting_factory_reflection_test',
'regress_13462_0_test',
'regress_13462_1_test',
'regress_14105_test',
'regress_16640_test',
'regress_21795_test',
'regress_22443_test',
'regress_22666_test',
'regress_22719_test',
'regress_23650_test',
'regress_r24720_test',
'setter_no_getter_test_01_multi',
'smi_type_test',
'stack_overflow_stacktrace_test',
'stack_overflow_test',
'stack_trace_test',
'stacktrace_rethrow_error_test_none_multi',
'stacktrace_rethrow_error_test_withtraceparameter_multi',
'stacktrace_test',
'string_interpolate_null_test',
'string_interpolation_newline_test',
'super_field_2_test',
'super_field_test',
'super_operator_index3_test',
'super_operator_index4_test',
'switch_label2_test',
'switch_label_test',
'switch_try_catch_test',
'symbol_literal_test_none_multi',
'sync_generator1_test_none_multi',
'throwing_lazy_variable_test',
'top_level_non_prefixed_library_test',
'truncdiv_test',
'type_argument_substitution_test',
'type_promotion_functions_test_none_multi',
'type_variable_closure2_test',
'type_variable_field_initializer_closure_test',
'type_variable_field_initializer_test',
'type_variable_nested_test',
'type_variable_typedef_test',
'typedef_is_test',
'bit_operations_test_01_multi',
'bit_operations_test_02_multi',
'bit_operations_test_03_multi',
'bit_operations_test_04_multi',
'bool_condition_check_test_01_multi',
'deferred_constraints_constants_test_none_multi',
'deferred_constraints_constants_test_reference_after_load_multi',
'deferred_constraints_type_annotation_test_new_generic1_multi',
'deferred_constraints_type_annotation_test_new_multi',
'deferred_constraints_type_annotation_test_none_multi',
'deferred_constraints_type_annotation_test_static_method_multi',
'deferred_constraints_type_annotation_test_type_annotation_non_deferred_multi',
'deferred_load_constants_test_none_multi',
'deferred_load_library_wrong_args_test_01_multi',
'deferred_load_library_wrong_args_test_none_multi',
'external_test_21_multi',
'external_test_24_multi',
'main_not_a_function_test_01_multi',
'multiline_newline_test_04_multi',
'multiline_newline_test_05_multi',
'multiline_newline_test_06_multi',
'multiline_newline_test_none_multi',
'no_main_test_01_multi',
]);
let helpers = new Set([
'library_prefixes_test1',
'library_prefixes_test2',
'top_level_prefixed_library_test',
]);
suite('language', () => {
let languageTestPattern = new RegExp('language/(.*_test.*)');
for (let testFile of dart_library.libraries()) {
let match = languageTestPattern.exec(testFile);
if (match != null) {
let name = match[1];
if (helpers.has(name)) {
// These are not top-level tests. They are used by other tests.
continue;
}
// These two tests are special because they use package:unittest.
// We run them below.
if (name == 'async_await_test' || name.startsWith('async_star_test')) {
continue;
}
// TODO(jmesserly): figure out why this test is hanging.
if (name == 'async_star_cancel_and_throw_in_finally_test') {
console.debug('Skipping known timeout: ' + name);
continue;
}
// TODO(jmesserly): better tracking of async test failures.
// For now we skip tests that expect failure.
if (expectedFailures.has(name)) {
console.debug('Skipping known failure: ' + name);
continue;
}
test(name, (done) => {
async_helper.asyncTestInitialize(done);
console.debug('Running language test: ' + name);
dart_library.import('language/' + name).main();
if (!async_helper.asyncTestStarted) done();
});
}
}
});
dart_library.import('language/async_await_test_none_multi').main();
dart_library.import('language/async_star_test_none_multi').main();
})();