|
5 | 5 | import 'package:file/file.dart';
|
6 | 6 | import 'package:file/memory.dart';
|
7 | 7 | import 'package:file_testing/file_testing.dart';
|
8 |
| -import 'package:flutter_tools/src/android/gradle_utils.dart'; |
| 8 | +import 'package:flutter_tools/src/android/android_sdk.dart'; |
9 | 9 | import 'package:flutter_tools/src/base/file_system.dart';
|
10 | 10 | import 'package:flutter_tools/src/base/io.dart' show InternetAddress, SocketException;
|
11 | 11 | import 'package:flutter_tools/src/base/io.dart';
|
@@ -653,49 +653,61 @@ void main() {
|
653 | 653 |
|
654 | 654 | group('AndroidMavenArtifacts', () {
|
655 | 655 | MemoryFileSystem memoryFileSystem;
|
656 |
| - MockProcessManager processManager; |
657 | 656 | Cache cache;
|
658 | 657 |
|
659 | 658 | setUp(() {
|
660 | 659 | memoryFileSystem = MemoryFileSystem.test();
|
661 |
| - processManager = MockProcessManager(); |
662 | 660 | cache = Cache.test(
|
663 | 661 | fileSystem: memoryFileSystem,
|
664 | 662 | processManager: FakeProcessManager.any(),
|
665 | 663 | );
|
666 | 664 | });
|
667 | 665 |
|
668 |
| - testWithoutContext('development artifact', () async { |
| 666 | + testWithoutContext('AndroidMavenArtifacts has a specified development artifact', () async { |
669 | 667 | final AndroidMavenArtifacts mavenArtifacts = AndroidMavenArtifacts(cache, platform: FakePlatform(operatingSystem: 'linux'));
|
670 | 668 | expect(mavenArtifacts.developmentArtifact, DevelopmentArtifact.androidMaven);
|
671 | 669 | });
|
672 | 670 |
|
673 |
| - testUsingContext('update', () async { |
| 671 | + testUsingContext('AndroidMavenArtifacts can invoke Gradle resolve dependencies if Android SDK is present', () async { |
| 672 | + Cache.flutterRoot = ''; |
674 | 673 | final AndroidMavenArtifacts mavenArtifacts = AndroidMavenArtifacts(cache, platform: FakePlatform(operatingSystem: 'linux'));
|
675 | 674 | expect(await mavenArtifacts.isUpToDate(memoryFileSystem), isFalse);
|
676 | 675 |
|
677 | 676 | final Directory gradleWrapperDir = cache.getArtifactDirectory('gradle_wrapper')..createSync(recursive: true);
|
678 | 677 | gradleWrapperDir.childFile('gradlew').writeAsStringSync('irrelevant');
|
679 | 678 | gradleWrapperDir.childFile('gradlew.bat').writeAsStringSync('irrelevant');
|
680 | 679 |
|
681 |
| - when(processManager.run(any, environment: captureAnyNamed('environment'))) |
682 |
| - .thenAnswer((Invocation invocation) { |
683 |
| - final List<String> args = invocation.positionalArguments[0] as List<String>; |
684 |
| - expect(args.length, 6); |
685 |
| - expect(args[1], '-b'); |
686 |
| - expect(args[2].endsWith('resolve_dependencies.gradle'), isTrue); |
687 |
| - expect(args[5], 'resolveDependencies'); |
688 |
| - expect(invocation.namedArguments[#environment], gradleEnvironment); |
689 |
| - return Future<ProcessResult>.value(ProcessResult(0, 0, '', '')); |
690 |
| - }); |
| 680 | + await mavenArtifacts.update(MockArtifactUpdater(), BufferLogger.test(), memoryFileSystem, MockOperatingSystemUtils()); |
| 681 | + |
| 682 | + expect(await mavenArtifacts.isUpToDate(memoryFileSystem), isFalse); |
| 683 | + }, overrides: <Type, Generator>{ |
| 684 | + Cache: () => cache, |
| 685 | + FileSystem: () => memoryFileSystem, |
| 686 | + ProcessManager: () => FakeProcessManager.list(<FakeCommand>[ |
| 687 | + const FakeCommand(command: <String>[ |
| 688 | + '/cache/bin/cache/flutter_gradle_wrapper.rand0/gradlew', |
| 689 | + '-b', |
| 690 | + 'packages/flutter_tools/gradle/resolve_dependencies.gradle', |
| 691 | + '--project-cache-dir', |
| 692 | + 'cache/bin/cache/flutter_gradle_wrapper.rand0', |
| 693 | + 'resolveDependencies', |
| 694 | + ]) |
| 695 | + ]), |
| 696 | + AndroidSdk: () => FakeAndroidSdk() |
| 697 | + }); |
| 698 | + |
| 699 | + testUsingContext('AndroidMavenArtifacts is a no-op if the Android SDK is absent', () async { |
| 700 | + final AndroidMavenArtifacts mavenArtifacts = AndroidMavenArtifacts(cache, platform: FakePlatform(operatingSystem: 'linux')); |
| 701 | + expect(await mavenArtifacts.isUpToDate(memoryFileSystem), isFalse); |
691 | 702 |
|
692 | 703 | await mavenArtifacts.update(MockArtifactUpdater(), BufferLogger.test(), memoryFileSystem, MockOperatingSystemUtils());
|
693 | 704 |
|
694 | 705 | expect(await mavenArtifacts.isUpToDate(memoryFileSystem), isFalse);
|
695 | 706 | }, overrides: <Type, Generator>{
|
696 | 707 | Cache: () => cache,
|
697 | 708 | FileSystem: () => memoryFileSystem,
|
698 |
| - ProcessManager: () => processManager, |
| 709 | + ProcessManager: () => FakeProcessManager.list(<FakeCommand>[]), |
| 710 | + AndroidSdk: () => null // Android SDK was not located. |
699 | 711 | });
|
700 | 712 | });
|
701 | 713 | }
|
@@ -782,3 +794,4 @@ class FakeCache extends Cache {
|
782 | 794 | return stampFile;
|
783 | 795 | }
|
784 | 796 | }
|
| 797 | +class FakeAndroidSdk extends Fake implements AndroidSdk {} |
0 commit comments