use root directory as the default for rootOverride in Cache.test constructor (#158201)

While doing some hacking on `Cache` in https://github.com/flutter/flutter/pull/158081, I noticed that [`Cache.test`](de93182753/packages/flutter_tools/lib/src/cache.dart (L139)) allows the caller to tell Cache to use some given directory as the flutter root (instead of depending on the static global [`Cache.flutterRoot`](4f3976a4f2/packages/flutter_tools/lib/src/cache.dart (L206))). This has a default value, `/cache`. However, `/cache` is an unintuitive name for the root directory of a Flutter installation.

This led to confusion when updating some tests. I wanted to create `/bin/cache/engine-dart-sdk.stamp` for tests, but in reality I needed to create `/cache/bin/cache/engine-dart-sdk.stamp`.

This PR changes this default to the current directory of the file system (which I'm guessing is `/` for all intents and purposes). 

<details>

<summary> Pre-launch checklist </summary> 

</details>
This commit is contained in:
Andrew Kolos 2024-11-05 15:00:05 -08:00 committed by GitHub
parent b6fef5cfda
commit 8d3cca43b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 9 deletions

View File

@ -144,11 +144,20 @@ class Cache {
Platform? platform,
required ProcessManager processManager,
}) {
if (rootOverride?.fileSystem != null &&
fileSystem != null &&
rootOverride!.fileSystem != fileSystem) {
throw ArgumentError(
'If rootOverride and fileSystem are both non-null, '
'rootOverride.fileSystem must be the same as fileSystem.',
'fileSystem'
);
}
fileSystem ??= rootOverride?.fileSystem ?? MemoryFileSystem.test();
platform ??= FakePlatform(environment: <String, String>{});
logger ??= BufferLogger.test();
return Cache(
rootOverride: rootOverride ?? fileSystem.directory('cache'),
rootOverride: rootOverride ?? fileSystem.currentDirectory,
artifacts: artifacts ?? <ArtifactSet>[],
logger: logger,
fileSystem: fileSystem,

View File

@ -24,7 +24,7 @@ void main() {
setUp(() {
fileSystem = MemoryFileSystem.test();
gradleWrapperDirectory =
fileSystem.directory('cache/bin/cache/artifacts/gradle_wrapper');
fileSystem.directory('bin/cache/artifacts/gradle_wrapper');
gradleWrapperDirectory.createSync(recursive: true);
gradleWrapperDirectory
.childFile('gradlew')

View File

@ -338,7 +338,6 @@ void main() {
testWithoutContext('a non-empty realm is included in the storage url', () async {
final MemoryFileSystem fileSystem = MemoryFileSystem.test();
final Directory internalDir = fileSystem.currentDirectory
.childDirectory('cache')
.childDirectory('bin')
.childDirectory('internal');
final File engineVersionFile = internalDir.childFile('engine.version');
@ -803,7 +802,6 @@ void main() {
testWithoutContext('FlutterWebSdk fetches web artifacts and deletes previous directory contents', () async {
final MemoryFileSystem fileSystem = MemoryFileSystem.test();
final Directory internalDir = fileSystem.currentDirectory
.childDirectory('cache')
.childDirectory('bin')
.childDirectory('internal');
final File canvasKitVersionFile = internalDir.childFile('canvaskit.version');
@ -842,7 +840,7 @@ void main() {
]);
expect(locations, <String>[
'cache/bin/cache/flutter_web_sdk',
'/bin/cache/flutter_web_sdk',
]);
expect(webCacheDirectory.childFile('foo'), exists);
@ -852,7 +850,6 @@ void main() {
testWithoutContext('FlutterWebSdk CanvasKit URL can be overridden via FLUTTER_STORAGE_BASE_URL', () async {
final MemoryFileSystem fileSystem = MemoryFileSystem.test();
final Directory internalDir = fileSystem.currentDirectory
.childDirectory('cache')
.childDirectory('bin')
.childDirectory('internal');
final File canvasKitVersionFile = internalDir.childFile('canvaskit.version');
@ -909,7 +906,7 @@ void main() {
handler.addError(webCacheDirectory, FileSystemOp.delete, const FileSystemException('', '', OSError('', 2)));
await expectLater(() => webSdk.updateInner(artifactUpdater, fileSystem, FakeOperatingSystemUtils()), throwsToolExit(
message: RegExp('Unable to delete file or directory at "cache/bin/cache/flutter_web_sdk"'),
message: RegExp('Unable to delete file or directory at "/bin/cache/flutter_web_sdk"'),
));
});
@ -1108,11 +1105,11 @@ void main() {
Platform: () => FakePlatform(),
ProcessManager: () => FakeProcessManager.list(<FakeCommand>[
const FakeCommand(command: <String>[
'/cache/bin/cache/flutter_gradle_wrapper.rand0/gradlew',
'/bin/cache/flutter_gradle_wrapper.rand0/gradlew',
'-b',
'packages/flutter_tools/gradle/resolve_dependencies.gradle',
'--project-cache-dir',
'cache/bin/cache/flutter_gradle_wrapper.rand0',
'/bin/cache/flutter_gradle_wrapper.rand0',
'resolveDependencies',
]),
]),