| OLD | NEW |
| 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'; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 final FileContentOverlay contentOverlay = new FileContentOverlay(); | 61 final FileContentOverlay contentOverlay = new FileContentOverlay(); |
| 62 | 62 |
| 63 final StringBuffer logBuffer = new StringBuffer(); | 63 final StringBuffer logBuffer = new StringBuffer(); |
| 64 PerformanceLog logger; | 64 PerformanceLog logger; |
| 65 | 65 |
| 66 AnalysisDriverScheduler scheduler; | 66 AnalysisDriverScheduler scheduler; |
| 67 | 67 |
| 68 List<AnalysisResult> allResults = []; | 68 List<AnalysisResult> allResults = []; |
| 69 | 69 |
| 70 AnalysisDriver newDriver() { | 70 AnalysisDriver newDriver() { |
| 71 sdk = new MockSdk(resourceProvider: provider); |
| 71 AnalysisDriver driver = new AnalysisDriver( | 72 AnalysisDriver driver = new AnalysisDriver( |
| 72 scheduler, | 73 scheduler, |
| 73 logger, | 74 logger, |
| 74 provider, | 75 provider, |
| 75 byteStore, | 76 byteStore, |
| 76 contentOverlay, | 77 contentOverlay, |
| 77 'test', | 78 'test', |
| 78 new SourceFactory( | 79 new SourceFactory( |
| 79 [new DartUriResolver(sdk), new ResourceUriResolver(provider)], | 80 [new DartUriResolver(sdk), new ResourceUriResolver(provider)], |
| 80 null, | 81 null, |
| (...skipping 1157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1238 r''' | 1239 r''' |
| 1239 import 'b.dart'; | 1240 import 'b.dart'; |
| 1240 '''); | 1241 '''); |
| 1241 provider.newFile(b, ''); | 1242 provider.newFile(b, ''); |
| 1242 provider.newFile(c, ''); | 1243 provider.newFile(c, ''); |
| 1243 | 1244 |
| 1244 driver.addFile(a); | 1245 driver.addFile(a); |
| 1245 driver.addFile(c); | 1246 driver.addFile(c); |
| 1246 await driver.waitForIdle(); | 1247 await driver.waitForIdle(); |
| 1247 | 1248 |
| 1248 expect(driver.knownFiles, unorderedEquals([a, b, c])); | 1249 expect(driver.knownFiles, contains(a)); |
| 1250 expect(driver.knownFiles, contains(b)); |
| 1251 expect(driver.knownFiles, contains(c)); |
| 1249 | 1252 |
| 1250 // Remove a.dart and analyze. | 1253 // Remove a.dart and analyze. |
| 1251 // Both a.dart and b.dart are not known now. | 1254 // Both a.dart and b.dart are not known now. |
| 1252 driver.removeFile(a); | 1255 driver.removeFile(a); |
| 1253 await driver.waitForIdle(); | 1256 await driver.waitForIdle(); |
| 1254 expect(driver.knownFiles, unorderedEquals([c])); | 1257 expect(driver.knownFiles, isNot(contains(a))); |
| 1258 expect(driver.knownFiles, isNot(contains(b))); |
| 1259 expect(driver.knownFiles, contains(c)); |
| 1255 } | 1260 } |
| 1256 | 1261 |
| 1257 test_knownFiles_beforeAnalysis() async { | 1262 test_knownFiles_beforeAnalysis() async { |
| 1258 var a = _p('/test/lib/a.dart'); | 1263 var a = _p('/test/lib/a.dart'); |
| 1259 var b = _p('/test/lib/b.dart'); | 1264 var b = _p('/test/lib/b.dart'); |
| 1260 | 1265 |
| 1261 provider.newFile(a, ''); | 1266 provider.newFile(a, ''); |
| 1262 | 1267 |
| 1263 // 'a.dart' is added, but not processed yet. | 1268 // 'a.dart' is added, but not processed yet. |
| 1264 // So, the set of known files is empty yet. | 1269 // So, the set of known files is empty yet. |
| 1265 driver.addFile(a); | 1270 driver.addFile(a); |
| 1266 expect(driver.knownFiles, isEmpty); | 1271 expect(driver.knownFiles, isEmpty); |
| 1267 | 1272 |
| 1268 // Remove 'a.dart'. | 1273 // Remove 'a.dart'. |
| 1269 // It has been no analysis yet, so 'a.dart' is not in the file state, only | 1274 // It has been no analysis yet, so 'a.dart' is not in the file state, only |
| 1270 // in 'added' files. So, it disappears when removed. | 1275 // in 'added' files. So, it disappears when removed. |
| 1271 driver.removeFile(a); | 1276 driver.removeFile(a); |
| 1272 expect(driver.knownFiles, isNot(contains(a))); | 1277 expect(driver.knownFiles, isNot(contains(a))); |
| 1273 expect(driver.knownFiles, isNot(contains(b))); | 1278 expect(driver.knownFiles, isNot(contains(b))); |
| 1274 } | 1279 } |
| 1275 | 1280 |
| 1276 test_parseFile_notDart() async { | 1281 test_parseFile_notDart() async { |
| 1277 var p = _p('/test/bin/a.txt'); | 1282 var p = _p('/test/bin/a.txt'); |
| 1278 provider.newFile(p, 'class A {}'); | 1283 provider.newFile(p, 'class A {}'); |
| 1279 | 1284 |
| 1280 ParseResult parseResult = await driver.parseFile(p); | 1285 ParseResult parseResult = await driver.parseFile(p); |
| 1281 expect(parseResult, isNotNull); | 1286 expect(parseResult, isNotNull); |
| 1282 expect(driver.knownFiles, [p]); | 1287 expect(driver.knownFiles, contains(p)); |
| 1283 } | 1288 } |
| 1284 | 1289 |
| 1285 test_parseFile_shouldRefresh() async { | 1290 test_parseFile_shouldRefresh() async { |
| 1286 var p = _p('/test/bin/a.dart'); | 1291 var p = _p('/test/bin/a.dart'); |
| 1287 | 1292 |
| 1288 provider.newFile(p, 'class A {}'); | 1293 provider.newFile(p, 'class A {}'); |
| 1289 driver.addFile(p); | 1294 driver.addFile(p); |
| 1290 | 1295 |
| 1291 // Get the result, so force the file reading. | 1296 // Get the result, so force the file reading. |
| 1292 await driver.getResult(p); | 1297 await driver.getResult(p); |
| (...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1824 | 1829 |
| 1825 /** | 1830 /** |
| 1826 * Return the [provider] specific path for the given Posix [path]. | 1831 * Return the [provider] specific path for the given Posix [path]. |
| 1827 */ | 1832 */ |
| 1828 String _p(String path) => provider.convertPath(path); | 1833 String _p(String path) => provider.convertPath(path); |
| 1829 | 1834 |
| 1830 static String _md5(String content) { | 1835 static String _md5(String content) { |
| 1831 return hex.encode(md5.convert(UTF8.encode(content)).bytes); | 1836 return hex.encode(md5.convert(UTF8.encode(content)).bytes); |
| 1832 } | 1837 } |
| 1833 } | 1838 } |
| OLD | NEW |