| 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 analyzer.test.source.package_map_provider_test; | 5 library analyzer.test.source.package_map_provider_test; |
| 6 | 6 |
| 7 import 'package:analyzer/file_system/file_system.dart'; | 7 import 'package:analyzer/file_system/file_system.dart'; |
| 8 import 'package:analyzer/file_system/memory_file_system.dart'; | 8 import 'package:analyzer/file_system/memory_file_system.dart'; |
| 9 import 'package:analyzer/source/package_map_provider.dart'; | 9 import 'package:analyzer/source/package_map_provider.dart'; |
| 10 import 'package:analyzer/source/pub_package_map_provider.dart'; | 10 import 'package:analyzer/source/pub_package_map_provider.dart'; |
| 11 import 'package:analyzer/src/dart/sdk/sdk.dart'; | 11 import 'package:analyzer/src/dart/sdk/sdk.dart'; |
| 12 import 'package:analyzer/src/generated/sdk.dart'; | 12 import 'package:analyzer/src/generated/sdk.dart'; |
| 13 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 13 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 14 import 'package:unittest/unittest.dart'; | 14 import 'package:unittest/unittest.dart'; |
| 15 | 15 |
| 16 import '../utils.dart'; | 16 import '../utils.dart'; |
| 17 | 17 |
| 18 main() { | 18 main() { |
| 19 initializeTestEnvironment(); | 19 initializeTestEnvironment(); |
| 20 defineReflectiveTests(PubPackageMapProviderTest); | 20 defineReflectiveTests(PubPackageMapProviderTest); |
| 21 } | 21 } |
| 22 | 22 |
| 23 @reflectiveTest | 23 @reflectiveTest |
| 24 class PubPackageMapProviderTest { | 24 class PubPackageMapProviderTest { |
| 25 static const String projectPath = '/path/to/project'; | |
| 26 | |
| 27 DartSdk sdk; | 25 DartSdk sdk; |
| 28 MemoryResourceProvider resourceProvider; | 26 MemoryResourceProvider resourceProvider; |
| 29 PubPackageMapProvider packageMapProvider; | 27 PubPackageMapProvider packageMapProvider; |
| 28 String projectPath; |
| 30 Folder projectFolder; | 29 Folder projectFolder; |
| 31 | 30 |
| 32 PackageMapInfo parsePackageMap(Map obj) { | 31 PackageMapInfo parsePackageMap(Map obj) { |
| 33 return packageMapProvider.parsePackageMap(obj, projectFolder); | 32 return packageMapProvider.parsePackageMap(obj, projectFolder); |
| 34 } | 33 } |
| 35 | 34 |
| 36 void setUp() { | 35 void setUp() { |
| 37 resourceProvider = new MemoryResourceProvider(); | 36 resourceProvider = new MemoryResourceProvider(); |
| 38 sdk = new FolderBasedDartSdk(resourceProvider, | 37 sdk = new FolderBasedDartSdk(resourceProvider, |
| 39 FolderBasedDartSdk.defaultSdkDirectory(resourceProvider)); | 38 FolderBasedDartSdk.defaultSdkDirectory(resourceProvider)); |
| 40 packageMapProvider = new PubPackageMapProvider(resourceProvider, sdk); | 39 packageMapProvider = new PubPackageMapProvider(resourceProvider, sdk); |
| 40 projectPath = resourceProvider.convertPath('/path/to/project'); |
| 41 projectFolder = resourceProvider.newFolder(projectPath); | 41 projectFolder = resourceProvider.newFolder(projectPath); |
| 42 } | 42 } |
| 43 | 43 |
| 44 void test_computePackageMap_noLockFile() { | 44 void test_computePackageMap_noLockFile() { |
| 45 packageMapProvider = | 45 packageMapProvider = |
| 46 new PubPackageMapProvider(resourceProvider, sdk, (Folder folder) { | 46 new PubPackageMapProvider(resourceProvider, sdk, (Folder folder) { |
| 47 fail('Unexpected "pub list" invocation'); | 47 fail('Unexpected "pub list" invocation'); |
| 48 }); | 48 }); |
| 49 PackageMapInfo info = packageMapProvider.computePackageMap(projectFolder); | 49 PackageMapInfo info = packageMapProvider.computePackageMap(projectFolder); |
| 50 expect(info.packageMap, isNull); | 50 expect(info.packageMap, isNull); |
| 51 expect(info.dependencies, unorderedEquals(['$projectPath/pubspec.lock'])); | 51 expect( |
| 52 info.dependencies, |
| 53 unorderedEquals( |
| 54 [resourceProvider.pathContext.join(projectPath, 'pubspec.lock')])); |
| 52 } | 55 } |
| 53 | 56 |
| 54 void test_parsePackageMap_dontIgnoreNonExistingFolder() { | 57 void test_parsePackageMap_dontIgnoreNonExistingFolder() { |
| 55 String packageName = 'foo'; | 58 String packageName = 'foo'; |
| 56 String folderPath = '/path/to/folder'; | 59 String folderPath = resourceProvider.convertPath('/path/to/folder'); |
| 57 Map<String, List<Folder>> result = parsePackageMap({ | 60 Map<String, List<Folder>> result = parsePackageMap({ |
| 58 'packages': {packageName: folderPath} | 61 'packages': {packageName: folderPath} |
| 59 }).packageMap; | 62 }).packageMap; |
| 60 expect(result, hasLength(1)); | 63 expect(result, hasLength(1)); |
| 61 expect(result.keys, contains(packageName)); | 64 expect(result.keys, contains(packageName)); |
| 62 expect(result[packageName], hasLength(1)); | 65 expect(result[packageName], hasLength(1)); |
| 63 expect(result[packageName][0], new isInstanceOf<Folder>()); | 66 expect(result[packageName][0], new isInstanceOf<Folder>()); |
| 64 expect(result[packageName][0].path, equals(folderPath)); | 67 expect(result[packageName][0].path, equals(folderPath)); |
| 65 } | 68 } |
| 66 | 69 |
| 67 void test_parsePackageMap_handleDependencies() { | 70 void test_parsePackageMap_handleDependencies() { |
| 68 String path1 = '/path/to/folder1/pubspec.lock'; | 71 String path1 = |
| 69 String path2 = '/path/to/folder2/pubspec.lock'; | 72 resourceProvider.convertPath('/path/to/folder1/pubspec.lock'); |
| 73 String path2 = |
| 74 resourceProvider.convertPath('/path/to/folder2/pubspec.lock'); |
| 70 resourceProvider.newFile(path1, '...'); | 75 resourceProvider.newFile(path1, '...'); |
| 71 resourceProvider.newFile(path2, '...'); | 76 resourceProvider.newFile(path2, '...'); |
| 72 Set<String> dependencies = parsePackageMap({ | 77 Set<String> dependencies = parsePackageMap({ |
| 73 'packages': {}, | 78 'packages': {}, |
| 74 'input_files': [path1, path2] | 79 'input_files': [path1, path2] |
| 75 }).dependencies; | 80 }).dependencies; |
| 76 expect(dependencies, hasLength(2)); | 81 expect(dependencies, hasLength(2)); |
| 77 expect(dependencies, contains(path1)); | 82 expect(dependencies, contains(path1)); |
| 78 expect(dependencies, contains(path2)); | 83 expect(dependencies, contains(path2)); |
| 79 } | 84 } |
| 80 | 85 |
| 81 void test_parsePackageMap_normalFolder() { | 86 void test_parsePackageMap_normalFolder() { |
| 82 String packageName = 'foo'; | 87 String packageName = 'foo'; |
| 83 String folderPath = '/path/to/folder'; | 88 String folderPath = resourceProvider.convertPath('/path/to/folder'); |
| 84 resourceProvider.newFolder(folderPath); | 89 resourceProvider.newFolder(folderPath); |
| 85 Map<String, List<Folder>> result = parsePackageMap({ | 90 Map<String, List<Folder>> result = parsePackageMap({ |
| 86 'packages': {packageName: folderPath} | 91 'packages': {packageName: folderPath} |
| 87 }).packageMap; | 92 }).packageMap; |
| 88 expect(result, hasLength(1)); | 93 expect(result, hasLength(1)); |
| 89 expect(result.keys, contains(packageName)); | 94 expect(result.keys, contains(packageName)); |
| 90 expect(result[packageName], hasLength(1)); | 95 expect(result[packageName], hasLength(1)); |
| 91 expect(result[packageName][0], new isInstanceOf<Folder>()); | 96 expect(result[packageName][0], new isInstanceOf<Folder>()); |
| 92 expect(result[packageName][0].path, equals(folderPath)); | 97 expect(result[packageName][0].path, equals(folderPath)); |
| 93 } | 98 } |
| 94 | 99 |
| 95 void test_parsePackageMap_packageMapsToList() { | 100 void test_parsePackageMap_packageMapsToList() { |
| 96 String packageName = 'foo'; | 101 String packageName = 'foo'; |
| 97 String folderPath1 = '/path/to/folder1'; | 102 String folderPath1 = resourceProvider.convertPath('/path/to/folder1'); |
| 98 String folderPath2 = '/path/to/folder2'; | 103 String folderPath2 = resourceProvider.convertPath('/path/to/folder2'); |
| 99 resourceProvider.newFolder(folderPath1); | 104 resourceProvider.newFolder(folderPath1); |
| 100 resourceProvider.newFolder(folderPath2); | 105 resourceProvider.newFolder(folderPath2); |
| 101 Map<String, List<Folder>> result = parsePackageMap({ | 106 Map<String, List<Folder>> result = parsePackageMap({ |
| 102 'packages': { | 107 'packages': { |
| 103 packageName: [folderPath1, folderPath2] | 108 packageName: [folderPath1, folderPath2] |
| 104 } | 109 } |
| 105 }).packageMap; | 110 }).packageMap; |
| 106 expect(result, hasLength(1)); | 111 expect(result, hasLength(1)); |
| 107 expect(result.keys, contains(packageName)); | 112 expect(result.keys, contains(packageName)); |
| 108 expect(result[packageName], hasLength(2)); | 113 expect(result[packageName], hasLength(2)); |
| 109 for (int i = 0; i < 2; i++) { | 114 for (int i = 0; i < 2; i++) { |
| 110 expect(result[packageName][i], new isInstanceOf<Folder>()); | 115 expect(result[packageName][i], new isInstanceOf<Folder>()); |
| 111 expect(result[packageName][i].path, isIn([folderPath1, folderPath2])); | 116 expect(result[packageName][i].path, isIn([folderPath1, folderPath2])); |
| 112 } | 117 } |
| 113 } | 118 } |
| 114 | 119 |
| 115 void test_parsePackageMap_relativePahInPackages() { | 120 void test_parsePackageMap_relativePahInPackages() { |
| 116 String packagePath = '/path/to/package'; | 121 String packagePath = resourceProvider.convertPath('/path/to/package'); |
| 117 String relativePackagePath = '../package'; | 122 String relativePackagePath = '../package'; |
| 118 String packageName = 'foo'; | 123 String packageName = 'foo'; |
| 119 resourceProvider.newFolder(projectPath); | 124 resourceProvider.newFolder(projectPath); |
| 120 resourceProvider.newFolder(packagePath); | 125 resourceProvider.newFolder(packagePath); |
| 121 Map<String, List<Folder>> result = parsePackageMap({ | 126 Map<String, List<Folder>> result = parsePackageMap({ |
| 122 'packages': { | 127 'packages': { |
| 123 packageName: [relativePackagePath] | 128 packageName: [relativePackagePath] |
| 124 } | 129 } |
| 125 }).packageMap; | 130 }).packageMap; |
| 126 expect(result[packageName][0].path, equals(packagePath)); | 131 expect(result[packageName][0].path, equals(packagePath)); |
| 127 } | 132 } |
| 128 | 133 |
| 129 void test_parsePackageMap_relativePathInDependencies() { | 134 void test_parsePackageMap_relativePathInDependencies() { |
| 130 String dependencyPath = '/path/to/pubspec.lock'; | 135 String dependencyPath = |
| 136 resourceProvider.convertPath('/path/to/pubspec.lock'); |
| 131 String relativeDependencyPath = '../pubspec.lock'; | 137 String relativeDependencyPath = '../pubspec.lock'; |
| 132 resourceProvider.newFolder(projectPath); | 138 resourceProvider.newFolder(projectPath); |
| 133 resourceProvider.newFile(dependencyPath, 'contents'); | 139 resourceProvider.newFile(dependencyPath, 'contents'); |
| 134 Set<String> dependencies = parsePackageMap({ | 140 Set<String> dependencies = parsePackageMap({ |
| 135 'packages': {}, | 141 'packages': {}, |
| 136 'input_files': [relativeDependencyPath] | 142 'input_files': [relativeDependencyPath] |
| 137 }).dependencies; | 143 }).dependencies; |
| 138 expect(dependencies, hasLength(1)); | 144 expect(dependencies, hasLength(1)); |
| 139 expect(dependencies, contains(dependencyPath)); | 145 expect(dependencies, contains(dependencyPath)); |
| 140 } | 146 } |
| 141 } | 147 } |
| OLD | NEW |