| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library test.services.correction.fix; | 5 library test.services.correction.fix; |
| 6 | 6 |
| 7 import 'package:analysis_server/src/protocol.dart' hide AnalysisError; | 7 import 'package:analysis_server/src/protocol.dart' hide AnalysisError; |
| 8 import 'package:analysis_server/src/services/correction/fix.dart'; | 8 import 'package:analysis_server/src/services/correction/fix.dart'; |
| 9 import 'package:analysis_server/src/services/index/index.dart'; | 9 import 'package:analysis_server/src/services/index/index.dart'; |
| 10 import 'package:analysis_server/src/services/index/local_memory_index.dart'; | 10 import 'package:analysis_server/src/services/index/local_memory_index.dart'; |
| (...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 849 } | 849 } |
| 850 '''); | 850 '''); |
| 851 assertHasFix(FixKind.INSERT_SEMICOLON, ''' | 851 assertHasFix(FixKind.INSERT_SEMICOLON, ''' |
| 852 main() { | 852 main() { |
| 853 print(0); | 853 print(0); |
| 854 } | 854 } |
| 855 '''); | 855 '''); |
| 856 } | 856 } |
| 857 | 857 |
| 858 void test_importLibraryPackage_withType() { | 858 void test_importLibraryPackage_withType() { |
| 859 provider.newFile('/packages/my_pkg/lib/my_lib.dart', ''' | 859 _configureMyPkg(''' |
| 860 library my_lib; | 860 library my_lib; |
| 861 class Test {} | 861 class Test {} |
| 862 '''); | 862 '''); |
| 863 { | |
| 864 Folder myPkgFolder = provider.getResource('/packages/my_pkg/lib'); | |
| 865 UriResolver pkgResolver = new PackageMapUriResolver(provider, { | |
| 866 'my_pkg': [myPkgFolder] | |
| 867 }); | |
| 868 context.sourceFactory = new SourceFactory( | |
| 869 [AbstractContextTest.SDK_RESOLVER, resourceResolver, pkgResolver]); | |
| 870 } | |
| 871 // force 'my_pkg' resolution | |
| 872 addSource('/tmp/other.dart', "import 'package:my_pkg/my_lib.dart';"); | |
| 873 // try to find a fix | 863 // try to find a fix |
| 874 _indexTestUnit(''' | 864 _indexTestUnit(''' |
| 875 main() { | 865 main() { |
| 876 Test test = null; | 866 Test test = null; |
| 877 } | 867 } |
| 878 '''); | 868 '''); |
| 879 performAllAnalysisTasks(); | 869 performAllAnalysisTasks(); |
| 880 assertHasFix(FixKind.IMPORT_LIBRARY_PROJECT, ''' | 870 assertHasFix(FixKind.IMPORT_LIBRARY_PROJECT, ''' |
| 881 import 'package:my_pkg/my_lib.dart'; | 871 import 'package:my_pkg/my_lib.dart'; |
| 882 | 872 |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1279 'dart:math'; | 1269 'dart:math'; |
| 1280 main() { | 1270 main() { |
| 1281 } | 1271 } |
| 1282 '''); | 1272 '''); |
| 1283 assertHasFix(FixKind.REMOVE_UNUSED_IMPORT, ''' | 1273 assertHasFix(FixKind.REMOVE_UNUSED_IMPORT, ''' |
| 1284 main() { | 1274 main() { |
| 1285 } | 1275 } |
| 1286 '''); | 1276 '''); |
| 1287 } | 1277 } |
| 1288 | 1278 |
| 1279 void test_replaceImportUri_inProject() { |
| 1280 testFile = '/project/bin/test.dart'; |
| 1281 addSource('/project/foo/bar/lib.dart', ''); |
| 1282 _indexTestUnit(''' |
| 1283 import 'no/matter/lib.dart'; |
| 1284 '''); |
| 1285 performAllAnalysisTasks(); |
| 1286 assertHasFix(FixKind.REPLACE_IMPORT_URI, ''' |
| 1287 import '../foo/bar/lib.dart'; |
| 1288 '''); |
| 1289 } |
| 1290 |
| 1291 void test_replaceImportUri_package() { |
| 1292 _configureMyPkg(''); |
| 1293 _indexTestUnit(''' |
| 1294 import 'no/matter/my_lib.dart'; |
| 1295 '''); |
| 1296 performAllAnalysisTasks(); |
| 1297 assertHasFix(FixKind.REPLACE_IMPORT_URI, ''' |
| 1298 import 'package:my_pkg/my_lib.dart'; |
| 1299 '''); |
| 1300 } |
| 1301 |
| 1289 void test_replaceWithConstInstanceCreation() { | 1302 void test_replaceWithConstInstanceCreation() { |
| 1290 _indexTestUnit(''' | 1303 _indexTestUnit(''' |
| 1291 class A { | 1304 class A { |
| 1292 const A(); | 1305 const A(); |
| 1293 } | 1306 } |
| 1294 const a = new A(); | 1307 const a = new A(); |
| 1295 '''); | 1308 '''); |
| 1296 assertHasFix(FixKind.USE_CONST, ''' | 1309 assertHasFix(FixKind.USE_CONST, ''' |
| 1297 class A { | 1310 class A { |
| 1298 const A(); | 1311 const A(); |
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1840 | 1853 |
| 1841 void _assertLinkedGroup(LinkedEditGroup group, List<String> expectedStrings, | 1854 void _assertLinkedGroup(LinkedEditGroup group, List<String> expectedStrings, |
| 1842 [List<LinkedEditSuggestion> expectedSuggestions]) { | 1855 [List<LinkedEditSuggestion> expectedSuggestions]) { |
| 1843 List<Position> expectedPositions = _findResultPositions(expectedStrings); | 1856 List<Position> expectedPositions = _findResultPositions(expectedStrings); |
| 1844 expect(group.positions, unorderedEquals(expectedPositions)); | 1857 expect(group.positions, unorderedEquals(expectedPositions)); |
| 1845 if (expectedSuggestions != null) { | 1858 if (expectedSuggestions != null) { |
| 1846 expect(group.suggestions, unorderedEquals(expectedSuggestions)); | 1859 expect(group.suggestions, unorderedEquals(expectedSuggestions)); |
| 1847 } | 1860 } |
| 1848 } | 1861 } |
| 1849 | 1862 |
| 1863 /** |
| 1864 * Configures the [SourceFactory] to have the `my_pkg` package in |
| 1865 * `/packages/my_pkg/lib` folder. |
| 1866 */ |
| 1867 void _configureMyPkg(String myLibCode) { |
| 1868 provider.newFile('/packages/my_pkg/lib/my_lib.dart', myLibCode); |
| 1869 // configure SourceFactory |
| 1870 Folder myPkgFolder = provider.getResource('/packages/my_pkg/lib'); |
| 1871 UriResolver pkgResolver = new PackageMapUriResolver(provider, { |
| 1872 'my_pkg': [myPkgFolder] |
| 1873 }); |
| 1874 context.sourceFactory = new SourceFactory( |
| 1875 [AbstractContextTest.SDK_RESOLVER, resourceResolver, pkgResolver]); |
| 1876 // force 'my_pkg' resolution |
| 1877 addSource('/tmp/other.dart', "import 'package:my_pkg/my_lib.dart';"); |
| 1878 } |
| 1879 |
| 1850 AnalysisError _findErrorToFix() { | 1880 AnalysisError _findErrorToFix() { |
| 1851 List<AnalysisError> errors = context.computeErrors(testSource); | 1881 List<AnalysisError> errors = context.computeErrors(testSource); |
| 1852 expect( | 1882 expect( |
| 1853 errors, | 1883 errors, |
| 1854 hasLength(1), | 1884 hasLength(1), |
| 1855 reason: 'Exactly 1 error expected, but ${errors.length} found:\n' + | 1885 reason: 'Exactly 1 error expected, but ${errors.length} found:\n' + |
| 1856 errors.join('\n')); | 1886 errors.join('\n')); |
| 1857 return errors[0]; | 1887 return errors[0]; |
| 1858 } | 1888 } |
| 1859 | 1889 |
| 1860 List<Position> _findResultPositions(List<String> searchStrings) { | 1890 List<Position> _findResultPositions(List<String> searchStrings) { |
| 1861 List<Position> positions = <Position>[]; | 1891 List<Position> positions = <Position>[]; |
| 1862 for (String search in searchStrings) { | 1892 for (String search in searchStrings) { |
| 1863 int offset = resultCode.indexOf(search); | 1893 int offset = resultCode.indexOf(search); |
| 1864 int length = getLeadingIdentifierLength(search); | 1894 int length = getLeadingIdentifierLength(search); |
| 1865 positions.add(new Position(testFile, offset)); | 1895 positions.add(new Position(testFile, offset)); |
| 1866 } | 1896 } |
| 1867 return positions; | 1897 return positions; |
| 1868 } | 1898 } |
| 1869 | 1899 |
| 1870 void _indexTestUnit(String code) { | 1900 void _indexTestUnit(String code) { |
| 1871 resolveTestUnit(code); | 1901 resolveTestUnit(code); |
| 1872 index.indexUnit(context, testUnit); | 1902 index.indexUnit(context, testUnit); |
| 1873 } | 1903 } |
| 1874 } | 1904 } |
| OLD | NEW |