mirror of
https://github.com/flutter/flutter
synced 2024-10-12 19:23:02 +00:00
Do not run version check if generating shell completion and stdout isn't terminal (#79418)
This commit is contained in:
parent
d44ab58d69
commit
d56717399b
|
@ -253,11 +253,14 @@ class FlutterCommandRunner extends CommandRunner<void> {
|
|||
globals.flutterVersion.ensureVersionFile();
|
||||
final bool machineFlag = topLevelResults['machine'] as bool;
|
||||
final bool ci = await globals.botDetector.isRunningOnBot;
|
||||
final bool redirectedCompletion = !globals.stdio.hasTerminal &&
|
||||
(topLevelResults.command?.name ?? '').endsWith('-completion');
|
||||
final bool isMachine = machineFlag || ci || redirectedCompletion;
|
||||
final bool versionCheckFlag = topLevelResults['version-check'] as bool;
|
||||
final bool explicitVersionCheckPassed = topLevelResults.wasParsed('version-check') && versionCheckFlag;
|
||||
|
||||
if (topLevelResults.command?.name != 'upgrade' &&
|
||||
(explicitVersionCheckPassed || (versionCheckFlag && !ci && !machineFlag))) {
|
||||
(explicitVersionCheckPassed || (versionCheckFlag && !isMachine))) {
|
||||
await globals.flutterVersion.checkFlutterVersionFreshness();
|
||||
}
|
||||
|
||||
|
|
|
@ -108,6 +108,40 @@ void main() {
|
|||
BotDetector: () => const FakeBotDetector(true),
|
||||
}, initializeFlutterRoot: false);
|
||||
|
||||
testUsingContext('checks that Flutter installation is up-to-date if shell completion to terminal', () async {
|
||||
final FlutterCommand command = DummyFlutterCommand(name: 'bash-completion');
|
||||
final FlutterCommandRunner runner = createTestCommandRunner(command) as FlutterCommandRunner;
|
||||
final FakeFlutterVersion version = globals.flutterVersion as FakeFlutterVersion;
|
||||
|
||||
await runner.run(<String>['bash-completion']);
|
||||
|
||||
expect(version.didCheckFlutterVersionFreshness, true);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
Platform: () => platform,
|
||||
FlutterVersion: () => FakeFlutterVersion(),
|
||||
BotDetector: () => const FakeBotDetector(false),
|
||||
Stdio: () => FakeStdio(hasFakeTerminal: true),
|
||||
});
|
||||
|
||||
testUsingContext('does not check that Flutter installation is up-to-date if redirecting shell completion', () async {
|
||||
final FlutterCommand command = DummyFlutterCommand(name: 'bash-completion');
|
||||
final FlutterCommandRunner runner = createTestCommandRunner(command) as FlutterCommandRunner;
|
||||
final FakeFlutterVersion version = globals.flutterVersion as FakeFlutterVersion;
|
||||
|
||||
await runner.run(<String>['bash-completion']);
|
||||
|
||||
expect(version.didCheckFlutterVersionFreshness, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => fileSystem,
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
Platform: () => platform,
|
||||
FlutterVersion: () => FakeFlutterVersion(),
|
||||
BotDetector: () => const FakeBotDetector(false),
|
||||
Stdio: () => FakeStdio(hasFakeTerminal: false),
|
||||
});
|
||||
|
||||
testUsingContext('Fetches tags when --version is used', () async {
|
||||
final FlutterCommandRunner runner = createTestCommandRunner(DummyFlutterCommand()) as FlutterCommandRunner;
|
||||
final FakeFlutterVersion version = globals.flutterVersion as FakeFlutterVersion;
|
||||
|
|
|
@ -13,6 +13,7 @@ class DummyFlutterCommand extends FlutterCommand {
|
|||
DummyFlutterCommand({
|
||||
this.shouldUpdateCache = false,
|
||||
this.noUsagePath = false,
|
||||
this.name = 'dummy',
|
||||
this.commandFunction,
|
||||
});
|
||||
|
||||
|
@ -29,7 +30,7 @@ class DummyFlutterCommand extends FlutterCommand {
|
|||
Future<String> get usagePath => noUsagePath ? null : super.usagePath;
|
||||
|
||||
@override
|
||||
String get name => 'dummy';
|
||||
final String name;
|
||||
|
||||
@override
|
||||
Future<FlutterCommandResult> runCommand() async {
|
||||
|
|
Loading…
Reference in a new issue