Index: tests/compiler/dart2js/hide_package_warnings_test.dart |
diff --git a/tests/compiler/dart2js/hide_package_warnings_test.dart b/tests/compiler/dart2js/hide_package_warnings_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..639eef8806ec23a070d5bd489803ec42668ed3a9 |
--- /dev/null |
+++ b/tests/compiler/dart2js/hide_package_warnings_test.dart |
@@ -0,0 +1,104 @@ |
+// 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. |
+ |
+// Test that the '--hide-package-warnings' option works as intended. |
+ |
+import 'package:async_helper/async_helper.dart'; |
+import 'package:expect/expect.dart'; |
+ |
+import 'memory_compiler.dart'; |
+ |
+/// Error code that creates 1 warning, 1 hint, and 1 info. |
+const ERROR_CODE = """ |
+m(Object o) { |
+ if (o is String) { |
+ o = o.length; |
+ } |
+}"""; |
+ |
+const SOURCE = const { |
+ 'main.dart': """ |
+import 'package:pkg_error1/pkg_error1.dart'; |
+import 'package:pkg_error2/pkg_error2.dart'; |
+import 'package:pkg_noerror/pkg_noerror.dart'; |
+import 'error.dart'; |
+""", |
+ |
+ 'error.dart': ERROR_CODE, |
+ |
+ 'pkg/pkg_error1/pkg_error1.dart': """ |
+import 'package:pkg_error2/pkg_error2.dart'; |
+import 'package:pkg_noerror/pkg_noerror.dart'; |
+$ERROR_CODE""", |
+ |
+ 'pkg/pkg_error2/pkg_error2.dart': """ |
+import 'package:pkg_error1/pkg_error1.dart'; |
+import 'package:pkg_noerror/pkg_noerror.dart'; |
+$ERROR_CODE""", |
+ |
+ 'pkg/pkg_noerror/pkg_noerror.dart': """ |
+import 'package:pkg_error1/pkg_error1.dart'; |
+import 'package:pkg_error2/pkg_error2.dart'; |
+"""}; |
+ |
+void test(List<Uri> entryPoints, |
+ {bool hidePackageWarnings: false, |
+ int warnings: 0, |
+ int hints: 0, |
+ int infos: 0}) { |
+ var options = ['--analyze-only', '--analyze-all']; |
+ if (hidePackageWarnings) { |
+ options.add('--hide-package-warnings'); |
+ } |
+ var collector = new DiagnosticCollector(); |
+ var compiler = compilerFor(SOURCE, |
+ options: options, |
+ packageRoot: Uri.parse('memory:pkg/'), |
+ diagnosticHandler: collector); |
+ Uri mainUri = null; |
+ if (entryPoints.length == 1) { |
+ mainUri = entryPoints[0]; |
+ } else { |
+ compiler.librariesToAnalyzeWhenRun = entryPoints; |
+ } |
+ asyncTest(() => compiler.run(mainUri).then((_) { |
+ print('=================================================================='); |
+ print('test: $entryPoints hidePackageWarnings=$hidePackageWarnings'); |
+ Expect.equals(0, collector.errors.length, |
+ 'Unexpected errors: ${collector.errors}'); |
+ Expect.equals(warnings, collector.warnings.length, |
+ 'Unexpected warnings: ${collector.warnings}'); |
+ Expect.equals(hints, collector.hints.length, |
+ 'Unexpected hints: ${collector.hints}'); |
+ Expect.equals(infos, collector.infos.length, |
+ 'Unexpected infos: ${collector.infos}'); |
+ print('=================================================================='); |
+ })); |
+} |
+ |
+void main() { |
+ test([Uri.parse('memory:main.dart')], |
+ hidePackageWarnings: false, |
+ // From error.dart, package:pkg_error1 and package:pkg_error2: |
+ warnings: 3, hints: 3, infos: 3); |
+ test([Uri.parse('memory:main.dart')], |
+ hidePackageWarnings: true, |
+ // From error.dart only: |
+ warnings: 1, hints: 1, infos: 1); |
+ test([Uri.parse('package:pkg_error1/pkg_error1.dart')], |
+ hidePackageWarnings: false, |
+ // From package:pkg_error1 and package:pkg_error2: |
+ warnings: 2, hints: 2, infos: 2); |
+ test([Uri.parse('package:pkg_error1/pkg_error1.dart')], |
+ hidePackageWarnings: true, |
+ // From package:pkg_error1/pkg_error1.dart only: |
+ warnings: 1, hints: 1, infos: 1); |
+ test([Uri.parse('package:pkg_noerror/pkg_noerror.dart')], |
+ hidePackageWarnings: false, |
+ // From package:pkg_error1 and package:pkg_error2: |
+ warnings: 2, hints: 2, infos: 2); |
+ test([Uri.parse('package:pkg_noerror/pkg_noerror.dart')], |
+ hidePackageWarnings: true); |
+} |
+ |