| 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.package.map.provider; | 5 library test.package.map.provider; |
| 6 | 6 |
| 7 import 'dart:convert'; | 7 import 'dart:convert'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/package_map_provider.dart'; | 9 import 'package:analysis_server/src/package_map_provider.dart'; |
| 10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
| 11 import 'package:analysis_server/src/resource.dart'; | 11 import 'package:analysis_server/src/resource.dart'; |
| 12 | 12 |
| 13 main() { | 13 main() { |
| 14 groupSep = ' | '; | 14 groupSep = ' | '; |
| 15 | 15 |
| 16 group('PubPackageMapProvider', () { | 16 group('PubPackageMapProvider', () { |
| 17 group('parsePackageMap', () { | 17 group('parsePackageMap', () { |
| 18 MemoryResourceProvider resourceProvider; | 18 MemoryResourceProvider resourceProvider; |
| 19 PubPackageMapProvider packageMapProvider; | 19 PubPackageMapProvider packageMapProvider; |
| 20 const String projectPath = '/path/to/project'; |
| 21 Folder projectFolder; |
| 20 | 22 |
| 21 setUp(() { | 23 setUp(() { |
| 22 resourceProvider = new MemoryResourceProvider(); | 24 resourceProvider = new MemoryResourceProvider(); |
| 23 packageMapProvider = new PubPackageMapProvider(resourceProvider); | 25 packageMapProvider = new PubPackageMapProvider(resourceProvider); |
| 26 projectFolder = resourceProvider.newFolder(projectPath); |
| 24 }); | 27 }); |
| 25 | 28 |
| 29 PackageMapInfo parsePackageMap(Object obj) { |
| 30 return packageMapProvider.parsePackageMap(JSON.encode(obj), projectFolde
r); |
| 31 } |
| 32 |
| 26 test('normal folder', () { | 33 test('normal folder', () { |
| 27 String packageName = 'foo'; | 34 String packageName = 'foo'; |
| 28 String folderPath = '/path/to/folder'; | 35 String folderPath = '/path/to/folder'; |
| 29 resourceProvider.newFolder(folderPath); | 36 resourceProvider.newFolder(folderPath); |
| 30 Map<String, List<Folder>> result = packageMapProvider.parsePackageMap( | 37 Map<String, List<Folder>> result = parsePackageMap( |
| 31 JSON.encode({'packages': {packageName: folderPath}})).packageMap; | 38 {'packages': {packageName: folderPath}}).packageMap; |
| 32 expect(result, hasLength(1)); | 39 expect(result, hasLength(1)); |
| 33 expect(result.keys, contains(packageName)); | 40 expect(result.keys, contains(packageName)); |
| 34 expect(result[packageName], hasLength(1)); | 41 expect(result[packageName], hasLength(1)); |
| 35 expect(result[packageName][0], new isInstanceOf<Folder>()); | 42 expect(result[packageName][0], new isInstanceOf<Folder>()); |
| 36 expect(result[packageName][0].path, equals(folderPath)); | 43 expect(result[packageName][0].path, equals(folderPath)); |
| 37 }); | 44 }); |
| 38 | 45 |
| 39 test('ignore nonexistent folder', () { | 46 test('ignore nonexistent folder', () { |
| 40 String packageName = 'foo'; | 47 String packageName = 'foo'; |
| 41 String folderPath = '/path/to/folder'; | 48 String folderPath = '/path/to/folder'; |
| 42 Map<String, List<Folder>> result = packageMapProvider.parsePackageMap( | 49 Map<String, List<Folder>> result = parsePackageMap( |
| 43 JSON.encode({'packages': {packageName: folderPath}})).packageMap; | 50 {'packages': {packageName: folderPath}}).packageMap; |
| 44 expect(result, hasLength(0)); | 51 expect(result, hasLength(0)); |
| 45 }); | 52 }); |
| 46 | 53 |
| 47 test('package maps to list', () { | 54 test('package maps to list', () { |
| 48 String packageName = 'foo'; | 55 String packageName = 'foo'; |
| 49 String folderPath1 = '/path/to/folder1'; | 56 String folderPath1 = '/path/to/folder1'; |
| 50 String folderPath2 = '/path/to/folder2'; | 57 String folderPath2 = '/path/to/folder2'; |
| 51 resourceProvider.newFolder(folderPath1); | 58 resourceProvider.newFolder(folderPath1); |
| 52 resourceProvider.newFolder(folderPath2); | 59 resourceProvider.newFolder(folderPath2); |
| 53 Map<String, List<Folder>> result = packageMapProvider.parsePackageMap( | 60 Map<String, List<Folder>> result = parsePackageMap( |
| 54 JSON.encode({'packages': {packageName: [folderPath1, folderPath2]}})
).packageMap; | 61 {'packages': {packageName: [folderPath1, folderPath2]}}).packageMap; |
| 55 expect(result, hasLength(1)); | 62 expect(result, hasLength(1)); |
| 56 expect(result.keys, contains(packageName)); | 63 expect(result.keys, contains(packageName)); |
| 57 expect(result[packageName], hasLength(2)); | 64 expect(result[packageName], hasLength(2)); |
| 58 for (int i = 0; i < 2; i++) { | 65 for (int i = 0; i < 2; i++) { |
| 59 expect(result[packageName][i], new isInstanceOf<Folder>()); | 66 expect(result[packageName][i], new isInstanceOf<Folder>()); |
| 60 expect(result[packageName][i].path, isIn([folderPath1, folderPath2])); | 67 expect(result[packageName][i].path, isIn([folderPath1, folderPath2])); |
| 61 } | 68 } |
| 62 }); | 69 }); |
| 63 | 70 |
| 64 test('Handle dependencies', () { | 71 test('Handle dependencies', () { |
| 65 String path1 = '/path/to/folder1/pubspec.lock'; | 72 String path1 = '/path/to/folder1/pubspec.lock'; |
| 66 String path2 = '/path/to/folder2/pubspec.lock'; | 73 String path2 = '/path/to/folder2/pubspec.lock'; |
| 67 resourceProvider.newFile(path1, '...'); | 74 resourceProvider.newFile(path1, '...'); |
| 68 resourceProvider.newFile(path2, '...'); | 75 resourceProvider.newFile(path2, '...'); |
| 69 Set<String> dependencies = packageMapProvider.parsePackageMap( | 76 Set<String> dependencies = parsePackageMap( |
| 70 JSON.encode({'packages': {}, 'input_files': [path1, path2]})).depend
encies; | 77 {'packages': {}, 'input_files': [path1, path2]}).dependencies; |
| 71 expect(dependencies, hasLength(2)); | 78 expect(dependencies, hasLength(2)); |
| 72 expect(dependencies, contains(path1)); | 79 expect(dependencies, contains(path1)); |
| 73 expect(dependencies, contains(path2)); | 80 expect(dependencies, contains(path2)); |
| 74 }); | 81 }); |
| 82 |
| 83 test('Relative path in packages', () { |
| 84 String packagePath = '/path/to/package'; |
| 85 String relativePackagePath = '../package'; |
| 86 String packageName = 'foo'; |
| 87 resourceProvider.newFolder(projectPath); |
| 88 resourceProvider.newFolder(packagePath); |
| 89 Map<String, List<Folder>> result = parsePackageMap( |
| 90 {'packages': {packageName: [relativePackagePath]}}).packageMap; |
| 91 expect(result[packageName][0].path, equals(packagePath)); |
| 92 }); |
| 93 |
| 94 test('Relative path in dependencies', () { |
| 95 String dependencyPath = '/path/to/pubspec.lock'; |
| 96 String relativeDependencyPath = '../pubspec.lock'; |
| 97 resourceProvider.newFolder(projectPath); |
| 98 resourceProvider.newFile(dependencyPath, 'contents'); |
| 99 Set<String> dependencies = parsePackageMap( |
| 100 {'packages': {}, 'input_files': [relativeDependencyPath]}).dependenc
ies; |
| 101 expect(dependencies, hasLength(1)); |
| 102 expect(dependencies, contains(dependencyPath)); |
| 103 }); |
| 75 }); | 104 }); |
| 76 }); | 105 }); |
| 77 } | 106 } |
| OLD | NEW |