Move usage flutter create tests into memory filesystem. (#35160)
diff --git a/packages/flutter_tools/test/commands/create_test.dart b/packages/flutter_tools/test/commands/create_test.dart
index 2a3543e..c167610 100644
--- a/packages/flutter_tools/test/commands/create_test.dart
+++ b/packages/flutter_tools/test/commands/create_test.dart
@@ -17,7 +17,6 @@
import 'package:flutter_tools/src/commands/create.dart';
import 'package:flutter_tools/src/dart/sdk.dart';
import 'package:flutter_tools/src/project.dart';
-import 'package:flutter_tools/src/usage.dart';
import 'package:flutter_tools/src/version.dart';
import 'package:mockito/mockito.dart';
@@ -1055,68 +1054,6 @@
HttpClientFactory: () =>
() => MockHttpClient(404, result: 'not found'),
});
-
- group('usageValues', () {
- testUsingContext('set template type as usage value', () async {
- Cache.flutterRoot = '../..';
-
- final CreateCommand command = CreateCommand();
- final CommandRunner<void> runner = createTestCommandRunner(command);
-
- await runner.run(<String>['create', '--no-pub', '--template=module', projectDir.path]);
- expect(await command.usageValues, containsPair(kCommandCreateProjectType, 'module'));
-
- await runner.run(<String>['create', '--no-pub', '--template=app', projectDir.path]);
- expect(await command.usageValues, containsPair(kCommandCreateProjectType, 'app'));
-
- await runner.run(<String>['create', '--no-pub', '--template=package', projectDir.path]);
- expect(await command.usageValues, containsPair(kCommandCreateProjectType, 'package'));
-
- await runner.run(<String>['create', '--no-pub', '--template=plugin', projectDir.path]);
- expect(await command.usageValues, containsPair(kCommandCreateProjectType, 'plugin'));
-
- }, timeout: allowForCreateFlutterProject);
-
- testUsingContext('set iOS host language type as usage value', () async {
- Cache.flutterRoot = '../..';
-
- final CreateCommand command = CreateCommand();
- final CommandRunner<void> runner = createTestCommandRunner(command);
-
- await runner.run(<String>['create', '--no-pub', '--template=app', projectDir.path]);
- expect(await command.usageValues, containsPair(kCommandCreateIosLanguage, 'objc'));
-
- await runner.run(<String>[
- 'create',
- '--no-pub',
- '--template=app',
- '--ios-language=swift',
- projectDir.path,
- ]);
- expect(await command.usageValues, containsPair(kCommandCreateIosLanguage, 'swift'));
-
- }, timeout: allowForCreateFlutterProject);
-
- testUsingContext('set Android host language type as usage value', () async {
- Cache.flutterRoot = '../..';
-
- final CreateCommand command = CreateCommand();
- final CommandRunner<void> runner = createTestCommandRunner(command);
-
- await runner.run(<String>['create', '--no-pub', '--template=app', projectDir.path]);
- expect(await command.usageValues, containsPair(kCommandCreateAndroidLanguage, 'java'));
-
- await runner.run(<String>[
- 'create',
- '--no-pub',
- '--template=app',
- '--android-language=kotlin',
- projectDir.path,
- ]);
- expect(await command.usageValues, containsPair(kCommandCreateAndroidLanguage, 'kotlin'));
-
- }, timeout: allowForCreateFlutterProject);
- });
}
diff --git a/packages/flutter_tools/test/commands/create_usage_test.dart b/packages/flutter_tools/test/commands/create_usage_test.dart
new file mode 100644
index 0000000..5cc7bd2
--- /dev/null
+++ b/packages/flutter_tools/test/commands/create_usage_test.dart
@@ -0,0 +1,104 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:args/command_runner.dart';
+import 'package:flutter_tools/src/base/file_system.dart';
+import 'package:flutter_tools/src/cache.dart';
+import 'package:flutter_tools/src/commands/create.dart';
+import 'package:flutter_tools/src/doctor.dart';
+import 'package:flutter_tools/src/usage.dart';
+
+import '../src/common.dart';
+import '../src/testbed.dart';
+
+
+void main() {
+ group('usageValues', () {
+ Testbed testbed;
+
+ setUpAll(() {
+ Cache.disableLocking();
+ });
+
+ setUp(() {
+ testbed = Testbed(setup: () {
+ final List<String> paths = <String>[
+ fs.path.join('flutter', 'packages', 'flutter', 'pubspec.yaml'),
+ fs.path.join('flutter', 'packages', 'flutter_driver', 'pubspec.yaml'),
+ fs.path.join('flutter', 'packages', 'flutter_test', 'pubspec.yaml'),
+ fs.path.join('flutter', 'bin', 'cache', 'artifacts', 'gradle_wrapper', 'wrapper'),
+ fs.path.join('usr', 'local', 'bin', 'adb'),
+ fs.path.join('Android', 'platform-tools', 'foo'),
+ ];
+ for (String path in paths) {
+ fs.file(path).createSync(recursive: true);
+ }
+ }, overrides: <Type, Generator>{
+ DoctorValidatorsProvider: () => FakeDoctorValidatorsProvider(),
+ });
+ });
+
+ test('set template type as usage value', () => testbed.run(() async {
+ final CreateCommand command = CreateCommand();
+ final CommandRunner<void> runner = createTestCommandRunner(command);
+
+ await runner.run(<String>['create', '--flutter-root=flutter', '--no-pub', '--template=module', 'testy']);
+ expect(await command.usageValues, containsPair(kCommandCreateProjectType, 'module'));
+
+ await runner.run(<String>['create', '--flutter-root=flutter', '--no-pub', '--template=app', 'testy']);
+ expect(await command.usageValues, containsPair(kCommandCreateProjectType, 'app'));
+
+ await runner.run(<String>['create', '--flutter-root=flutter', '--no-pub', '--template=package', 'testy']);
+ expect(await command.usageValues, containsPair(kCommandCreateProjectType, 'package'));
+
+ await runner.run(<String>['create', '--flutter-root=flutter', '--no-pub', '--template=plugin', 'testy']);
+ expect(await command.usageValues, containsPair(kCommandCreateProjectType, 'plugin'));
+ }));
+
+ test('set iOS host language type as usage value', () => testbed.run(() async {
+ final CreateCommand command = CreateCommand();
+ final CommandRunner<void> runner = createTestCommandRunner(command);
+
+ await runner.run(<String>['create', '--flutter-root=flutter', '--no-pub', '--template=app', 'testy']);
+ expect(await command.usageValues, containsPair(kCommandCreateIosLanguage, 'objc'));
+
+ await runner.run(<String>[
+ 'create',
+ '--flutter-root=flutter',
+ '--no-pub',
+ '--template=app',
+ '--ios-language=swift',
+ 'testy',
+ ]);
+ expect(await command.usageValues, containsPair(kCommandCreateIosLanguage, 'swift'));
+
+ }));
+
+ test('set Android host language type as usage value', () => testbed.run(() async {
+ final CreateCommand command = CreateCommand();
+ final CommandRunner<void> runner = createTestCommandRunner(command);
+
+ await runner.run(<String>['create', '--flutter-root=flutter', '--no-pub', '--template=app', 'testy']);
+ expect(await command.usageValues, containsPair(kCommandCreateAndroidLanguage, 'java'));
+
+ await runner.run(<String>[
+ 'create',
+ '--flutter-root=flutter',
+ '--no-pub',
+ '--template=app',
+ '--android-language=kotlin',
+ 'testy',
+ ]);
+ expect(await command.usageValues, containsPair(kCommandCreateAndroidLanguage, 'kotlin'));
+ }));
+ });
+}
+
+class FakeDoctorValidatorsProvider implements DoctorValidatorsProvider {
+ @override
+ List<DoctorValidator> get validators => <DoctorValidator>[];
+
+ @override
+ List<Workflow> get workflows => <Workflow>[];
+}
diff --git a/packages/flutter_tools/test/src/testbed.dart b/packages/flutter_tools/test/src/testbed.dart
index 00986dc..acd1526 100644
--- a/packages/flutter_tools/test/src/testbed.dart
+++ b/packages/flutter_tools/test/src/testbed.dart
@@ -13,6 +13,7 @@
import 'package:flutter_tools/src/cache.dart';
import 'package:flutter_tools/src/context_runner.dart';
import 'package:flutter_tools/src/usage.dart';
+import 'package:flutter_tools/src/version.dart';
import 'context.dart';
@@ -28,6 +29,7 @@
Logger: () => BufferLogger(), // Allows reading logs and prevents stdout.
OutputPreferences: () => OutputPreferences(showColor: false), // configures BufferLogger to avoid color codes.
Usage: () => NoOpUsage(), // prevent addition of analytics from burdening test mocks
+ FlutterVersion: () => FakeFlutterVersion() // prevent requirement to mock git for test runner.
};
/// Manages interaction with the tool injection and runner system.
@@ -140,4 +142,68 @@
@override
void sendTiming(String category, String variableName, Duration duration, {String label}) {}
-}
\ No newline at end of file
+}
+
+class FakeFlutterVersion implements FlutterVersion {
+ @override
+ String get channel => 'master';
+
+ @override
+ Future<void> checkFlutterVersionFreshness() async { }
+
+ @override
+ bool checkRevisionAncestry({String tentativeDescendantRevision, String tentativeAncestorRevision}) {
+ throw UnimplementedError();
+ }
+
+ @override
+ String get dartSdkVersion => '12';
+
+ @override
+ String get engineRevision => '42.2';
+
+ @override
+ String get engineRevisionShort => '42';
+
+ @override
+ Future<void> ensureVersionFile() async { }
+
+ @override
+ String get frameworkAge => null;
+
+ @override
+ String get frameworkCommitDate => null;
+
+ @override
+ String get frameworkDate => null;
+
+ @override
+ String get frameworkRevision => null;
+
+ @override
+ String get frameworkRevisionShort => null;
+
+ @override
+ String get frameworkVersion => null;
+
+ @override
+ String getBranchName({bool redactUnknownBranches = false}) {
+ return 'master';
+ }
+
+ @override
+ String getVersionString({bool redactUnknownBranches = false}) {
+ return 'v0.0.0';
+ }
+
+ @override
+ bool get isMaster => true;
+
+ @override
+ String get repositoryUrl => null;
+
+ @override
+ Map<String, Object> toJson() {
+ return null;
+ }
+}