Index: pkg/analysis_server/test/integration/analysis_domain_int_test.dart |
diff --git a/pkg/analysis_server/test/integration/analysis_domain_int_test.dart b/pkg/analysis_server/test/integration/analysis_domain_int_test.dart |
deleted file mode 100644 |
index 1282a1b5e0722659c953bd900c3c86094ce5eb48..0000000000000000000000000000000000000000 |
--- a/pkg/analysis_server/test/integration/analysis_domain_int_test.dart |
+++ /dev/null |
@@ -1,250 +0,0 @@ |
-// 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.domain; |
- |
-import 'dart:async'; |
- |
-import 'package:analysis_testing/reflective_tests.dart'; |
-import 'package:path/path.dart'; |
-import 'package:unittest/unittest.dart'; |
- |
-import 'integration_tests.dart'; |
- |
-@ReflectiveTestCase() |
-class AnalysisDomainIntegrationTest extends |
- AbstractAnalysisServerIntegrationTest { |
- test_getHover() { |
- String pathname = sourcePath('test.dart'); |
- String text = |
- r''' |
-library lib.test; |
- |
-List topLevelVar; |
- |
-/** |
- * Documentation for func |
- */ |
-void func(int param) { |
- num localVar = topLevelVar.length; |
- topLevelVar.length = param; |
- topLevelVar.add(localVar); |
-} |
- |
-main() { |
- func(35); |
-} |
-'''; |
- writeFile(pathname, text); |
- standardAnalysisSetup(); |
- |
- testHover(String target, int length, List<String> descriptionRegexps, String |
- kind, List<String> staticTypeRegexps, {bool isCore: false, String docRegexp: |
- null, bool isLiteral: false, List<String> parameterRegexps: |
- null, propagatedType: null}) { |
- int offset = text.indexOf(target); |
- return sendAnalysisGetHover(pathname, offset).then((result) { |
- expect(result['hovers'], hasLength(1)); |
- var info = result['hovers'][0]; |
- expect(info['offset'], equals(offset)); |
- expect(info['length'], equals(length)); |
- if (isCore) { |
- expect(basename(info['containingLibraryPath']), equals('core.dart')); |
- expect(info['containingLibraryName'], equals('dart.core')); |
- } else if (isLiteral) { |
- expect(info['containingLibraryPath'], isNull); |
- expect(info['containingLibraryName'], isNull); |
- } else { |
- expect(info['containingLibraryPath'], equals(pathname)); |
- expect(info['containingLibraryName'], equals('lib.test')); |
- } |
- if (docRegexp == null) { |
- expect(info['dartdoc'], isNull); |
- } else { |
- expect(info['dartdoc'], matches(docRegexp)); |
- } |
- if (descriptionRegexps == null) { |
- expect(info['elementDescription'], isNull); |
- } else { |
- expect(info['elementDescription'], isString); |
- for (String descriptionRegexp in descriptionRegexps) { |
- expect(info['elementDescription'], matches(descriptionRegexp)); |
- } |
- } |
- expect(info['elementKind'], equals(kind)); |
- if (parameterRegexps == null) { |
- expect(info['parameter'], isNull); |
- } else { |
- expect(info['parameter'], isString); |
- for (String parameterRegexp in parameterRegexps) { |
- expect(info['parameter'], matches(parameterRegexp)); |
- } |
- } |
- expect(info['propagatedType'], equals(propagatedType)); |
- if (staticTypeRegexps == null) { |
- expect(info['staticType'], isNull); |
- } else { |
- expect(info['staticType'], isString); |
- for (String staticTypeRegexp in staticTypeRegexps) { |
- expect(info['staticType'], matches(staticTypeRegexp)); |
- } |
- } |
- }); |
- } |
- |
- // Note: analysis.getHover doesn't wait for analysis to complete--it simply |
- // returns the latest results that are available at the time that the |
- // request is made. So wait for analysis to finish before testing anything. |
- return analysisFinished.then((_) { |
- List<Future> tests = []; |
- tests.add(testHover('topLevelVar;', 11, ['List', 'topLevelVar'], |
- 'top level variable', ['List'])); |
- tests.add(testHover('func(', 4, ['func', 'int', 'param'], 'function', |
- ['int', 'void'], docRegexp: 'Documentation for func')); |
- tests.add(testHover('int param', 3, ['int'], 'class', ['int'], isCore: |
- true, docRegexp: '.*')); |
- tests.add(testHover('param)', 5, ['int', 'param'], 'parameter', ['int'], |
- docRegexp: 'Documentation for func')); |
- tests.add(testHover('num localVar', 3, ['num'], 'class', ['num'], isCore: |
- true, docRegexp: '.*')); |
- tests.add(testHover('localVar =', 8, ['num', 'localVar'], |
- 'local variable', ['num'], propagatedType: 'int')); |
- tests.add(testHover('topLevelVar.length;', 11, ['List', 'topLevelVar'], |
- 'top level variable', ['List'])); |
- tests.add(testHover('length;', 6, ['get', 'length', 'int'], 'getter', |
- ['int'], isCore: true, docRegexp: '.*')); |
- tests.add(testHover('length =', 6, ['set', 'length', 'int'], 'setter', |
- ['int'], isCore: true, docRegexp: '.*')); |
- tests.add(testHover('param;', 5, ['int', 'param'], 'parameter', ['int'], |
- docRegexp: 'Documentation for func')); |
- tests.add(testHover('add(', 3, ['List', 'add'], 'method', null, isCore: |
- true, docRegexp: '.*')); |
- tests.add(testHover('localVar)', 8, ['num', 'localVar'], 'local variable', |
- ['num'], parameterRegexps: ['.*'], propagatedType: 'int')); |
- tests.add(testHover('func(35', 4, ['func', 'int', 'param'], 'function', |
- null, docRegexp: 'Documentation for func')); |
- tests.add(testHover('35', 2, null, null, ['int'], isLiteral: true, |
- parameterRegexps: ['int', 'param'])); |
- return Future.wait(tests); |
- }); |
- } |
- |
- test_getHover_noInfo() { |
- String pathname = sourcePath('test.dart'); |
- String text = r''' |
-main() { |
- // no code |
-} |
-'''; |
- writeFile(pathname, text); |
- standardAnalysisSetup(); |
- |
- // Note: analysis.getHover doesn't wait for analysis to complete--it simply |
- // returns the latest results that are available at the time that the |
- // request is made. So wait for analysis to finish before testing anything. |
- return analysisFinished.then((_) { |
- return sendAnalysisGetHover(pathname, text.indexOf('no code')).then( |
- (result) { |
- expect(result['hovers'], hasLength(0)); |
- }); |
- }); |
- } |
- |
- test_getErrors_before_analysis() { |
- return getErrorsTest(false); |
- } |
- |
- test_getErrors_after_analysis() { |
- return getErrorsTest(true); |
- } |
- |
- Future getErrorsTest(bool afterAnalysis) { |
- String pathname = sourcePath('test.dart'); |
- String text = r''' |
-main() { |
- var x // parse error: missing ';' |
-}'''; |
- writeFile(pathname, text); |
- standardAnalysisSetup(); |
- Future finishTest() { |
- return sendAnalysisGetErrors(pathname).then((result) { |
- expect(result['errors'], equals(currentAnalysisErrors[pathname])); |
- }); |
- } |
- if (afterAnalysis) { |
- return analysisFinished.then((_) => finishTest()); |
- } else { |
- return finishTest(); |
- } |
- } |
- |
- test_updateContent_content_only() { |
- return updateContentTest(false); |
- } |
- |
- test_updateContent_including_offset_and_lengths() { |
- return updateContentTest(true); |
- } |
- |
- Future updateContentTest(bool includeOffsetAndLengths) { |
- String pathname = sourcePath('test.dart'); |
- String goodText = r''' |
-main() { |
- print("Hello, world!"); |
-}'''; |
- String badText = goodText.replaceAll(';', ''); |
- writeFile(pathname, badText); |
- standardAnalysisSetup(); |
- return analysisFinished.then((_) { |
- // The contents on disk (badText) are missing a semicolon. |
- expect(currentAnalysisErrors[pathname], isNot(isEmpty)); |
- |
- if (includeOffsetAndLengths) { |
- // Before we send a ChangeContentOverlay directive we need to send an |
- // AddContentOverlay directive. So send that with badText. |
- return sendAnalysisUpdateContent({ |
- pathname: { |
- 'type': 'add', |
- 'content': badText |
- } |
- }).then((_) => analysisFinished); |
- } |
- }).then((_) { |
- if (includeOffsetAndLengths) { |
- return sendAnalysisUpdateContent({ |
- pathname: { |
- 'type': 'change', |
- 'offset': goodText.indexOf(';'), |
- 'length': 0, |
- 'replacement': ';' |
- } |
- }); |
- } else { |
- return sendAnalysisUpdateContent({ |
- pathname: { |
- 'type': 'add', |
- 'content': goodText |
- } |
- }); |
- } |
- }).then((result) => analysisFinished).then((_) { |
- // There should be no errors now because the contents on disk have been |
- // overriden with goodText. |
- expect(currentAnalysisErrors[pathname], isEmpty); |
- return sendAnalysisUpdateContent({ |
- pathname: { |
- 'type': 'remove' |
- } |
- }); |
- }).then((result) => analysisFinished).then((_) { |
- // Now there should be errors again, because the contents on disk are no |
- // longer overridden. |
- expect(currentAnalysisErrors[pathname], isNot(isEmpty)); |
- }); |
- } |
-} |
- |
-main() { |
- runReflectiveTests(AnalysisDomainIntegrationTest); |
-} |