Chromium Code Reviews| 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.src.context.mock_sdk; | 5 library analyzer.test.src.context.mock_sdk; |
| 6 | 6 |
| 7 import 'package:analyzer/file_system/file_system.dart' as resource; | 7 import 'package:analyzer/file_system/file_system.dart' as resource; |
| 8 import 'package:analyzer/file_system/memory_file_system.dart' as resource; | 8 import 'package:analyzer/file_system/memory_file_system.dart' as resource; |
| 9 import 'package:analyzer/src/context/cache.dart'; | 9 import 'package:analyzer/src/context/cache.dart'; |
| 10 import 'package:analyzer/src/context/context.dart'; | 10 import 'package:analyzer/src/context/context.dart'; |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 344 | 344 |
| 345 @override | 345 @override |
| 346 final List<SdkLibrary> sdkLibraries; | 346 final List<SdkLibrary> sdkLibraries; |
| 347 | 347 |
| 348 /** | 348 /** |
| 349 * The cached linked bundle of the SDK. | 349 * The cached linked bundle of the SDK. |
| 350 */ | 350 */ |
| 351 PackageBundle _bundle; | 351 PackageBundle _bundle; |
| 352 | 352 |
| 353 MockSdk( | 353 MockSdk( |
| 354 {bool dartAsync: true, resource.MemoryResourceProvider resourceProvider}) | 354 {bool buildSummaries: true, |
| 355 bool dartAsync: true, | |
| 356 resource.MemoryResourceProvider resourceProvider}) | |
| 355 : provider = resourceProvider ?? new resource.MemoryResourceProvider(), | 357 : provider = resourceProvider ?? new resource.MemoryResourceProvider(), |
| 356 sdkLibraries = dartAsync ? _LIBRARIES : [_LIB_CORE], | 358 sdkLibraries = dartAsync ? _LIBRARIES : [_LIB_CORE], |
| 357 uriMap = dartAsync ? FULL_URI_MAP : NO_ASYNC_URI_MAP { | 359 uriMap = dartAsync ? FULL_URI_MAP : NO_ASYNC_URI_MAP { |
| 358 for (_MockSdkLibrary library in sdkLibraries) { | 360 for (_MockSdkLibrary library in sdkLibraries) { |
| 359 provider.newFile(provider.convertPath(library.path), library.content); | 361 provider.newFile(provider.convertPath(library.path), library.content); |
| 360 library.parts.forEach((String path, String content) { | 362 library.parts.forEach((String path, String content) { |
| 361 provider.newFile(provider.convertPath(path), content); | 363 provider.newFile(provider.convertPath(path), content); |
| 362 }); | 364 }); |
| 363 } | 365 } |
| 364 provider.newFile( | 366 provider.newFile( |
| 365 provider.convertPath( | 367 provider.convertPath( |
| 366 '$sdkRoot/lib/_internal/sdk_library_metadata/lib/libraries.dart'), | 368 '$sdkRoot/lib/_internal/sdk_library_metadata/lib/libraries.dart'), |
| 367 librariesContent); | 369 librariesContent); |
| 370 if (buildSummaries) { | |
| 371 List<int> bytes = _computeLinkedBundleBytes(); | |
| 372 provider.newFileWithBytes( | |
| 373 provider.convertPath('/lib/_internal/spec.sum'), bytes); | |
| 374 provider.newFileWithBytes( | |
| 375 provider.convertPath('/lib/_internal/strong.sum'), bytes); | |
| 376 } | |
| 368 } | 377 } |
| 369 | 378 |
| 370 @override | 379 @override |
| 371 AnalysisContextImpl get context { | 380 AnalysisContextImpl get context { |
| 372 if (_analysisContext == null) { | 381 if (_analysisContext == null) { |
| 373 _analysisContext = new _SdkAnalysisContext(this); | 382 _analysisContext = new _SdkAnalysisContext(this); |
| 374 SourceFactory factory = new SourceFactory([new DartUriResolver(this)]); | 383 SourceFactory factory = new SourceFactory([new DartUriResolver(this)]); |
| 375 _analysisContext.sourceFactory = factory; | 384 _analysisContext.sourceFactory = factory; |
| 376 } | 385 } |
| 377 return _analysisContext; | 386 return _analysisContext; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 415 return null; | 424 return null; |
| 416 } | 425 } |
| 417 } | 426 } |
| 418 } | 427 } |
| 419 return null; | 428 return null; |
| 420 } | 429 } |
| 421 | 430 |
| 422 @override | 431 @override |
| 423 PackageBundle getLinkedBundle() { | 432 PackageBundle getLinkedBundle() { |
| 424 if (_bundle == null) { | 433 if (_bundle == null) { |
| 425 List<Source> librarySources = sdkLibraries | 434 _bundle = new PackageBundle.fromBuffer(_computeLinkedBundleBytes()); |
| 426 .map((SdkLibrary library) => mapDartUri(library.shortName)) | |
| 427 .toList(); | |
| 428 List<int> bytes = new SummaryBuilder( | |
| 429 librarySources, context, context.analysisOptions.strongMode) | |
| 430 .build(); | |
| 431 _bundle = new PackageBundle.fromBuffer(bytes); | |
| 432 } | 435 } |
| 433 return _bundle; | 436 return _bundle; |
| 434 } | 437 } |
| 435 | 438 |
| 436 @override | 439 @override |
| 437 SdkLibrary getSdkLibrary(String dartUri) { | 440 SdkLibrary getSdkLibrary(String dartUri) { |
| 438 // getSdkLibrary() is only used to determine whether a library is internal | 441 // getSdkLibrary() is only used to determine whether a library is internal |
| 439 // to the SDK. The mock SDK doesn't have any internals, so it's safe to | 442 // to the SDK. The mock SDK doesn't have any internals, so it's safe to |
| 440 // return null. | 443 // return null. |
| 441 return null; | 444 return null; |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 460 */ | 463 */ |
| 461 void updateUriFile(String uri, String updateContent(String content)) { | 464 void updateUriFile(String uri, String updateContent(String content)) { |
| 462 assert(_analysisContext == null); | 465 assert(_analysisContext == null); |
| 463 String path = FULL_URI_MAP[uri]; | 466 String path = FULL_URI_MAP[uri]; |
| 464 assert(path != null); | 467 assert(path != null); |
| 465 path = provider.convertPath(path); | 468 path = provider.convertPath(path); |
| 466 String content = provider.getFile(path).readAsStringSync(); | 469 String content = provider.getFile(path).readAsStringSync(); |
| 467 String newContent = updateContent(content); | 470 String newContent = updateContent(content); |
| 468 provider.updateFile(path, newContent); | 471 provider.updateFile(path, newContent); |
| 469 } | 472 } |
| 473 | |
| 474 /** | |
| 475 * Compute the bytes in the linked bundle associated with this SDK. | |
|
scheglov
2016/12/02 01:15:52
"in the" -> "of the"?
Brian Wilkerson
2016/12/02 15:32:04
Done
| |
| 476 */ | |
| 477 List<int> _computeLinkedBundleBytes() { | |
| 478 List<Source> librarySources = sdkLibraries | |
| 479 .map((SdkLibrary library) => mapDartUri(library.shortName)) | |
| 480 .toList(); | |
| 481 return new SummaryBuilder( | |
| 482 librarySources, context, context.analysisOptions.strongMode) | |
| 483 .build(); | |
| 484 } | |
| 470 } | 485 } |
| 471 | 486 |
| 472 class _MockSdkLibrary implements SdkLibrary { | 487 class _MockSdkLibrary implements SdkLibrary { |
| 473 final String shortName; | 488 final String shortName; |
| 474 final String path; | 489 final String path; |
| 475 final String content; | 490 final String content; |
| 476 final Map<String, String> parts; | 491 final Map<String, String> parts; |
| 477 | 492 |
| 478 const _MockSdkLibrary(this.shortName, this.path, this.content, | 493 const _MockSdkLibrary(this.shortName, this.path, this.content, |
| 479 [this.parts = const <String, String>{}]); | 494 [this.parts = const <String, String>{}]); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 513 | 528 |
| 514 @override | 529 @override |
| 515 AnalysisCache createCacheFromSourceFactory(SourceFactory factory) { | 530 AnalysisCache createCacheFromSourceFactory(SourceFactory factory) { |
| 516 if (factory == null) { | 531 if (factory == null) { |
| 517 return super.createCacheFromSourceFactory(factory); | 532 return super.createCacheFromSourceFactory(factory); |
| 518 } | 533 } |
| 519 return new AnalysisCache( | 534 return new AnalysisCache( |
| 520 <CachePartition>[AnalysisEngine.instance.partitionManager.forSdk(sdk)]); | 535 <CachePartition>[AnalysisEngine.instance.partitionManager.forSdk(sdk)]); |
| 521 } | 536 } |
| 522 } | 537 } |
| OLD | NEW |