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

Unified Diff: pkg/analysis_server/test/analysis_server_test.dart

Issue 807323002: Add tests for AnalysisServer.getAnalysisContextForSource. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 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 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/analysis_server/test/analysis_server_test.dart
diff --git a/pkg/analysis_server/test/analysis_server_test.dart b/pkg/analysis_server/test/analysis_server_test.dart
index 6e7ada51830e301a39fffb4a083cd98dacb032a5..57710aebb21419cd549a1e4e0b330a0fc0322876 100644
--- a/pkg/analysis_server/test/analysis_server_test.dart
+++ b/pkg/analysis_server/test/analysis_server_test.dart
@@ -11,6 +11,7 @@ import 'package:analysis_server/src/constants.dart';
import 'package:analysis_server/src/domain_server.dart';
import 'package:analysis_server/src/operation/operation.dart';
import 'package:analysis_server/src/protocol.dart';
+import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/instrumentation/instrumentation.dart';
import 'package:analyzer/src/generated/engine.dart';
@@ -34,6 +35,80 @@ class AnalysisServerTest {
AnalysisServer server;
MemoryResourceProvider resourceProvider;
+ /**
+ * Verify that getAnalysisContextForSource returns the correct contexts even
+ * for sources that are included by multiple contexts.
+ *
+ * See dartbug.com/21898
+ */
+ Future fail_getAnalysisContextForSource_crossImports() {
+ // Subscribe to STATUS so we'll know when analysis is done.
+ server.serverServices = [ServerService.STATUS].toSet();
+ // Analyze project foo containing foo.dart and project bar containing
+ // bar.dart.
+ resourceProvider.newFolder('/foo');
+ resourceProvider.newFolder('/bar');
+ File foo = resourceProvider.newFile('/foo/foo.dart', '''
+libary foo;
+import "../bar/bar.dart";
+''');
+ Source fooSource = foo.createSource();
+ File bar = resourceProvider.newFile('/bar/bar.dart', '''
+library bar;
+import "../foo/foo.dart";
+''');
+ Source barSource = bar.createSource();
+ server.setAnalysisRoots('0', ['/foo', '/bar'], [], {});
+ return pumpEventQueue(40).then((_) {
+ expect(server.statusAnalyzing, isFalse);
+ // Make sure getAnalysisContext returns the proper context for each.
+ AnalysisContext fooContext =
+ server.getAnalysisContextForSource(fooSource);
+ expect(fooContext, isNotNull);
+ AnalysisContext barContext =
+ server.getAnalysisContextForSource(barSource);
+ expect(barContext, isNotNull);
+ expect(fooContext, isNot(same(barContext)));
+ expect(fooContext.getKindOf(fooSource), SourceKind.LIBRARY);
+ expect(fooContext.getKindOf(barSource), SourceKind.UNKNOWN);
+ expect(barContext.getKindOf(fooSource), SourceKind.UNKNOWN);
+ expect(barContext.getKindOf(barSource), SourceKind.LIBRARY);
+ });
+ }
+
+ /**
+ * Verify that getAnalysisContextForSource returns the correct contexts even
+ * for sources that haven't been analyzed yet.
+ *
+ * See dartbug.com/21898
+ */
+ Future fail_getAnalysisContextForSource_unanalyzed() {
+ // Subscribe to STATUS so we'll know when analysis is done.
+ server.serverServices = [ServerService.STATUS].toSet();
+ // Analyze project foo containing foo.dart and project bar containing
+ // bar.dart.
+ resourceProvider.newFolder('/foo');
+ resourceProvider.newFolder('/bar');
+ File foo = resourceProvider.newFile('/foo/foo.dart', 'library lib;');
+ Source fooSource = foo.createSource();
+ File bar = resourceProvider.newFile('/bar/bar.dart', 'library lib;');
+ Source barSource = bar.createSource();
+ server.setAnalysisRoots('0', ['/foo', '/bar'], [], {});
+ AnalysisContext fooContext = server.getAnalysisContextForSource(fooSource);
+ expect(fooContext, isNotNull);
+ AnalysisContext barContext = server.getAnalysisContextForSource(barSource);
+ expect(barContext, isNotNull);
+ expect(fooContext, isNot(same(barContext)));
+ return pumpEventQueue(40).then((_) {
+ expect(server.statusAnalyzing, isFalse);
+ // Make sure getAnalysisContext returned the proper context for each.
+ expect(fooContext.getKindOf(fooSource), SourceKind.LIBRARY);
+ expect(fooContext.getKindOf(barSource), SourceKind.UNKNOWN);
+ expect(barContext.getKindOf(fooSource), SourceKind.UNKNOWN);
+ expect(barContext.getKindOf(barSource), SourceKind.LIBRARY);
+ });
+ }
+
void setUp() {
channel = new MockServerChannel();
resourceProvider = new MemoryResourceProvider();
@@ -108,6 +183,35 @@ class AnalysisServerTest {
});
}
+ Future test_getAnalysisContextForSource() {
+ // Subscribe to STATUS so we'll know when analysis is done.
+ server.serverServices = [ServerService.STATUS].toSet();
+ // Analyze project foo containing foo.dart and project bar containing
+ // bar.dart.
+ resourceProvider.newFolder('/foo');
+ resourceProvider.newFolder('/bar');
+ File foo = resourceProvider.newFile('/foo/foo.dart', 'library lib;');
+ Source fooSource = foo.createSource();
+ File bar = resourceProvider.newFile('/bar/bar.dart', 'library lib;');
+ Source barSource = bar.createSource();
+ server.setAnalysisRoots('0', ['/foo', '/bar'], [], {});
+ return pumpEventQueue(40).then((_) {
+ expect(server.statusAnalyzing, isFalse);
+ // Make sure getAnalysisContext returns the proper context for each.
+ AnalysisContext fooContext =
+ server.getAnalysisContextForSource(fooSource);
+ expect(fooContext, isNotNull);
+ AnalysisContext barContext =
+ server.getAnalysisContextForSource(barSource);
+ expect(barContext, isNotNull);
+ expect(fooContext, isNot(same(barContext)));
+ expect(fooContext.getKindOf(fooSource), SourceKind.LIBRARY);
+ expect(fooContext.getKindOf(barSource), SourceKind.UNKNOWN);
+ expect(barContext.getKindOf(fooSource), SourceKind.UNKNOWN);
+ expect(barContext.getKindOf(barSource), SourceKind.LIBRARY);
+ });
+ }
+
Future test_prioritySourcesChangedEvent() {
resourceProvider.newFolder('/foo');
« 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