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