OLD | NEW |
(Empty) | |
| 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 |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 import 'dart:async'; |
| 6 |
| 7 import 'package:analyzer/file_system/file_system.dart'; |
| 8 import 'package:analyzer/file_system/memory_file_system.dart'; |
| 9 import 'package:analyzer/source/package_map_resolver.dart'; |
| 10 import 'package:analyzer/src/dart/analysis/byte_store.dart'; |
| 11 import 'package:analyzer/src/dart/analysis/driver.dart'; |
| 12 import 'package:analyzer/src/dart/analysis/file_state.dart'; |
| 13 import 'package:analyzer/src/dart/analysis/status.dart'; |
| 14 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl; |
| 15 import 'package:analyzer/src/generated/source.dart'; |
| 16 |
| 17 import '../../context/mock_sdk.dart'; |
| 18 |
| 19 class BaseAnalysisDriverTest { |
| 20 static final MockSdk sdk = new MockSdk(); |
| 21 |
| 22 final MemoryResourceProvider provider = new MemoryResourceProvider(); |
| 23 final ByteStore byteStore = new MemoryByteStore(); |
| 24 final FileContentOverlay contentOverlay = new FileContentOverlay(); |
| 25 |
| 26 final StringBuffer logBuffer = new StringBuffer(); |
| 27 PerformanceLog logger; |
| 28 |
| 29 AnalysisDriverScheduler scheduler; |
| 30 AnalysisDriver driver; |
| 31 final _Monitor idleStatusMonitor = new _Monitor(); |
| 32 final List<AnalysisStatus> allStatuses = <AnalysisStatus>[]; |
| 33 final List<AnalysisResult> allResults = <AnalysisResult>[]; |
| 34 |
| 35 String testProject; |
| 36 String testFile; |
| 37 String testCode; |
| 38 |
| 39 void addTestFile(String content, {bool priority: false}) { |
| 40 testCode = content; |
| 41 provider.newFile(testFile, content); |
| 42 driver.addFile(testFile); |
| 43 if (priority) { |
| 44 driver.priorityFiles = [testFile]; |
| 45 } |
| 46 } |
| 47 |
| 48 void setUp() { |
| 49 new MockSdk(); |
| 50 testProject = _p('/test/lib'); |
| 51 testFile = _p('/test/lib/test.dart'); |
| 52 logger = new PerformanceLog(logBuffer); |
| 53 scheduler = new AnalysisDriverScheduler(logger); |
| 54 driver = new AnalysisDriver( |
| 55 scheduler, |
| 56 logger, |
| 57 provider, |
| 58 byteStore, |
| 59 contentOverlay, |
| 60 new SourceFactory([ |
| 61 new DartUriResolver(sdk), |
| 62 new PackageMapUriResolver(provider, <String, List<Folder>>{ |
| 63 'test': [provider.getFolder(testProject)] |
| 64 }), |
| 65 new ResourceUriResolver(provider) |
| 66 ], null, provider), |
| 67 new AnalysisOptionsImpl()..strongMode = true); |
| 68 scheduler.start(); |
| 69 driver.status.lastWhere((status) { |
| 70 allStatuses.add(status); |
| 71 if (status.isIdle) { |
| 72 idleStatusMonitor.notify(); |
| 73 } |
| 74 }); |
| 75 driver.results.listen(allResults.add); |
| 76 } |
| 77 |
| 78 String _p(String path) => provider.convertPath(path); |
| 79 } |
| 80 |
| 81 class _Monitor { |
| 82 Completer<Null> _completer = new Completer<Null>(); |
| 83 |
| 84 Future<Null> get signal async { |
| 85 await _completer.future; |
| 86 _completer = new Completer<Null>(); |
| 87 } |
| 88 |
| 89 void notify() { |
| 90 if (!_completer.isCompleted) { |
| 91 _completer.complete(null); |
| 92 } |
| 93 } |
| 94 } |
OLD | NEW |