| 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.services.completion.contributor.dart.importuri; | 5 library test.services.completion.contributor.dart.importuri; |
| 6 | 6 |
| 7 import 'dart:io'; | 7 import 'dart:io'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/protocol.dart'; | 9 import 'package:analysis_server/src/protocol.dart'; |
| 10 import 'package:analysis_server/src/services/completion/import_uri_contributor.d
art'; | 10 import 'package:analysis_server/src/services/completion/import_uri_contributor.d
art'; |
| 11 import 'package:path/path.dart'; | 11 import 'package:path/path.dart'; |
| 12 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 12 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 13 import 'package:unittest/unittest.dart'; | 13 import 'package:unittest/unittest.dart'; |
| 14 | 14 |
| 15 import '../../utils.dart'; | 15 import '../../utils.dart'; |
| 16 import 'completion_test_util.dart'; | 16 import 'completion_test_util.dart'; |
| 17 import 'package:analysis_server/src/services/completion/dart_completion_manager.
dart'; |
| 17 | 18 |
| 18 main() { | 19 main() { |
| 19 initializeTestEnvironment(); | 20 initializeTestEnvironment(); |
| 20 defineReflectiveTests(ImportUriContributorTest); | 21 defineReflectiveTests(ImportUriContributorTest); |
| 21 } | 22 } |
| 22 | 23 |
| 23 @reflectiveTest | 24 @reflectiveTest |
| 24 class ImportUriContributorTest extends AbstractCompletionTest { | 25 class ImportUriContributorTest extends AbstractCompletionTest { |
| 25 @override | 26 @override |
| 26 void setUpContributor() { | 27 void setUpContributor() { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 44 assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT); | 45 assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT); |
| 45 assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT); | 46 assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT); |
| 46 } | 47 } |
| 47 | 48 |
| 48 test_import_dart() { | 49 test_import_dart() { |
| 49 addTestSource('import "d^" import'); | 50 addTestSource('import "d^" import'); |
| 50 computeFast(); | 51 computeFast(); |
| 51 expect(request.replacementOffset, completionOffset - 1); | 52 expect(request.replacementOffset, completionOffset - 1); |
| 52 expect(request.replacementLength, 1); | 53 expect(request.replacementLength, 1); |
| 53 assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT); | 54 assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT); |
| 54 assertNotSuggested('dart:core'); | 55 assertSuggest('dart:core', |
| 56 csKind: CompletionSuggestionKind.IMPORT, relevance: DART_RELEVANCE_LOW); |
| 55 assertNotSuggested('dart:_internal'); | 57 assertNotSuggested('dart:_internal'); |
| 56 assertSuggest('dart:async', csKind: CompletionSuggestionKind.IMPORT); | 58 assertSuggest('dart:async', csKind: CompletionSuggestionKind.IMPORT); |
| 57 assertSuggest('dart:math', csKind: CompletionSuggestionKind.IMPORT); | 59 assertSuggest('dart:math', csKind: CompletionSuggestionKind.IMPORT); |
| 58 } | 60 } |
| 59 | 61 |
| 60 test_import_dart2() { | 62 test_import_dart2() { |
| 61 addTestSource('import "dart:async"; import "d^"'); | 63 addTestSource('import "dart:async"; import "d^"'); |
| 62 computeFast(); | 64 computeFast(); |
| 63 expect(request.replacementOffset, completionOffset - 1); | 65 expect(request.replacementOffset, completionOffset - 1); |
| 64 expect(request.replacementLength, 1); | 66 expect(request.replacementLength, 1); |
| 65 assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT); | 67 assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT); |
| 66 assertNotSuggested('dart:core'); | 68 assertSuggest('dart:core', |
| 69 csKind: CompletionSuggestionKind.IMPORT, relevance: DART_RELEVANCE_LOW); |
| 67 assertNotSuggested('dart:_internal'); | 70 assertNotSuggested('dart:_internal'); |
| 68 assertNotSuggested('dart:async'); | 71 assertSuggest('dart:async', csKind: CompletionSuggestionKind.IMPORT); |
| 69 assertSuggest('dart:math', csKind: CompletionSuggestionKind.IMPORT); | 72 assertSuggest('dart:math', csKind: CompletionSuggestionKind.IMPORT); |
| 70 } | 73 } |
| 71 | 74 |
| 72 test_import_file() { | 75 test_import_file() { |
| 73 // TODO(danrubel) fix file uri suggestions on Windows | 76 // TODO(danrubel) fix file uri suggestions on Windows |
| 74 if (Platform.isWindows) return; | 77 if (Platform.isWindows) return; |
| 75 testFile = '/proj/completion.dart'; | 78 testFile = '/proj/completion.dart'; |
| 76 addSource('/proj/other.dart', 'library other;'); | 79 addSource('/proj/other.dart', 'library other;'); |
| 77 addSource('/proj/foo/bar.dart', 'library bar;'); | 80 addSource('/proj/foo/bar.dart', 'library bar;'); |
| 78 addSource('/blat.dart', 'library blat;'); | 81 addSource('/blat.dart', 'library blat;'); |
| 79 addTestSource('import "^" import'); | 82 addTestSource('import "^" import'); |
| 80 computeFast(); | 83 computeFast(); |
| 81 expect(request.replacementOffset, completionOffset); | 84 expect(request.replacementOffset, completionOffset); |
| 82 expect(request.replacementLength, 0); | 85 expect(request.replacementLength, 0); |
| 83 assertNotSuggested('completion.dart'); | 86 assertNotSuggested('completion.dart'); |
| 84 assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT); | 87 assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT); |
| 85 assertNotSuggested('foo'); | 88 assertNotSuggested('foo'); |
| 86 assertSuggest('foo${separator}', csKind: CompletionSuggestionKind.IMPORT); | 89 assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT); |
| 87 assertNotSuggested('foo${separator}bar.dart'); | 90 assertNotSuggested('foo/bar.dart'); |
| 88 assertNotSuggested('..${separator}blat.dart'); | 91 assertNotSuggested('../blat.dart'); |
| 89 } | 92 } |
| 90 | 93 |
| 91 test_import_file2() { | 94 test_import_file2() { |
| 92 // TODO(danrubel) fix file uri suggestions on Windows | 95 // TODO(danrubel) fix file uri suggestions on Windows |
| 93 if (Platform.isWindows) return; | 96 if (Platform.isWindows) return; |
| 94 testFile = '/proj/completion.dart'; | 97 testFile = '/proj/completion.dart'; |
| 95 addSource('/proj/other.dart', 'library other;'); | 98 addSource('/proj/other.dart', 'library other;'); |
| 96 addSource('/proj/foo/bar.dart', 'library bar;'); | 99 addSource('/proj/foo/bar.dart', 'library bar;'); |
| 97 addSource('/blat.dart', 'library blat;'); | 100 addSource('/blat.dart', 'library blat;'); |
| 98 addTestSource('import "..^" import'); | 101 addTestSource('import "..^" import'); |
| 99 computeFast(); | 102 computeFast(); |
| 100 expect(request.replacementOffset, completionOffset - 2); | 103 expect(request.replacementOffset, completionOffset - 2); |
| 101 expect(request.replacementLength, 2); | 104 expect(request.replacementLength, 2); |
| 102 assertNotSuggested('completion.dart'); | 105 assertNotSuggested('completion.dart'); |
| 103 assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT); | 106 assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT); |
| 104 assertNotSuggested('foo'); | 107 assertNotSuggested('foo'); |
| 105 assertSuggest('foo${separator}', csKind: CompletionSuggestionKind.IMPORT); | 108 assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT); |
| 106 assertNotSuggested('foo${separator}bar.dart'); | 109 assertNotSuggested('foo/bar.dart'); |
| 107 assertNotSuggested('..${separator}blat.dart'); | 110 assertNotSuggested('../blat.dart'); |
| 108 } | 111 } |
| 109 | 112 |
| 110 test_import_file_child() { | 113 test_import_file_child() { |
| 111 // TODO(danrubel) fix file uri suggestions on Windows | 114 // TODO(danrubel) fix file uri suggestions on Windows |
| 112 if (Platform.isWindows) return; | 115 if (Platform.isWindows) return; |
| 113 testFile = '/proj/completion.dart'; | 116 testFile = '/proj/completion.dart'; |
| 114 addSource('/proj/other.dart', 'library other;'); | 117 addSource('/proj/other.dart', 'library other;'); |
| 115 addSource('/proj/foo/bar.dart', 'library bar;'); | 118 addSource('/proj/foo/bar.dart', 'library bar;'); |
| 116 addSource('/blat.dart', 'library blat;'); | 119 addSource('/blat.dart', 'library blat;'); |
| 117 addTestSource('import "foo/^" import'); | 120 addTestSource('import "foo/^" import'); |
| 118 computeFast(); | 121 computeFast(); |
| 119 expect(request.replacementOffset, completionOffset - 4); | 122 expect(request.replacementOffset, completionOffset - 4); |
| 120 expect(request.replacementLength, 4); | 123 expect(request.replacementLength, 4); |
| 121 assertNotSuggested('completion.dart'); | 124 assertNotSuggested('completion.dart'); |
| 122 assertNotSuggested('other.dart'); | 125 assertNotSuggested('other.dart'); |
| 123 assertNotSuggested('foo'); | 126 assertNotSuggested('foo'); |
| 124 assertNotSuggested('foo${separator}'); | 127 assertNotSuggested('foo/'); |
| 125 assertSuggest('foo${separator}bar.dart', | 128 assertSuggest('foo/bar.dart', csKind: CompletionSuggestionKind.IMPORT); |
| 126 csKind: CompletionSuggestionKind.IMPORT); | 129 assertNotSuggested('../blat.dart'); |
| 127 assertNotSuggested('..${separator}blat.dart'); | |
| 128 } | 130 } |
| 129 | 131 |
| 130 test_import_file_parent() { | 132 test_import_file_parent() { |
| 131 // TODO(danrubel) fix file uri suggestions on Windows | 133 // TODO(danrubel) fix file uri suggestions on Windows |
| 132 if (Platform.isWindows) return; | 134 if (Platform.isWindows) return; |
| 133 testFile = '/proj/completion.dart'; | 135 testFile = '/proj/completion.dart'; |
| 134 addSource('/proj/other.dart', 'library other;'); | 136 addSource('/proj/other.dart', 'library other;'); |
| 135 addSource('/proj/foo/bar.dart', 'library bar;'); | 137 addSource('/proj/foo/bar.dart', 'library bar;'); |
| 136 addSource('/blat.dart', 'library blat;'); | 138 addSource('/blat.dart', 'library blat;'); |
| 137 addTestSource('import "../^" import'); | 139 addTestSource('import "../^" import'); |
| 138 computeFast(); | 140 computeFast(); |
| 139 expect(request.replacementOffset, completionOffset - 3); | 141 expect(request.replacementOffset, completionOffset - 3); |
| 140 expect(request.replacementLength, 3); | 142 expect(request.replacementLength, 3); |
| 141 assertNotSuggested('completion.dart'); | 143 assertNotSuggested('completion.dart'); |
| 142 assertNotSuggested('other.dart'); | 144 assertNotSuggested('other.dart'); |
| 143 assertNotSuggested('foo'); | 145 assertNotSuggested('foo'); |
| 144 assertNotSuggested('foo${separator}'); | 146 assertNotSuggested('foo/'); |
| 145 assertNotSuggested('foo${separator}bar.dart'); | 147 assertNotSuggested('foo/bar.dart'); |
| 146 assertSuggest('..${separator}blat.dart', | 148 assertSuggest('../blat.dart', csKind: CompletionSuggestionKind.IMPORT); |
| 147 csKind: CompletionSuggestionKind.IMPORT); | |
| 148 } | 149 } |
| 149 | 150 |
| 150 test_import_package() { | 151 test_import_package() { |
| 151 addPackageSource('foo', 'foo.dart', 'library foo;'); | 152 addPackageSource('foo', 'foo.dart', 'library foo;'); |
| 152 addPackageSource('foo', 'baz/too.dart', 'library too;'); | 153 addPackageSource('foo', 'baz/too.dart', 'library too;'); |
| 153 addPackageSource('bar', 'bar.dart', 'library bar;'); | 154 addPackageSource('bar', 'bar.dart', 'library bar;'); |
| 154 addTestSource('import "p^" import'); | 155 addTestSource('import "p^" import'); |
| 155 computeFast(); | 156 computeFast(); |
| 156 expect(request.replacementOffset, completionOffset - 1); | 157 expect(request.replacementOffset, completionOffset - 1); |
| 157 expect(request.replacementLength, 1); | 158 expect(request.replacementLength, 1); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 addSource('/proj/other.dart', 'library other;'); | 212 addSource('/proj/other.dart', 'library other;'); |
| 212 addSource('/proj/foo/bar.dart', 'library bar;'); | 213 addSource('/proj/foo/bar.dart', 'library bar;'); |
| 213 addSource('/blat.dart', 'library blat;'); | 214 addSource('/blat.dart', 'library blat;'); |
| 214 addTestSource('library x; part "^" import'); | 215 addTestSource('library x; part "^" import'); |
| 215 computeFast(); | 216 computeFast(); |
| 216 expect(request.replacementOffset, completionOffset); | 217 expect(request.replacementOffset, completionOffset); |
| 217 expect(request.replacementLength, 0); | 218 expect(request.replacementLength, 0); |
| 218 assertNotSuggested('completion.dart'); | 219 assertNotSuggested('completion.dart'); |
| 219 assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT); | 220 assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT); |
| 220 assertNotSuggested('foo'); | 221 assertNotSuggested('foo'); |
| 221 assertSuggest('foo${separator}', csKind: CompletionSuggestionKind.IMPORT); | 222 assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT); |
| 222 assertNotSuggested('foo${separator}bar.dart'); | 223 assertNotSuggested('foo/bar.dart'); |
| 223 assertNotSuggested('..${separator}blat.dart'); | 224 assertNotSuggested('../blat.dart'); |
| 224 } | 225 } |
| 225 | 226 |
| 226 test_part_file2() { | 227 test_part_file2() { |
| 227 // TODO(danrubel) fix file uri suggestions on Windows | 228 // TODO(danrubel) fix file uri suggestions on Windows |
| 228 if (Platform.isWindows) return; | 229 if (Platform.isWindows) return; |
| 229 testFile = '/proj/completion.dart'; | 230 testFile = '/proj/completion.dart'; |
| 230 addSource('/proj/other.dart', 'library other;'); | 231 addSource('/proj/other.dart', 'library other;'); |
| 231 addSource('/proj/foo/bar.dart', 'library bar;'); | 232 addSource('/proj/foo/bar.dart', 'library bar;'); |
| 232 addSource('/blat.dart', 'library blat;'); | 233 addSource('/blat.dart', 'library blat;'); |
| 233 addTestSource('library x; part "..^" import'); | 234 addTestSource('library x; part "..^" import'); |
| 234 computeFast(); | 235 computeFast(); |
| 235 expect(request.replacementOffset, completionOffset - 2); | 236 expect(request.replacementOffset, completionOffset - 2); |
| 236 expect(request.replacementLength, 2); | 237 expect(request.replacementLength, 2); |
| 237 assertNotSuggested('completion.dart'); | 238 assertNotSuggested('completion.dart'); |
| 238 assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT); | 239 assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT); |
| 239 assertNotSuggested('foo'); | 240 assertNotSuggested('foo'); |
| 240 assertSuggest('foo${separator}', csKind: CompletionSuggestionKind.IMPORT); | 241 assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT); |
| 241 assertNotSuggested('foo${separator}bar.dart'); | 242 assertNotSuggested('foo/bar.dart'); |
| 242 assertNotSuggested('..${separator}blat.dart'); | 243 assertNotSuggested('../blat.dart'); |
| 243 } | 244 } |
| 244 | 245 |
| 245 test_part_file_child() { | 246 test_part_file_child() { |
| 246 // TODO(danrubel) fix file uri suggestions on Windows | 247 // TODO(danrubel) fix file uri suggestions on Windows |
| 247 if (Platform.isWindows) return; | 248 if (Platform.isWindows) return; |
| 248 testFile = '/proj/completion.dart'; | 249 testFile = '/proj/completion.dart'; |
| 249 addSource('/proj/other.dart', 'library other;'); | 250 addSource('/proj/other.dart', 'library other;'); |
| 250 addSource('/proj/foo/bar.dart', 'library bar;'); | 251 addSource('/proj/foo/bar.dart', 'library bar;'); |
| 251 addSource('/blat.dart', 'library blat;'); | 252 addSource('/blat.dart', 'library blat;'); |
| 252 addTestSource('library x; part "foo/^" import'); | 253 addTestSource('library x; part "foo/^" import'); |
| 253 computeFast(); | 254 computeFast(); |
| 254 expect(request.replacementOffset, completionOffset - 4); | 255 expect(request.replacementOffset, completionOffset - 4); |
| 255 expect(request.replacementLength, 4); | 256 expect(request.replacementLength, 4); |
| 256 assertNotSuggested('completion.dart'); | 257 assertNotSuggested('completion.dart'); |
| 257 assertNotSuggested('other.dart'); | 258 assertNotSuggested('other.dart'); |
| 258 assertNotSuggested('foo'); | 259 assertNotSuggested('foo'); |
| 259 assertNotSuggested('foo${separator}'); | 260 assertNotSuggested('foo/'); |
| 260 assertSuggest('foo${separator}bar.dart', | 261 assertSuggest('foo/bar.dart', csKind: CompletionSuggestionKind.IMPORT); |
| 261 csKind: CompletionSuggestionKind.IMPORT); | 262 assertNotSuggested('../blat.dart'); |
| 262 assertNotSuggested('..${separator}blat.dart'); | |
| 263 } | 263 } |
| 264 | 264 |
| 265 test_part_file_parent() { | 265 test_part_file_parent() { |
| 266 // TODO(danrubel) fix file uri suggestions on Windows | 266 // TODO(danrubel) fix file uri suggestions on Windows |
| 267 if (Platform.isWindows) return; | 267 if (Platform.isWindows) return; |
| 268 testFile = '/proj/completion.dart'; | 268 testFile = '/proj/completion.dart'; |
| 269 addSource('/proj/other.dart', 'library other;'); | 269 addSource('/proj/other.dart', 'library other;'); |
| 270 addSource('/proj/foo/bar.dart', 'library bar;'); | 270 addSource('/proj/foo/bar.dart', 'library bar;'); |
| 271 addSource('/blat.dart', 'library blat;'); | 271 addSource('/blat.dart', 'library blat;'); |
| 272 addTestSource('library x; part "../^" import'); | 272 addTestSource('library x; part "../^" import'); |
| 273 computeFast(); | 273 computeFast(); |
| 274 expect(request.replacementOffset, completionOffset - 3); | 274 expect(request.replacementOffset, completionOffset - 3); |
| 275 expect(request.replacementLength, 3); | 275 expect(request.replacementLength, 3); |
| 276 assertNotSuggested('completion.dart'); | 276 assertNotSuggested('completion.dart'); |
| 277 assertNotSuggested('other.dart'); | 277 assertNotSuggested('other.dart'); |
| 278 assertNotSuggested('foo'); | 278 assertNotSuggested('foo'); |
| 279 assertNotSuggested('foo${separator}'); | 279 assertNotSuggested('foo/'); |
| 280 assertNotSuggested('foo${separator}bar.dart'); | 280 assertNotSuggested('foo/bar.dart'); |
| 281 assertSuggest('..${separator}blat.dart', | 281 assertSuggest('../blat.dart', csKind: CompletionSuggestionKind.IMPORT); |
| 282 csKind: CompletionSuggestionKind.IMPORT); | |
| 283 } | 282 } |
| 284 } | 283 } |
| OLD | NEW |