| Index: pkg/analyzer/test/src/dart/analysis/base.dart
|
| diff --git a/pkg/analyzer/test/src/dart/analysis/base.dart b/pkg/analyzer/test/src/dart/analysis/base.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a09836dd37554cdc528766dbd8f63785b5602108
|
| --- /dev/null
|
| +++ b/pkg/analyzer/test/src/dart/analysis/base.dart
|
| @@ -0,0 +1,94 @@
|
| +// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +import 'dart:async';
|
| +
|
| +import 'package:analyzer/file_system/file_system.dart';
|
| +import 'package:analyzer/file_system/memory_file_system.dart';
|
| +import 'package:analyzer/source/package_map_resolver.dart';
|
| +import 'package:analyzer/src/dart/analysis/byte_store.dart';
|
| +import 'package:analyzer/src/dart/analysis/driver.dart';
|
| +import 'package:analyzer/src/dart/analysis/file_state.dart';
|
| +import 'package:analyzer/src/dart/analysis/status.dart';
|
| +import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
|
| +import 'package:analyzer/src/generated/source.dart';
|
| +
|
| +import '../../context/mock_sdk.dart';
|
| +
|
| +class BaseAnalysisDriverTest {
|
| + static final MockSdk sdk = new MockSdk();
|
| +
|
| + final MemoryResourceProvider provider = new MemoryResourceProvider();
|
| + final ByteStore byteStore = new MemoryByteStore();
|
| + final FileContentOverlay contentOverlay = new FileContentOverlay();
|
| +
|
| + final StringBuffer logBuffer = new StringBuffer();
|
| + PerformanceLog logger;
|
| +
|
| + AnalysisDriverScheduler scheduler;
|
| + AnalysisDriver driver;
|
| + final _Monitor idleStatusMonitor = new _Monitor();
|
| + final List<AnalysisStatus> allStatuses = <AnalysisStatus>[];
|
| + final List<AnalysisResult> allResults = <AnalysisResult>[];
|
| +
|
| + String testProject;
|
| + String testFile;
|
| + String testCode;
|
| +
|
| + void addTestFile(String content, {bool priority: false}) {
|
| + testCode = content;
|
| + provider.newFile(testFile, content);
|
| + driver.addFile(testFile);
|
| + if (priority) {
|
| + driver.priorityFiles = [testFile];
|
| + }
|
| + }
|
| +
|
| + void setUp() {
|
| + new MockSdk();
|
| + testProject = _p('/test/lib');
|
| + testFile = _p('/test/lib/test.dart');
|
| + logger = new PerformanceLog(logBuffer);
|
| + scheduler = new AnalysisDriverScheduler(logger);
|
| + driver = new AnalysisDriver(
|
| + scheduler,
|
| + logger,
|
| + provider,
|
| + byteStore,
|
| + contentOverlay,
|
| + new SourceFactory([
|
| + new DartUriResolver(sdk),
|
| + new PackageMapUriResolver(provider, <String, List<Folder>>{
|
| + 'test': [provider.getFolder(testProject)]
|
| + }),
|
| + new ResourceUriResolver(provider)
|
| + ], null, provider),
|
| + new AnalysisOptionsImpl()..strongMode = true);
|
| + scheduler.start();
|
| + driver.status.lastWhere((status) {
|
| + allStatuses.add(status);
|
| + if (status.isIdle) {
|
| + idleStatusMonitor.notify();
|
| + }
|
| + });
|
| + driver.results.listen(allResults.add);
|
| + }
|
| +
|
| + String _p(String path) => provider.convertPath(path);
|
| +}
|
| +
|
| +class _Monitor {
|
| + Completer<Null> _completer = new Completer<Null>();
|
| +
|
| + Future<Null> get signal async {
|
| + await _completer.future;
|
| + _completer = new Completer<Null>();
|
| + }
|
| +
|
| + void notify() {
|
| + if (!_completer.isCompleted) {
|
| + _completer.complete(null);
|
| + }
|
| + }
|
| +}
|
|
|