From c17099f474675d8066fec6984c242d8b409ae985 Mon Sep 17 00:00:00 2001 From: xster Date: Fri, 3 Nov 2017 10:07:57 -0700 Subject: [PATCH] Leave a version tag when creating project (#12846) * Leave a version tag when creating project * Generalize .version to .metadata --- .../lib/src/commands/create.dart | 3 +++ .../templates/create/.metadata.tmpl | 8 +++++++ .../test/commands/create_test.dart | 21 +++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 packages/flutter_tools/templates/create/.metadata.tmpl diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart index 0ec3a14a5b6..a4ae8e7c496 100644 --- a/packages/flutter_tools/lib/src/commands/create.dart +++ b/packages/flutter_tools/lib/src/commands/create.dart @@ -24,6 +24,7 @@ import '../ios/xcodeproj.dart'; import '../plugins.dart'; import '../runner/flutter_command.dart'; import '../template.dart'; +import '../version.dart'; class CreateCommand extends FlutterCommand { CreateCommand() { @@ -298,6 +299,8 @@ To edit platform code in an IDE see https://flutter.io/platform-plugins/#edit-co 'withPluginHook': withPluginHook, 'androidLanguage': androidLanguage, 'iosLanguage': iosLanguage, + 'flutterRevision': FlutterVersion.instance.frameworkRevision, + 'flutterChannel': FlutterVersion.instance.channel, }; } diff --git a/packages/flutter_tools/templates/create/.metadata.tmpl b/packages/flutter_tools/templates/create/.metadata.tmpl new file mode 100644 index 00000000000..accfecc211a --- /dev/null +++ b/packages/flutter_tools/templates/create/.metadata.tmpl @@ -0,0 +1,8 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: {{flutterRevision}} + channel: {{flutterChannel}} diff --git a/packages/flutter_tools/test/commands/create_test.dart b/packages/flutter_tools/test/commands/create_test.dart index 8c3bb98d77f..bf93aa3f751 100644 --- a/packages/flutter_tools/test/commands/create_test.dart +++ b/packages/flutter_tools/test/commands/create_test.dart @@ -12,15 +12,21 @@ import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/create.dart'; import 'package:flutter_tools/src/dart/sdk.dart'; +import 'package:flutter_tools/src/version.dart'; +import 'package:mockito/mockito.dart'; import 'package:test/test.dart'; import '../src/common.dart'; import '../src/context.dart'; +const String frameworkRevision = '12345678'; +const String frameworkChannel = 'omega'; + void main() { group('create', () { Directory temp; Directory projectDir; + FlutterVersion mockFlutterVersion; setUpAll(() { Cache.disableLocking(); @@ -29,6 +35,7 @@ void main() { setUp(() { temp = fs.systemTempDirectory.createTempSync('flutter_tools'); projectDir = temp.childDirectory('flutter_project'); + mockFlutterVersion = new MockFlutterVersion(); }); tearDown(() { @@ -171,6 +178,8 @@ void main() { // Verify content and formatting testUsingContext('content', () async { Cache.flutterRoot = '../..'; + when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision); + when(mockFlutterVersion.channel).thenReturn(frameworkChannel); final CreateCommand command = new CreateCommand(); final CommandRunner runner = createTestCommandRunner(command); @@ -229,6 +238,16 @@ void main() { final File xcodeProjectFile = fs.file(fs.path.join(projectDir.path, xcodeProjectPath)); final String xcodeProject = xcodeProjectFile.readAsStringSync(); expect(xcodeProject, contains('PRODUCT_BUNDLE_IDENTIFIER = com.foo.bar.flutterProject')); + + final String versionPath = fs.path.join('.metadata'); + expectExists(versionPath); + final String version = fs.file(fs.path.join(projectDir.path, versionPath)).readAsStringSync(); + expect(version, contains('version:')); + expect(version, contains('revision: 12345678')); + expect(version, contains('channel: omega')); + }, + overrides: { + FlutterVersion: () => mockFlutterVersion, }); // Verify that we can regenerate over an existing project. @@ -334,3 +353,5 @@ Future _analyzeProject(String workingDir, {String target}) async { } expect(exec.exitCode, 0); } + +class MockFlutterVersion extends Mock implements FlutterVersion {}