Index: pkg/analysis_server/test/integration/analysis/update_content_list_test.dart |
diff --git a/pkg/analysis_server/test/integration/analysis/update_content_list_test.dart b/pkg/analysis_server/test/integration/analysis/update_content_list_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1acc512eae3b358560c08b02899abce82df5ad9f |
--- /dev/null |
+++ b/pkg/analysis_server/test/integration/analysis/update_content_list_test.dart |
@@ -0,0 +1,62 @@ |
+// 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. |
+ |
+library test.integration.analysis.update.content.list; |
+ |
+import 'package:analysis_testing/reflective_tests.dart'; |
+import 'package:unittest/unittest.dart'; |
+ |
+import '../integration_tests.dart'; |
+ |
+@ReflectiveTestCase() |
+class Test extends AbstractAnalysisServerIntegrationTest { |
+ test_updateContent_list() { |
+ String pathname = sourcePath('test.dart'); |
+ String goodText = r''' |
+main() { |
+ print("Hello"); |
+ print("World!"); |
+}'''; |
+ String badText = goodText.replaceAll('"', ''); |
+ // Create a dummy file |
+ writeFile(pathname, '// dummy text'); |
+ standardAnalysisSetup(); |
+ // Override file contents with badText. |
+ sendAnalysisUpdateContent({ |
+ pathname: { |
+ 'type': 'add', |
+ 'content': badText |
+ } |
+ }); |
+ return analysisFinished.then((_) { |
+ // The overridden contents (badText) are missing quotation marks. |
+ expect(currentAnalysisErrors[pathname], isNot(isEmpty)); |
+ }).then((_) { |
+ // Prepare a set of edits which add the missing quotation marks, in the |
+ // order in which they appear in the file. If these edits are applied in |
+ // the wrong order, some of the quotation marks will be in the wrong |
+ // places, and there will still be errors. |
+ List edits = '"'.allMatches(goodText).map((Match match) => { |
+ 'offset': match.start, |
+ 'length': 0, |
+ 'replacement': '"' |
+ }).toList(); |
+ sendAnalysisUpdateContent({ |
+ pathname: { |
+ 'type': 'change', |
+ 'edits': edits |
+ } |
+ }); |
+ return analysisFinished; |
+ }).then((_) { |
+ // There should be no errors now, assuming that quotation marks have been |
+ // inserted in all the correct places. |
+ expect(currentAnalysisErrors[pathname], isEmpty); |
+ }); |
+ } |
+} |
+ |
+main() { |
+ runReflectiveTests(Test); |
+} |