| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 import 'package:analyzer/dart/ast/ast.dart'; | 5 import 'package:analyzer/dart/ast/ast.dart'; |
| 6 import 'package:analyzer/dart/ast/token.dart'; | 6 import 'package:analyzer/dart/ast/token.dart'; |
| 7 import 'package:analyzer/dart/element/element.dart'; | 7 import 'package:analyzer/dart/element/element.dart'; |
| 8 import 'package:analyzer/error/listener.dart'; | 8 import 'package:analyzer/error/listener.dart'; |
| 9 import 'package:analyzer/file_system/file_system.dart'; | 9 import 'package:analyzer/file_system/file_system.dart'; |
| 10 import 'package:analyzer/src/context/cache.dart'; | 10 import 'package:analyzer/src/context/cache.dart'; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 | 26 |
| 27 import '../context/abstract_context.dart'; | 27 import '../context/abstract_context.dart'; |
| 28 | 28 |
| 29 main() { | 29 main() { |
| 30 defineReflectiveSuite(() { | 30 defineReflectiveSuite(() { |
| 31 defineReflectiveTests(BazelResultProviderTest); | 31 defineReflectiveTests(BazelResultProviderTest); |
| 32 defineReflectiveTests(SummaryProviderTest); | 32 defineReflectiveTests(SummaryProviderTest); |
| 33 }); | 33 }); |
| 34 } | 34 } |
| 35 | 35 |
| 36 const OUT_ROOT = '$SRC_ROOT/bazel-bin'; | |
| 37 const SRC_ROOT = '/company/src/user/project/root'; | |
| 38 | |
| 39 @reflectiveTest | 36 @reflectiveTest |
| 40 class BazelResultProviderTest extends _BaseTest { | 37 class BazelResultProviderTest extends _BaseTest { |
| 41 BazelResultProvider provider; | 38 BazelResultProvider provider; |
| 42 | 39 |
| 43 @override | 40 @override |
| 44 void setUp() { | 41 void setUp() { |
| 45 super.setUp(); | 42 super.setUp(); |
| 46 provider = new BazelResultProvider(new SummaryProvider( | 43 provider = new BazelResultProvider(new SummaryProvider( |
| 47 resourceProvider, | 44 resourceProvider, |
| 48 '_.temp', | 45 '_.temp', |
| 49 _getOutputFolder, | 46 _getOutputFolder, |
| 50 resourceProvider.getFolder('/tmp/dart/bazel/linked'), | 47 resourceProvider |
| 48 .getFolder(resourceProvider.convertPath('/tmp/dart/bazel/linked')), |
| 51 context)); | 49 context)); |
| 52 } | 50 } |
| 53 | 51 |
| 54 test_failure_inconsistent_directDependency() { | 52 test_failure_inconsistent_directDependency() { |
| 55 _setComponentFile('aaa', 'a.dart', 'class A {}'); | 53 _setComponentFile('aaa', 'a.dart', 'class A {}'); |
| 56 _setComponentFile( | 54 _setComponentFile( |
| 57 'bbb', | 55 'bbb', |
| 58 'b.dart', | 56 'b.dart', |
| 59 r''' | 57 r''' |
| 60 import 'package:components.aaa/a.dart'; | 58 import 'package:components.aaa/a.dart'; |
| (...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 446 context.declaredVariables.define('dart.library.html', 'true'); | 444 context.declaredVariables.define('dart.library.html', 'true'); |
| 447 _createManager(allowLinking: true); | 445 _createManager(allowLinking: true); |
| 448 List<Package> packages = manager.getLinkedPackages(source); | 446 List<Package> packages = manager.getLinkedPackages(source); |
| 449 expect(packages, hasLength(1)); | 447 expect(packages, hasLength(1)); |
| 450 _assertDependencyInUser(packages.single.linked, 'foo_html.dart'); | 448 _assertDependencyInUser(packages.single.linked, 'foo_html.dart'); |
| 451 } | 449 } |
| 452 } | 450 } |
| 453 } | 451 } |
| 454 | 452 |
| 455 class _BaseTest extends AbstractContextTest { | 453 class _BaseTest extends AbstractContextTest { |
| 454 String sourceRoot; |
| 455 String outRoot; |
| 456 |
| 456 @override | 457 @override |
| 457 void setUp() { | 458 void setUp() { |
| 458 super.setUp(); | 459 super.setUp(); |
| 459 // Include a 'package' URI resolver. | 460 // Include a 'package' URI resolver. |
| 461 sourceRoot = resourceProvider.convertPath('/company/src/user/project/root'); |
| 462 outRoot = resourceProvider.pathContext.join(sourceRoot, 'bazel-bin'); |
| 460 sourceFactory = new SourceFactory(<UriResolver>[ | 463 sourceFactory = new SourceFactory(<UriResolver>[ |
| 461 sdkResolver, | 464 sdkResolver, |
| 462 resourceResolver, | 465 resourceResolver, |
| 463 new _TestPackageResolver(resourceProvider) | 466 new _TestPackageResolver(resourceProvider, sourceRoot) |
| 464 ], null, resourceProvider); | 467 ], null, resourceProvider); |
| 465 context.sourceFactory = sourceFactory; | 468 context.sourceFactory = sourceFactory; |
| 466 } | 469 } |
| 467 | 470 |
| 468 Folder _getOutputFolder(Uri absoluteUri) { | 471 Folder _getOutputFolder(Uri absoluteUri) { |
| 472 var pathContext = resourceProvider.pathContext; |
| 469 if (absoluteUri.scheme == 'package') { | 473 if (absoluteUri.scheme == 'package') { |
| 470 List<String> segments = absoluteUri.pathSegments; | 474 List<String> segments = absoluteUri.pathSegments; |
| 471 if (segments.isNotEmpty) { | 475 if (segments.isNotEmpty) { |
| 472 String packageName = segments.first; | 476 String packageName = segments.first; |
| 473 String path = OUT_ROOT + '/' + packageName.replaceAll('.', '/'); | 477 String path = pathContext.join( |
| 478 outRoot, packageName.replaceAll('.', pathContext.separator)); |
| 474 return resourceProvider.getFolder(path); | 479 return resourceProvider.getFolder(path); |
| 475 } | 480 } |
| 476 } | 481 } |
| 477 return null; | 482 return null; |
| 478 } | 483 } |
| 479 | 484 |
| 480 Source _resolveUri(String uri) { | 485 Source _resolveUri(String uri) { |
| 481 return context.sourceFactory.resolveUri(null, uri); | 486 return context.sourceFactory.resolveUri(null, uri); |
| 482 } | 487 } |
| 483 | 488 |
| 484 File _setComponentFile(String componentName, String fileName, String code) { | 489 File _setComponentFile(String componentName, String fileName, String code) { |
| 485 String path = '$SRC_ROOT/components/$componentName/lib/$fileName'; | 490 String path = resourceProvider.pathContext |
| 491 .join(sourceRoot, 'components', componentName, 'lib', fileName); |
| 486 return resourceProvider.newFile(path, code); | 492 return resourceProvider.newFile(path, code); |
| 487 } | 493 } |
| 488 | 494 |
| 489 void _writeUnlinkedBundle(String packageName) { | 495 void _writeUnlinkedBundle(String packageName) { |
| 490 String packagePath = packageName.replaceAll('.', '/'); | 496 var pathContext = resourceProvider.pathContext; |
| 497 String packagePath = packageName.replaceAll('.', pathContext.separator); |
| 491 PackageBundleBuilder unlinkedBundle = _computeUnlinkedBundle( | 498 PackageBundleBuilder unlinkedBundle = _computeUnlinkedBundle( |
| 492 resourceProvider, | 499 resourceProvider, |
| 493 packageName, | 500 packageName, |
| 494 resourceProvider.getFolder(SRC_ROOT + '/' + packagePath + '/lib'), | 501 resourceProvider |
| 502 .getFolder(pathContext.join(sourceRoot, packagePath, 'lib')), |
| 495 true); | 503 true); |
| 496 String shortName = packageName.substring(packageName.lastIndexOf('.') + 1); | 504 String shortName = packageName.substring(packageName.lastIndexOf('.') + 1); |
| 497 resourceProvider.newFileWithBytes( | 505 resourceProvider.newFileWithBytes( |
| 498 '$OUT_ROOT/$packagePath/$shortName.full.ds', unlinkedBundle.toBuffer()); | 506 pathContext.join(outRoot, packagePath, shortName) + '.full.ds', |
| 507 unlinkedBundle.toBuffer()); |
| 499 } | 508 } |
| 500 | 509 |
| 501 static PackageBundleBuilder _computeUnlinkedBundle(ResourceProvider provider, | 510 static PackageBundleBuilder _computeUnlinkedBundle(ResourceProvider provider, |
| 502 String packageName, Folder libFolder, bool strong) { | 511 String packageName, Folder libFolder, bool strong) { |
| 503 var pathContext = provider.pathContext; | 512 var pathContext = provider.pathContext; |
| 504 String libPath = libFolder.path + pathContext.separator; | 513 String libPath = libFolder.path + pathContext.separator; |
| 505 PackageBundleAssembler assembler = new PackageBundleAssembler(); | 514 PackageBundleAssembler assembler = new PackageBundleAssembler(); |
| 506 | 515 |
| 507 /** | 516 /** |
| 508 * Return the `package` [Uri] for the given [path] in the `lib` folder | 517 * Return the `package` [Uri] for the given [path] in the `lib` folder |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 Parser parser = new Parser(source, errorListener); | 573 Parser parser = new Parser(source, errorListener); |
| 565 parser.parseGenericMethodComments = strong; | 574 parser.parseGenericMethodComments = strong; |
| 566 CompilationUnit unit = parser.parseCompilationUnit(token); | 575 CompilationUnit unit = parser.parseCompilationUnit(token); |
| 567 unit.lineInfo = lineInfo; | 576 unit.lineInfo = lineInfo; |
| 568 return unit; | 577 return unit; |
| 569 } | 578 } |
| 570 } | 579 } |
| 571 | 580 |
| 572 class _TestPackageResolver implements UriResolver { | 581 class _TestPackageResolver implements UriResolver { |
| 573 final ResourceProvider resourceProvider; | 582 final ResourceProvider resourceProvider; |
| 583 final String sourceRoot; |
| 574 | 584 |
| 575 _TestPackageResolver(this.resourceProvider); | 585 _TestPackageResolver(this.resourceProvider, this.sourceRoot); |
| 576 | 586 |
| 577 @override | 587 @override |
| 578 Source resolveAbsolute(Uri uri, [Uri actualUri]) { | 588 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
| 579 if (uri.scheme == 'package') { | 589 if (uri.scheme == 'package') { |
| 580 List<String> segments = uri.pathSegments; | 590 List<String> segments = uri.pathSegments; |
| 581 if (segments.isNotEmpty) { | 591 if (segments.isNotEmpty) { |
| 582 pathos.Context pathContext = resourceProvider.pathContext; | 592 pathos.Context pathContext = resourceProvider.pathContext; |
| 583 String packageName = segments.first; | 593 String packageName = segments.first; |
| 584 String folderPath = pathContext.join( | 594 String folderPath = pathContext.join( |
| 585 SRC_ROOT, packageName.replaceAll('.', pathContext.separator)); | 595 sourceRoot, packageName.replaceAll('.', pathContext.separator)); |
| 586 String path = pathContext.join( | 596 String path = pathContext.join( |
| 587 folderPath, 'lib', pathContext.joinAll(segments.skip(1))); | 597 folderPath, 'lib', pathContext.joinAll(segments.skip(1))); |
| 588 return resourceProvider.getFile(path).createSource(uri); | 598 return resourceProvider.getFile(path).createSource(uri); |
| 589 } | 599 } |
| 590 } | 600 } |
| 591 return null; | 601 return null; |
| 592 } | 602 } |
| 593 | 603 |
| 594 @override | 604 @override |
| 595 Uri restoreAbsolute(Source source) { | 605 Uri restoreAbsolute(Source source) { |
| 596 throw new UnimplementedError(); | 606 throw new UnimplementedError(); |
| 597 } | 607 } |
| 598 } | 608 } |
| OLD | NEW |