4ef2725654
We intend to publish and maintain this as a set of testing-related utilities for the analyzer packages and for analyzer plugins. Work towards https://github.com/dart-lang/sdk/issues/55660 See the doc: https://docs.google.com/document/d/1jRtd8B1ijPAP6Pz89HRnyIZXw2VMjaZx0vRZTpoNO84/edit?tab=t.0#heading=h.2sz41a544qhi Change-Id: I2764b1357a932fa955060b26d78038997eaa9536 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/425080 Reviewed-by: Slava Egorov <vegorov@google.com> Commit-Queue: Samuel Rawlins <srawlins@google.com> Reviewed-by: Paul Berry <paulberry@google.com>
63 lines
1.8 KiB
Dart
63 lines
1.8 KiB
Dart
// Copyright (c) 2023, 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:collection';
|
|
|
|
import 'package:analyzer/file_system/file_system.dart';
|
|
import 'package:analyzer/file_system/physical_file_system.dart';
|
|
import 'package:analyzer/src/util/file_paths.dart' as file_paths;
|
|
import 'package:analyzer_testing/package_root.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
// TODO(scheglov): Remove it after SDK 3.1 published.
|
|
void main() {
|
|
group('_fe_analyzer_shared', () {
|
|
buildTests(packagePath: '_fe_analyzer_shared');
|
|
});
|
|
|
|
group('analyzer', () {
|
|
buildTests(packagePath: 'analyzer');
|
|
});
|
|
}
|
|
|
|
void buildTests({required String packagePath}) {
|
|
var provider = PhysicalResourceProvider.INSTANCE;
|
|
var pathContext = provider.pathContext;
|
|
var pkgRootPath = pathContext.normalize(packageRoot);
|
|
|
|
var libFolder = provider
|
|
.getFolder(pkgRootPath)
|
|
.getChildAssumingFolder(packagePath)
|
|
.getChildAssumingFolder('lib');
|
|
|
|
for (var file in libFolder.allFiles) {
|
|
if (file_paths.isDart(pathContext, file.path)) {
|
|
test(file.path, () {
|
|
var content = file.readAsStringSync();
|
|
if (content.contains('utf8.encode(')) {
|
|
fail('Should not use `utf8.encode` before SDK 3.1');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
extension on Folder {
|
|
Iterable<File> get allFiles sync* {
|
|
var queue = Queue<Folder>();
|
|
queue.add(this);
|
|
while (queue.isNotEmpty) {
|
|
var current = queue.removeFirst();
|
|
var children = current.getChildren();
|
|
for (var child in children) {
|
|
if (child is File) {
|
|
yield child;
|
|
} else if (child is Folder) {
|
|
queue.add(child);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|