| // Copyright 2014 The Flutter 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:flutter_tools/src/doctor.dart'; |
| import 'package:flutter_tools/src/linux/linux_doctor.dart'; |
| import 'package:process/process.dart'; |
| |
| import '../../src/common.dart'; |
| import '../../src/context.dart'; |
| |
| void main() { |
| testWithoutContext('Full validation when clang++ and Make are available',() async { |
| final ProcessManager processManager = FakeProcessManager.list(<FakeCommand>[ |
| const FakeCommand( |
| command: <String>['clang++', '--version'], |
| stdout: 'clang version 4.0.1-10 (tags/RELEASE_401/final)\njunk', |
| ), |
| const FakeCommand( |
| command: <String>['make', '--version'], |
| stdout: 'GNU Make 4.1\njunk', |
| ), |
| ]); |
| final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator( |
| processManager: processManager, |
| ); |
| final ValidationResult result = await linuxDoctorValidator.validate(); |
| |
| expect(result.type, ValidationType.installed); |
| expect(result.messages, <ValidationMessage>[ |
| ValidationMessage('clang++ 4.0.1'), |
| ValidationMessage('GNU Make 4.1'), |
| ]); |
| }); |
| |
| testWithoutContext('Partial validation when clang++ version is too old', () async { |
| final ProcessManager processManager = FakeProcessManager.list(<FakeCommand>[ |
| const FakeCommand( |
| command: <String>['clang++', '--version'], |
| stdout: 'clang version 2.0.1-10 (tags/RELEASE_401/final)\njunk', |
| ), |
| const FakeCommand( |
| command: <String>['make', '--version'], |
| stdout: 'GNU Make 4.1\njunk', |
| ), |
| ]); |
| final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator( |
| processManager: processManager, |
| ); |
| final ValidationResult result = await linuxDoctorValidator.validate(); |
| |
| expect(result.type, ValidationType.partial); |
| expect(result.messages, <ValidationMessage>[ |
| ValidationMessage.error('clang++ 2.0.1 is below minimum version of 3.4.0'), |
| ValidationMessage('GNU Make 4.1'), |
| ]); |
| }); |
| |
| testWithoutContext('Missing validation when Make is not available', () async { |
| final ProcessManager processManager = FakeProcessManager.list(<FakeCommand>[ |
| const FakeCommand( |
| command: <String>['clang++', '--version'], |
| stdout: 'clang version 4.0.1-10 (tags/RELEASE_401/final)\njunk', |
| ), |
| const FakeCommand( |
| command: <String>['make', '--version'], |
| exitCode: 1, |
| ), |
| ]); |
| final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator( |
| processManager: processManager, |
| ); |
| final ValidationResult result = await linuxDoctorValidator.validate(); |
| |
| expect(result.type, ValidationType.missing); |
| expect(result.messages, <ValidationMessage>[ |
| ValidationMessage('clang++ 4.0.1'), |
| ValidationMessage.error('make is not installed'), |
| ]); |
| }); |
| |
| testWithoutContext('Missing validation when clang++ is not available', () async { |
| final ProcessManager processManager = FakeProcessManager.list(<FakeCommand>[ |
| const FakeCommand( |
| command: <String>['clang++', '--version'], |
| exitCode: 1 |
| ), |
| const FakeCommand( |
| command: <String>['make', '--version'], |
| stdout: 'GNU Make 4.1\njunk' |
| ), |
| ]); |
| final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator( |
| processManager: processManager, |
| ); |
| final ValidationResult result = await linuxDoctorValidator.validate(); |
| |
| expect(result.type, ValidationType.missing); |
| expect(result.messages, <ValidationMessage>[ |
| ValidationMessage.error('clang++ is not installed'), |
| ValidationMessage('GNU Make 4.1'), |
| ]); |
| }); |
| |
| testWithoutContext('Missing validation when clang++ and Make are not available', () async { |
| final ProcessManager processManager = FakeProcessManager.list(<FakeCommand>[ |
| const FakeCommand( |
| command: <String>['clang++', '--version'], |
| exitCode: 1, |
| ), |
| const FakeCommand( |
| command: <String>['make', '--version'], |
| exitCode: 1, |
| ), |
| ]); |
| final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator( |
| processManager: processManager, |
| ); |
| |
| final ValidationResult result = await linuxDoctorValidator.validate(); |
| expect(result.type, ValidationType.missing); |
| }); |
| } |