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

Side by Side Diff: pkg/analyzer/test/src/dart/analysis/driver_test.dart

Issue 2829253002: Add support for external summaries bundle in AnalysisDriver. (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
OLDNEW
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 library analyzer.test.driver; 5 library analyzer.test.driver;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert'; 8 import 'dart:convert';
9 9
10 import 'package:analyzer/dart/ast/ast.dart'; 10 import 'package:analyzer/dart/ast/ast.dart';
11 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; 11 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
12 import 'package:analyzer/dart/element/element.dart'; 12 import 'package:analyzer/dart/element/element.dart';
13 import 'package:analyzer/dart/element/type.dart'; 13 import 'package:analyzer/dart/element/type.dart';
14 import 'package:analyzer/error/error.dart'; 14 import 'package:analyzer/error/error.dart';
15 import 'package:analyzer/file_system/file_system.dart'; 15 import 'package:analyzer/file_system/file_system.dart';
16 import 'package:analyzer/file_system/memory_file_system.dart'; 16 import 'package:analyzer/file_system/memory_file_system.dart';
17 import 'package:analyzer/src/dart/analysis/byte_store.dart'; 17 import 'package:analyzer/src/dart/analysis/byte_store.dart';
18 import 'package:analyzer/src/dart/analysis/driver.dart'; 18 import 'package:analyzer/src/dart/analysis/driver.dart';
19 import 'package:analyzer/src/dart/analysis/file_state.dart'; 19 import 'package:analyzer/src/dart/analysis/file_state.dart';
20 import 'package:analyzer/src/dart/analysis/status.dart'; 20 import 'package:analyzer/src/dart/analysis/status.dart';
21 import 'package:analyzer/src/dart/analysis/top_level_declaration.dart'; 21 import 'package:analyzer/src/dart/analysis/top_level_declaration.dart';
22 import 'package:analyzer/src/dart/constant/evaluation.dart'; 22 import 'package:analyzer/src/dart/constant/evaluation.dart';
23 import 'package:analyzer/src/dart/element/element.dart'; 23 import 'package:analyzer/src/dart/element/element.dart';
24 import 'package:analyzer/src/error/codes.dart'; 24 import 'package:analyzer/src/error/codes.dart';
25 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl; 25 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
26 import 'package:analyzer/src/generated/resolver.dart' show ResolverErrorCode; 26 import 'package:analyzer/src/generated/resolver.dart' show ResolverErrorCode;
27 import 'package:analyzer/src/generated/sdk.dart'; 27 import 'package:analyzer/src/generated/sdk.dart';
28 import 'package:analyzer/src/generated/source.dart'; 28 import 'package:analyzer/src/generated/source.dart';
29 import 'package:analyzer/src/summary/idl.dart'; 29 import 'package:analyzer/src/summary/idl.dart';
30 import 'package:analyzer/src/summary/package_bundle_reader.dart';
30 import 'package:convert/convert.dart'; 31 import 'package:convert/convert.dart';
31 import 'package:crypto/crypto.dart'; 32 import 'package:crypto/crypto.dart';
32 import 'package:test/test.dart'; 33 import 'package:test/test.dart';
33 import 'package:test_reflective_loader/test_reflective_loader.dart'; 34 import 'package:test_reflective_loader/test_reflective_loader.dart';
34 import 'package:typed_mock/typed_mock.dart'; 35 import 'package:typed_mock/typed_mock.dart';
35 36
36 import '../../../utils.dart'; 37 import '../../../utils.dart';
37 import '../../context/mock_sdk.dart'; 38 import '../../context/mock_sdk.dart';
38 import 'base.dart'; 39 import 'base.dart';
39 40
(...skipping 941 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 library lib; 982 library lib;
982 part 'foo.dart'; 983 part 'foo.dart';
983 '''); 984 ''');
984 985
985 AnalysisResult result = await driver.getResult(testFile); 986 AnalysisResult result = await driver.getResult(testFile);
986 List<AnalysisError> errors = result.errors; 987 List<AnalysisError> errors = result.errors;
987 expect(errors, hasLength(1)); 988 expect(errors, hasLength(1));
988 expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST); 989 expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST);
989 } 990 }
990 991
992 solo_test_externalSummaries() async {
Brian Wilkerson 2017/04/21 16:19:39 Remove "solo_"
993 var a = _p('/a.dart');
994 var b = _p('/b.dart');
995 provider.newFile(
996 a,
997 r'''
998 class A {}
999 ''');
1000 provider.newFile(
1001 b,
1002 r'''
1003 import 'a.dart';
1004 var a = new A();
1005 ''');
1006
1007 // Prepare the store with a.dart and everything it needs.
1008 SummaryDataStore summaryStore =
1009 createAnalysisDriver().test.getSummaryStore(a);
1010
1011 // There are at least a.dart and dart:core libraries.
1012 String aUri = 'file://$a';
1013 expect(summaryStore.unlinkedMap.keys, contains(aUri));
1014 expect(summaryStore.linkedMap.keys, contains(aUri));
1015 expect(summaryStore.unlinkedMap.keys, contains('dart:core'));
1016 expect(summaryStore.linkedMap.keys, contains('dart:core'));
1017
1018 // Remove a.dart from the file system.
1019 provider.deleteFile(a);
1020
1021 // We don't need a.dart file when we analyze with the summary store.
1022 // Still no analysis errors.
1023 AnalysisDriver driver =
1024 createAnalysisDriver(externalSummaries: summaryStore);
1025 AnalysisResult result = await driver.getResult(b);
1026 expect(result.errors, isEmpty);
1027 }
1028
991 test_generatedFile() async { 1029 test_generatedFile() async {
992 Uri uri = Uri.parse('package:aaa/foo.dart'); 1030 Uri uri = Uri.parse('package:aaa/foo.dart');
993 String templatePath = _p('/aaa/lib/foo.dart'); 1031 String templatePath = _p('/aaa/lib/foo.dart');
994 String generatedPath = _p('/generated/aaa/lib/foo.dart'); 1032 String generatedPath = _p('/generated/aaa/lib/foo.dart');
995 1033
996 provider.newFile( 1034 provider.newFile(
997 templatePath, 1035 templatePath,
998 r''' 1036 r'''
999 a() {} 1037 a() {}
1000 b() {} 1038 b() {}
(...skipping 1704 matching lines...) Expand 10 before | Expand all | Expand 10 after
2705 var path = _p('/test.dart'); 2743 var path = _p('/test.dart');
2706 expect(() { 2744 expect(() {
2707 driver.removeFile(path); 2745 driver.removeFile(path);
2708 }, throwsStateError); 2746 }, throwsStateError);
2709 } 2747 }
2710 2748
2711 String _p(String path) => provider.convertPath(path); 2749 String _p(String path) => provider.convertPath(path);
2712 } 2750 }
2713 2751
2714 class _SourceMock extends TypedMock implements Source {} 2752 class _SourceMock extends TypedMock implements Source {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698