| Index: dart/tests/compiler/dart2js/incremental/compile_all.dart
|
| diff --git a/dart/tests/compiler/dart2js/incremental/compile_all.dart b/dart/tests/compiler/dart2js/incremental/compile_all.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..83fb5a7b45e72dce1d701aca0fa78d0cc54c27bd
|
| --- /dev/null
|
| +++ b/dart/tests/compiler/dart2js/incremental/compile_all.dart
|
| @@ -0,0 +1,182 @@
|
| +// Copyright (c) 2014, 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.
|
| +
|
| +// Helper file that can be used to manually test the stability of incremental
|
| +// compilation. Currently this test is not run automatically.
|
| +
|
| +import 'dart:async';
|
| +
|
| +import 'dart:io';
|
| +
|
| +import 'dart:profiler' show
|
| + UserTag;
|
| +
|
| +import '../memory_source_file_helper.dart' show
|
| + Compiler;
|
| +
|
| +import '../memory_compiler.dart' show
|
| + compilerFor;
|
| +
|
| +import '../../../../site/try/src/caching_compiler.dart' show
|
| + reuseCompiler;
|
| +
|
| +import 'incremental_helper.dart';
|
| +
|
| +const bool verbose = false;
|
| +
|
| +main(List<String> arguments) {
|
| + Stopwatch sw = new Stopwatch()..start();
|
| + Map<String, String> sources = <String, String>{};
|
| + for (String argument in arguments) {
|
| + Uri uri = new Uri(scheme: 'memory', path: argument);
|
| + String source =
|
| + new File.fromUri(Uri.base.resolve(argument)).readAsStringSync();
|
| + sources['${uri.path}'] = source;
|
| + }
|
| + sw.stop();
|
| + print(sw.elapsedMilliseconds);
|
| + compileTests(sources);
|
| +}
|
| +
|
| +void compileTests(Map<String, String> sources) {
|
| + int cancellations = 0;
|
| + int testCount = 0;
|
| + int skipCount = 0;
|
| + Set<String> crashes = new Set<String>();
|
| + Compiler memoryCompiler = compilerFor(sources);
|
| + memoryCompiler.handler.verbose = verbose;
|
| + Compiler compiler;
|
| + var options = new List<String>.from(INCREMENTAL_OPTIONS);
|
| + if (true || verbose) options.add('--verbose');
|
| + Future.forEach(sources.keys, (String path) {
|
| + UserTag.defaultTag.makeCurrent();
|
| + if (!path.endsWith('_test.dart')) return new Future.value(null);
|
| + testCount++;
|
| + for (String brokenTest in brokenTests) {
|
| + if (path.endsWith(brokenTest)) {
|
| + print('Skipped broken test $path');
|
| + skipCount++;
|
| + return new Future.value(null);
|
| + }
|
| + }
|
| + Stopwatch sw = new Stopwatch()..start();
|
| + compiler = reuseCompiler(
|
| + libraryRoot: memoryCompiler.libraryRoot,
|
| + inputProvider: memoryCompiler.provider,
|
| + outputProvider: memoryCompiler.outputProvider,
|
| + diagnosticHandler: memoryCompiler.handler,
|
| + packageRoot: memoryCompiler.packageRoot,
|
| + cachedCompiler: compiler,
|
| + options: options);
|
| + return compiler.run(Uri.parse('memory:$path')).then((bool success) {
|
| + UserTag.defaultTag.makeCurrent();
|
| + sw.stop();
|
| + print('Compiled $path in ${sw.elapsedMilliseconds}');
|
| + if (compiler.compilerWasCancelled) cancellations++;
|
| + sw..reset()..start();
|
| + }).catchError((error, trace) {
|
| + sw.stop();
|
| + print('$error\n$trace');
|
| + print('Crash when compiling $path after ${sw.elapsedMilliseconds}');
|
| + sw..reset()..start();
|
| + crashes.add(path);
|
| + });
|
| + }).then((_) {
|
| + percent(i) => '${(i/testCount*100).toStringAsFixed(3)}%';
|
| + print('''
|
| +
|
| +Total: $testCount tests
|
| + * $cancellations tests (${percent(cancellations)}) cancelled the compiler
|
| + * ${crashes.length} tests (${percent(crashes.length)}) crashed the compiler
|
| + * $skipCount tests (${percent(skipCount)}) were skipped
|
| +''');
|
| + for (String crash in crashes) {
|
| + print('Crashed: $crash');
|
| + }
|
| + if (!crashes.isEmpty) {
|
| + throw 'Test had crashes';
|
| + }
|
| + });
|
| +}
|
| +
|
| +Set<String> brokenTests = new Set<String>.from([
|
| + // TODO(ahe): Fix the outputProvider to not throw an error.
|
| + "/dart2js_extra/deferred/deferred_class_library.dart",
|
| + "/dart2js_extra/deferred/deferred_class_library2.dart",
|
| + "/dart2js_extra/deferred/deferred_class_test.dart",
|
| + "/dart2js_extra/deferred/deferred_constant2_test.dart",
|
| + "/dart2js_extra/deferred/deferred_constant3_test.dart",
|
| + "/dart2js_extra/deferred/deferred_constant4_test.dart",
|
| + "/dart2js_extra/deferred/deferred_constant_test.dart",
|
| + "/dart2js_extra/deferred/deferred_function_library.dart",
|
| + "/dart2js_extra/deferred/deferred_function_test.dart",
|
| + "/dart2js_extra/deferred/deferred_overlapping_lib1.dart",
|
| + "/dart2js_extra/deferred/deferred_overlapping_lib2.dart",
|
| + "/dart2js_extra/deferred/deferred_overlapping_lib3.dart",
|
| + "/dart2js_extra/deferred/deferred_overlapping_test.dart",
|
| + "/dart2js_extra/deferred/deferred_unused_classes_test.dart",
|
| + "/language/deferred_closurize_load_library_lib.dart",
|
| + "/language/deferred_closurize_load_library_test.dart",
|
| + "/language/deferred_constraints_constants_lib.dart",
|
| + "/language/deferred_constraints_constants_old_syntax_lib.dart",
|
| + "/language/deferred_constraints_constants_old_syntax_test.dart",
|
| + "/language/deferred_constraints_constants_test.dart",
|
| + "/language/deferred_constraints_lib.dart",
|
| + "/language/deferred_constraints_lib2.dart",
|
| + "/language/deferred_constraints_old_syntax_lib.dart",
|
| + "/language/deferred_constraints_type_annotation_old_syntax_test.dart",
|
| + "/language/deferred_constraints_type_annotation_test.dart",
|
| + "/language/deferred_duplicate_prefix1_test.dart",
|
| + "/language/deferred_duplicate_prefix2_test.dart",
|
| + "/language/deferred_duplicate_prefix3_test.dart",
|
| + "/language/deferred_load_inval_code_lib.dart",
|
| + "/language/deferred_load_inval_code_test.dart",
|
| + "/language/deferred_load_library_wrong_args_lib.dart",
|
| + "/language/deferred_load_library_wrong_args_test.dart",
|
| + "/language/deferred_no_prefix_test.dart",
|
| + "/language/deferred_no_such_method_lib.dart",
|
| + "/language/deferred_no_such_method_test.dart",
|
| + "/language/deferred_not_loaded_check_lib.dart",
|
| + "/language/deferred_not_loaded_check_test.dart",
|
| + "/language/deferred_prefix_constraints_lib.dart",
|
| + "/language/deferred_prefix_constraints_lib2.dart",
|
| + "/language/deferred_shadow_load_library_lib.dart",
|
| + "/language/deferred_shadow_load_library_test.dart",
|
| +
|
| + "/language/bad_constructor_test.dart",
|
| + "/language/black_listed_test.dart",
|
| + "/language/built_in_identifier_illegal_test.dart",
|
| + "/language/built_in_identifier_prefix_test.dart",
|
| + "/language/built_in_identifier_test.dart",
|
| + "/language/class_cycle2_test.dart",
|
| + "/language/class_syntax_test.dart",
|
| + "/language/cyclic_typedef_test.dart",
|
| + "/language/external_test.dart",
|
| + "/language/factory3_negative_test.dart",
|
| + "/language/generic_field_mixin4_test.dart",
|
| + "/language/generic_field_mixin5_test.dart",
|
| + "/language/interface_cycle_test.dart",
|
| + "/language/interface_injection1_negative_test.dart",
|
| + "/language/interface_injection2_negative_test.dart",
|
| + "/language/internal_library_test.dart",
|
| + "/language/malformed_inheritance_test.dart",
|
| + "/language/metadata_test.dart",
|
| + "/language/method_override2_test.dart",
|
| + "/language/mixin_illegal_syntax_test.dart",
|
| + "/language/mixin_invalid_inheritance1_test.dart",
|
| + "/language/null_test.dart",
|
| + "/language/override_inheritance_generic_test.dart",
|
| + "/language/prefix18_negative_test.dart",
|
| + "/language/prefix3_negative_test.dart",
|
| + "/language/script2_negative_test.dart",
|
| + "/language/setter_declaration2_negative_test.dart",
|
| + "/language/source_self_negative_test.dart",
|
| + "/language/syntax_test.dart",
|
| + "/language/type_variable_bounds2_test.dart",
|
| + "/language/type_variable_conflict2_test.dart",
|
| + "/language/type_variable_field_initializer_test.dart",
|
| + "/language/type_variable_nested_test.dart",
|
| + "/language/vm/reflect_core_vm_test.dart",
|
| + "/language/vm/regress_14903_test.dart",
|
| +]);
|
|
|