Files
sdk/pkg/analysis_server/test/verify_no_utf8_encode_test.dart
T
Konstantin Shcheglov be4df1a869 API. Add Folder.getFile/Folder, deprecate getChildAssumingFile/Folder
This aligns names with ResourceProvider.getFile/Folder.

Change-Id: I30383ef1fa6f7cbe60b187338e25b8ca75806730
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/511120
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jonas Jensen <jonasfj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2026-06-11 07:46:21 -07:00

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)
.getFolder(packagePath)
.getFolder('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);
}
}
}
}
}