Improve the intergrity checking for "gradle wrapper". (#26069)
diff --git a/packages/flutter_tools/test/cache_test.dart b/packages/flutter_tools/test/cache_test.dart
index 36bf2ce..03912cb 100644
--- a/packages/flutter_tools/test/cache_test.dart
+++ b/packages/flutter_tools/test/cache_test.dart
@@ -51,6 +51,36 @@
});
group('Cache', () {
+ final MockCache mockCache = MockCache();
+ final MemoryFileSystem fs = MemoryFileSystem();
+
+ testUsingContext('Gradle wrapper should not be up to date, if some cached artifact is not available', () {
+ final GradleWrapper gradleWrapper = GradleWrapper(mockCache);
+ final Directory directory = fs.directory('/Applications/flutter/bin/cache');
+ directory.createSync(recursive: true);
+ fs.file(fs.path.join(directory.path, 'artifacts', 'gradle_wrapper', 'gradle', 'wrapper', 'gradle-wrapper.jar')).createSync(recursive: true);
+ when(mockCache.getCacheDir(fs.path.join('artifacts', 'gradle_wrapper'))).thenReturn(fs.directory(fs.path.join(directory.path, 'artifacts', 'gradle_wrapper')));
+ expect(gradleWrapper.isUpToDateInner(), false);
+ }, overrides: <Type, Generator>{
+ Cache: ()=> mockCache,
+ FileSystem: () => fs
+ });
+
+ testUsingContext('Gradle wrapper should be up to date, only if all cached artifact are available', () {
+ final GradleWrapper gradleWrapper = GradleWrapper(mockCache);
+ final Directory directory = fs.directory('/Applications/flutter/bin/cache');
+ directory.createSync(recursive: true);
+ fs.file(fs.path.join(directory.path, 'artifacts', 'gradle_wrapper', 'gradle', 'wrapper', 'gradle-wrapper.jar')).createSync(recursive: true);
+ fs.file(fs.path.join(directory.path, 'artifacts', 'gradle_wrapper', 'gradlew')).createSync(recursive: true);
+ fs.file(fs.path.join(directory.path, 'artifacts', 'gradle_wrapper', 'gradlew.bat')).createSync(recursive: true);
+
+ when(mockCache.getCacheDir(fs.path.join('artifacts', 'gradle_wrapper'))).thenReturn(fs.directory(fs.path.join(directory.path, 'artifacts', 'gradle_wrapper')));
+ expect(gradleWrapper.isUpToDateInner(), true);
+ }, overrides: <Type, Generator>{
+ Cache: ()=> mockCache,
+ FileSystem: () => fs
+ });
+
test('should not be up to date, if some cached artifact is not', () {
final CachedArtifact artifact1 = MockCachedArtifact();
final CachedArtifact artifact2 = MockCachedArtifact();
@@ -132,3 +162,4 @@
class MockRandomAccessFile extends Mock implements RandomAccessFile {}
class MockCachedArtifact extends Mock implements CachedArtifact {}
class MockInternetAddress extends Mock implements InternetAddress {}
+class MockCache extends Mock implements Cache {}
\ No newline at end of file