mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Move FakeOperatingSystemUtils from context.dart to fakes.dart (#80916)
This commit is contained in:
parent
7750482308
commit
a99fba01f1
@ -24,6 +24,7 @@ import 'package:process/process.dart';
|
|||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
import '../../src/context.dart';
|
||||||
|
import '../../src/fakes.dart';
|
||||||
import '../../src/test_flutter_command_runner.dart';
|
import '../../src/test_flutter_command_runner.dart';
|
||||||
|
|
||||||
final Platform _kNoColorTerminalPlatform = FakePlatform(stdoutSupportsAnsi: false);
|
final Platform _kNoColorTerminalPlatform = FakePlatform(stdoutSupportsAnsi: false);
|
||||||
|
@ -17,7 +17,6 @@ import 'package:flutter_tools/src/doctor_validator.dart';
|
|||||||
import 'package:mockito/mockito.dart';
|
import 'package:mockito/mockito.dart';
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
|
||||||
import '../../src/fakes.dart';
|
import '../../src/fakes.dart';
|
||||||
import '../../src/mocks.dart' show MockAndroidSdk, MockProcessManager;
|
import '../../src/mocks.dart' show MockAndroidSdk, MockProcessManager;
|
||||||
|
|
||||||
|
@ -12,7 +12,8 @@ import 'package:flutter_tools/src/base/platform.dart';
|
|||||||
import 'package:flutter_tools/src/cache.dart';
|
import 'package:flutter_tools/src/cache.dart';
|
||||||
import 'package:flutter_tools/src/project.dart';
|
import 'package:flutter_tools/src/project.dart';
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
import '../../src/fake_process_manager.dart';
|
||||||
|
import '../../src/fakes.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
group('injectGradleWrapperIfNeeded', () {
|
group('injectGradleWrapperIfNeeded', () {
|
||||||
|
@ -13,7 +13,8 @@ import 'package:flutter_tools/src/build_info.dart';
|
|||||||
import 'package:flutter_tools/src/cache.dart';
|
import 'package:flutter_tools/src/cache.dart';
|
||||||
|
|
||||||
import '../src/common.dart';
|
import '../src/common.dart';
|
||||||
import '../src/context.dart';
|
import '../src/fake_process_manager.dart';
|
||||||
|
import '../src/fakes.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
group('CachedArtifacts', () {
|
group('CachedArtifacts', () {
|
||||||
|
@ -21,9 +21,9 @@ import 'package:mockito/mockito.dart';
|
|||||||
import 'package:package_config/package_config.dart';
|
import 'package:package_config/package_config.dart';
|
||||||
|
|
||||||
import '../src/common.dart';
|
import '../src/common.dart';
|
||||||
import '../src/context.dart';
|
|
||||||
import '../src/fake_http_client.dart';
|
import '../src/fake_http_client.dart';
|
||||||
import '../src/fake_vm_services.dart';
|
import '../src/fake_vm_services.dart';
|
||||||
|
import '../src/fakes.dart';
|
||||||
|
|
||||||
final FakeVmServiceRequest createDevFSRequest = FakeVmServiceRequest(
|
final FakeVmServiceRequest createDevFSRequest = FakeVmServiceRequest(
|
||||||
method: '_createDevFS',
|
method: '_createDevFS',
|
||||||
|
@ -42,6 +42,7 @@ import 'package:vm_service/vm_service.dart' as vm_service;
|
|||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
import '../../src/context.dart';
|
||||||
import '../../src/fake_vm_services.dart';
|
import '../../src/fake_vm_services.dart';
|
||||||
|
import '../../src/fakes.dart';
|
||||||
|
|
||||||
final vm_service.Isolate fakeIsolate = vm_service.Isolate(
|
final vm_service.Isolate fakeIsolate = vm_service.Isolate(
|
||||||
id: '1',
|
id: '1',
|
||||||
|
@ -8,8 +8,8 @@ import 'package:flutter_tools/src/base/logger.dart';
|
|||||||
import 'package:flutter_tools/src/ios/devices.dart';
|
import 'package:flutter_tools/src/ios/devices.dart';
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
|
||||||
import '../../src/fake_process_manager.dart';
|
import '../../src/fake_process_manager.dart';
|
||||||
|
import '../../src/fakes.dart';
|
||||||
|
|
||||||
const Map<String, String> kDyLdLibEntry = <String, String>{
|
const Map<String, String> kDyLdLibEntry = <String, String>{
|
||||||
'DYLD_LIBRARY_PATH': '/path/to/libs',
|
'DYLD_LIBRARY_PATH': '/path/to/libs',
|
||||||
|
@ -10,19 +10,18 @@ import 'package:flutter_tools/src/artifacts.dart';
|
|||||||
import 'package:flutter_tools/src/base/file_system.dart';
|
import 'package:flutter_tools/src/base/file_system.dart';
|
||||||
import 'package:flutter_tools/src/base/logger.dart';
|
import 'package:flutter_tools/src/base/logger.dart';
|
||||||
import 'package:flutter_tools/src/base/process.dart';
|
import 'package:flutter_tools/src/base/process.dart';
|
||||||
|
import 'package:flutter_tools/src/build_info.dart';
|
||||||
import 'package:flutter_tools/src/cache.dart';
|
import 'package:flutter_tools/src/cache.dart';
|
||||||
import 'package:flutter_tools/src/ios/devices.dart';
|
import 'package:flutter_tools/src/ios/devices.dart';
|
||||||
import 'package:flutter_tools/src/ios/mac.dart';
|
import 'package:flutter_tools/src/ios/mac.dart';
|
||||||
import 'package:flutter_tools/src/project.dart';
|
import 'package:flutter_tools/src/project.dart';
|
||||||
import 'package:flutter_tools/src/reporting/reporting.dart';
|
import 'package:flutter_tools/src/reporting/reporting.dart';
|
||||||
import 'package:mockito/mockito.dart';
|
import 'package:test/fake.dart';
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/fake_process_manager.dart';
|
import '../../src/fake_process_manager.dart';
|
||||||
import '../../src/fakes.dart';
|
import '../../src/fakes.dart';
|
||||||
|
|
||||||
class MockIosProject extends Mock implements IosProject {}
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
BufferLogger logger;
|
BufferLogger logger;
|
||||||
|
|
||||||
@ -414,12 +413,9 @@ Exited (sigterm)''',
|
|||||||
'another line';
|
'another line';
|
||||||
|
|
||||||
testWithoutContext('upgradePbxProjWithFlutterAssets', () async {
|
testWithoutContext('upgradePbxProjWithFlutterAssets', () async {
|
||||||
final MockIosProject project = MockIosProject();
|
|
||||||
final File pbxprojFile = MemoryFileSystem.test().file('project.pbxproj')
|
final File pbxprojFile = MemoryFileSystem.test().file('project.pbxproj')
|
||||||
..writeAsStringSync(flutterAssetPbxProjLines);
|
..writeAsStringSync(flutterAssetPbxProjLines);
|
||||||
|
final FakeIosProject project = FakeIosProject(pbxprojFile);
|
||||||
when(project.xcodeProjectInfoFile).thenReturn(pbxprojFile);
|
|
||||||
when(project.hostAppBundleName(any)).thenAnswer((_) => Future<String>.value('UnitTestRunner.app'));
|
|
||||||
|
|
||||||
bool result = upgradePbxProjWithFlutterAssets(project, logger);
|
bool result = upgradePbxProjWithFlutterAssets(project, logger);
|
||||||
expect(result, true);
|
expect(result, true);
|
||||||
@ -488,3 +484,15 @@ Exited (sigterm)''',
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class FakeIosProject extends Fake implements IosProject {
|
||||||
|
FakeIosProject(this.xcodeProjectInfoFile);
|
||||||
|
@override
|
||||||
|
final File xcodeProjectInfoFile;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<String> hostAppBundleName(BuildInfo buildInfo) async => 'UnitTestRunner.app';
|
||||||
|
|
||||||
|
@override
|
||||||
|
final Directory xcodeProject = null;
|
||||||
|
}
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'package:file/memory.dart';
|
import 'package:file/memory.dart';
|
||||||
import 'package:flutter_tools/src/base/file_system.dart';
|
import 'package:flutter_tools/src/base/file_system.dart';
|
||||||
import 'package:flutter_tools/src/convert.dart';
|
import 'package:flutter_tools/src/convert.dart';
|
||||||
@ -241,8 +239,8 @@ const String _kApacheLicense = r'''
|
|||||||
''';
|
''';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
FileSystem fileSystem;
|
late FileSystem fileSystem;
|
||||||
LicenseCollector licenseCollector;
|
late LicenseCollector licenseCollector;
|
||||||
|
|
||||||
setUp(() {
|
setUp(() {
|
||||||
fileSystem = MemoryFileSystem.test();
|
fileSystem = MemoryFileSystem.test();
|
||||||
|
@ -25,8 +25,8 @@ import 'package:mockito/mockito.dart';
|
|||||||
import 'package:yaml/yaml.dart';
|
import 'package:yaml/yaml.dart';
|
||||||
|
|
||||||
import '../src/common.dart';
|
import '../src/common.dart';
|
||||||
import '../src/context.dart' hide FakeOperatingSystemUtils;
|
import '../src/context.dart';
|
||||||
import '../src/fakes.dart';
|
import '../src/fakes.dart' hide FakeOperatingSystemUtils;
|
||||||
import '../src/pubspec_schema.dart';
|
import '../src/pubspec_schema.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:file/memory.dart';
|
import 'package:file/memory.dart';
|
||||||
@ -14,7 +12,8 @@ import 'package:flutter_tools/src/base/platform.dart';
|
|||||||
import 'package:flutter_tools/src/web/chrome.dart';
|
import 'package:flutter_tools/src/web/chrome.dart';
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
import '../../src/fake_process_manager.dart';
|
||||||
|
import '../../src/fakes.dart';
|
||||||
|
|
||||||
const List<String> kChromeArgs = <String>[
|
const List<String> kChromeArgs = <String>[
|
||||||
'--disable-background-timer-throttling',
|
'--disable-background-timer-throttling',
|
||||||
@ -30,12 +29,12 @@ const List<String> kChromeArgs = <String>[
|
|||||||
const String kDevtoolsStderr = '\n\nDevTools listening\n\n';
|
const String kDevtoolsStderr = '\n\nDevTools listening\n\n';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
FileExceptionHandler exceptionHandler;
|
late FileExceptionHandler exceptionHandler;
|
||||||
ChromiumLauncher chromeLauncher;
|
late ChromiumLauncher chromeLauncher;
|
||||||
FileSystem fileSystem;
|
late FileSystem fileSystem;
|
||||||
Platform platform;
|
late Platform platform;
|
||||||
FakeProcessManager processManager;
|
late FakeProcessManager processManager;
|
||||||
OperatingSystemUtils operatingSystemUtils;
|
late OperatingSystemUtils operatingSystemUtils;
|
||||||
|
|
||||||
setUp(() {
|
setUp(() {
|
||||||
exceptionHandler = FileExceptionHandler();
|
exceptionHandler = FileExceptionHandler();
|
||||||
|
@ -2,13 +2,11 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// @dart = 2.8
|
|
||||||
|
|
||||||
import 'package:flutter_tools/src/base/user_messages.dart' hide userMessages;
|
import 'package:flutter_tools/src/base/user_messages.dart' hide userMessages;
|
||||||
import 'package:flutter_tools/src/doctor_validator.dart';
|
import 'package:flutter_tools/src/doctor_validator.dart';
|
||||||
import 'package:flutter_tools/src/windows/visual_studio.dart';
|
import 'package:flutter_tools/src/windows/visual_studio.dart';
|
||||||
import 'package:flutter_tools/src/windows/visual_studio_validator.dart';
|
import 'package:flutter_tools/src/windows/visual_studio_validator.dart';
|
||||||
import 'package:mockito/mockito.dart';
|
import 'package:test/fake.dart';
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
|
|
||||||
@ -16,63 +14,50 @@ final UserMessages userMessages = UserMessages();
|
|||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
group('Visual Studio validation', () {
|
group('Visual Studio validation', () {
|
||||||
MockVisualStudio mockVisualStudio;
|
late FakeVisualStudio fakeVisualStudio;
|
||||||
|
|
||||||
setUp(() {
|
setUp(() {
|
||||||
mockVisualStudio = MockVisualStudio();
|
fakeVisualStudio = FakeVisualStudio();
|
||||||
// Default values regardless of whether VS is installed or not.
|
|
||||||
when(mockVisualStudio.workloadDescription).thenReturn('Desktop development');
|
|
||||||
when(mockVisualStudio.minimumVersionDescription).thenReturn('2019');
|
|
||||||
when(mockVisualStudio.necessaryComponentDescriptions()).thenReturn(<String>['A', 'B']);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Assigns default values for a complete VS installation with necessary components.
|
// Assigns default values for a complete VS installation with necessary components.
|
||||||
void _configureMockVisualStudioAsInstalled() {
|
void _configureMockVisualStudioAsInstalled() {
|
||||||
when(mockVisualStudio.isInstalled).thenReturn(true);
|
fakeVisualStudio.isPrerelease = false;
|
||||||
when(mockVisualStudio.isAtLeastMinimumVersion).thenReturn(true);
|
fakeVisualStudio.isRebootRequired = false;
|
||||||
when(mockVisualStudio.isPrerelease).thenReturn(false);
|
fakeVisualStudio.fullVersion = '16.2';
|
||||||
when(mockVisualStudio.isComplete).thenReturn(true);
|
fakeVisualStudio.displayName = 'Visual Studio Community 2019';
|
||||||
when(mockVisualStudio.isLaunchable).thenReturn(true);
|
fakeVisualStudio.windows10SDKVersion = '10.0.18362.0';
|
||||||
when(mockVisualStudio.isRebootRequired).thenReturn(false);
|
|
||||||
when(mockVisualStudio.hasNecessaryComponents).thenReturn(true);
|
|
||||||
when(mockVisualStudio.fullVersion).thenReturn('16.2');
|
|
||||||
when(mockVisualStudio.displayName).thenReturn('Visual Studio Community 2019');
|
|
||||||
when(mockVisualStudio.getWindows10SDKVersion()).thenReturn('10.0.18362.0');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assigns default values for a complete VS installation that is too old.
|
// Assigns default values for a complete VS installation that is too old.
|
||||||
void _configureMockVisualStudioAsTooOld() {
|
void _configureMockVisualStudioAsTooOld() {
|
||||||
when(mockVisualStudio.isInstalled).thenReturn(true);
|
fakeVisualStudio.isAtLeastMinimumVersion = false;
|
||||||
when(mockVisualStudio.isAtLeastMinimumVersion).thenReturn(false);
|
fakeVisualStudio.isPrerelease = false;
|
||||||
when(mockVisualStudio.isPrerelease).thenReturn(false);
|
fakeVisualStudio.isRebootRequired = false;
|
||||||
when(mockVisualStudio.isComplete).thenReturn(true);
|
fakeVisualStudio.fullVersion = '15.1';
|
||||||
when(mockVisualStudio.isLaunchable).thenReturn(true);
|
fakeVisualStudio.displayName = 'Visual Studio Community 2017';
|
||||||
when(mockVisualStudio.isRebootRequired).thenReturn(false);
|
fakeVisualStudio.windows10SDKVersion = '10.0.17763.0';
|
||||||
when(mockVisualStudio.hasNecessaryComponents).thenReturn(true);
|
|
||||||
when(mockVisualStudio.fullVersion).thenReturn('15.1');
|
|
||||||
when(mockVisualStudio.displayName).thenReturn('Visual Studio Community 2017');
|
|
||||||
when(mockVisualStudio.getWindows10SDKVersion()).thenReturn('10.0.17763.0');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assigns default values for a missing VS installation.
|
// Assigns default values for a missing VS installation.
|
||||||
void _configureMockVisualStudioAsNotInstalled() {
|
void _configureMockVisualStudioAsNotInstalled() {
|
||||||
when(mockVisualStudio.isInstalled).thenReturn(false);
|
fakeVisualStudio.isInstalled = false;
|
||||||
when(mockVisualStudio.isAtLeastMinimumVersion).thenReturn(false);
|
fakeVisualStudio.isAtLeastMinimumVersion = false;
|
||||||
when(mockVisualStudio.isPrerelease).thenReturn(false);
|
fakeVisualStudio.isPrerelease = false;
|
||||||
when(mockVisualStudio.isComplete).thenReturn(false);
|
fakeVisualStudio.isComplete = false;
|
||||||
when(mockVisualStudio.isLaunchable).thenReturn(false);
|
fakeVisualStudio.isLaunchable = false;
|
||||||
when(mockVisualStudio.isRebootRequired).thenReturn(false);
|
fakeVisualStudio.isRebootRequired = false;
|
||||||
when(mockVisualStudio.hasNecessaryComponents).thenReturn(false);
|
fakeVisualStudio.hasNecessaryComponents = false;
|
||||||
when(mockVisualStudio.getWindows10SDKVersion()).thenReturn(null);
|
fakeVisualStudio.windows10SDKVersion = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
testWithoutContext('Emits a message when Visual Studio is a pre-release version', () async {
|
testWithoutContext('Emits a message when Visual Studio is a pre-release version', () async {
|
||||||
final VisualStudioValidator validator = VisualStudioValidator(
|
final VisualStudioValidator validator = VisualStudioValidator(
|
||||||
userMessages: userMessages,
|
userMessages: userMessages,
|
||||||
visualStudio: mockVisualStudio,
|
visualStudio: fakeVisualStudio,
|
||||||
);
|
);
|
||||||
_configureMockVisualStudioAsInstalled();
|
_configureMockVisualStudioAsInstalled();
|
||||||
when(mockVisualStudio.isPrerelease).thenReturn(true);
|
fakeVisualStudio.isPrerelease = true;
|
||||||
|
|
||||||
final ValidationResult result = await validator.validate();
|
final ValidationResult result = await validator.validate();
|
||||||
final ValidationMessage expectedMessage = ValidationMessage(userMessages.visualStudioIsPrerelease);
|
final ValidationMessage expectedMessage = ValidationMessage(userMessages.visualStudioIsPrerelease);
|
||||||
@ -83,10 +68,10 @@ void main() {
|
|||||||
testWithoutContext('Emits a partial status when Visual Studio installation is incomplete', () async {
|
testWithoutContext('Emits a partial status when Visual Studio installation is incomplete', () async {
|
||||||
final VisualStudioValidator validator = VisualStudioValidator(
|
final VisualStudioValidator validator = VisualStudioValidator(
|
||||||
userMessages: userMessages,
|
userMessages: userMessages,
|
||||||
visualStudio: mockVisualStudio,
|
visualStudio: fakeVisualStudio,
|
||||||
);
|
);
|
||||||
_configureMockVisualStudioAsInstalled();
|
_configureMockVisualStudioAsInstalled();
|
||||||
when(mockVisualStudio.isComplete).thenReturn(false);
|
fakeVisualStudio.isComplete = false;
|
||||||
|
|
||||||
final ValidationResult result = await validator.validate();
|
final ValidationResult result = await validator.validate();
|
||||||
final ValidationMessage expectedMessage = ValidationMessage.error(userMessages.visualStudioIsIncomplete);
|
final ValidationMessage expectedMessage = ValidationMessage.error(userMessages.visualStudioIsIncomplete);
|
||||||
@ -98,10 +83,10 @@ void main() {
|
|||||||
testWithoutContext('Emits a partial status when Visual Studio installation needs rebooting', () async {
|
testWithoutContext('Emits a partial status when Visual Studio installation needs rebooting', () async {
|
||||||
final VisualStudioValidator validator = VisualStudioValidator(
|
final VisualStudioValidator validator = VisualStudioValidator(
|
||||||
userMessages: userMessages,
|
userMessages: userMessages,
|
||||||
visualStudio: mockVisualStudio,
|
visualStudio: fakeVisualStudio,
|
||||||
);
|
);
|
||||||
_configureMockVisualStudioAsInstalled();
|
_configureMockVisualStudioAsInstalled();
|
||||||
when(mockVisualStudio.isRebootRequired).thenReturn(true);
|
fakeVisualStudio.isRebootRequired = true;
|
||||||
|
|
||||||
final ValidationResult result = await validator.validate();
|
final ValidationResult result = await validator.validate();
|
||||||
final ValidationMessage expectedMessage = ValidationMessage.error(userMessages.visualStudioRebootRequired);
|
final ValidationMessage expectedMessage = ValidationMessage.error(userMessages.visualStudioRebootRequired);
|
||||||
@ -113,10 +98,10 @@ void main() {
|
|||||||
testWithoutContext('Emits a partial status when Visual Studio installation is not launchable', () async {
|
testWithoutContext('Emits a partial status when Visual Studio installation is not launchable', () async {
|
||||||
final VisualStudioValidator validator = VisualStudioValidator(
|
final VisualStudioValidator validator = VisualStudioValidator(
|
||||||
userMessages: userMessages,
|
userMessages: userMessages,
|
||||||
visualStudio: mockVisualStudio,
|
visualStudio: fakeVisualStudio,
|
||||||
);
|
);
|
||||||
_configureMockVisualStudioAsInstalled();
|
_configureMockVisualStudioAsInstalled();
|
||||||
when(mockVisualStudio.isLaunchable).thenReturn(false);
|
fakeVisualStudio.isLaunchable = false;
|
||||||
|
|
||||||
final ValidationResult result = await validator.validate();
|
final ValidationResult result = await validator.validate();
|
||||||
final ValidationMessage expectedMessage = ValidationMessage.error(userMessages.visualStudioNotLaunchable);
|
final ValidationMessage expectedMessage = ValidationMessage.error(userMessages.visualStudioNotLaunchable);
|
||||||
@ -128,15 +113,15 @@ void main() {
|
|||||||
testWithoutContext('Emits partial status when Visual Studio is installed but too old', () async {
|
testWithoutContext('Emits partial status when Visual Studio is installed but too old', () async {
|
||||||
final VisualStudioValidator validator = VisualStudioValidator(
|
final VisualStudioValidator validator = VisualStudioValidator(
|
||||||
userMessages: userMessages,
|
userMessages: userMessages,
|
||||||
visualStudio: mockVisualStudio,
|
visualStudio: fakeVisualStudio,
|
||||||
);
|
);
|
||||||
_configureMockVisualStudioAsTooOld();
|
_configureMockVisualStudioAsTooOld();
|
||||||
|
|
||||||
final ValidationResult result = await validator.validate();
|
final ValidationResult result = await validator.validate();
|
||||||
final ValidationMessage expectedMessage = ValidationMessage.error(
|
final ValidationMessage expectedMessage = ValidationMessage.error(
|
||||||
userMessages.visualStudioTooOld(
|
userMessages.visualStudioTooOld(
|
||||||
mockVisualStudio.minimumVersionDescription,
|
fakeVisualStudio.minimumVersionDescription,
|
||||||
mockVisualStudio.workloadDescription,
|
fakeVisualStudio.workloadDescription,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -147,10 +132,10 @@ void main() {
|
|||||||
testWithoutContext('Emits partial status when Visual Studio is installed without necessary components', () async {
|
testWithoutContext('Emits partial status when Visual Studio is installed without necessary components', () async {
|
||||||
final VisualStudioValidator validator = VisualStudioValidator(
|
final VisualStudioValidator validator = VisualStudioValidator(
|
||||||
userMessages: userMessages,
|
userMessages: userMessages,
|
||||||
visualStudio: mockVisualStudio,
|
visualStudio: fakeVisualStudio,
|
||||||
);
|
);
|
||||||
_configureMockVisualStudioAsInstalled();
|
_configureMockVisualStudioAsInstalled();
|
||||||
when(mockVisualStudio.hasNecessaryComponents).thenReturn(false);
|
fakeVisualStudio.hasNecessaryComponents = false;
|
||||||
final ValidationResult result = await validator.validate();
|
final ValidationResult result = await validator.validate();
|
||||||
|
|
||||||
expect(result.type, ValidationType.partial);
|
expect(result.type, ValidationType.partial);
|
||||||
@ -159,10 +144,10 @@ void main() {
|
|||||||
testWithoutContext('Emits partial status when Visual Studio is installed but the SDK cannot be found', () async {
|
testWithoutContext('Emits partial status when Visual Studio is installed but the SDK cannot be found', () async {
|
||||||
final VisualStudioValidator validator = VisualStudioValidator(
|
final VisualStudioValidator validator = VisualStudioValidator(
|
||||||
userMessages: userMessages,
|
userMessages: userMessages,
|
||||||
visualStudio: mockVisualStudio,
|
visualStudio: fakeVisualStudio,
|
||||||
);
|
);
|
||||||
_configureMockVisualStudioAsInstalled();
|
_configureMockVisualStudioAsInstalled();
|
||||||
when(mockVisualStudio.getWindows10SDKVersion()).thenReturn(null);
|
fakeVisualStudio.windows10SDKVersion = null;
|
||||||
final ValidationResult result = await validator.validate();
|
final ValidationResult result = await validator.validate();
|
||||||
|
|
||||||
expect(result.type, ValidationType.partial);
|
expect(result.type, ValidationType.partial);
|
||||||
@ -171,13 +156,13 @@ void main() {
|
|||||||
testWithoutContext('Emits installed status when Visual Studio is installed with necessary components', () async {
|
testWithoutContext('Emits installed status when Visual Studio is installed with necessary components', () async {
|
||||||
final VisualStudioValidator validator = VisualStudioValidator(
|
final VisualStudioValidator validator = VisualStudioValidator(
|
||||||
userMessages: userMessages,
|
userMessages: userMessages,
|
||||||
visualStudio: mockVisualStudio,
|
visualStudio: fakeVisualStudio,
|
||||||
);
|
);
|
||||||
_configureMockVisualStudioAsInstalled();
|
_configureMockVisualStudioAsInstalled();
|
||||||
|
|
||||||
final ValidationResult result = await validator.validate();
|
final ValidationResult result = await validator.validate();
|
||||||
final ValidationMessage expectedDisplayNameMessage = ValidationMessage(
|
final ValidationMessage expectedDisplayNameMessage = ValidationMessage(
|
||||||
userMessages.visualStudioVersion(mockVisualStudio.displayName, mockVisualStudio.fullVersion));
|
userMessages.visualStudioVersion(fakeVisualStudio.displayName!, fakeVisualStudio.fullVersion!));
|
||||||
|
|
||||||
expect(result.messages.contains(expectedDisplayNameMessage), true);
|
expect(result.messages.contains(expectedDisplayNameMessage), true);
|
||||||
expect(result.type, ValidationType.installed);
|
expect(result.type, ValidationType.installed);
|
||||||
@ -186,14 +171,14 @@ void main() {
|
|||||||
testWithoutContext('Emits missing status when Visual Studio is not installed', () async {
|
testWithoutContext('Emits missing status when Visual Studio is not installed', () async {
|
||||||
final VisualStudioValidator validator = VisualStudioValidator(
|
final VisualStudioValidator validator = VisualStudioValidator(
|
||||||
userMessages: userMessages,
|
userMessages: userMessages,
|
||||||
visualStudio: mockVisualStudio,
|
visualStudio: fakeVisualStudio,
|
||||||
);
|
);
|
||||||
_configureMockVisualStudioAsNotInstalled();
|
_configureMockVisualStudioAsNotInstalled();
|
||||||
|
|
||||||
final ValidationResult result = await validator.validate();
|
final ValidationResult result = await validator.validate();
|
||||||
final ValidationMessage expectedMessage = ValidationMessage.error(
|
final ValidationMessage expectedMessage = ValidationMessage.error(
|
||||||
userMessages.visualStudioMissing(
|
userMessages.visualStudioMissing(
|
||||||
mockVisualStudio.workloadDescription,
|
fakeVisualStudio.workloadDescription,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -203,4 +188,51 @@ void main() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockVisualStudio extends Mock implements VisualStudio {}
|
class FakeVisualStudio extends Fake implements VisualStudio {
|
||||||
|
@override
|
||||||
|
final String installLocation = 'bogus';
|
||||||
|
|
||||||
|
@override
|
||||||
|
final String displayVersion = 'version';
|
||||||
|
|
||||||
|
@override
|
||||||
|
final String minimumVersionDescription = '2019';
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<String> necessaryComponentDescriptions() => <String>['A', 'B'];
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isInstalled = true;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isAtLeastMinimumVersion = true;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isPrerelease = true;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isComplete = true;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isLaunchable = true;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isRebootRequired = true;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool hasNecessaryComponents = true;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String? fullVersion;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String? displayName;
|
||||||
|
|
||||||
|
String? windows10SDKVersion;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String? getWindows10SDKVersion() => windows10SDKVersion;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get workloadDescription => 'Desktop development';
|
||||||
|
}
|
||||||
|
@ -296,46 +296,6 @@ class MockSimControl extends Mock implements SimControl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FakeOperatingSystemUtils implements OperatingSystemUtils {
|
|
||||||
FakeOperatingSystemUtils({this.hostPlatform = HostPlatform.linux_x64});
|
|
||||||
|
|
||||||
@override
|
|
||||||
ProcessResult makeExecutable(File file) => null;
|
|
||||||
|
|
||||||
@override
|
|
||||||
HostPlatform hostPlatform = HostPlatform.linux_x64;
|
|
||||||
|
|
||||||
@override
|
|
||||||
void chmod(FileSystemEntity entity, String mode) { }
|
|
||||||
|
|
||||||
@override
|
|
||||||
File which(String execName) => null;
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<File> whichAll(String execName) => <File>[];
|
|
||||||
|
|
||||||
@override
|
|
||||||
File makePipe(String path) => null;
|
|
||||||
|
|
||||||
@override
|
|
||||||
void unzip(File file, Directory targetDirectory) { }
|
|
||||||
|
|
||||||
@override
|
|
||||||
void unpack(File gzippedTarFile, Directory targetDirectory) { }
|
|
||||||
|
|
||||||
@override
|
|
||||||
Stream<List<int>> gzipLevel1Stream(Stream<List<int>> stream) => stream;
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get name => 'fake OS name and version';
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get pathVarSeparator => ';';
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<int> findFreePort({bool ipv6 = false}) async => 12345;
|
|
||||||
}
|
|
||||||
|
|
||||||
class MockIOSSimulatorUtils extends Mock implements IOSSimulatorUtils {}
|
class MockIOSSimulatorUtils extends Mock implements IOSSimulatorUtils {}
|
||||||
|
|
||||||
class FakeXcodeProjectInterpreter implements XcodeProjectInterpreter {
|
class FakeXcodeProjectInterpreter implements XcodeProjectInterpreter {
|
||||||
|
@ -15,6 +15,7 @@ import 'package:flutter_tools/src/convert.dart';
|
|||||||
import 'package:flutter_tools/src/features.dart';
|
import 'package:flutter_tools/src/features.dart';
|
||||||
import 'package:flutter_tools/src/ios/plist_parser.dart';
|
import 'package:flutter_tools/src/ios/plist_parser.dart';
|
||||||
import 'package:flutter_tools/src/version.dart';
|
import 'package:flutter_tools/src/version.dart';
|
||||||
|
import 'package:test/fake.dart';
|
||||||
|
|
||||||
/// Environment with DYLD_LIBRARY_PATH=/path/to/libraries
|
/// Environment with DYLD_LIBRARY_PATH=/path/to/libraries
|
||||||
class FakeDyldEnvironmentArtifact extends ArtifactSet {
|
class FakeDyldEnvironmentArtifact extends ArtifactSet {
|
||||||
@ -493,3 +494,40 @@ class FakeStatusLogger extends DelegatingLogger {
|
|||||||
int progressIndicatorPadding = kDefaultStatusPadding,
|
int progressIndicatorPadding = kDefaultStatusPadding,
|
||||||
}) => status;
|
}) => status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class FakeOperatingSystemUtils extends Fake implements OperatingSystemUtils {
|
||||||
|
FakeOperatingSystemUtils({this.hostPlatform = HostPlatform.linux_x64});
|
||||||
|
|
||||||
|
@override
|
||||||
|
void makeExecutable(File file) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
HostPlatform hostPlatform = HostPlatform.linux_x64;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void chmod(FileSystemEntity entity, String mode) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
File? which(String execName) => null;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<File> whichAll(String execName) => <File>[];
|
||||||
|
|
||||||
|
@override
|
||||||
|
void unzip(File file, Directory targetDirectory) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
void unpack(File gzippedTarFile, Directory targetDirectory) { }
|
||||||
|
|
||||||
|
@override
|
||||||
|
Stream<List<int>> gzipLevel1Stream(Stream<List<int>> stream) => stream;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get name => 'fake OS name and version';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get pathVarSeparator => ';';
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<int> findFreePort({bool ipv6 = false}) async => 12345;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user