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>
This commit is contained in:
Konstantin Shcheglov
2026-06-11 07:46:21 -07:00
committed by dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent 649a56d6e4
commit be4df1a869
56 changed files with 377 additions and 354 deletions
@@ -660,15 +660,15 @@ class ContextManagerImpl implements ContextManager {
var packageName = rootFolder.shortName;
var fixDataYamlFile = rootFolder
.getChildAssumingFolder('lib')
.getChildAssumingFile(file_paths.fixDataYaml);
.getFolder('lib')
.getFile(file_paths.fixDataYaml);
if (fixDataYamlFile.exists) {
_analyzeFixDataYaml(driver, fixDataYamlFile, packageName);
}
var fixDataFolder = rootFolder
.getChildAssumingFolder('lib')
.getChildAssumingFolder(file_paths.fixDataYamlFolder);
.getFolder('lib')
.getFolder(file_paths.fixDataYamlFolder);
if (fixDataFolder.exists) {
_analyzeFixDataFolder(driver, fixDataFolder, packageName);
}
@@ -152,7 +152,7 @@ class MigrateHandler
);
}
var pubspecFile = resource.getChildAssumingFile(file_paths.pubspecYaml);
var pubspecFile = resource.getFile(file_paths.pubspecYaml);
if (!pubspecFile.exists) {
return error(
ErrorCodes.InvalidParams,
@@ -39,8 +39,8 @@ class PluginLocator {
return _pluginMap.putIfAbsent(packageRoot, () {
var pluginFolder = resourceProvider
.getFolder(packageRoot)
.getChildAssumingFolder(toolsFolderName)
.getChildAssumingFolder(defaultPluginFolderName);
.getFolder(toolsFolderName)
.getFolder(defaultPluginFolderName);
return pluginFolder.exists ? pluginFolder.path : null;
});
}
@@ -327,7 +327,7 @@ class PluginManager {
@visibleForTesting bool builtAsAot = _builtAsAot,
}) {
var pluginFolder = _resourceProvider.getFolder(pluginPath);
var pubspecFile = pluginFolder.getChildAssumingFile(file_paths.pubspecYaml);
var pubspecFile = pluginFolder.getFile(file_paths.pubspecYaml);
if (!pubspecFile.exists) {
// If there's no pubspec file, then we don't need to copy the package
// because we won't be running pub.
@@ -359,9 +359,7 @@ class PluginManager {
var parentFolder = pluginStateFolder(pluginPath);
if (parentFolder.exists) {
var executionFolder = parentFolder.getChildAssumingFolder(
pluginFolder.shortName,
);
var executionFolder = parentFolder.getFolder(pluginFolder.shortName);
return _computeFiles(
executionFolder,
builtAsAot: builtAsAot,
@@ -399,7 +397,7 @@ class PluginManager {
throw PluginException('No state location, so plugin could not be copied');
}
var stateName = _uniqueDirectoryName(pluginPath);
return stateFolder.getChildAssumingFolder(stateName);
return stateFolder.getFolder(stateName);
}
/// The path to the "plugin state" folder for a plugin at [pluginPath].
@@ -568,8 +566,8 @@ class PluginManager {
);
var stopwatch = Stopwatch()..start();
var depfile = entrypoint.parent.getChildAssumingFile('depfile.txt');
var aotSnapshotFile = entrypoint.parent.getChildAssumingFile('plugin.aot');
var depfile = entrypoint.parent.getFile('depfile.txt');
var aotSnapshotFile = entrypoint.parent.getFile('plugin.aot');
if (aotSnapshotFile.exists) {
try {
// Delete any existing AOT snapshot. On MacOS, sometimes this file
@@ -646,9 +644,7 @@ class PluginManager {
throw PluginException(exceptionReason);
}
return pluginFolder
.getChildAssumingFolder('bin')
.getChildAssumingFile('plugin.aot');
return pluginFolder.getFolder('bin').getFile('plugin.aot');
}
/// Computes the plugin files, given that the plugin should exist in
@@ -661,15 +657,13 @@ class PluginManager {
String? pubCommand,
Workspace? workspace,
}) {
var pluginFile = pluginFolder
.getChildAssumingFolder('bin')
.getChildAssumingFile('plugin.dart');
var pluginFile = pluginFolder.getFolder('bin').getFile('plugin.dart');
if (!pluginFile.exists) {
throw PluginException("File '${pluginFile.path}' does not exist.");
}
File? packageConfigFile = pluginFolder
.getChildAssumingFolder(file_paths.dotDartTool)
.getChildAssumingFile(file_paths.packageConfigJson);
.getFolder(file_paths.dotDartTool)
.getFile(file_paths.packageConfigJson);
if (pubCommand != null) {
var pubResult = _runPubCommand(
@@ -756,11 +750,9 @@ class PluginManager {
var pluginPath = pluginFolder.path;
var stateFolder = _resourceProvider.getStateLocation('.plugin_manager')!;
var stateName = '${_uniqueDirectoryName(pluginPath)}.packages';
var packageConfigFile = stateFolder.getChildAssumingFile(stateName);
var packageConfigFile = stateFolder.getFile(stateName);
if (!packageConfigFile.exists) {
var pluginPubspec = pluginFolder.getChildAssumingFile(
file_paths.pubspecYaml,
);
var pluginPubspec = pluginFolder.getFile(file_paths.pubspecYaml);
if (!pluginPubspec.exists) {
return null;
}
@@ -784,9 +776,7 @@ class PluginManager {
.parent
.parent;
packages.add(_Package(packageName, packageRoot));
pubspecFiles.add(
packageRoot.getChildAssumingFile(file_paths.pubspecYaml),
);
pubspecFiles.add(packageRoot.getFile(file_paths.pubspecYaml));
}
}
}
@@ -827,19 +817,15 @@ class PluginManager {
required File pluginFile,
required Folder pluginFolder,
}) {
var aotSnapshotFile = pluginFolder
.getChildAssumingFolder('bin')
.getChildAssumingFile('plugin.aot');
var aotSnapshotFile = pluginFolder.getFolder('bin').getFile('plugin.aot');
if (!aotSnapshotFile.exists) return null;
var snapshotModificationStamp = aotSnapshotFile.modificationStamp;
if (pluginFile.modificationStamp > snapshotModificationStamp) return null;
var pubspecFile = pluginFolder.getChildAssumingFile(file_paths.pubspecYaml);
var pubspecFile = pluginFolder.getFile(file_paths.pubspecYaml);
if (pubspecFile.modificationStamp > snapshotModificationStamp) return null;
var depfile = pluginFolder
.getChildAssumingFolder('bin')
.getChildAssumingFile('depfile.txt');
var depfile = pluginFolder.getFolder('bin').getFile('depfile.txt');
if (!depfile.exists) return null;
var content = depfile.readAsStringSync();
@@ -135,9 +135,7 @@ class PluginWatcher implements DriverWatcher {
"context root: '${contextRoot.root.path}'",
);
sharedPluginFolder.create();
var pubspecFile = sharedPluginFolder.getChildAssumingFile(
file_paths.pubspecYaml,
);
var pubspecFile = sharedPluginFolder.getFile(file_paths.pubspecYaml);
var newPubspecContent = packageGenerator.generatePubspec();
// Only update the file if the content is different, to avoid changing the
// modification timestamp.
@@ -146,8 +144,8 @@ class PluginWatcher implements DriverWatcher {
pubspecFile.writeAsStringSync(newPubspecContent);
}
var binFolder = sharedPluginFolder.getChildAssumingFolder('bin')..create();
var entrypointFile = binFolder.getChildAssumingFile('plugin.dart');
var binFolder = sharedPluginFolder.getFolder('bin')..create();
var entrypointFile = binFolder.getFile('plugin.dart');
var newEntrypointContent = packageGenerator.generateEntrypoint();
// Only update the file if the content is different, to avoid changing the
// modification timestamp.
@@ -399,8 +399,8 @@ class BulkFixProcessor {
continue;
}
var libPath = package.root.getChildAssumingFolder('lib');
var binPath = package.root.getChildAssumingFolder('bin');
var libPath = package.root.getFolder('lib');
var binPath = package.root.getFolder('bin');
var pubspecDeps = packageToDeps.putIfAbsent(
package,
@@ -53,7 +53,7 @@ class UpdateSdkConstraints extends ResolvedCorrectionProducer {
File? _findPubspecFile() {
var file = resourceProvider.getFile(this.file);
for (var folder in file.parent.withAncestors) {
var pubspecFile = folder.getChildAssumingFile(file_paths.pubspecYaml);
var pubspecFile = folder.getFile(file_paths.pubspecYaml);
if (pubspecFile.exists) {
return pubspecFile;
}
@@ -57,7 +57,7 @@ class TransformSetManager {
} else {
var sdkRoot = analysisContext.sdkRoot;
if (sdkRoot != null) {
var file = sdkRoot.getChildAssumingFile('lib/_internal/$dataFileName');
var file = sdkRoot.getFile('lib/_internal/$dataFileName');
var transformSet = _loadTransformSet(file, null);
if (transformSet != null) {
transformSets.add(transformSet);
@@ -74,12 +74,12 @@ class TransformSetManager {
packageName ??= folder.parent.shortName;
var transformSets = <TransformSet>[];
var file = folder.getChildAssumingFile(dataFileName);
var file = folder.getFile(dataFileName);
var transformSet = _loadTransformSet(file, packageName);
if (transformSet != null) {
transformSets.add(transformSet);
}
var childFolder = folder.getChildAssumingFolder(dataFolderName);
var childFolder = folder.getFolder(dataFolderName);
if (childFolder.exists) {
_loadTransforms(transformSets, childFolder, packageName);
}
@@ -193,7 +193,7 @@ class PubPackageService {
var cacheFolder = resourceProvider.getStateLocation(
'.pub-package-details-cache',
)!..create();
return cacheFolder.getChildAssumingFile('packages.json');
return cacheFolder.getFile('packages.json');
}
/// Begins preloading caches for package names and pub versions.
@@ -26,9 +26,7 @@ abstract class UserPromptPreferences {
);
return _NotPersistableUserPromptPreferences();
}
var preferencesFile = (stateFolder..create()).getChildAssumingFile(
'preferences.json',
);
var preferencesFile = (stateFolder..create()).getFile('preferences.json');
return _PersistableUserPromptPreferences(
preferencesFile,
@@ -79,16 +79,14 @@ class ContextsPage extends DiagnosticPageWithNav {
buf.write('pubspec file: ');
buf.write(escape(workspaceFolder.path));
buf.write('$separator<wbr>');
var pubspecPath = workspaceFolder
.getChildAssumingFile(file_paths.pubspecYaml)
.path;
var pubspecPath = workspaceFolder.getFile(file_paths.pubspecYaml).path;
buf.writeln(formatContentsLink(pubspecPath, file_paths.pubspecYaml));
}
}
var packageConfig = workspaceFolder
.getChildAssumingFolder(file_paths.dotDartTool)
.getChildAssumingFile(file_paths.packageConfigJson);
.getFolder(file_paths.dotDartTool)
.getFile(file_paths.packageConfigJson);
buf.writeln(
formatOption('Has package_config.json file', packageConfig.exists),
);
@@ -34,7 +34,7 @@ class ReanalyzeTest extends PubPackageAnalysisServerTest {
}
Future<void> test_reanalyze() async {
var b = getFolder(testPackageLibPath).parent.getChildAssumingFile('b.dart');
var b = getFolder(testPackageLibPath).parent.getFile('b.dart');
var file = newFile('$testPackageTestPath/a.dart', r'''
import '../b.dart';
@@ -51,9 +51,9 @@ class SetPriorityFilesTest extends PubPackageAnalysisServerTest {
addTestFile('');
// set priority files
var file = sdkRoot
.getChildAssumingFolder('lib')
.getChildAssumingFolder('convert')
.getChildAssumingFile('convert.dart');
.getFolder('lib')
.getFolder('convert')
.getFile('convert.dart');
var response = await _setPriorityFile(file);
expect(response, isResponseSuccess('1'));
// verify
@@ -93,8 +93,8 @@ mixin ConfigurationFilesMixin on MockPackagesMixin {
);
var flutterTestRoot = resourceProvider.getFolder(flutterTestRootPath);
var libFolder = flutterTestRoot.getChildAssumingFolder('lib')..create();
libFolder.getChildAssumingFile('flutter_test.dart').writeAsStringSync(r'''
var libFolder = flutterTestRoot.getFolder('lib')..create();
libFolder.getFile('flutter_test.dart').writeAsStringSync(r'''
void test(Object description, dynamic Function() body) {}
void group(Object description, void Function() body) {}
@@ -118,11 +118,10 @@ void main() {
var content = config.toContent();
var projectFolder = resourceProvider.getFolder(projectFolderPath);
var dartToolFolder = projectFolder.getChildAssumingFolder(
file_paths.dotDartTool,
)..create();
var dartToolFolder = projectFolder.getFolder(file_paths.dotDartTool)
..create();
dartToolFolder
.getChildAssumingFile(file_paths.packageConfigJson)
.getFile(file_paths.packageConfigJson)
.writeAsStringSync(content);
}
@@ -28,8 +28,8 @@ void buildTests({required String packagePath}) {
var libFolder = provider
.getFolder(pkgRootPath)
.getChildAssumingFolder(packagePath)
.getChildAssumingFolder('lib');
.getFolder(packagePath)
.getFolder('lib');
for (var file in libFolder.allFiles) {
if (file_paths.isDart(pathContext, file.path)) {
+4 -2
View File
@@ -4702,9 +4702,11 @@ package:analyzer/file_system/file_system.dart:
copyTo (method: Folder Function(Folder))
create (method: void Function())
getChild (method: Resource Function(String))
getChildAssumingFile (method: File Function(String))
getChildAssumingFolder (method: Folder Function(String))
getChildAssumingFile (method: File Function(String), deprecated)
getChildAssumingFolder (method: Folder Function(String), deprecated)
getChildren (method: List<Resource> Function())
getFile (method: File Function(String))
getFolder (method: Folder Function(String))
watch (method: ResourceWatcher Function())
Link (class extends Object, abstract):
new (constructor: Link Function())
+32 -9
View File
@@ -94,19 +94,26 @@ abstract class Folder implements Resource {
void create();
/// Return an existing child [Resource] with the given [relPath].
/// Return a not existing [File] if no such child exist.
///
/// Return a non-existing [File] if no such child exists.
Resource getChild(String relPath);
/// Return a [File] representing a child [Resource] with the given
/// [relPath]. This call does not check whether a file with the given name
/// exists on the filesystem - client must call the [File]'s `exists` getter
/// to determine whether the folder actually exists.
/// Return a [File] representing a child at the given [relPath].
///
/// This call does not check whether a file exists at the given path; clients
/// must call the [File]'s `exists` getter to determine whether the file
/// actually exists. If a folder exists at the path, the returned [File]'s
/// `exists` getter returns `false`.
@Deprecated('Use getFile instead.')
File getChildAssumingFile(String relPath);
/// Return a [Folder] representing a child [Resource] with the given
/// [relPath]. This call does not check whether a folder with the given name
/// exists on the filesystem--client must call the [Folder]'s `exists` getter
/// to determine whether the folder actually exists.
/// Return a [Folder] representing a child at the given [relPath].
///
/// This call does not check whether a folder exists at the given path;
/// clients must call the [Folder]'s `exists` getter to determine whether the
/// folder actually exists. If a file exists at the path, the returned
/// [Folder]'s `exists` getter returns `false`.
@Deprecated('Use getFolder instead.')
Folder getChildAssumingFolder(String relPath);
/// Return a list of existing direct children [Resource]s (folders and files)
@@ -115,6 +122,22 @@ abstract class Folder implements Resource {
/// On I/O errors, this will throw [FileSystemException].
List<Resource> getChildren();
/// Return a [File] representing a child at the given [relPath].
///
/// This call does not check whether a file exists at the given path; clients
/// must call the [File]'s `exists` getter to determine whether the file
/// actually exists. If a folder exists at the path, the returned [File]'s
/// `exists` getter returns `false`.
File getFile(String relPath);
/// Return a [Folder] representing a child at the given [relPath].
///
/// This call does not check whether a folder exists at the given path;
/// clients must call the [Folder]'s `exists` getter to determine whether the
/// folder actually exists. If a file exists at the path, the returned
/// [Folder]'s `exists` getter returns `false`.
Folder getFolder(String relPath);
/// Watch for changes to the files inside this folder (and in any nested
/// folders, including folders reachable via links).
///
@@ -360,7 +360,7 @@ class _MemoryFile extends _MemoryResource implements File {
@override
File copyTo(Folder parentFolder) {
parentFolder.create();
File destination = parentFolder.getChildAssumingFile(shortName);
File destination = parentFolder.getFile(shortName);
destination.writeAsBytesSync(readAsBytesSync());
return destination;
}
@@ -453,7 +453,7 @@ class _MemoryFolder extends _MemoryResource implements Folder {
@override
Folder copyTo(Folder parentFolder) {
Folder destination = parentFolder.getChildAssumingFolder(shortName);
Folder destination = parentFolder.getFolder(shortName);
destination.create();
for (Resource child in getChildren()) {
child.copyTo(destination);
@@ -477,16 +477,16 @@ class _MemoryFolder extends _MemoryResource implements Folder {
return provider.getResource(path);
}
@Deprecated('Use getFile instead.')
@override
_MemoryFile getChildAssumingFile(String relPath) {
var path = canonicalizePath(relPath);
return _MemoryFile(provider, path);
return getFile(relPath);
}
@Deprecated('Use getFolder instead.')
@override
_MemoryFolder getChildAssumingFolder(String relPath) {
var path = canonicalizePath(relPath);
return _MemoryFolder(provider, path);
return getFolder(relPath);
}
@override
@@ -531,6 +531,18 @@ class _MemoryFolder extends _MemoryResource implements Folder {
return children;
}
@override
_MemoryFile getFile(String relPath) {
var path = canonicalizePath(relPath);
return _MemoryFile(provider, path);
}
@override
_MemoryFolder getFolder(String relPath) {
var path = canonicalizePath(relPath);
return _MemoryFolder(provider, path);
}
@override
bool isOrContains(String path) {
if (path == this.path) {
@@ -262,7 +262,7 @@ class _OverlayFolder extends _OverlayResource implements Folder {
@override
Folder copyTo(Folder parentFolder) {
Folder destination = parentFolder.getChildAssumingFolder(shortName);
Folder destination = parentFolder.getFolder(shortName);
destination.create();
for (Resource child in getChildren()) {
child.copyTo(destination);
@@ -279,13 +279,17 @@ class _OverlayFolder extends _OverlayResource implements Folder {
Resource getChild(String relPath) =>
_OverlayResource._from(provider, _folder.getChild(relPath));
@Deprecated('Use getFile instead.')
@override
File getChildAssumingFile(String relPath) =>
_OverlayFile(provider, _folder.getChildAssumingFile(relPath));
File getChildAssumingFile(String relPath) {
return getFile(relPath);
}
@Deprecated('Use getFolder instead.')
@override
Folder getChildAssumingFolder(String relPath) =>
_OverlayFolder(provider, _folder.getChildAssumingFolder(relPath));
Folder getChildAssumingFolder(String relPath) {
return getFolder(relPath);
}
@override
List<Resource> getChildren() {
@@ -313,6 +317,14 @@ class _OverlayFolder extends _OverlayResource implements Folder {
return children.values.toList();
}
@override
File getFile(String relPath) =>
_OverlayFile(provider, _folder.getFile(relPath));
@override
Folder getFolder(String relPath) =>
_OverlayFolder(provider, _folder.getFolder(relPath));
@override
ResourceWatcher watch() => _folder.watch();
}
@@ -126,7 +126,7 @@ class _PhysicalFile extends _PhysicalResource implements File {
@override
File copyTo(Folder parentFolder) {
parentFolder.create();
File destination = parentFolder.getChildAssumingFile(shortName);
File destination = parentFolder.getFile(shortName);
destination.writeAsBytesSync(readAsBytesSync());
return destination;
}
@@ -231,7 +231,7 @@ class _PhysicalFolder extends _PhysicalResource implements Folder {
@override
Folder copyTo(Folder parentFolder) {
Folder destination = parentFolder.getChildAssumingFolder(shortName);
Folder destination = parentFolder.getFolder(shortName);
destination.create();
for (Resource child in getChildren()) {
child.copyTo(destination);
@@ -250,18 +250,16 @@ class _PhysicalFolder extends _PhysicalResource implements Folder {
return PhysicalResourceProvider.INSTANCE.getResource(canonicalPath);
}
@Deprecated('Use getFile instead.')
@override
_PhysicalFile getChildAssumingFile(String relPath) {
String canonicalPath = canonicalizePath(relPath);
io.File file = io.File(canonicalPath);
return _PhysicalFile(file);
return getFile(relPath);
}
@Deprecated('Use getFolder instead.')
@override
_PhysicalFolder getChildAssumingFolder(String relPath) {
String canonicalPath = canonicalizePath(relPath);
io.Directory directory = io.Directory(canonicalPath);
return _PhysicalFolder(directory);
return getFolder(relPath);
}
@override
@@ -285,6 +283,20 @@ class _PhysicalFolder extends _PhysicalResource implements Folder {
}
}
@override
_PhysicalFile getFile(String relPath) {
String canonicalPath = canonicalizePath(relPath);
io.File file = io.File(canonicalPath);
return _PhysicalFile(file);
}
@override
_PhysicalFolder getFolder(String relPath) {
String canonicalPath = canonicalizePath(relPath);
io.Directory directory = io.Directory(canonicalPath);
return _PhysicalFolder(directory);
}
@override
bool isOrContains(String path) {
if (path == this.path) {
@@ -16,7 +16,7 @@ export 'package:analyzer/analysis_rule/analysis_rule.dart';
bool _isInLibDir(String? filePath, WorkspacePackage? package) {
if (package == null) return false;
if (filePath == null) return false;
var libDir = package.root.getChildAssumingFolder('lib');
var libDir = package.root.getFolder('lib');
return libDir.contains(filePath);
}
+1 -1
View File
@@ -14,7 +14,7 @@ const String _embedderFileName = '_embedder.yaml';
/// If the file can be found, and contains a top level [YamlMap], then
/// the [YamlMap] is returned. Otherwise, `null`` is returned.
YamlMap? locateEmbedderYamlFor(Folder libFolder) {
File file = libFolder.getChildAssumingFile(_embedderFileName);
File file = libFolder.getFile(_embedderFileName);
try {
var embedderYaml = file.readAsStringSync();
try {
+2 -2
View File
@@ -15,8 +15,8 @@ Packages findPackagesFrom(ResourceProvider provider, Resource start) {
var startFolder = start is Folder ? start : start.parent;
for (var current in startFolder.withAncestors) {
var jsonFile = current
.getChildAssumingFolder('.dart_tool')
.getChildAssumingFile('package_config.json');
.getFolder('.dart_tool')
.getFile('package_config.json');
if (jsonFile.exists) {
return parsePackageConfigJsonFile(provider, jsonFile);
}
@@ -623,8 +623,8 @@ class _ContextLocator {
/// folder does not contain a package config file.
File? _getPackageConfigFile(Folder folder) {
var file = folder
.getChildAssumingFolder(file_paths.dotDartTool)
.getChildAssumingFile(file_paths.packageConfigJson);
.getFolder(file_paths.dotDartTool)
.getFile(file_paths.packageConfigJson);
if (file.exists) {
return file;
}
@@ -653,9 +653,7 @@ class _ContextLocator {
Set<Folder> _loadWorkspaceDetailsFromPubspec(String root) {
var result = <Folder>{};
var rootFolder = _resourceProvider.getFolder(root);
var rootPubspecFile = rootFolder.getChildAssumingFile(
file_paths.pubspecYaml,
);
var rootPubspecFile = rootFolder.getFile(file_paths.pubspecYaml);
if (rootPubspecFile.exists) {
var rootPubspec = Pubspec.parse(
rootPubspecFile.readAsStringSync(),
@@ -847,7 +845,7 @@ class _ContextLocator {
workspaceResolutionRootMap[location.workspace.root] ?? [],
);
} else {
var pubspecFile = folder.getChildAssumingFile(file_paths.pubspecYaml);
var pubspecFile = folder.getFile(file_paths.pubspecYaml);
if (pubspecFile.exists) {
var pubspec = Pubspec.parse(
pubspecFile.readAsStringSync(),
@@ -69,9 +69,9 @@ class _PubFilter implements FileStateFilter {
factory _PubFilter(PubPackage package, String path) {
var packageRootFolder = package.root;
var inLibOrEntryPoint =
packageRootFolder.getChildAssumingFolder('lib').contains(path) ||
packageRootFolder.getChildAssumingFolder('bin').contains(path) ||
packageRootFolder.getChildAssumingFolder('web').contains(path);
packageRootFolder.getFolder('lib').contains(path) ||
packageRootFolder.getFolder('bin').contains(path) ||
packageRootFolder.getFolder('web').contains(path);
var dependencies = <String>{};
var pubspec = package.pubspec;
+18 -23
View File
@@ -223,8 +223,8 @@ class EmbedderSdk extends AbstractDartSdk {
var embeddedFolder = coreFile.parent.parent;
try {
return embeddedFolder
.getChildAssumingFolder('_internal')
.getChildAssumingFile('allowed_experiments.json')
.getFolder('_internal')
.getFile('allowed_experiments.json')
.readAsStringSync();
} catch (_) {}
}
@@ -400,9 +400,9 @@ class FolderBasedDartSdk extends AbstractDartSdk {
@override
String get allowedExperimentsJson {
return _sdkDirectory
.getChildAssumingFolder('lib')
.getChildAssumingFolder('_internal')
.getChildAssumingFile('allowed_experiments.json')
.getFolder('lib')
.getFolder('_internal')
.getFile('allowed_experiments.json')
.readAsStringSync();
}
@@ -410,14 +410,13 @@ class FolderBasedDartSdk extends AbstractDartSdk {
Folder get directory => _sdkDirectory;
/// Return the directory containing documentation for the SDK.
Folder get docDirectory =>
_sdkDirectory.getChildAssumingFolder(_docsDirectoryName);
Folder get docDirectory => _sdkDirectory.getFolder(_docsDirectoryName);
@override
Version get languageVersion {
if (_languageVersion == null) {
var sdkVersionStr = _sdkDirectory
.getChildAssumingFile(_versionFileName)
.getFile(_versionFileName)
.readAsStringSync();
_languageVersion = languageVersionFromSdkVersion(sdkVersionStr);
}
@@ -427,17 +426,15 @@ class FolderBasedDartSdk extends AbstractDartSdk {
/// Return the directory within the SDK directory that contains the libraries.
Folder get libraryDirectory {
return _libraryDirectory ??= _sdkDirectory.getChildAssumingFolder(
_libDirectoryName,
);
return _libraryDirectory ??= _sdkDirectory.getFolder(_libDirectoryName);
}
/// Return the file containing the Pub executable, or `null` if it does not
/// exist.
File get pubExecutable {
return _pubExecutable ??= _sdkDirectory
.getChildAssumingFolder(_binDirectoryName)
.getChildAssumingFile(
.getFolder(_binDirectoryName)
.getFile(
OSUtilities.isWindows() ? _pubExecutableNameWin : _pubExecutableName,
);
}
@@ -447,7 +444,7 @@ class FolderBasedDartSdk extends AbstractDartSdk {
@override
String get sdkVersion {
if (_sdkVersion == null) {
File revisionFile = _sdkDirectory.getChildAssumingFile(_versionFileName);
File revisionFile = _sdkDirectory.getFile(_versionFileName);
try {
String revision = revisionFile.readAsStringSync();
_sdkVersion = revision.trim();
@@ -461,13 +458,11 @@ class FolderBasedDartSdk extends AbstractDartSdk {
/// Determine the search order for trying to locate the [_librariesFile].
Iterable<File> get _libraryMapLocations sync* {
yield libraryDirectory
.getChildAssumingFolder(_internalDir)
.getChildAssumingFolder(_sdkLibraryMetadataDir)
.getChildAssumingFolder(_sdkLibraryMetadataLibDir)
.getChildAssumingFile(_librariesFile);
yield libraryDirectory
.getChildAssumingFolder(_internalDir)
.getChildAssumingFile(_librariesFile);
.getFolder(_internalDir)
.getFolder(_sdkLibraryMetadataDir)
.getFolder(_sdkLibraryMetadataLibDir)
.getFile(_librariesFile);
yield libraryDirectory.getFolder(_internalDir).getFile(_librariesFile);
}
/// Return info for debugging https://github.com/dart-lang/sdk/issues/35226.
@@ -534,9 +529,9 @@ class FolderBasedDartSdk extends AbstractDartSdk {
return null;
}
try {
File file = libraryDirectory.getChildAssumingFile(library.path);
File file = libraryDirectory.getFile(library.path);
if (relativePath.isNotEmpty) {
File relativeFile = file.parent.getChildAssumingFile(relativePath);
File relativeFile = file.parent.getFile(relativePath);
if (relativeFile.path == file.path) {
// The relative file is the library, so return a Source for the
// library rather than the part format.
@@ -87,7 +87,7 @@ bool _assetExistsAtPath(PubspecValidationContext ctx, String assetPath) {
}
for (var child in assetFolder.getChildren()) {
if (child is Folder) {
var innerFile = child.getChildAssumingFile(fileName);
var innerFile = child.getFile(fileName);
if (innerFile.exists) {
return true;
}
@@ -86,7 +86,7 @@ class PackageMapUriResolver extends UriResolver {
if (packageDirs != null) {
Folder packageDir = packageDirs.single;
String relPath = pathSegments.skip(1).join('/');
File file = packageDir.getChildAssumingFile(relPath);
File file = packageDir.getFile(relPath);
return FileSource(file, uri);
}
return null;
@@ -11,8 +11,8 @@ import 'package:analyzer/file_system/file_system.dart';
class MockPackages {
/// Create a fake 'angular' package that can be used by tests.
static void addAngularMetaPackageFiles(Folder rootFolder) {
var libFolder = rootFolder.getChildAssumingFolder('lib');
libFolder.getChildAssumingFile('angular_meta.dart').writeAsStringSync(r'''
var libFolder = rootFolder.getFolder('lib');
libFolder.getFile('angular_meta.dart').writeAsStringSync(r'''
library angular.meta;
const _VisibleForTemplate visibleForTemplate = const _VisibleForTemplate();
@@ -31,8 +31,8 @@ class _VisibleOutsideTemplate {
/// Create a fake 'ffi' package that can be used by tests.
static void addFfiPackageFiles(Folder rootFolder) {
var libFolder = rootFolder.getChildAssumingFolder('lib');
libFolder.getChildAssumingFile('ffi.dart').writeAsStringSync(r'''
var libFolder = rootFolder.getFolder('lib');
libFolder.getFile('ffi.dart').writeAsStringSync(r'''
import 'dart:ffi';
const Allocator calloc = _CallocAllocator();
@@ -58,8 +58,8 @@ class _CallocAllocator implements Allocator {
/// Create a fake 'js' package that can be used by tests.
static void addJsPackageFiles(Folder rootFolder) {
var libFolder = rootFolder.getChildAssumingFolder('lib');
libFolder.getChildAssumingFile('js.dart').writeAsStringSync(r'''
var libFolder = rootFolder.getFolder('lib');
libFolder.getFile('js.dart').writeAsStringSync(r'''
library js;
// ignore: EXPORT_INTERNAL_LIBRARY
@@ -69,8 +69,8 @@ export 'dart:_js_annotations' show JS, staticInterop;
/// Create a fake 'kernel' package that can be used by tests.
static void addKernelPackageFiles(Folder rootFolder) {
var libFolder = rootFolder.getChildAssumingFolder('lib');
libFolder.getChildAssumingFile('ast.dart').writeAsStringSync(r'''
var libFolder = rootFolder.getFolder('lib');
libFolder.getFile('ast.dart').writeAsStringSync(r'''
library kernel.ast;
abstract class Node {}
@@ -81,9 +81,9 @@ class InterfaceType extends DartType {}
/// Create a fake 'meta' package that can be used by tests.
static void addMetaPackageFiles(Folder rootFolder) {
var libFolder = rootFolder.getChildAssumingFolder('lib');
var libFolder = rootFolder.getFolder('lib');
libFolder.create();
libFolder.getChildAssumingFile('meta.dart').writeAsStringSync(r'''
libFolder.getFile('meta.dart').writeAsStringSync(r'''
library meta;
import 'meta_meta.dart';
@@ -323,7 +323,7 @@ class _VisibleForTesting {
const _VisibleForTesting();
}
''');
libFolder.getChildAssumingFile('meta_meta.dart').writeAsStringSync(r'''
libFolder.getFile('meta_meta.dart').writeAsStringSync(r'''
library meta_meta;
@Target({TargetKind.classType})
@@ -1920,19 +1920,19 @@ void createMockSdk({
required Folder root,
@internal List<MockSdkLibrary> additionalLibraries = const [],
}) {
var lib = root.getChildAssumingFolder('lib');
var libInternal = lib.getChildAssumingFolder('_internal');
var lib = root.getFolder('lib');
var libInternal = lib.getFolder('_internal');
var currentVersion = ExperimentStatus.currentVersion;
var currentVersionStr = '${currentVersion.major}.${currentVersion.minor}.0';
root.getChildAssumingFile('version').writeAsStringSync(currentVersionStr);
root.getFile('version').writeAsStringSync(currentVersionStr);
var librariesBuffer = StringBuffer();
librariesBuffer.writeln('const Map<String, LibraryInfo> libraries = const {');
for (var library in [..._libraries, ...additionalLibraries]) {
for (var unit in library.units) {
var file = lib.getChildAssumingFile(unit.path);
var file = lib.getFile(unit.path);
file.writeAsStringSync(unit.content);
}
librariesBuffer.writeln(
@@ -1943,11 +1943,11 @@ void createMockSdk({
librariesBuffer.writeln('};');
libInternal
.getChildAssumingFile('sdk_library_metadata/lib/libraries.dart')
.getFile('sdk_library_metadata/lib/libraries.dart')
.writeAsStringSync('$librariesBuffer');
libInternal
.getChildAssumingFile('allowed_experiments.json')
.getFile('allowed_experiments.json')
.writeAsStringSync(
json.encode({
'version': 1,
@@ -27,7 +27,7 @@ extension FolderExtension on Folder {
/// If the target contains an existing file with the given [name], then
/// returns it. Otherwise, return `null`.
File? getExistingFile(String name) {
var file = getChildAssumingFile(name);
var file = getFile(name);
return file.exists ? file : null;
}
}
+30 -32
View File
@@ -372,7 +372,7 @@ class BlazeWorkspace extends Workspace
return null;
}
if (folder.getChildAssumingFile(_buildFileName).exists) {
if (folder.getFile(_buildFileName).exists) {
// Found the BUILD file, denoting a Dart package.
return packageRootedAt(folder);
}
@@ -467,7 +467,7 @@ class BlazeWorkspace extends Workspace
for (var folder in startFolder.withAncestors) {
var parent = folder.parent;
var blazeOutFolder = parent.getChildAssumingFolder('blaze-out');
var blazeOutFolder = parent.getFolder('blaze-out');
if (blazeOutFolder.exists) {
// Found the "out" folder; must be a Blaze workspace.
String root = parent.path;
@@ -484,7 +484,7 @@ class BlazeWorkspace extends Workspace
}
// Found the WORKSPACE file, must be a non-git workspace.
if (folder.getChildAssumingFile(file_paths.blazeWorkspaceMarker).exists) {
if (folder.getFile(file_paths.blazeWorkspaceMarker).exists) {
String root = folder.path;
var binPaths = _findBinFolderPaths(folder);
binPaths = binPaths..add(context.join(root, 'blaze-bin'));
@@ -509,8 +509,8 @@ class BlazeWorkspace extends Workspace
/// available.
static BlazeWorkspace forBuild({required Folder root}) {
var provider = root.provider;
var blazeBin = root.getChildAssumingFolder('blaze-bin');
var blazeGenfiles = root.getChildAssumingFolder('blaze-genfiles');
var blazeBin = root.getFolder('blaze-bin');
var blazeGenfiles = root.getFolder('blaze-genfiles');
var binPaths = _findBinFolderPaths(root);
binPaths.add(blazeBin.path);
@@ -536,7 +536,7 @@ class BlazeWorkspace extends Workspace
/// If no "bin" folder is found in any of those locations, empty list is
/// returned.
static List<String> _findBinFolderPaths(Folder root) {
var out = root.getChildAssumingFolder('blaze-out');
var out = root.getFolder('blaze-out');
if (!out.exists) {
return [];
}
@@ -545,7 +545,7 @@ class BlazeWorkspace extends Workspace
for (var child in out.getChildren().whereType<Folder>()) {
// Children are folders denoting architectures and build flags, like
// 'k8-opt', 'k8-fastbuild', perhaps 'host'.
Folder possibleBin = child.getChildAssumingFolder('bin');
Folder possibleBin = child.getFolder('bin');
if (possibleBin.exists) {
binPaths.add(possibleBin.path);
}
@@ -647,58 +647,58 @@ class BlazeWorkspacePackage extends WorkspacePackageImpl {
return true;
}
var libFolder = root.getChildAssumingFolder('lib');
var libSrcFolder = libFolder.getChildAssumingFolder('src');
var libSrcTestingFolder = libSrcFolder.getChildAssumingFolder('testing');
var libFolder = root.getFolder('lib');
var libSrcFolder = libFolder.getFolder('src');
var libSrcTestingFolder = libSrcFolder.getFolder('testing');
if (libSrcTestingFolder.contains(file.path)) {
return true;
}
var libTestDriverFolder = libFolder.getChildAssumingFolder('test_driver');
var libTestDriverFolder = libFolder.getFolder('test_driver');
if (libTestDriverFolder.contains(file.path)) {
return true;
}
for (var binPath in workspace.binPaths) {
var binFolder = workspace.provider.getFolder(binPath);
var genPackageRoot = binFolder.getChildAssumingFolder(relativeRoot);
var genPackageRoot = binFolder.getFolder(relativeRoot);
if (isInTestDirectoryUnder(genPackageRoot, file)) {
return true;
}
var genLibSrcTestingFolder = genPackageRoot
.getChildAssumingFolder('lib')
.getChildAssumingFolder('src')
.getChildAssumingFolder('testing');
.getFolder('lib')
.getFolder('src')
.getFolder('testing');
if (genLibSrcTestingFolder.contains(file.path)) {
return true;
}
var genLibTestDriverFolder = genPackageRoot
.getChildAssumingFolder('lib')
.getChildAssumingFolder('test_driver');
.getFolder('lib')
.getFolder('test_driver');
if (genLibTestDriverFolder.contains(file.path)) {
return true;
}
}
var genfilesFolder = workspace.provider.getFolder(workspace.genfiles);
var genPackageRoot = genfilesFolder.getChildAssumingFolder(relativeRoot);
var genPackageRoot = genfilesFolder.getFolder(relativeRoot);
if (isInTestDirectoryUnder(genPackageRoot, file)) {
return true;
}
var genLibSrcTestingFolder = genPackageRoot
.getChildAssumingFolder('lib')
.getChildAssumingFolder('src')
.getChildAssumingFolder('testing');
.getFolder('lib')
.getFolder('src')
.getFolder('testing');
if (genLibSrcTestingFolder.contains(file.path)) {
return true;
}
var genLibTestDriverFolder = genPackageRoot
.getChildAssumingFolder('lib')
.getChildAssumingFolder('test_driver');
.getFolder('lib')
.getFolder('test_driver');
if (genLibTestDriverFolder.contains(file.path)) {
return true;
}
@@ -716,10 +716,10 @@ class BlazeWorkspacePackage extends WorkspacePackageImpl {
var filePath = filePathFromSource(source);
if (filePath == null) return false;
var libFolder = root.getChildAssumingFolder('lib');
var libFolder = root.getFolder('lib');
if (libFolder.contains(filePath)) {
// A file in "$root/lib" is public iff it is not in "$root/lib/src".
var libSrcFolder = libFolder.getChildAssumingFolder('src');
var libSrcFolder = libFolder.getFolder('src');
return !libSrcFolder.contains(filePath);
}
@@ -729,24 +729,22 @@ class BlazeWorkspacePackage extends WorkspacePackageImpl {
);
for (var binPath in workspace.binPaths) {
Folder bin = workspace.provider.getFolder(binPath);
libFolder = bin
.getChildAssumingFolder(relativeRoot)
.getChildAssumingFolder('lib');
libFolder = bin.getFolder(relativeRoot).getFolder('lib');
if (libFolder.contains(filePath)) {
// A file in "$bin/lib" is public iff it is not in "$bin/lib/src".
var libSrcFolder = libFolder.getChildAssumingFolder('src');
var libSrcFolder = libFolder.getFolder('src');
return !libSrcFolder.contains(filePath);
}
}
libFolder = workspace.provider
.getFolder(workspace.genfiles)
.getChildAssumingFolder(relativeRoot)
.getChildAssumingFolder('lib');
.getFolder(relativeRoot)
.getFolder('lib');
if (libFolder.contains(filePath)) {
// A file in "$genfiles/lib" is public iff it is not in
// "$genfiles/lib/src".
var libSrcFolder = libFolder.getChildAssumingFolder('src');
var libSrcFolder = libFolder.getFolder('src');
return !libSrcFolder.contains(filePath);
}
+5 -7
View File
@@ -90,7 +90,7 @@ class GnWorkspace extends Workspace {
return null;
}
if (folder.getChildAssumingFile(file_paths.buildGn).exists) {
if (folder.getFile(file_paths.buildGn).exists) {
return GnWorkspacePackage(folder, this);
}
}
@@ -107,7 +107,7 @@ class GnWorkspace extends Workspace {
var provider = buildGnFile.provider;
for (var folder in buildGnFile.parent.withAncestors) {
if (folder.getChildAssumingFolder(_jiriRootName).exists) {
if (folder.getFolder(_jiriRootName).exists) {
// Found the .jiri_root file, must be a non-git workspace.
String root = folder.path;
@@ -156,7 +156,7 @@ class GnWorkspace extends Workspace {
if (outDirectory == null) {
return const <File>[];
}
Folder genDir = outDirectory.getChildAssumingFolder(
Folder genDir = outDirectory.getFolder(
pathContext.join('dartlang', 'gen', sourceDirectory),
);
if (!genDir.exists) {
@@ -243,11 +243,9 @@ class GnWorkspacePackage extends WorkspacePackageImpl {
bool sourceIsInPublicApi(Source source) {
var filePath = filePathFromSource(source);
if (filePath == null) return false;
var libFolder = root.getChildAssumingFolder('lib');
var libFolder = root.getFolder('lib');
if (libFolder.contains(filePath)) {
var libSrcFolder = root
.getChildAssumingFolder('lib')
.getChildAssumingFolder('src');
var libSrcFolder = root.getFolder('lib').getFolder('src');
return !libSrcFolder.contains(filePath);
}
return false;
+8 -10
View File
@@ -212,9 +212,7 @@ class PackageConfigWorkspace extends SimpleWorkspace {
this.packageConfigFile,
) {
_packageConfigContent = packageConfigFile.readAsStringSync();
var pubspecFile = provider
.getFolder(root)
.getChildAssumingFile(file_paths.pubspecYaml);
var pubspecFile = provider.getFolder(root).getFile(file_paths.pubspecYaml);
if (pubspecFile.exists) {
var pubspec = Pubspec.parse(
pubspecFile.readAsStringSync(),
@@ -340,7 +338,7 @@ class PackageConfigWorkspace extends SimpleWorkspace {
}
return package;
}
var pubspec = current.getChildAssumingFile(file_paths.pubspecYaml);
var pubspec = current.getFile(file_paths.pubspecYaml);
if (pubspec.exists) {
if (_isInThirdPartyDart(pubspec)) {
return null;
@@ -385,8 +383,8 @@ class PackageConfigWorkspace extends SimpleWorkspace {
var start = provider.getFolder(filePath);
for (var current in start.withAncestors) {
var packageConfigFile = current
.getChildAssumingFolder(file_paths.dotDartTool)
.getChildAssumingFile(file_paths.packageConfigJson);
.getFolder(file_paths.dotDartTool)
.getFile(file_paths.packageConfigJson);
if (packageConfigFile.exists) {
var root = current.path;
return PackageConfigWorkspace(
@@ -500,10 +498,10 @@ class PubPackage extends WorkspacePackageImpl {
}
var generatedRoot = _generatedPathParts.fold(root, (current, segment) {
return current.getChildAssumingFolder(segment);
return current.getFolder(segment);
});
return generatedRoot.getChildAssumingFolder(packageName);
return generatedRoot.getFolder(packageName);
}
@override
@@ -551,13 +549,13 @@ class PubPackage extends WorkspacePackageImpl {
if (filePath == null) return false;
bool sourceIsInPublicApiUnder(Folder root, String filePath) {
var libFolder = root.getChildAssumingFolder('lib');
var libFolder = root.getFolder('lib');
if (!libFolder.contains(filePath)) {
return false;
}
// A file in "$root/lib" is public iff it is not in "$root/lib/src".
var libSrcFolder = libFolder.getChildAssumingFolder('src');
var libSrcFolder = libFolder.getFolder('src');
return !libSrcFolder.contains(filePath);
}
@@ -100,8 +100,8 @@ abstract class WorkspacePackageImpl implements WorkspacePackage {
/// listed in the 'dev_dependencies' section of the 'pubspec.yaml' file.
bool canBeDevDependency(Source source) {
var cuPath = source.fullName;
var libDir = root.getChildAssumingFolder('lib');
var binDir = root.getChildAssumingFolder('bin');
var libDir = root.getFolder('lib');
var binDir = root.getFolder('bin');
return !(libDir.contains(cuPath) || binDir.contains(cuPath));
}
@@ -126,7 +126,7 @@ abstract class WorkspacePackageImpl implements WorkspacePackage {
@protected
bool isInTestDirectoryUnder(Folder root, File file) {
return _testDirectoryNames.any((name) {
return root.getChildAssumingFolder(name).contains(file.path);
return root.getFolder(name).contains(file.path);
});
}
@@ -732,62 +732,10 @@ mixin FolderTestMixin implements FileSystemTestSupport {
expect(child.exists, isTrue);
}
test_getChildAssumingFile_doesNotExist() {
Folder folder = getFolder(exists: true);
File child = folder.getChildAssumingFile('myFile');
expect(child, isNotNull);
expect(child.exists, isFalse);
}
test_getChildAssumingFile_file() {
Folder folder = getFolder(exists: true);
getFile(exists: true, filePath: join(defaultFolderPath, 'myFile'));
File child = folder.getChildAssumingFile('myFile');
expect(child, isNotNull);
expect(child.exists, isTrue);
}
test_getChildAssumingFile_folder() {
Folder folder = getFolder(exists: true);
getFolder(exists: true, folderPath: join(defaultFolderPath, 'myFolder'));
File child = folder.getChildAssumingFile('myFolder');
expect(child, isNotNull);
expect(child.exists, isFalse);
}
test_getChildAssumingFolder_doesNotExist() {
Folder folder = getFolder(exists: true);
Folder child = folder.getChildAssumingFolder('myFile');
expect(child, isNotNull);
expect(child.exists, isFalse);
}
test_getChildAssumingFolder_file() {
Folder folder = getFolder(exists: true);
getFile(exists: true, filePath: join(defaultFolderPath, 'myFile'));
Folder child = folder.getChildAssumingFolder('myFile');
expect(child, isNotNull);
expect(child.exists, isFalse);
}
test_getChildAssumingFolder_folder() {
Folder folder = getFolder(exists: true);
getFolder(exists: true, folderPath: join(defaultFolderPath, 'myFolder'));
Folder child = folder.getChildAssumingFolder('myFolder');
expect(child, isNotNull);
expect(child.exists, isTrue);
}
test_getChildren_doesNotExist() {
Folder folder = getFolder(exists: true);
folder = folder.getChildAssumingFolder('no-such-folder');
folder = folder.getFolder('no-such-folder');
expect(() => folder.getChildren(), throwsA(isFileSystemException));
}
@@ -878,6 +826,58 @@ mixin FolderTestMixin implements FileSystemTestSupport {
expect(bar_b.resolveSymbolicLinksSync(), foo_b);
}
test_getFile_doesNotExist() {
Folder folder = getFolder(exists: true);
File child = folder.getFile('myFile');
expect(child, isNotNull);
expect(child.exists, isFalse);
}
test_getFile_file() {
Folder folder = getFolder(exists: true);
getFile(exists: true, filePath: join(defaultFolderPath, 'myFile'));
File child = folder.getFile('myFile');
expect(child, isNotNull);
expect(child.exists, isTrue);
}
test_getFile_folder() {
Folder folder = getFolder(exists: true);
getFolder(exists: true, folderPath: join(defaultFolderPath, 'myFolder'));
File child = folder.getFile('myFolder');
expect(child, isNotNull);
expect(child.exists, isFalse);
}
test_getFolder_doesNotExist() {
Folder folder = getFolder(exists: true);
Folder child = folder.getFolder('myFile');
expect(child, isNotNull);
expect(child.exists, isFalse);
}
test_getFolder_file() {
Folder folder = getFolder(exists: true);
getFile(exists: true, filePath: join(defaultFolderPath, 'myFile'));
Folder child = folder.getFolder('myFile');
expect(child, isNotNull);
expect(child.exists, isFalse);
}
test_getFolder_folder() {
Folder folder = getFolder(exists: true);
getFolder(exists: true, folderPath: join(defaultFolderPath, 'myFolder'));
Folder child = folder.getFolder('myFolder');
expect(child, isNotNull);
expect(child.exists, isTrue);
}
test_hashCode() {
Folder folder1 = getFolder(exists: false);
Folder folder2 = getFolder(exists: false);
@@ -559,18 +559,6 @@ class FolderTest extends OverlayTestSupport {
expect(child, _isFolder);
}
test_getChildAssumingFile() {
Folder folder = _folder(exists: true);
File child = folder.getChildAssumingFile('README.md');
expect(child, isNotNull);
}
test_getChildAssumingFolder() {
Folder folder = _folder(exists: true);
Folder child = folder.getChildAssumingFolder('lib');
expect(child, isNotNull);
}
test_getChildren_existing() {
Folder folder = _folder(exists: true);
Folder child1 = _folder(
@@ -643,6 +631,18 @@ class FolderTest extends OverlayTestSupport {
expect(children[0], _isFolder);
}
test_getFile() {
Folder folder = _folder(exists: true);
File child = folder.getFile('README.md');
expect(child, isNotNull);
}
test_getFolder() {
Folder folder = _folder(exists: true);
Folder child = folder.getFolder('lib');
expect(child, isNotNull);
}
test_isOrContains_false() {
Folder folder = _folder(exists: true);
expect(folder.isOrContains(convertPath('/foo/baz')), isFalse);
@@ -119,7 +119,7 @@ class PhysicalFileTest extends BaseTest with FileTestMixin {
test_exists_invalidPath() {
Folder folder = getFolder(exists: false);
File file = folder.getChildAssumingFile(r'\l\package:o\other.dart');
File file = folder.getFile(r'\l\package:o\other.dart');
expect(file.exists, isFalse);
}
@@ -279,7 +279,7 @@ analyzer:
YamlMap _getOptions(String posixPath) {
var folder = getFolder(posixPath);
var file = folder.getChildAssumingFile(file_paths.analysisOptionsYaml);
var file = folder.getFile(file_paths.analysisOptionsYaml);
var sourceFactory = SourceFactory([ResourceUriResolver(resourceProvider)]);
return AnalysisOptionsProvider(sourceFactory).getOptionsFromFile(file);
}
@@ -118,7 +118,7 @@ class ContextBuilderImplTest with ResourceProviderMixin {
assertEquals(context.driver.declaredVariables, declaredVariables);
expect(
context.driver.sourceFactory.dartSdk!.mapDartUri('dart:core')!.fullName,
sdkRoot.getChildAssumingFile('lib/core/core.dart').path,
sdkRoot.getFile('lib/core/core.dart').path,
);
}
@@ -140,7 +140,7 @@ class ContextBuilderImplTest with ResourceProviderMixin {
expect(context.contextRoot, contextRoot);
expect(
context.driver.sourceFactory.dartSdk!.mapDartUri('dart:core')!.fullName,
sdkRoot.getChildAssumingFile('lib/core/core.dart').path,
sdkRoot.getFile('lib/core/core.dart').path,
);
}
@@ -347,7 +347,7 @@ void f() {
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/async/async.dart').delete();
sdkRoot.getFile('lib/async/async.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
driver.addFile2(a);
@@ -362,7 +362,7 @@ void f() {
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/core/core.dart').delete();
sdkRoot.getFile('lib/core/core.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
driver.addFile2(a);
@@ -1525,10 +1525,10 @@ final v = 2;
expect(
driver.knownFiles.resources,
containsAll([
sdkRoot.getChildAssumingFile('lib/async/async.dart'),
sdkRoot.getChildAssumingFile('lib/collection/collection.dart'),
sdkRoot.getChildAssumingFile('lib/core/core.dart'),
sdkRoot.getChildAssumingFile('lib/math/math.dart'),
sdkRoot.getFile('lib/async/async.dart'),
sdkRoot.getFile('lib/collection/collection.dart'),
sdkRoot.getFile('lib/core/core.dart'),
sdkRoot.getFile('lib/math/math.dart'),
]),
);
}
@@ -1671,7 +1671,7 @@ part of 'a.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/async/async.dart').delete();
sdkRoot.getFile('lib/async/async.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getErrors('A1', a);
@@ -1689,7 +1689,7 @@ part of 'a.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/core/core.dart').delete();
sdkRoot.getFile('lib/core/core.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getErrors('A1', a);
@@ -2073,7 +2073,7 @@ void f() {
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/async/async.dart').delete();
sdkRoot.getFile('lib/async/async.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getIndex('A1', a);
@@ -2089,7 +2089,7 @@ void f() {
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/core/core.dart').delete();
sdkRoot.getFile('lib/core/core.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getIndex('A1', a);
@@ -2161,7 +2161,7 @@ class B {}
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/async/async.dart').delete();
sdkRoot.getFile('lib/async/async.dart').delete();
newFile('$testPackageLibPath/a.dart', '');
collector.getLibraryByUri('A1', 'package:test/a.dart');
@@ -2179,7 +2179,7 @@ class B {}
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/core/core.dart').delete();
sdkRoot.getFile('lib/core/core.dart').delete();
newFile('$testPackageLibPath/a.dart', '');
collector.getLibraryByUri('A1', 'package:test/a.dart');
@@ -2436,7 +2436,7 @@ part of 'a.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/async/async.dart').delete();
sdkRoot.getFile('lib/async/async.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getResolvedLibrary('A1', a);
@@ -2457,7 +2457,7 @@ part of 'a.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/core/core.dart').delete();
sdkRoot.getFile('lib/core/core.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getResolvedLibrary('A1', a);
@@ -2629,7 +2629,7 @@ part of 'a.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/async/async.dart').delete();
sdkRoot.getFile('lib/async/async.dart').delete();
newFile('$testPackageLibPath/a.dart', '');
collector.getResolvedLibraryByUri('A1', Uri.parse('package:test/a.dart'));
@@ -2650,7 +2650,7 @@ part of 'a.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/core/core.dart').delete();
sdkRoot.getFile('lib/core/core.dart').delete();
newFile('$testPackageLibPath/a.dart', '');
collector.getResolvedLibraryByUri('A1', Uri.parse('package:test/a.dart'));
@@ -2988,7 +2988,7 @@ part of 'a.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/async/async.dart').delete();
sdkRoot.getFile('lib/async/async.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getResolvedUnit('A1', a);
@@ -3009,7 +3009,7 @@ part of 'a.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/core/core.dart').delete();
sdkRoot.getFile('lib/core/core.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getResolvedUnit('A1', a);
@@ -3441,7 +3441,7 @@ import 'package:test/b.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/async/async.dart').delete();
sdkRoot.getFile('lib/async/async.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getUnitElement('A1', a);
@@ -3459,7 +3459,7 @@ import 'package:test/b.dart';
var driver = driverFor(testFile);
var collector = DriverEventCollector(driver);
sdkRoot.getChildAssumingFile('lib/core/core.dart').delete();
sdkRoot.getFile('lib/core/core.dart').delete();
var a = newFile('$testPackageLibPath/a.dart', '');
collector.getUnitElement('A1', a);
@@ -38189,7 +38189,7 @@ library;
[status] idle
''',
updateFiles: () {
var core = sdkRoot.getChildAssumingFile('lib/core/core.dart');
var core = sdkRoot.getFile('lib/core/core.dart');
var newCode = core.readAsStringSync().replaceFirst(
'abstract final class int extends num {',
'@deprecated abstract final class int extends num {',
+10 -16
View File
@@ -140,10 +140,7 @@ class FolderBasedDartSdkTest with ResourceProviderMixin {
void test_fromFile_library() {
FolderBasedDartSdk sdk = _createDartSdk();
var source = sdk.fromFileUri(
sdk.libraryDirectory
.getChildAssumingFolder("core")
.getChildAssumingFile("core.dart")
.toUri(),
sdk.libraryDirectory.getFolder("core").getFile("core.dart").toUri(),
)!;
expect(source, isNotNull);
expect(source.uri.toString(), "dart:core");
@@ -151,9 +148,9 @@ class FolderBasedDartSdkTest with ResourceProviderMixin {
void test_fromFile_library_firstExact() {
FolderBasedDartSdk sdk = _createDartSdk();
Folder dirHtml = sdk.libraryDirectory.getChildAssumingFolder("html");
Folder dirDartium = dirHtml.getChildAssumingFolder("dart2js");
File file = dirDartium.getChildAssumingFile("html_dart2js.dart");
Folder dirHtml = sdk.libraryDirectory.getFolder("html");
Folder dirDartium = dirHtml.getFolder("dart2js");
File file = dirDartium.getFile("html_dart2js.dart");
var source = sdk.fromFileUri(file.toUri())!;
expect(source, isNotNull);
expect(source.uri.toString(), "dart:html");
@@ -161,9 +158,9 @@ class FolderBasedDartSdkTest with ResourceProviderMixin {
void test_fromFile_library_html_common_dart2js() {
FolderBasedDartSdk sdk = _createDartSdk();
Folder dirHtml = sdk.libraryDirectory.getChildAssumingFolder("html");
Folder dirCommon = dirHtml.getChildAssumingFolder("html_common");
File file = dirCommon.getChildAssumingFile("html_common_dart2js.dart");
Folder dirHtml = sdk.libraryDirectory.getFolder("html");
Folder dirCommon = dirHtml.getFolder("html_common");
File file = dirCommon.getFile("html_common_dart2js.dart");
var source = sdk.fromFileUri(file.toUri())!;
expect(source, isNotNull);
expect(source.uri.toString(), "dart:html_common");
@@ -172,10 +169,7 @@ class FolderBasedDartSdkTest with ResourceProviderMixin {
void test_fromFile_part() {
FolderBasedDartSdk sdk = _createDartSdk();
var source = sdk.fromFileUri(
sdk.libraryDirectory
.getChildAssumingFolder("core")
.getChildAssumingFile("num.dart")
.toUri(),
sdk.libraryDirectory.getFolder("core").getFile("num.dart").toUri(),
)!;
expect(source, isNotNull);
expect(source.uri.toString(), "dart:core/num.dart");
@@ -255,9 +249,9 @@ class FolderBasedDartSdkTest with ResourceProviderMixin {
Folder parent = directory;
int last = segments.length - 1;
for (int i = 0; i < last; i++) {
parent = parent.getChildAssumingFolder(segments[i]);
parent = parent.getFolder(segments[i]);
}
File file = parent.getChildAssumingFile(segments[last]);
File file = parent.getFile(segments[last]);
newFile(file.path, content);
}
@@ -390,9 +390,7 @@ include: ../analysis_options.yaml
}
AnalysisOptions _getOptionsObject(String folderPath) {
var file = getFolder(
folderPath,
).getChildAssumingFile(file_paths.analysisOptionsYaml);
var file = getFolder(folderPath).getFile(file_paths.analysisOptionsYaml);
return AnalysisOptionsImpl.fromYaml(
optionsMap: provider.getOptionsFromFile(file),
file: getFile(folderPath),
+1 -1
View File
@@ -425,7 +425,7 @@ class _PackageMatcher extends Matcher {
required this.name,
required this.rootFolder,
Folder? libFolder,
}) : libFolder = libFolder ?? rootFolder.getChildAssumingFolder('lib');
}) : libFolder = libFolder ?? rootFolder.getFolder('lib');
@override
Description describe(Description description) => description
@@ -131,9 +131,7 @@ class DartDocumentLinkVisitor extends RecursiveAstVisitor<void> {
late final Folder? folderWithExamplesApi = () {
var file = resourceProvider.getFile(filePath);
for (var parent in file.parent.withAncestors) {
var apiFolder = parent
.getChildAssumingFolder('examples')
.getChildAssumingFolder('api');
var apiFolder = parent.getFolder('examples').getFolder('api');
if (apiFolder.exists) {
return parent;
}
@@ -91,12 +91,12 @@ mixin MockPackagesMixin {
Folder addFfi() {
var packageFolder = _addFiles('ffi', mock_ffi.units);
return packageFolder.getChildAssumingFolder('lib');
return packageFolder.getFolder('lib');
}
Folder addFixnum() {
var packageFolder = _addFiles('fixnum', mock_fixnum.units);
return packageFolder.getChildAssumingFolder('lib');
return packageFolder.getFolder('lib');
}
Folder addFlutter() {
@@ -111,12 +111,12 @@ mixin MockPackagesMixin {
...mock_flutter_widget_previews.units,
...mock_flutter_widgets.units,
]);
return packageFolder.getChildAssumingFolder('lib');
return packageFolder.getFolder('lib');
}
Folder addMeta() {
var packageFolder = _addFiles('meta', mock_meta.units);
return packageFolder.getChildAssumingFolder('lib');
return packageFolder.getFolder('lib');
}
Folder addTestReflectiveLoader() {
@@ -124,7 +124,7 @@ mixin MockPackagesMixin {
'test_reflective_loader',
mock_test_reflective_loader.units,
);
return packageFolder.getChildAssumingFolder('lib');
return packageFolder.getFolder('lib');
}
/// Adds a mock sky_engine package with an `_embedder.yaml` file, and returns
@@ -140,11 +140,8 @@ mixin MockPackagesMixin {
var skyEngineFolder = resourceProvider.getFolder(
resourceProvider.convertPath('$packagesRootPath/sky_engine'),
)..create();
var skyEngineLibFolder = skyEngineFolder.getChildAssumingFolder('lib')
..create();
var embedderFile = skyEngineLibFolder.getChildAssumingFile(
'_embedder.yaml',
);
var skyEngineLibFolder = skyEngineFolder.getFolder('lib')..create();
var embedderFile = skyEngineLibFolder.getFile('_embedder.yaml');
// SDK-relative paths.
var embeddedSdkLibRelativePaths = {
'dart:async': 'lib/async/async.dart',
@@ -194,7 +191,7 @@ mixin MockPackagesMixin {
Folder addVectorMath() {
var packageFolder = _addFiles('vector_math', mock_vector_math.units);
return packageFolder.getChildAssumingFolder('lib');
return packageFolder.getFolder('lib');
}
/// Adds files of the given [packageName] to the [resourceProvider].
+1 -2
View File
@@ -86,8 +86,7 @@ class VerifyTests {
);
for (var child in children) {
if (child is Folder) {
if (child.getChildAssumingFile('test_all.dart').exists &&
!isExpensive(child)) {
if (child.getFile('test_all.dart').exists && !isExpensive(child)) {
testFileNames.add('${child.shortName}/test_all.dart');
}
_buildTestsIn(session, testDirPath, child);
@@ -34,10 +34,10 @@ extension FolderExt on Folder {
}
if (entry.header.typeFlag == TypeFlag.dir) {
getChildAssumingFolder(relPath).createRecursively();
getFolder(relPath).createRecursively();
} else if (entry.header.typeFlag == TypeFlag.reg ||
entry.header.typeFlag == TypeFlag.regA) {
final file = getChildAssumingFile(relPath);
final file = getFile(relPath);
file.parent.createRecursively();
// Ensure that we copy the data, as TarReader may reuse buffers
@@ -527,7 +527,7 @@ class _ResourceProviderDirectory extends _ResourceProviderEntity
var i = 0;
while (true) {
var name = "${prefix ?? 'temp'}_$i";
var temp = _folder.getChildAssumingFolder(name);
var temp = _folder.getFolder(name);
if (!temp.exists) {
temp.create();
return _ResourceProviderDirectory(fileSystem, temp.path);
@@ -625,10 +625,10 @@ class _ResourceProviderDirectory extends _ResourceProviderEntity
}
for (final child in source.getChildren()) {
if (child is File) {
final destFile = dest.getChildAssumingFile(child.shortName);
final destFile = dest.getFile(child.shortName);
destFile.writeAsBytesSync(child.readAsBytesSync());
} else if (child is Folder) {
final destChild = dest.getChildAssumingFolder(child.shortName);
final destChild = dest.getFolder(child.shortName);
_copyFolderSync(child, destChild);
}
}
@@ -162,12 +162,22 @@ final class _Folder implements Folder {
Resource getChild(String relPath) => _rp._wrap(_r.getChild(relPath));
@override
File getChildAssumingFile(String relPath) =>
_File(_r.getChildAssumingFile(relPath), _rp);
File getFile(String relPath) => _File(_r.getFile(relPath), _rp);
@Deprecated('Use getFile instead.')
@override
File getChildAssumingFile(String relPath) {
return getFile(relPath);
}
@override
Folder getChildAssumingFolder(String relPath) =>
_Folder(_r.getChildAssumingFolder(relPath), _rp);
Folder getFolder(String relPath) => _Folder(_r.getFolder(relPath), _rp);
@Deprecated('Use getFolder instead.')
@override
Folder getChildAssumingFolder(String relPath) {
return getFolder(relPath);
}
@override
List<Resource> getChildren() => _r.getChildren().map(_rp._wrap).toList();
+2 -2
View File
@@ -388,8 +388,8 @@ class _Workspace {
var parent = _rp.getFile(entrypoint).parent;
do {
final pkgConfig = parent
.getChildAssumingFolder('.dart_tool')
.getChildAssumingFile('package_config.json');
.getFolder('.dart_tool')
.getFile('package_config.json');
if (pkgConfig.exists) {
return pkgConfig.path;
+2 -2
View File
@@ -20,10 +20,10 @@ extension ResourceChecks on Subject<Resource> {
extension FolderChecks on Subject<Folder> {
Subject<File> file(String path) =>
has((f) => f.getChildAssumingFile(path), 'file ($path)');
has((f) => f.getFile(path), 'file ($path)');
Subject<Folder> folder(String path) =>
has((f) => f.getChildAssumingFolder(path), 'folder ($path)');
has((f) => f.getFolder(path), 'folder ($path)');
}
extension FileChecks on Subject<File> {
@@ -24,7 +24,7 @@ void main() {
group('FolderExt.createRecursively', () {
test('creates nested folders', () {
final folder = target.getChildAssumingFolder('a/b/c');
final folder = target.getFolder('a/b/c');
check(folder).doesNotExist;
folder.createRecursively();
@@ -35,7 +35,7 @@ void main() {
});
test('does nothing if folder exists', () {
final folder = target.getChildAssumingFolder('a')..create();
final folder = target.getFolder('a')..create();
check(folder).exists;
folder.createRecursively();
@@ -110,9 +110,9 @@ void main() {
group('FolderExt.createTarStream', () {
test('creates a tar stream from folder contents', () async {
target.getChildAssumingFile('a.txt').writeAsStringSync('a');
target.getChildAssumingFolder('sub').create();
target.getChildAssumingFile('sub/b.txt').writeAsStringSync('b');
target.getFile('a.txt').writeAsStringSync('a');
target.getFolder('sub').create();
target.getFile('sub/b.txt').writeAsStringSync('b');
final reader = TarReader(target.createTarStream());
+1 -1
View File
@@ -211,7 +211,7 @@ File? locatePubspecFile(CompilationUnit compilationUnit) {
// Look for a pubspec.yaml file.
for (var folder in file.parent.withAncestors) {
var pubspecFile = folder.getChildAssumingFile('pubspec.yaml');
var pubspecFile = folder.getFile('pubspec.yaml');
if (pubspecFile.exists) {
return pubspecFile;
}
@@ -28,8 +28,8 @@ class AnalyzerElementModelTrackingTest extends LintRuleTest {
var pkgPath = physicalProvider.pathContext.normalize(packageRoot);
var analyzerLibSource = physicalProvider
.getFolder(pkgPath)
.getChildAssumingFolder('analyzer')
.getChildAssumingFolder('lib');
.getFolder('analyzer')
.getFolder('lib');
var analyzerFolder = newFolder('/packages/analyzer');
analyzerLibSource.copyTo(analyzerFolder);
@@ -65,7 +65,7 @@ class _VerifyTests {
);
for (var child in children) {
if (child is Folder) {
if (child.getChildAssumingFile(testAllFileName).exists) {
if (child.getFile(testAllFileName).exists) {
testFileNames.add('${child.shortName}/$testAllFileName');
}
_buildTestsIn(session, testDirPath, child);