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

Side by Side Diff: pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart

Issue 1693933002: rework completion request resolve imports (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: sort methods Created 4 years, 10 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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library test.services.completion.dart.manager;
6
7 import 'dart:async';
8
9 import 'package:analysis_server/src/provisional/completion/dart/completion_dart. dart';
10 import 'package:analysis_server/src/services/completion/completion_core.dart';
11 import 'package:analysis_server/src/services/completion/completion_performance.d art';
12 import 'package:analysis_server/src/services/completion/dart/completion_manager. dart';
13 import 'package:analysis_server/src/services/completion/dart/imported_reference_ contributor.dart';
14 import 'package:analyzer/dart/element/element.dart';
15 import 'package:analyzer/task/dart.dart';
16 import 'package:analyzer/src/task/dart.dart';
17 import 'package:test_reflective_loader/test_reflective_loader.dart';
18 import 'package:unittest/unittest.dart';
19
20 import '../../../utils.dart';
21 import 'completion_contributor_util.dart';
22 import 'package:analyzer/src/generated/source.dart';
23
24 main() {
25 initializeTestEnvironment();
26 defineReflectiveTests(CompletionManagerTest);
27 }
28
29 @reflectiveTest
30 class CompletionManagerTest extends DartCompletionContributorTest {
31 @override
32 DartCompletionContributor createContributor() {
33 return new ImportedReferenceContributor();
34 }
35
36 test_resolveDirectives() async {
37 addSource(
38 '/libA.dart',
39 '''
40 library libA;
41 /// My class.
42 /// Short description.
43 ///
44 /// Longer description.
45 class A {}
46 ''');
47 var libSource = addSource(
48 '/libB.dart',
49 '''
50 library libB;
51 import "/libA.dart" as foo;
52 part '$testFile';
53 ''');
54 addTestSource('part of libB; main() {^}');
55
56 // Associate part with library
57 context.computeResult(
58 new LibrarySpecificUnit(libSource, testSource), LIBRARY_CYCLE_UNITS);
59
60 // Build the request
61 CompletionRequestImpl baseRequest = new CompletionRequestImpl(
62 context,
63 provider,
64 searchEngine,
65 testSource,
66 completionOffset,
67 new CompletionPerformance());
68 Completer<DartCompletionRequest> requestCompleter =
69 new Completer<DartCompletionRequest>();
70 DartCompletionRequestImpl
71 .from(baseRequest, resultDescriptor: RESOLVED_UNIT1)
72 .then((DartCompletionRequest request) {
73 requestCompleter.complete(request);
74 });
75 request = await performAnalysis(200, requestCompleter);
76
77 // Get the unresolved directives
78 var directives = request.target.unit.directives;
79
80 // Assert that the import does not have an export namespace
81 expect(directives[0].element?.library?.exportNamespace, isNull);
82
83 // Resolve directives
84 var importCompleter = new Completer<List<ImportElement>>();
85 request.resolveImports().then((List<ImportElement> elements) {
86 importCompleter.complete(elements);
87 });
88 List<ImportElement> imports = await performAnalysis(200, importCompleter);
89 expect(imports, hasLength(directives.length + 1));
90
91 ImportElement importNamed(String expectedUri) {
92 return imports.firstWhere((elem) => elem.uri == expectedUri, orElse: () {
93 var importedNames = imports.map((elem) => elem.uri);
94 fail('Failed to find $expectedUri in $importedNames');
95 });
96 }
97 void assertImportedLib(String expectedUri) {
98 ImportElement importElem = importNamed(expectedUri);
99 expect(importElem.importedLibrary.exportNamespace, isNotNull);
100 }
101
102 // Assert that the new imports each have an export namespace
103 assertImportedLib(null /* dart:core */);
104 assertImportedLib('/libA.dart');
105 }
106 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698