| 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.source.package_map_resolver; | 5 library test.source.package_map_resolver; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 | 8 |
| 9 import 'package:analyzer/file_system/file_system.dart'; | 9 import 'package:analyzer/file_system/file_system.dart'; |
| 10 import 'package:analyzer/file_system/memory_file_system.dart'; | 10 import 'package:analyzer/file_system/memory_file_system.dart'; |
| 11 import 'package:analyzer/source/package_map_resolver.dart'; |
| 11 import 'package:analyzer/src/generated/source.dart'; | 12 import 'package:analyzer/src/generated/source.dart'; |
| 12 import 'package:unittest/unittest.dart'; | 13 import 'package:unittest/unittest.dart'; |
| 13 import 'package:analyzer/source/package_map_resolver.dart'; | |
| 14 | 14 |
| 15 | 15 |
| 16 main() { | 16 main() { |
| 17 groupSep = ' | '; | 17 groupSep = ' | '; |
| 18 group('PackageMapUriResolverTest', () { | 18 group('PackageMapUriResolverTest', () { |
| 19 test('fromEncoding_nonPackage', () { | 19 test('fromEncoding_nonPackage', () { |
| 20 new _PackageMapUriResolverTest().test_fromEncoding_nonPackage(); | 20 new _PackageMapUriResolverTest().test_fromEncoding_nonPackage(); |
| 21 }); | 21 }); |
| 22 test('fromEncoding_package', () { | 22 test('fromEncoding_package', () { |
| 23 new _PackageMapUriResolverTest().test_fromEncoding_package(); | 23 new _PackageMapUriResolverTest().test_fromEncoding_package(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 34 test('resolve_multiple_folders', () { | 34 test('resolve_multiple_folders', () { |
| 35 new _PackageMapUriResolverTest().test_resolve_multiple_folders(); | 35 new _PackageMapUriResolverTest().test_resolve_multiple_folders(); |
| 36 }); | 36 }); |
| 37 test('resolve_nonPackage', () { | 37 test('resolve_nonPackage', () { |
| 38 new _PackageMapUriResolverTest().test_resolve_nonPackage(); | 38 new _PackageMapUriResolverTest().test_resolve_nonPackage(); |
| 39 }); | 39 }); |
| 40 test('resolve_OK', () { | 40 test('resolve_OK', () { |
| 41 new _PackageMapUriResolverTest().test_resolve_OK(); | 41 new _PackageMapUriResolverTest().test_resolve_OK(); |
| 42 }); | 42 }); |
| 43 test('resolve_package_invalid_leadingSlash', () { | 43 test('resolve_package_invalid_leadingSlash', () { |
| 44 new _PackageMapUriResolverTest().test_resolve_package_invalid_leadingSlash
(); | 44 var inst = new _PackageMapUriResolverTest(); |
| 45 inst.test_resolve_package_invalid_leadingSlash(); |
| 45 }); | 46 }); |
| 46 test('resolve_package_invalid_noSlash', () { | 47 test('resolve_package_invalid_noSlash', () { |
| 47 new _PackageMapUriResolverTest().test_resolve_package_invalid_noSlash(); | 48 new _PackageMapUriResolverTest().test_resolve_package_invalid_noSlash(); |
| 48 }); | 49 }); |
| 49 test('resolve_package_invalid_onlySlash', () { | 50 test('resolve_package_invalid_onlySlash', () { |
| 50 new _PackageMapUriResolverTest().test_resolve_package_invalid_onlySlash(); | 51 new _PackageMapUriResolverTest().test_resolve_package_invalid_onlySlash(); |
| 51 }); | 52 }); |
| 52 test('resolve_package_notInMap', () { | 53 test('resolve_package_notInMap', () { |
| 53 new _PackageMapUriResolverTest().test_resolve_package_notInMap(); | 54 new _PackageMapUriResolverTest().test_resolve_package_notInMap(); |
| 54 }); | 55 }); |
| 56 test('restoreAbsolute_OK', () { |
| 57 new _PackageMapUriResolverTest().test_restoreAbsolute(); |
| 58 }); |
| 55 }); | 59 }); |
| 56 } | 60 } |
| 57 | 61 |
| 58 | 62 |
| 59 class _PackageMapUriResolverTest { | 63 class _PackageMapUriResolverTest { |
| 60 static HashMap EMPTY_MAP = new HashMap<String, List<Folder>>(); | 64 static HashMap EMPTY_MAP = new HashMap<String, List<Folder>>(); |
| 61 MemoryResourceProvider provider = new MemoryResourceProvider(); | 65 MemoryResourceProvider provider = new MemoryResourceProvider(); |
| 62 | 66 |
| 63 void test_fromEncoding_nonPackage() { | 67 void test_fromEncoding_nonPackage() { |
| 64 UriResolver resolver = new PackageMapUriResolver(provider, EMPTY_MAP); | 68 UriResolver resolver = new PackageMapUriResolver(provider, EMPTY_MAP); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 91 Uri uri = Uri.parse('memfs:/foo.dart'); | 95 Uri uri = Uri.parse('memfs:/foo.dart'); |
| 92 expect(uri.scheme, 'memfs'); | 96 expect(uri.scheme, 'memfs'); |
| 93 expect(PackageMapUriResolver.isPackageUri(uri), isFalse); | 97 expect(PackageMapUriResolver.isPackageUri(uri), isFalse); |
| 94 } | 98 } |
| 95 | 99 |
| 96 void test_resolve_OK() { | 100 void test_resolve_OK() { |
| 97 const pkgFileA = '/pkgA/lib/libA.dart'; | 101 const pkgFileA = '/pkgA/lib/libA.dart'; |
| 98 const pkgFileB = '/pkgB/lib/libB.dart'; | 102 const pkgFileB = '/pkgB/lib/libB.dart'; |
| 99 provider.newFile(pkgFileA, 'library lib_a;'); | 103 provider.newFile(pkgFileA, 'library lib_a;'); |
| 100 provider.newFile(pkgFileB, 'library lib_b;'); | 104 provider.newFile(pkgFileB, 'library lib_b;'); |
| 101 PackageMapUriResolver resolver = new PackageMapUriResolver(provider, | 105 PackageMapUriResolver resolver = |
| 102 <String, List<Folder>>{ | 106 new PackageMapUriResolver(provider, <String, List<Folder>>{ |
| 103 'pkgA': [provider.getResource('/pkgA/lib/')], | 107 'pkgA': [provider.getResource('/pkgA/lib/')], |
| 104 'pkgB': [provider.getResource('/pkgB/lib/')] | 108 'pkgB': [provider.getResource('/pkgB/lib/')] |
| 105 }); | 109 }); |
| 106 { | 110 { |
| 107 Uri uri = Uri.parse('package:pkgA/libA.dart'); | 111 Uri uri = Uri.parse('package:pkgA/libA.dart'); |
| 108 Source result = resolver.resolveAbsolute(uri); | 112 Source result = resolver.resolveAbsolute(uri); |
| 109 expect(result, isNotNull); | 113 expect(result, isNotNull); |
| 110 expect(result.exists(), isTrue); | 114 expect(result.exists(), isTrue); |
| 111 expect(result.uriKind, UriKind.PACKAGE_URI); | 115 expect(result.uriKind, UriKind.PACKAGE_URI); |
| 112 expect(result.fullName, pkgFileA); | 116 expect(result.fullName, pkgFileA); |
| 113 } | 117 } |
| 114 { | 118 { |
| 115 Uri uri = Uri.parse('package:pkgB/libB.dart'); | 119 Uri uri = Uri.parse('package:pkgB/libB.dart'); |
| 116 Source result = resolver.resolveAbsolute(uri); | 120 Source result = resolver.resolveAbsolute(uri); |
| 117 expect(result, isNotNull); | 121 expect(result, isNotNull); |
| 118 expect(result.exists(), isTrue); | 122 expect(result.exists(), isTrue); |
| 119 expect(result.uriKind, UriKind.PACKAGE_URI); | 123 expect(result.uriKind, UriKind.PACKAGE_URI); |
| 120 expect(result.fullName, pkgFileB); | 124 expect(result.fullName, pkgFileB); |
| 121 } | 125 } |
| 122 } | 126 } |
| 123 | 127 |
| 124 void test_resolve_multiple_folders() { | 128 void test_resolve_multiple_folders() { |
| 125 const pkgFileA = '/part1/lib/libA.dart'; | 129 const pkgFileA = '/part1/lib/libA.dart'; |
| 126 const pkgFileB = '/part2/lib/libB.dart'; | 130 const pkgFileB = '/part2/lib/libB.dart'; |
| 127 provider.newFile(pkgFileA, 'library lib_a'); | 131 provider.newFile(pkgFileA, 'library lib_a'); |
| 128 provider.newFile(pkgFileB, 'library lib_b'); | 132 provider.newFile(pkgFileB, 'library lib_b'); |
| 129 PackageMapUriResolver resolver = new PackageMapUriResolver(provider, | 133 PackageMapUriResolver resolver = |
| 130 <String, List<Folder>>{ | 134 new PackageMapUriResolver(provider, <String, List<Folder>>{ |
| 131 'pkg': [provider.getResource('/part1/lib/'), | 135 'pkg': [ |
| 132 provider.getResource('/part2/lib/')] | 136 provider.getResource('/part1/lib/'), |
| 137 provider.getResource('/part2/lib/')] |
| 133 }); | 138 }); |
| 134 { | 139 { |
| 135 Uri uri = Uri.parse('package:pkg/libA.dart'); | 140 Uri uri = Uri.parse('package:pkg/libA.dart'); |
| 136 Source result = resolver.resolveAbsolute(uri); | 141 Source result = resolver.resolveAbsolute(uri); |
| 137 expect(result, isNotNull); | 142 expect(result, isNotNull); |
| 138 expect(result.exists(), isTrue); | 143 expect(result.exists(), isTrue); |
| 139 expect(result.uriKind, UriKind.PACKAGE_URI); | 144 expect(result.uriKind, UriKind.PACKAGE_URI); |
| 140 expect(result.fullName, pkgFileA); | 145 expect(result.fullName, pkgFileA); |
| 141 } | 146 } |
| 142 { | 147 { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 } | 183 } |
| 179 | 184 |
| 180 void test_resolve_package_notInMap() { | 185 void test_resolve_package_notInMap() { |
| 181 UriResolver resolver = new PackageMapUriResolver(provider, EMPTY_MAP); | 186 UriResolver resolver = new PackageMapUriResolver(provider, EMPTY_MAP); |
| 182 Uri uri = Uri.parse('package:analyzer/analyzer.dart'); | 187 Uri uri = Uri.parse('package:analyzer/analyzer.dart'); |
| 183 Source result = resolver.resolveAbsolute(uri); | 188 Source result = resolver.resolveAbsolute(uri); |
| 184 expect(result, isNotNull); | 189 expect(result, isNotNull); |
| 185 expect(result.exists(), isFalse); | 190 expect(result.exists(), isFalse); |
| 186 expect(result.fullName, 'package:analyzer/analyzer.dart'); | 191 expect(result.fullName, 'package:analyzer/analyzer.dart'); |
| 187 } | 192 } |
| 193 |
| 194 void test_restoreAbsolute() { |
| 195 const pkgFileA = '/pkgA/lib/libA.dart'; |
| 196 const pkgFileB = '/pkgB/lib/src/libB.dart'; |
| 197 provider.newFile(pkgFileA, 'library lib_a;'); |
| 198 provider.newFile(pkgFileB, 'library lib_b;'); |
| 199 PackageMapUriResolver resolver = |
| 200 new PackageMapUriResolver(provider, <String, List<Folder>>{ |
| 201 'pkgA': [provider.getResource('/pkgA/lib/')], |
| 202 'pkgB': [provider.getResource('/pkgB/lib/')] |
| 203 }); |
| 204 { |
| 205 Source source = _createFileSource('/pkgA/lib/libA.dart'); |
| 206 Uri uri = resolver.restoreAbsolute(source); |
| 207 expect(uri, isNotNull); |
| 208 expect(uri.path, 'package:pkgA/libA.dart'); |
| 209 } |
| 210 { |
| 211 Source source = _createFileSource('/pkgB/lib/src/libB.dart'); |
| 212 Uri uri = resolver.restoreAbsolute(source); |
| 213 expect(uri, isNotNull); |
| 214 expect(uri.path, 'package:pkgB/src/libB.dart'); |
| 215 } |
| 216 { |
| 217 Source source = _createFileSource('/no/such/file'); |
| 218 Uri uri = resolver.restoreAbsolute(source); |
| 219 expect(uri, isNull); |
| 220 } |
| 221 } |
| 222 |
| 223 Source _createFileSource(String path) { |
| 224 return new NonExistingSource(path, UriKind.FILE_URI); |
| 225 } |
| 188 } | 226 } |
| OLD | NEW |