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

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

Issue 2544883003: Implement 'topLevelLibraryDeclarations' getter to return all libraries with exported top-level decl… (Closed)
Patch Set: Change AnalysisDriver API to return declarations of a name. Created 4 years 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/element/element.dart'; 11 import 'package:analyzer/dart/element/element.dart';
12 import 'package:analyzer/error/error.dart'; 12 import 'package:analyzer/error/error.dart';
13 import 'package:analyzer/file_system/file_system.dart'; 13 import 'package:analyzer/file_system/file_system.dart';
14 import 'package:analyzer/file_system/memory_file_system.dart'; 14 import 'package:analyzer/file_system/memory_file_system.dart';
15 import 'package:analyzer/src/dart/analysis/byte_store.dart'; 15 import 'package:analyzer/src/dart/analysis/byte_store.dart';
16 import 'package:analyzer/src/dart/analysis/driver.dart'; 16 import 'package:analyzer/src/dart/analysis/driver.dart';
17 import 'package:analyzer/src/dart/analysis/file_state.dart'; 17 import 'package:analyzer/src/dart/analysis/file_state.dart';
18 import 'package:analyzer/src/dart/analysis/status.dart'; 18 import 'package:analyzer/src/dart/analysis/status.dart';
19 import 'package:analyzer/src/dart/analysis/top_level_declaration.dart';
19 import 'package:analyzer/src/error/codes.dart'; 20 import 'package:analyzer/src/error/codes.dart';
20 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl; 21 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
21 import 'package:analyzer/src/generated/source.dart'; 22 import 'package:analyzer/src/generated/source.dart';
22 import 'package:analyzer/src/summary/idl.dart'; 23 import 'package:analyzer/src/summary/idl.dart';
23 import 'package:convert/convert.dart'; 24 import 'package:convert/convert.dart';
24 import 'package:crypto/crypto.dart'; 25 import 'package:crypto/crypto.dart';
25 import 'package:test/test.dart'; 26 import 'package:test/test.dart';
26 import 'package:test_reflective_loader/test_reflective_loader.dart'; 27 import 'package:test_reflective_loader/test_reflective_loader.dart';
27 28
28 import '../../context/mock_sdk.dart'; 29 import '../../context/mock_sdk.dart';
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 Future<AnalysisResult> future2 = driver.getResult(testFile); 727 Future<AnalysisResult> future2 = driver.getResult(testFile);
727 728
728 // Both futures complete, with the same result. 729 // Both futures complete, with the same result.
729 AnalysisResult result1 = await future1; 730 AnalysisResult result1 = await future1;
730 AnalysisResult result2 = await future2; 731 AnalysisResult result2 = await future2;
731 expect(result2, same(result1)); 732 expect(result2, same(result1));
732 expect(result1.path, testFile); 733 expect(result1.path, testFile);
733 expect(result1.unit, isNotNull); 734 expect(result1.unit, isNotNull);
734 } 735 }
735 736
737 test_getTopLevelNameDeclarations() async {
738 var a = _p('/test/lib/a.dart');
739 var b = _p('/test/lib/b.dart');
740 var c = _p('/test/lib/c.dart');
741 var d = _p('/test/lib/d.dart');
742
743 provider.newFile(a, 'class A {}');
744 provider.newFile(b, 'export "a.dart", class B {}');
745 provider.newFile(c, 'import "d.dart"; class C {}');
746 provider.newFile(d, 'class D {}');
747
748 driver.addFile(a);
749 driver.addFile(b);
750 driver.addFile(c);
751 // Don't add d.dart, it is referenced implicitly.
752
753 void assertLibraryPaths(
754 List<TopLevelDeclarationInSource> declarations, List<String> expected) {
755 expect(declarations.map((l) => l.source.fullName),
756 unorderedEquals(expected));
757 }
758
759 assertLibraryPaths(await driver.getTopLevelNameDeclarations('A'), [a, b]);
760
761 assertLibraryPaths(await driver.getTopLevelNameDeclarations('B'), [b]);
762
763 assertLibraryPaths(await driver.getTopLevelNameDeclarations('C'), [c]);
764
765 assertLibraryPaths(await driver.getTopLevelNameDeclarations('D'), [d]);
766
767 assertLibraryPaths(await driver.getTopLevelNameDeclarations('X'), []);
768 }
769
736 test_knownFiles() async { 770 test_knownFiles() async {
737 var a = _p('/test/lib/a.dart'); 771 var a = _p('/test/lib/a.dart');
738 var b = _p('/test/lib/b.dart'); 772 var b = _p('/test/lib/b.dart');
739 773
740 provider.newFile( 774 provider.newFile(
741 a, 775 a,
742 r''' 776 r'''
743 import 'b.dart'; 777 import 'b.dart';
744 '''); 778 ''');
745 779
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
1226 String _p(String path) => provider.convertPath(path); 1260 String _p(String path) => provider.convertPath(path);
1227 1261
1228 Future<Null> _waitForIdle() async { 1262 Future<Null> _waitForIdle() async {
1229 await idleStatusMonitor.signal; 1263 await idleStatusMonitor.signal;
1230 } 1264 }
1231 1265
1232 static String _md5(String content) { 1266 static String _md5(String content) {
1233 return hex.encode(md5.convert(UTF8.encode(content)).bytes); 1267 return hex.encode(md5.convert(UTF8.encode(content)).bytes);
1234 } 1268 }
1235 } 1269 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698