| 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.context.directory.manager; | 5 library test.context.directory.manager; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/context_manager.dart'; | 9 import 'package:analysis_server/src/context_manager.dart'; |
| 10 import 'package:analyzer/file_system/file_system.dart'; | 10 import 'package:analyzer/file_system/file_system.dart'; |
| 11 import 'package:analyzer/file_system/memory_file_system.dart'; | 11 import 'package:analyzer/file_system/memory_file_system.dart'; |
| 12 import 'package:analyzer/instrumentation/instrumentation.dart'; | 12 import 'package:analyzer/instrumentation/instrumentation.dart'; |
| 13 import 'package:analyzer/source/embedder.dart'; | 13 import 'package:analyzer/source/embedder.dart'; |
| 14 import 'package:analyzer/src/generated/engine.dart'; | 14 import 'package:analyzer/src/generated/engine.dart'; |
| 15 import 'package:analyzer/src/generated/error.dart'; | 15 import 'package:analyzer/src/generated/error.dart'; |
| 16 import 'package:analyzer/src/generated/source.dart'; | 16 import 'package:analyzer/src/generated/source.dart'; |
| 17 import 'package:analyzer/src/generated/source_io.dart'; | 17 import 'package:analyzer/src/generated/source_io.dart'; |
| 18 import 'package:analyzer/src/services/lint.dart'; |
| 19 import 'package:linter/src/plugin/linter_plugin.dart'; |
| 20 import 'package:linter/src/rules/avoid_as.dart'; |
| 18 import 'package:package_config/packages.dart'; | 21 import 'package:package_config/packages.dart'; |
| 19 import 'package:path/path.dart'; | 22 import 'package:path/path.dart'; |
| 23 import 'package:plugin/plugin.dart'; |
| 20 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 24 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 21 import 'package:unittest/unittest.dart'; | 25 import 'package:unittest/unittest.dart'; |
| 22 | 26 |
| 23 import 'mocks.dart'; | 27 import 'mocks.dart'; |
| 24 import 'utils.dart'; | 28 import 'utils.dart'; |
| 25 | 29 |
| 26 main() { | 30 main() { |
| 27 initializeTestEnvironment(); | 31 initializeTestEnvironment(); |
| 28 defineReflectiveTests(AbstractContextManagerTest); | 32 defineReflectiveTests(AbstractContextManagerTest); |
| 29 } | 33 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 60 TestContextManagerCallbacks callbacks; | 64 TestContextManagerCallbacks callbacks; |
| 61 | 65 |
| 62 MemoryResourceProvider resourceProvider; | 66 MemoryResourceProvider resourceProvider; |
| 63 | 67 |
| 64 MockPackageMapProvider packageMapProvider; | 68 MockPackageMapProvider packageMapProvider; |
| 65 | 69 |
| 66 UriResolver packageResolver = null; | 70 UriResolver packageResolver = null; |
| 67 | 71 |
| 68 String projPath = '/my/proj'; | 72 String projPath = '/my/proj'; |
| 69 | 73 |
| 74 AnalysisError missing_return = |
| 75 new AnalysisError(new TestSource(), 0, 1, HintCode.MISSING_RETURN, [ |
| 76 ['x'] |
| 77 ]); |
| 78 |
| 79 AnalysisError invalid_assignment_error = |
| 80 new AnalysisError(new TestSource(), 0, 1, HintCode.INVALID_ASSIGNMENT, [ |
| 81 ['x'], |
| 82 ['y'] |
| 83 ]); |
| 84 |
| 85 AnalysisError unused_local_variable = new AnalysisError( |
| 86 new TestSource(), 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [ |
| 87 ['x'] |
| 88 ]); |
| 89 |
| 90 List<ErrorFilter> get errorFilters => |
| 91 callbacks.currentContext.getConfigurationData(CONFIGURED_ERROR_FILTERS); |
| 92 |
| 93 List<Linter> get lints => getLints(callbacks.currentContext); |
| 94 |
| 95 AnalysisOptions get options => callbacks.currentContext.analysisOptions; |
| 96 |
| 97 void deleteFile(List<String> pathComponents) { |
| 98 String filePath = posix.joinAll(pathComponents); |
| 99 resourceProvider.deleteFile(filePath); |
| 100 } |
| 101 |
| 70 String newFile(List<String> pathComponents, [String content = '']) { | 102 String newFile(List<String> pathComponents, [String content = '']) { |
| 71 String filePath = posix.joinAll(pathComponents); | 103 String filePath = posix.joinAll(pathComponents); |
| 72 resourceProvider.newFile(filePath, content); | 104 resourceProvider.newFile(filePath, content); |
| 73 return filePath; | 105 return filePath; |
| 74 } | 106 } |
| 75 | 107 |
| 76 String newFolder(List<String> pathComponents) { | 108 String newFolder(List<String> pathComponents) { |
| 77 String folderPath = posix.joinAll(pathComponents); | 109 String folderPath = posix.joinAll(pathComponents); |
| 78 resourceProvider.newFolder(folderPath); | 110 resourceProvider.newFolder(folderPath); |
| 79 return folderPath; | 111 return folderPath; |
| 80 } | 112 } |
| 81 | 113 |
| 82 UriResolver providePackageResolver(Folder folder) { | 114 UriResolver providePackageResolver(Folder folder) { |
| 83 return packageResolver; | 115 return packageResolver; |
| 84 } | 116 } |
| 85 | 117 |
| 86 void setUp() { | 118 void setUp() { |
| 119 List<Plugin> plugins = <Plugin>[]; |
| 120 plugins.add(linterPlugin); |
| 121 |
| 122 // Defer to the extension manager in AE for plugin registration. |
| 123 AnalysisEngine.instance.userDefinedPlugins = plugins; |
| 124 // Force registration. |
| 125 AnalysisEngine.instance.taskManager; |
| 126 |
| 87 resourceProvider = new MemoryResourceProvider(); | 127 resourceProvider = new MemoryResourceProvider(); |
| 88 packageMapProvider = new MockPackageMapProvider(); | 128 packageMapProvider = new MockPackageMapProvider(); |
| 89 manager = new ContextManagerImpl(resourceProvider, providePackageResolver, | 129 manager = new ContextManagerImpl(resourceProvider, providePackageResolver, |
| 90 packageMapProvider, InstrumentationService.NULL_SERVICE); | 130 packageMapProvider, InstrumentationService.NULL_SERVICE); |
| 91 callbacks = new TestContextManagerCallbacks(resourceProvider); | 131 callbacks = new TestContextManagerCallbacks(resourceProvider); |
| 92 manager.callbacks = callbacks; | 132 manager.callbacks = callbacks; |
| 93 resourceProvider.newFolder(projPath); | 133 resourceProvider.newFolder(projPath); |
| 94 } | 134 } |
| 95 | 135 |
| 136 test_analysis_options_file_delete() async { |
| 137 // Setup .analysis_options |
| 138 newFile( |
| 139 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], |
| 140 r''' |
| 141 embedder_libs: |
| 142 "dart:foobar": "../sdk_ext/entry.dart" |
| 143 analyzer: |
| 144 language: |
| 145 enableGenericMethods: true |
| 146 errors: |
| 147 unused_local_variable: false |
| 148 linter: |
| 149 rules: |
| 150 - camel_case_types |
| 151 '''); |
| 152 |
| 153 // Setup context. |
| 154 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 155 await pumpEventQueue(); |
| 156 |
| 157 // Verify options were set. |
| 158 expect(errorFilters, hasLength(1)); |
| 159 expect(lints, hasLength(1)); |
| 160 expect(options.enableGenericMethods, isTrue); |
| 161 |
| 162 // Remove options. |
| 163 deleteFile([projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE]); |
| 164 await pumpEventQueue(); |
| 165 |
| 166 // Verify defaults restored. |
| 167 expect(errorFilters, isEmpty); |
| 168 expect(lints, isEmpty); |
| 169 expect(options.enableGenericMethods, isFalse); |
| 170 } |
| 171 |
| 172 test_analysis_options_file_delete_with_embedder() async { |
| 173 // Setup _embedder.yaml. |
| 174 String libPath = newFolder([projPath, LIB_NAME]); |
| 175 newFile( |
| 176 [libPath, '_embedder.yaml'], |
| 177 r''' |
| 178 analyzer: |
| 179 strong-mode: true |
| 180 errors: |
| 181 missing_return: false |
| 182 linter: |
| 183 rules: |
| 184 - avoid_as |
| 185 '''); |
| 186 |
| 187 // Setup .packages file |
| 188 newFile( |
| 189 [projPath, '.packages'], |
| 190 r''' |
| 191 test_pack:lib/'''); |
| 192 |
| 193 // Setup .analysis_options |
| 194 newFile( |
| 195 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], |
| 196 r''' |
| 197 analyzer: |
| 198 language: |
| 199 enableGenericMethods: true |
| 200 errors: |
| 201 unused_local_variable: false |
| 202 linter: |
| 203 rules: |
| 204 - camel_case_types |
| 205 '''); |
| 206 |
| 207 // Setup context. |
| 208 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 209 await pumpEventQueue(); |
| 210 |
| 211 // Verify options were set. |
| 212 expect(options.enableGenericMethods, isTrue); |
| 213 expect(options.strongMode, isTrue); |
| 214 expect(errorFilters, hasLength(2)); |
| 215 expect(lints, hasLength(2)); |
| 216 |
| 217 // Remove options. |
| 218 deleteFile([projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE]); |
| 219 await pumpEventQueue(); |
| 220 |
| 221 // Verify defaults restored. |
| 222 expect(options.enableGenericMethods, isFalse); |
| 223 expect(lints, hasLength(1)); |
| 224 expect(lints.first, new isInstanceOf<AvoidAs>()); |
| 225 expect(errorFilters, hasLength(1)); |
| 226 expect(errorFilters.first(missing_return), isTrue); |
| 227 } |
| 228 |
| 96 test_analysis_options_parse_failure() async { | 229 test_analysis_options_parse_failure() async { |
| 97 // Create files. | 230 // Create files. |
| 98 String libPath = newFolder([projPath, LIB_NAME]); | 231 String libPath = newFolder([projPath, LIB_NAME]); |
| 99 newFile([libPath, 'main.dart']); | 232 newFile([libPath, 'main.dart']); |
| 100 String sdkExtPath = newFolder([projPath, 'sdk_ext']); | 233 String sdkExtPath = newFolder([projPath, 'sdk_ext']); |
| 101 newFile([sdkExtPath, 'entry.dart']); | 234 newFile([sdkExtPath, 'entry.dart']); |
| 102 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); | 235 String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']); |
| 103 newFile([sdkExtSrcPath, 'part.dart']); | 236 newFile([sdkExtSrcPath, 'part.dart']); |
| 104 // Setup analysis options file with ignore list. | 237 // Setup analysis options file with ignore list. |
| 105 newFile( | 238 newFile( |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 // Setup _embedder.yaml. | 280 // Setup _embedder.yaml. |
| 148 newFile( | 281 newFile( |
| 149 [libPath, '_embedder.yaml'], | 282 [libPath, '_embedder.yaml'], |
| 150 r''' | 283 r''' |
| 151 embedder_libs: | 284 embedder_libs: |
| 152 "dart:foobar": "../sdk_ext/entry.dart" | 285 "dart:foobar": "../sdk_ext/entry.dart" |
| 153 analyzer: | 286 analyzer: |
| 154 strong-mode: true | 287 strong-mode: true |
| 155 language: | 288 language: |
| 156 enableSuperMixins: true | 289 enableSuperMixins: true |
| 290 errors: |
| 291 missing_return: false |
| 292 linter: |
| 293 rules: |
| 294 - avoid_as |
| 157 '''); | 295 '''); |
| 158 // Setup .packages file | 296 // Setup .packages file |
| 159 newFile( | 297 newFile( |
| 160 [projPath, '.packages'], | 298 [projPath, '.packages'], |
| 161 r''' | 299 r''' |
| 162 test_pack:lib/'''); | 300 test_pack:lib/'''); |
| 163 | 301 |
| 164 // Setup .analysis_options | 302 // Setup .analysis_options |
| 165 newFile( | 303 newFile( |
| 166 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], | 304 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], |
| 167 r''' | 305 r''' |
| 168 analyzer: | 306 analyzer: |
| 169 exclude: | 307 exclude: |
| 170 - 'test/**' | 308 - 'test/**' |
| 171 language: | 309 language: |
| 172 enableGenericMethods: true | 310 enableGenericMethods: true |
| 173 errors: | 311 errors: |
| 174 unused_local_variable: false | 312 unused_local_variable: false |
| 313 linter: |
| 314 rules: |
| 315 - camel_case_types |
| 175 '''); | 316 '''); |
| 176 | 317 |
| 177 // Setup context. | 318 // Setup context. |
| 178 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 319 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 179 await pumpEventQueue(); | 320 await pumpEventQueue(); |
| 180 | 321 |
| 181 // Confirm that one context was created. | 322 // Confirm that one context was created. |
| 182 var contexts = | 323 var contexts = |
| 183 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath)); | 324 manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath)); |
| 184 expect(contexts, isNotNull); | 325 expect(contexts, isNotNull); |
| 185 expect(contexts, hasLength(1)); | 326 expect(contexts, hasLength(1)); |
| 186 var context = contexts[0]; | 327 var context = contexts[0]; |
| 187 | 328 |
| 188 // Verify options. | 329 // Verify options. |
| 189 // * from `_embedder.yaml`: | 330 // * from `_embedder.yaml`: |
| 190 expect(context.analysisOptions.strongMode, isTrue); | 331 expect(context.analysisOptions.strongMode, isTrue); |
| 191 expect(context.analysisOptions.enableSuperMixins, isTrue); | 332 expect(context.analysisOptions.enableSuperMixins, isTrue); |
| 192 // * from `.analysis_options`: | 333 // * from `.analysis_options`: |
| 193 expect(context.analysisOptions.enableGenericMethods, isTrue); | 334 expect(context.analysisOptions.enableGenericMethods, isTrue); |
| 194 // verify tests are excluded | 335 // * verify tests are excluded |
| 195 expect(callbacks.currentContextFilePaths[projPath].keys, | 336 expect(callbacks.currentContextFilePaths[projPath].keys, |
| 196 ['/my/proj/sdk_ext/entry.dart']); | 337 ['/my/proj/sdk_ext/entry.dart']); |
| 197 | 338 |
| 198 // Verify filter setup. | 339 // Verify filter setup. |
| 199 List<ErrorFilter> filters = | 340 expect(errorFilters, hasLength(2)); |
| 200 callbacks.currentContext.getConfigurationData(CONFIGURED_ERROR_FILTERS); | 341 |
| 201 expect(filters, hasLength(1)); | 342 // * (embedder.) |
| 343 expect(errorFilters.any((f) => f(missing_return)), isTrue); |
| 344 |
| 345 // * (options.) |
| 346 expect(errorFilters.any((f) => f(unused_local_variable)), isTrue); |
| 347 |
| 348 // Verify lints. |
| 349 var lintNames = lints.map((lint) => lint.name); |
| 350 |
| 202 expect( | 351 expect( |
| 203 filters.first(new AnalysisError( | 352 lintNames, |
| 204 new TestSource(), 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [ | 353 unorderedEquals( |
| 205 ['x'] | 354 ['avoid_as' /* embedder */, 'camel_case_types' /* options */])); |
| 206 ])), | |
| 207 isTrue); | |
| 208 | 355 |
| 209 // Sanity check embedder libs. | 356 // Sanity check embedder libs. |
| 210 var source = context.sourceFactory.forUri('dart:foobar'); | 357 var source = context.sourceFactory.forUri('dart:foobar'); |
| 211 expect(source, isNotNull); | 358 expect(source, isNotNull); |
| 212 expect(source.fullName, '/my/proj/sdk_ext/entry.dart'); | 359 expect(source.fullName, '/my/proj/sdk_ext/entry.dart'); |
| 213 } | 360 } |
| 214 | 361 |
| 215 test_embedder_packagespec() async { | 362 test_embedder_packagespec() async { |
| 216 // Create files. | 363 // Create files. |
| 217 String libPath = newFolder([projPath, LIB_NAME]); | 364 String libPath = newFolder([projPath, LIB_NAME]); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], | 408 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], |
| 262 r''' | 409 r''' |
| 263 analyzer: | 410 analyzer: |
| 264 errors: | 411 errors: |
| 265 unused_local_variable: ignore | 412 unused_local_variable: ignore |
| 266 '''); | 413 '''); |
| 267 // Setup context. | 414 // Setup context. |
| 268 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 415 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 269 | 416 |
| 270 // Verify filter setup. | 417 // Verify filter setup. |
| 271 List<ErrorFilter> filters = | 418 expect(errorFilters, isNotNull); |
| 272 callbacks.currentContext.getConfigurationData(CONFIGURED_ERROR_FILTERS); | 419 expect(errorFilters, hasLength(1)); |
| 273 expect(filters, isNotNull); | 420 expect(errorFilters.first(unused_local_variable), isTrue); |
| 274 expect(filters, hasLength(1)); | |
| 275 expect( | |
| 276 filters.first(new AnalysisError( | |
| 277 new TestSource(), 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [ | |
| 278 ['x'] | |
| 279 ])), | |
| 280 isTrue); | |
| 281 } | 421 } |
| 282 | 422 |
| 283 test_error_filter_analysis_option_multiple_filters() async { | 423 test_error_filter_analysis_option_multiple_filters() async { |
| 284 // Create files. | 424 // Create files. |
| 285 newFile( | 425 newFile( |
| 286 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], | 426 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], |
| 287 r''' | 427 r''' |
| 288 analyzer: | 428 analyzer: |
| 289 errors: | 429 errors: |
| 290 invalid_assignment: ignore | 430 invalid_assignment: ignore |
| 291 unused_local_variable: ignore | 431 unused_local_variable: ignore |
| 292 '''); | 432 '''); |
| 293 // Setup context. | 433 // Setup context. |
| 294 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 434 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 295 | 435 |
| 296 // Verify filter setup. | 436 // Verify filter setup. |
| 297 List<ErrorFilter> filters = | 437 expect(errorFilters, isNotNull); |
| 298 callbacks.currentContext.getConfigurationData(CONFIGURED_ERROR_FILTERS); | 438 expect(errorFilters, hasLength(2)); |
| 299 expect(filters, isNotNull); | |
| 300 expect(filters, hasLength(2)); | |
| 301 | 439 |
| 302 var unused_error = new AnalysisError( | 440 expect(errorFilters.any((filter) => filter(unused_local_variable)), isTrue); |
| 303 new TestSource(), 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [ | 441 expect( |
| 304 ['x'] | 442 errorFilters.any((filter) => filter(invalid_assignment_error)), isTrue); |
| 305 ]); | |
| 306 | |
| 307 var invalid_assignment_error = | |
| 308 new AnalysisError(new TestSource(), 0, 1, HintCode.INVALID_ASSIGNMENT, [ | |
| 309 ['x'], | |
| 310 ['y'] | |
| 311 ]); | |
| 312 | |
| 313 expect(filters.any((filter) => filter(unused_error)), isTrue); | |
| 314 expect(filters.any((filter) => filter(invalid_assignment_error)), isTrue); | |
| 315 } | 443 } |
| 316 | 444 |
| 317 test_error_filter_analysis_option_synonyms() async { | 445 test_error_filter_analysis_option_synonyms() async { |
| 318 // Create files. | 446 // Create files. |
| 319 newFile( | 447 newFile( |
| 320 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], | 448 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], |
| 321 r''' | 449 r''' |
| 322 analyzer: | 450 analyzer: |
| 323 errors: | 451 errors: |
| 324 unused_local_variable: ignore | 452 unused_local_variable: ignore |
| 325 ambiguous_import: false | 453 ambiguous_import: false |
| 326 '''); | 454 '''); |
| 327 // Setup context. | 455 // Setup context. |
| 328 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 456 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 329 | 457 |
| 330 // Verify filter setup. | 458 // Verify filter setup. |
| 331 List<ErrorFilter> filters = | 459 expect(errorFilters, isNotNull); |
| 332 callbacks.currentContext.getConfigurationData(CONFIGURED_ERROR_FILTERS); | 460 expect(errorFilters, hasLength(2)); |
| 333 expect(filters, isNotNull); | |
| 334 expect(filters, hasLength(2)); | |
| 335 } | 461 } |
| 336 | 462 |
| 337 test_error_filter_analysis_option_unpsecified() async { | 463 test_error_filter_analysis_option_unpsecified() async { |
| 338 // Create files. | 464 // Create files. |
| 339 newFile( | 465 newFile( |
| 340 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], | 466 [projPath, AnalysisEngine.ANALYSIS_OPTIONS_FILE], |
| 341 r''' | 467 r''' |
| 342 analyzer: | 468 analyzer: |
| 343 # errors: | 469 # errors: |
| 344 # unused_local_variable: ignore | 470 # unused_local_variable: ignore |
| 345 '''); | 471 '''); |
| 346 // Setup context. | 472 // Setup context. |
| 347 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 473 manager.setRoots(<String>[projPath], <String>[], <String, String>{}); |
| 348 | 474 |
| 349 // Verify filter setup. | 475 // Verify filter setup. |
| 350 List<ErrorFilter> filters = | 476 expect(errorFilters, isEmpty); |
| 351 callbacks.currentContext.getConfigurationData(CONFIGURED_ERROR_FILTERS); | |
| 352 expect(filters, isEmpty); | |
| 353 } | 477 } |
| 354 | 478 |
| 355 test_ignoreFilesInPackagesFolder() { | 479 test_ignoreFilesInPackagesFolder() { |
| 356 // create a context with a pubspec.yaml file | 480 // create a context with a pubspec.yaml file |
| 357 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); | 481 String pubspecPath = posix.join(projPath, 'pubspec.yaml'); |
| 358 resourceProvider.newFile(pubspecPath, 'pubspec'); | 482 resourceProvider.newFile(pubspecPath, 'pubspec'); |
| 359 // create a file in the "packages" folder | 483 // create a file in the "packages" folder |
| 360 String filePath1 = posix.join(projPath, 'packages', 'file1.dart'); | 484 String filePath1 = posix.join(projPath, 'packages', 'file1.dart'); |
| 361 resourceProvider.newFile(filePath1, 'contents'); | 485 resourceProvider.newFile(filePath1, 'contents'); |
| 362 // "packages" files are ignored initially | 486 // "packages" files are ignored initially |
| (...skipping 1924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2287 class TestUriResolver extends UriResolver { | 2411 class TestUriResolver extends UriResolver { |
| 2288 Map<Uri, Source> uriMap; | 2412 Map<Uri, Source> uriMap; |
| 2289 | 2413 |
| 2290 TestUriResolver(this.uriMap); | 2414 TestUriResolver(this.uriMap); |
| 2291 | 2415 |
| 2292 @override | 2416 @override |
| 2293 Source resolveAbsolute(Uri uri, [Uri actualUri]) { | 2417 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
| 2294 return uriMap[uri]; | 2418 return uriMap[uri]; |
| 2295 } | 2419 } |
| 2296 } | 2420 } |
| OLD | NEW |