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 'package:analyzer/file_system/file_system.dart'; |
| 8 import 'package:analyzer/file_system/memory_file_system.dart'; |
| 9 import 'package:analyzer/source/package_map_provider.dart'; |
| 10 import 'package:analyzer/source/pub_package_map_provider.dart'; |
| 11 import 'package:analyzer/src/generated/sdk_io.dart'; |
| 12 import 'package:unittest/unittest.dart'; |
| 13 |
| 14 import '../utils.dart'; |
| 15 |
| 16 main() { |
| 17 initializeTestEnvironment(); |
| 18 |
| 19 group('PubPackageMapProvider', () { |
| 20 group('parsePackageMap', () { |
| 21 MemoryResourceProvider resourceProvider; |
| 22 PubPackageMapProvider packageMapProvider; |
| 23 const String projectPath = '/path/to/project'; |
| 24 Folder projectFolder; |
| 25 |
| 26 setUp(() { |
| 27 resourceProvider = new MemoryResourceProvider(); |
| 28 packageMapProvider = new PubPackageMapProvider( |
| 29 resourceProvider, DirectoryBasedDartSdk.defaultSdk); |
| 30 projectFolder = resourceProvider.newFolder(projectPath); |
| 31 }); |
| 32 |
| 33 PackageMapInfo parsePackageMap(Object obj) { |
| 34 return packageMapProvider.parsePackageMap(obj, projectFolder); |
| 35 } |
| 36 |
| 37 test('normal folder', () { |
| 38 String packageName = 'foo'; |
| 39 String folderPath = '/path/to/folder'; |
| 40 resourceProvider.newFolder(folderPath); |
| 41 Map<String, List<Folder>> result = parsePackageMap({ |
| 42 'packages': {packageName: folderPath} |
| 43 }).packageMap; |
| 44 expect(result, hasLength(1)); |
| 45 expect(result.keys, contains(packageName)); |
| 46 expect(result[packageName], hasLength(1)); |
| 47 expect(result[packageName][0], new isInstanceOf<Folder>()); |
| 48 expect(result[packageName][0].path, equals(folderPath)); |
| 49 }); |
| 50 |
| 51 test("don't ignore nonexistent folder", () { |
| 52 String packageName = 'foo'; |
| 53 String folderPath = '/path/to/folder'; |
| 54 Map<String, List<Folder>> result = parsePackageMap({ |
| 55 'packages': {packageName: folderPath} |
| 56 }).packageMap; |
| 57 expect(result, hasLength(1)); |
| 58 expect(result.keys, contains(packageName)); |
| 59 expect(result[packageName], hasLength(1)); |
| 60 expect(result[packageName][0], new isInstanceOf<Folder>()); |
| 61 expect(result[packageName][0].path, equals(folderPath)); |
| 62 }); |
| 63 |
| 64 test('package maps to list', () { |
| 65 String packageName = 'foo'; |
| 66 String folderPath1 = '/path/to/folder1'; |
| 67 String folderPath2 = '/path/to/folder2'; |
| 68 resourceProvider.newFolder(folderPath1); |
| 69 resourceProvider.newFolder(folderPath2); |
| 70 Map<String, List<Folder>> result = parsePackageMap({ |
| 71 'packages': { |
| 72 packageName: [folderPath1, folderPath2] |
| 73 } |
| 74 }).packageMap; |
| 75 expect(result, hasLength(1)); |
| 76 expect(result.keys, contains(packageName)); |
| 77 expect(result[packageName], hasLength(2)); |
| 78 for (int i = 0; i < 2; i++) { |
| 79 expect(result[packageName][i], new isInstanceOf<Folder>()); |
| 80 expect(result[packageName][i].path, isIn([folderPath1, folderPath2])); |
| 81 } |
| 82 }); |
| 83 |
| 84 test('Handle dependencies', () { |
| 85 String path1 = '/path/to/folder1/pubspec.lock'; |
| 86 String path2 = '/path/to/folder2/pubspec.lock'; |
| 87 resourceProvider.newFile(path1, '...'); |
| 88 resourceProvider.newFile(path2, '...'); |
| 89 Set<String> dependencies = parsePackageMap({ |
| 90 'packages': {}, |
| 91 'input_files': [path1, path2] |
| 92 }).dependencies; |
| 93 expect(dependencies, hasLength(2)); |
| 94 expect(dependencies, contains(path1)); |
| 95 expect(dependencies, contains(path2)); |
| 96 }); |
| 97 |
| 98 test('Relative path in packages', () { |
| 99 String packagePath = '/path/to/package'; |
| 100 String relativePackagePath = '../package'; |
| 101 String packageName = 'foo'; |
| 102 resourceProvider.newFolder(projectPath); |
| 103 resourceProvider.newFolder(packagePath); |
| 104 Map<String, List<Folder>> result = parsePackageMap({ |
| 105 'packages': { |
| 106 packageName: [relativePackagePath] |
| 107 } |
| 108 }).packageMap; |
| 109 expect(result[packageName][0].path, equals(packagePath)); |
| 110 }); |
| 111 |
| 112 test('Relative path in dependencies', () { |
| 113 String dependencyPath = '/path/to/pubspec.lock'; |
| 114 String relativeDependencyPath = '../pubspec.lock'; |
| 115 resourceProvider.newFolder(projectPath); |
| 116 resourceProvider.newFile(dependencyPath, 'contents'); |
| 117 Set<String> dependencies = parsePackageMap({ |
| 118 'packages': {}, |
| 119 'input_files': [relativeDependencyPath] |
| 120 }).dependencies; |
| 121 expect(dependencies, hasLength(1)); |
| 122 expect(dependencies, contains(dependencyPath)); |
| 123 }); |
| 124 }); |
| 125 }); |
| 126 } |
OLD | NEW |