mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 04:16:51 +00:00
a9162bd599
Change-Id: Ie4ce09b83c2a96a5ad16c60d2924f18cd90a4089 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/136633 Reviewed-by: Dmitry Stefantsov <dmitryas@google.com> Reviewed-by: Paul Berry <paulberry@google.com>
63 lines
2.6 KiB
Dart
63 lines
2.6 KiB
Dart
// Copyright (c) 2020, 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:io';
|
|
|
|
import 'package:_fe_analyzer_shared/src/testing/annotated_code_helper.dart';
|
|
import 'package:_fe_analyzer_shared/src/testing/id_generation.dart';
|
|
import 'package:_fe_analyzer_shared/src/testing/id_testing.dart';
|
|
|
|
main() {
|
|
testDir('pkg/_fe_analyzer_shared/test/constants/data');
|
|
testDir('pkg/_fe_analyzer_shared/test/flow_analysis/assigned_variables/data');
|
|
testDir(
|
|
'pkg/_fe_analyzer_shared/test/flow_analysis/definite_assignment/data');
|
|
testDir('pkg/_fe_analyzer_shared/test/flow_analysis/nullability/data');
|
|
testDir('pkg/_fe_analyzer_shared/test/flow_analysis/reachability/data');
|
|
testDir('pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data');
|
|
testDir('pkg/_fe_analyzer_shared/test/inheritance/data');
|
|
}
|
|
|
|
void expectStringEquals(String value1, String value2) {
|
|
if (value1 != value2) {
|
|
throw StateError('Strings not equal: $value1 != $value2');
|
|
}
|
|
}
|
|
|
|
void testDir(String dataDirPath) {
|
|
Directory dataDir = Directory(dataDirPath);
|
|
MarkerOptions markerOptions =
|
|
MarkerOptions.fromDataDir(dataDir, shouldFindScript: false);
|
|
String relativeDir = dataDir.uri.path.replaceAll(Uri.base.path, '');
|
|
print('Data dir: ${relativeDir}');
|
|
List<FileSystemEntity> entities =
|
|
dataDir.listSync().where((entity) => !entity.path.endsWith('~')).toList();
|
|
for (FileSystemEntity entity in entities) {
|
|
print('----------------------------------------------------------------');
|
|
|
|
TestData testData = computeTestData(entity,
|
|
supportedMarkers: markerOptions.supportedMarkers,
|
|
createTestUri: (Uri uri, String name) => Uri.parse('memory:$name'),
|
|
onFailure: (String message) => throw message);
|
|
print('Test: ${testData.testFileUri}');
|
|
testData.code.forEach((Uri uri, AnnotatedCode code) {
|
|
expectStringEquals(code.annotatedCode, code.toText());
|
|
});
|
|
|
|
Map<Uri, List<Annotation>> annotationsPerUri = computeAnnotationsPerUri(
|
|
testData.code,
|
|
testData.expectedMaps,
|
|
testData.entryPoint,
|
|
const {},
|
|
const StringDataInterpreter());
|
|
|
|
annotationsPerUri.forEach((Uri uri, List<Annotation> annotations) {
|
|
AnnotatedCode original = testData.code[uri];
|
|
AnnotatedCode generated = new AnnotatedCode(
|
|
original.annotatedCode, original.sourceCode, annotations);
|
|
expectStringEquals(generated.annotatedCode, generated.toText());
|
|
});
|
|
}
|
|
}
|