flutter_tools/version: git log.showSignature=false (#38576)
diff --git a/packages/flutter_tools/lib/src/version.dart b/packages/flutter_tools/lib/src/version.dart index 61666df..5afa883 100644 --- a/packages/flutter_tools/lib/src/version.dart +++ b/packages/flutter_tools/lib/src/version.dart
@@ -20,7 +20,7 @@ class FlutterVersion { @visibleForTesting FlutterVersion([this._clock = const SystemClock()]) { - _frameworkRevision = _runGit('git log -n 1 --pretty=format:%H'); + _frameworkRevision = _runGit(gitLog(<String>['-n', '1', '--pretty=format:%H']).join(' ')); _frameworkVersion = GitTagVersion.determine().frameworkVersionFor(_frameworkRevision); } @@ -86,7 +86,7 @@ String _frameworkAge; String get frameworkAge { - return _frameworkAge ??= _runGit('git log -n 1 --pretty=format:%ar'); + return _frameworkAge ??= _runGit(gitLog(<String>['-n', '1', '--pretty=format:%ar']).join(' ')); } String _frameworkVersion; @@ -134,15 +134,13 @@ String get frameworkCommitDate => _latestGitCommitDate(); static String _latestGitCommitDate([ String branch ]) { - final List<String> args = <String>[ - 'git', - 'log', + final List<String> args = gitLog(<String>[ if (branch != null) branch, '-n', '1', '--pretty=format:%ad', '--date=iso', - ]; + ]); return _runSync(args, lenient: false); } @@ -332,6 +330,14 @@ } } + /// log.showSignature=false is a user setting and it will break things, + /// so we want to disable it for every git log call. This is a convenience + /// wrapper that does that. + @visibleForTesting + static List<String> gitLog(List<String> args) { + return <String>['git', '-c', 'log.showSignature=false', 'log'] + args; + } + @visibleForTesting static String versionOutOfDateMessage(Duration frameworkAge) { String warning = 'WARNING: your installation of Flutter is ${frameworkAge.inDays} days old.';
diff --git a/packages/flutter_tools/test/general.shard/commands/version_test.dart b/packages/flutter_tools/test/general.shard/commands/version_test.dart index 304e3e0..c09ff69 100644 --- a/packages/flutter_tools/test/general.shard/commands/version_test.dart +++ b/packages/flutter_tools/test/general.shard/commands/version_test.dart
@@ -10,6 +10,7 @@ import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/version.dart'; +import 'package:flutter_tools/src/version.dart'; import 'package:mockito/mockito.dart'; import 'package:process/process.dart'; @@ -116,7 +117,7 @@ Encoding stderrEncoding = systemEncoding, }) { final String commandStr = command.join(' '); - if (commandStr == 'git log -n 1 --pretty=format:%H') { + if (commandStr == FlutterVersion.gitLog(<String>['-n', '1', '--pretty=format:%H']).join(' ')) { return ProcessResult(0, 0, '000000000000000000000', ''); } if (commandStr ==
diff --git a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart index a5c5541..50df260 100644 --- a/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart
@@ -132,7 +132,7 @@ testUsingContext('checks that Flutter toJson output reports the flutter framework version', () async { final ProcessResult result = ProcessResult(0, 0, 'random', '0'); - when(processManager.runSync('git log -n 1 --pretty=format:%H'.split(' '), + when(processManager.runSync(FlutterVersion.gitLog('-n 1 --pretty=format:%H'.split(' ')), workingDirectory: Cache.flutterRoot)).thenReturn(result); when(processManager.runSync('git rev-parse --abbrev-ref --symbolic @{u}'.split(' '), workingDirectory: Cache.flutterRoot)).thenReturn(result); @@ -140,11 +140,11 @@ workingDirectory: Cache.flutterRoot)).thenReturn(result); when(processManager.runSync('git ls-remote --get-url master'.split(' '), workingDirectory: Cache.flutterRoot)).thenReturn(result); - when(processManager.runSync('git log -n 1 --pretty=format:%ar'.split(' '), + when(processManager.runSync(FlutterVersion.gitLog('-n 1 --pretty=format:%ar'.split(' ')), workingDirectory: Cache.flutterRoot)).thenReturn(result); when(processManager.runSync('git describe --match v*.*.* --first-parent --long --tags'.split(' '), workingDirectory: Cache.flutterRoot)).thenReturn(result); - when(processManager.runSync('git log -n 1 --pretty=format:%ad --date=iso'.split(' '), + when(processManager.runSync(FlutterVersion.gitLog('-n 1 --pretty=format:%ad --date=iso'.split(' ')), workingDirectory: Cache.flutterRoot)).thenReturn(result); final FakeFlutterVersion version = FakeFlutterVersion();
diff --git a/packages/flutter_tools/test/general.shard/version_test.dart b/packages/flutter_tools/test/general.shard/version_test.dart index 1a94470..b438fec 100644 --- a/packages/flutter_tools/test/general.shard/version_test.dart +++ b/packages/flutter_tools/test/general.shard/version_test.dart
@@ -465,14 +465,18 @@ }); final Answering<ProcessResult> syncAnswer = (Invocation invocation) { - bool argsAre(String a1, [ String a2, String a3, String a4, String a5, String a6, String a7, String a8 ]) { + bool argsAre(String a1, [ String a2, String a3, String a4, String a5, String a6, String a7, String a8, String a9 ]) { const ListEquality<String> equality = ListEquality<String>(); final List<String> args = invocation.positionalArguments.single; - final List<String> expectedArgs = <String>[a1, a2, a3, a4, a5, a6, a7, a8].where((String arg) => arg != null).toList(); + final List<String> expectedArgs = <String>[a1, a2, a3, a4, a5, a6, a7, a8, a9].where((String arg) => arg != null).toList(); return equality.equals(args, expectedArgs); } - if (argsAre('git', 'log', '-n', '1', '--pretty=format:%ad', '--date=iso')) { + bool listArgsAre(List<String> a) { + return Function.apply(argsAre, a); + } + + if (listArgsAre(FlutterVersion.gitLog(<String>['-n', '1', '--pretty=format:%ad', '--date=iso']))) { return success(localCommitDate.toString()); } else if (argsAre('git', 'remote')) { return success(''); @@ -483,7 +487,8 @@ fail('Did not expect server ping'); } return errorOnFetch ? failure(128) : success(''); - } else if (remoteCommitDate != null && argsAre('git', 'log', '__flutter_version_check__/$channel', '-n', '1', '--pretty=format:%ad', '--date=iso')) { + // Careful here! argsAre accepts 9 arguments and FlutterVersion.gitLog adds 4. + } else if (remoteCommitDate != null && listArgsAre(FlutterVersion.gitLog(<String>['__flutter_version_check__/$channel', '-n', '1', '--pretty=format:%ad', '--date=iso']))) { return success(remoteCommitDate.toString()); } @@ -506,12 +511,12 @@ environment: anyNamed('environment'), )).thenReturn(ProcessResult(102, 0, 'branch', '')); when(pm.runSync( - <String>['git', 'log', '-n', '1', '--pretty=format:%H'], + FlutterVersion.gitLog(<String>['-n', '1', '--pretty=format:%H']), workingDirectory: anyNamed('workingDirectory'), environment: anyNamed('environment'), )).thenReturn(ProcessResult(103, 0, '1234abcd', '')); when(pm.runSync( - <String>['git', 'log', '-n', '1', '--pretty=format:%ar'], + FlutterVersion.gitLog(<String>['-n', '1', '--pretty=format:%ar']), workingDirectory: anyNamed('workingDirectory'), environment: anyNamed('environment'), )).thenReturn(ProcessResult(104, 0, '1 second ago', ''));