Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1050)

Unified Diff: pkg/analyzer_cli/test/driver_test.dart

Issue 2968303002: Additional tests for build mode. (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer_cli/test/driver_test.dart
diff --git a/pkg/analyzer_cli/test/driver_test.dart b/pkg/analyzer_cli/test/driver_test.dart
index 1a49153a5f68962f600805bc3ad14db3bed7c87f..ceac0aad30967ae4632eb65f0ed301b946ebb092 100644
--- a/pkg/analyzer_cli/test/driver_test.dart
+++ b/pkg/analyzer_cli/test/driver_test.dart
@@ -222,9 +222,10 @@ void _test_buildMode() {
void createTests(String designator, String optionsFileName) {
group('build-mode - $designator', () {
// Shared driver command.
- Future<Null> doDrive(String filePath,
- {List<String> additionalArgs: const []}) async {
- await drive('file:///test_file.dart|$filePath',
+ Future<Null> doDrive(String path,
+ {String uri, List<String> additionalArgs: const []}) async {
+ uri ??= 'file:///test_file.dart';
+ await drive('$uri|$path',
args: [
'--dart-sdk',
findSdkDirForSummaries(),
@@ -263,6 +264,141 @@ void _test_buildMode() {
expect(exitCode, 0);
});
+ test('Consume summaries', () async {
+ await withTempDirAsync((tempDir) async {
+ var aDart = path.join(tempDir, 'a.dart');
+ var bDart = path.join(tempDir, 'b.dart');
+ var cDart = path.join(tempDir, 'c.dart');
+
+ var aUri = 'package:aaa/a.dart';
+ var bUri = 'package:bbb/b.dart';
+ var cUri = 'package:ccc/c.dart';
+
+ var aSum = path.join(tempDir, 'a.sum');
+ var bSum = path.join(tempDir, 'b.sum');
+ var cSum = path.join(tempDir, 'c.sum');
+
+ new File(aDart).writeAsStringSync('class A {}');
+ new File(bDart).writeAsStringSync('''
+export 'package:aaa/a.dart';
+class B {}
+''');
+ new File(cDart).writeAsStringSync('''
+import 'package:bbb/b.dart';
+var a = new A();
+var b = new B();
+''');
+
+ // Analyze package:aaa/a.dart and compute summary.
+ {
+ await doDrive(aDart,
+ uri: aUri, additionalArgs: ['--build-summary-output=$aSum']);
+ expect(exitCode, 0);
+ var bytes = new File(aSum).readAsBytesSync();
+ var bundle = new PackageBundle.fromBuffer(bytes);
+ expect(bundle.unlinkedUnitUris, equals([aUri]));
+ expect(bundle.linkedLibraryUris, equals([aUri]));
+ }
+
+ // Analyze package:bbb/b.dart and compute summary.
+ {
+ await doDrive(bDart, uri: bUri, additionalArgs: [
+ '--build-summary-input=$aSum',
+ '--build-summary-output=$bSum'
+ ]);
+ expect(exitCode, 0);
+ var bytes = new File(bSum).readAsBytesSync();
+ var bundle = new PackageBundle.fromBuffer(bytes);
+ expect(bundle.unlinkedUnitUris, equals([bUri]));
+ expect(bundle.linkedLibraryUris, equals([bUri]));
+ }
+
+ // Analyze package:ccc/c.dart and compute summary.
+ {
+ await doDrive(cDart, uri: cUri, additionalArgs: [
+ '--build-summary-input=$aSum,$bSum',
+ '--build-summary-output=$cSum'
+ ]);
+ expect(exitCode, 0);
+ var bytes = new File(cSum).readAsBytesSync();
+ var bundle = new PackageBundle.fromBuffer(bytes);
+ expect(bundle.unlinkedUnitUris, equals([cUri]));
+ expect(bundle.linkedLibraryUris, equals([cUri]));
+ }
+ });
+ });
+
+ test('Error - unlinked summary as linked', () async {
+ await withTempDirAsync((tempDir) async {
+ var aDart = path.join(tempDir, 'a.dart');
+ var bDart = path.join(tempDir, 'b.dart');
+
+ var aUri = 'package:aaa/a.dart';
+ var bUri = 'package:bbb/b.dart';
+
+ var aSum = path.join(tempDir, 'a.sum');
+ var bSum = path.join(tempDir, 'b.sum');
+
+ new File(aDart).writeAsStringSync('class A {}');
+
+ // Build unlinked a.sum
+ await doDrive(aDart, uri: aUri, additionalArgs: [
+ '--build-summary-only',
+ '--build-summary-only-unlinked',
+ '--build-summary-output=$aSum'
+ ]);
+ expect(new File(aSum).existsSync(), isTrue);
+
+ // Try to consume unlinked a.sum as linked.
+ try {
+ await doDrive(bDart, uri: bUri, additionalArgs: [
+ '--build-summary-input=$aSum',
+ '--build-summary-output=$bSum'
+ ]);
+ fail('ArgumentError expected.');
+ } on ArgumentError catch (e) {
+ expect(e.message,
+ contains('Got an unlinked summary for --build-summary-input'));
+ }
+ });
+ });
+
+ test('Error - linked summary as unlinked', () async {
+ await withTempDirAsync((tempDir) async {
+ var aDart = path.join(tempDir, 'a.dart');
+ var bDart = path.join(tempDir, 'b.dart');
+
+ var aUri = 'package:aaa/a.dart';
+ var bUri = 'package:bbb/b.dart';
+
+ var aSum = path.join(tempDir, 'a.sum');
+ var bSum = path.join(tempDir, 'b.sum');
+
+ new File(aDart).writeAsStringSync('class A {}');
+
+ // Build linked a.sum
+ await doDrive(aDart, uri: aUri, additionalArgs: [
+ '--build-summary-only',
+ '--build-summary-output=$aSum'
+ ]);
+ expect(new File(aSum).existsSync(), isTrue);
+
+ // Try to consume linked a.sum as unlinked.
+ try {
+ await doDrive(bDart, uri: bUri, additionalArgs: [
+ '--build-summary-unlinked-input=$aSum',
+ '--build-summary-output=$bSum'
+ ]);
+ fail('ArgumentError expected.');
+ } on ArgumentError catch (e) {
+ expect(
+ e.message,
+ contains(
+ 'Got a linked summary for --build-summary-input-unlinked'));
+ }
+ });
+ });
+
test('Linked summary', () async {
await withTempDirAsync((tempDir) async {
var outputPath = path.join(tempDir, 'test_file.dart.sum');
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698