| 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.stress.limited_invalidation; | 5 library analyzer.test.stress.limited_invalidation; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 | 9 |
| 10 import 'package:analyzer/dart/ast/ast.dart'; | 10 import 'package:analyzer/dart/ast/ast.dart'; |
| 11 import 'package:analyzer/dart/element/element.dart'; | 11 import 'package:analyzer/dart/element/element.dart'; |
| 12 import 'package:analyzer/dart/element/type.dart'; | 12 import 'package:analyzer/dart/element/type.dart'; |
| 13 import 'package:analyzer/file_system/file_system.dart' as fs; | 13 import 'package:analyzer/file_system/file_system.dart' as fs; |
| 14 import 'package:analyzer/file_system/physical_file_system.dart'; | 14 import 'package:analyzer/file_system/physical_file_system.dart'; |
| 15 import 'package:analyzer/src/context/builder.dart'; | 15 import 'package:analyzer/src/context/builder.dart'; |
| 16 import 'package:analyzer/src/context/cache.dart'; | 16 import 'package:analyzer/src/context/cache.dart'; |
| 17 import 'package:analyzer/src/context/context.dart'; | 17 import 'package:analyzer/src/context/context.dart'; |
| 18 import 'package:analyzer/src/dart/ast/utilities.dart'; | 18 import 'package:analyzer/src/dart/ast/utilities.dart'; |
| 19 import 'package:analyzer/src/dart/element/member.dart'; | 19 import 'package:analyzer/src/dart/element/member.dart'; |
| 20 import 'package:analyzer/src/dart/sdk/sdk.dart'; |
| 20 import 'package:analyzer/src/generated/engine.dart'; | 21 import 'package:analyzer/src/generated/engine.dart'; |
| 21 import 'package:analyzer/src/generated/error.dart'; | 22 import 'package:analyzer/src/generated/error.dart'; |
| 22 import 'package:analyzer/src/generated/sdk.dart'; | 23 import 'package:analyzer/src/generated/sdk.dart'; |
| 23 import 'package:analyzer/src/generated/sdk_io.dart'; | |
| 24 import 'package:analyzer/src/generated/source.dart'; | 24 import 'package:analyzer/src/generated/source.dart'; |
| 25 import 'package:analyzer/src/generated/utilities_collection.dart'; | 25 import 'package:analyzer/src/generated/utilities_collection.dart'; |
| 26 import 'package:analyzer/src/task/dart.dart'; | 26 import 'package:analyzer/src/task/dart.dart'; |
| 27 import 'package:analyzer/task/general.dart'; | 27 import 'package:analyzer/task/general.dart'; |
| 28 import 'package:analyzer/task/model.dart'; | 28 import 'package:analyzer/task/model.dart'; |
| 29 import 'package:path/path.dart' as path; | 29 import 'package:path/path.dart' as path; |
| 30 import 'package:unittest/unittest.dart'; | 30 import 'package:unittest/unittest.dart'; |
| 31 | 31 |
| 32 main() { | 32 main() { |
| 33 new StressTest().run(); | 33 new StressTest().run(); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 } | 92 } |
| 93 | 93 |
| 94 FolderDiff diff(FolderInfo oldFolder) { | 94 FolderDiff diff(FolderInfo oldFolder) { |
| 95 Map<String, FileInfo> toMap(FolderInfo folder) { | 95 Map<String, FileInfo> toMap(FolderInfo folder) { |
| 96 Map<String, FileInfo> map = <String, FileInfo>{}; | 96 Map<String, FileInfo> map = <String, FileInfo>{}; |
| 97 folder.files.forEach((file) { | 97 folder.files.forEach((file) { |
| 98 map[file.path] = file; | 98 map[file.path] = file; |
| 99 }); | 99 }); |
| 100 return map; | 100 return map; |
| 101 } | 101 } |
| 102 |
| 102 Map<String, FileInfo> newFiles = toMap(this); | 103 Map<String, FileInfo> newFiles = toMap(this); |
| 103 Map<String, FileInfo> oldFiles = toMap(oldFolder); | 104 Map<String, FileInfo> oldFiles = toMap(oldFolder); |
| 104 Set<String> addedPaths = newFiles.keys.toSet()..removeAll(oldFiles.keys); | 105 Set<String> addedPaths = newFiles.keys.toSet()..removeAll(oldFiles.keys); |
| 105 Set<String> removedPaths = oldFiles.keys.toSet()..removeAll(newFiles.keys); | 106 Set<String> removedPaths = oldFiles.keys.toSet()..removeAll(newFiles.keys); |
| 106 List<String> changedPaths = <String>[]; | 107 List<String> changedPaths = <String>[]; |
| 107 newFiles.forEach((path, newFile) { | 108 newFiles.forEach((path, newFile) { |
| 108 FileInfo oldFile = oldFiles[path]; | 109 FileInfo oldFile = oldFiles[path]; |
| 109 if (oldFile != null && oldFile.modification != newFile.modification) { | 110 if (oldFile != null && oldFile.modification != newFile.modification) { |
| 110 changedPaths.add(path); | 111 changedPaths.add(path); |
| 111 } | 112 } |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 AnalysisContextImpl expectedContext; | 235 AnalysisContextImpl expectedContext; |
| 235 AnalysisContextImpl actualContext; | 236 AnalysisContextImpl actualContext; |
| 236 | 237 |
| 237 Set<Element> currentRevisionValidatedElements = new Set<Element>(); | 238 Set<Element> currentRevisionValidatedElements = new Set<Element>(); |
| 238 | 239 |
| 239 void createContexts() { | 240 void createContexts() { |
| 240 assert(expectedContext == null); | 241 assert(expectedContext == null); |
| 241 assert(actualContext == null); | 242 assert(actualContext == null); |
| 242 resourceProvider = PhysicalResourceProvider.INSTANCE; | 243 resourceProvider = PhysicalResourceProvider.INSTANCE; |
| 243 pathContext = resourceProvider.pathContext; | 244 pathContext = resourceProvider.pathContext; |
| 244 sdkManager = new DartSdkManager( | 245 fs.Folder sdkDirectory = |
| 245 DirectoryBasedDartSdk.defaultSdkDirectory.getAbsolutePath(), | 246 FolderBasedDartSdk.defaultSdkDirectory(resourceProvider); |
| 246 false, | 247 sdkManager = new DartSdkManager(sdkDirectory.path, false, |
| 247 (_) => DirectoryBasedDartSdk.defaultSdk); | 248 (_) => new FolderBasedDartSdk(resourceProvider, sdkDirectory)); |
| 248 contentCache = new ContentCache(); | 249 contentCache = new ContentCache(); |
| 249 ContextBuilder builder = | 250 ContextBuilder builder = |
| 250 new ContextBuilder(resourceProvider, sdkManager, contentCache); | 251 new ContextBuilder(resourceProvider, sdkManager, contentCache); |
| 251 builder.defaultOptions = new AnalysisOptionsImpl(); | 252 builder.defaultOptions = new AnalysisOptionsImpl(); |
| 252 expectedContext = builder.buildContext(folderPath); | 253 expectedContext = builder.buildContext(folderPath); |
| 253 actualContext = builder.buildContext(folderPath); | 254 actualContext = builder.buildContext(folderPath); |
| 254 expectedContext.analysisOptions = | 255 expectedContext.analysisOptions = |
| 255 new AnalysisOptionsImpl.from(expectedContext.analysisOptions) | 256 new AnalysisOptionsImpl.from(expectedContext.analysisOptions) |
| 256 ..incremental = true; | 257 ..incremental = true; |
| 257 actualContext.analysisOptions = | 258 actualContext.analysisOptions = |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 List<Element> sortElements(List<Element> elements) { | 403 List<Element> sortElements(List<Element> elements) { |
| 403 elements = elements.toList(); | 404 elements = elements.toList(); |
| 404 elements.sort((a, b) { | 405 elements.sort((a, b) { |
| 405 if (a.nameOffset != b.nameOffset) { | 406 if (a.nameOffset != b.nameOffset) { |
| 406 return a.nameOffset - b.nameOffset; | 407 return a.nameOffset - b.nameOffset; |
| 407 } | 408 } |
| 408 return a.name.compareTo(b.name); | 409 return a.name.compareTo(b.name); |
| 409 }); | 410 }); |
| 410 return elements; | 411 return elements; |
| 411 } | 412 } |
| 413 |
| 412 void validateSortedElements( | 414 void validateSortedElements( |
| 413 List<Element> actualElements, List<Element> expectedElements) { | 415 List<Element> actualElements, List<Element> expectedElements) { |
| 414 expect(actualElements, hasLength(expectedElements.length)); | 416 expect(actualElements, hasLength(expectedElements.length)); |
| 415 actualElements = sortElements(actualElements); | 417 actualElements = sortElements(actualElements); |
| 416 expectedElements = sortElements(expectedElements); | 418 expectedElements = sortElements(expectedElements); |
| 417 for (int i = 0; i < expectedElements.length; i++) { | 419 for (int i = 0; i < expectedElements.length; i++) { |
| 418 _validateElements(actualElements[i], expectedElements[i], visited); | 420 _validateElements(actualElements[i], expectedElements[i], visited); |
| 419 } | 421 } |
| 420 } | 422 } |
| 423 |
| 421 expect(actualValue?.runtimeType, expectedValue?.runtimeType); | 424 expect(actualValue?.runtimeType, expectedValue?.runtimeType); |
| 422 expect(actualValue.nameOffset, expectedValue.nameOffset); | 425 expect(actualValue.nameOffset, expectedValue.nameOffset); |
| 423 expect(actualValue.name, expectedValue.name); | 426 expect(actualValue.name, expectedValue.name); |
| 424 if (expectedValue is ClassElement) { | 427 if (expectedValue is ClassElement) { |
| 425 var actualElement = actualValue as ClassElement; | 428 var actualElement = actualValue as ClassElement; |
| 426 validateSortedElements(actualElement.accessors, expectedValue.accessors); | 429 validateSortedElements(actualElement.accessors, expectedValue.accessors); |
| 427 validateSortedElements( | 430 validateSortedElements( |
| 428 actualElement.constructors, expectedValue.constructors); | 431 actualElement.constructors, expectedValue.constructors); |
| 429 validateSortedElements(actualElement.fields, expectedValue.fields); | 432 validateSortedElements(actualElement.fields, expectedValue.fields); |
| 430 validateSortedElements(actualElement.methods, expectedValue.methods); | 433 validateSortedElements(actualElement.methods, expectedValue.methods); |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 pairwiseCompare(expectedArguments, (a, b) { | 628 pairwiseCompare(expectedArguments, (a, b) { |
| 626 _verifyTypes(a, b, '$desc typeArguments'); | 629 _verifyTypes(a, b, '$desc typeArguments'); |
| 627 return true; | 630 return true; |
| 628 }, 'elements')); | 631 }, 'elements')); |
| 629 } else { | 632 } else { |
| 630 _failTypeMismatch(actual, expected); | 633 _failTypeMismatch(actual, expected); |
| 631 } | 634 } |
| 632 } | 635 } |
| 633 } | 636 } |
| 634 } | 637 } |
| OLD | NEW |