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