Unverified Commit d3c8a0bd authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Remove mocks from visual_studio_test (#76260)

parent 805fffd1
...@@ -11,11 +11,9 @@ import 'package:flutter_tools/src/base/logger.dart'; ...@@ -11,11 +11,9 @@ import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/platform.dart';
import 'package:flutter_tools/src/convert.dart'; import 'package:flutter_tools/src/convert.dart';
import 'package:flutter_tools/src/windows/visual_studio.dart'; import 'package:flutter_tools/src/windows/visual_studio.dart';
import 'package:mockito/mockito.dart';
import '../../src/common.dart'; import '../../src/common.dart';
import '../../src/context.dart'; import '../../src/context.dart';
import '../../src/mocks.dart';
const String programFilesPath = r'C:\Program Files (x86)'; const String programFilesPath = r'C:\Program Files (x86)';
const String visualStudioPath = programFilesPath + r'\Microsoft Visual Studio\2017\Community'; const String visualStudioPath = programFilesPath + r'\Microsoft Visual Studio\2017\Community';
...@@ -108,6 +106,8 @@ void setMockVswhereResponse( ...@@ -108,6 +106,8 @@ void setMockVswhereResponse(
List<String> additionalArguments, List<String> additionalArguments,
Map<String, dynamic> response, Map<String, dynamic> response,
String responseOverride, String responseOverride,
int exitCode,
Exception exception,
]) { ]) {
fileSystem.file(vswherePath).createSync(recursive: true); fileSystem.file(vswherePath).createSync(recursive: true);
fileSystem.file(cmakePath).createSync(recursive: true); fileSystem.file(cmakePath).createSync(recursive: true);
...@@ -130,6 +130,8 @@ void setMockVswhereResponse( ...@@ -130,6 +130,8 @@ void setMockVswhereResponse(
...?requirementArguments, ...?requirementArguments,
], ],
stdout: finalResponse, stdout: finalResponse,
exception: exception,
exitCode: exitCode ?? 0,
)); ));
} }
...@@ -138,14 +140,19 @@ void setMockVswhereResponse( ...@@ -138,14 +140,19 @@ void setMockVswhereResponse(
void setMockCompatibleVisualStudioInstallation( void setMockCompatibleVisualStudioInstallation(
Map<String, dynamic> response, Map<String, dynamic> response,
FileSystem fileSystem, FileSystem fileSystem,
FakeProcessManager processManager, FakeProcessManager processManager, [
) { int exitCode,
Exception exception,
]) {
setMockVswhereResponse( setMockVswhereResponse(
fileSystem, fileSystem,
processManager, processManager,
_requirements, _requirements,
<String>['-version', '16'], <String>['-version', '16'],
response, response,
null,
exitCode,
exception,
); );
} }
...@@ -154,14 +161,19 @@ void setMockCompatibleVisualStudioInstallation( ...@@ -154,14 +161,19 @@ void setMockCompatibleVisualStudioInstallation(
void setMockPrereleaseVisualStudioInstallation( void setMockPrereleaseVisualStudioInstallation(
Map<String, dynamic> response, Map<String, dynamic> response,
FileSystem fileSystem, FileSystem fileSystem,
FakeProcessManager processManager, FakeProcessManager processManager, [
) { int exitCode,
Exception exception,
]) {
setMockVswhereResponse( setMockVswhereResponse(
fileSystem, fileSystem,
processManager, processManager,
_requirements, _requirements,
<String>['-version', '16', '-prerelease'], <String>['-version', '16', '-prerelease'],
response, response,
null,
exitCode,
exception,
); );
} }
...@@ -170,14 +182,19 @@ void setMockPrereleaseVisualStudioInstallation( ...@@ -170,14 +182,19 @@ void setMockPrereleaseVisualStudioInstallation(
void setMockCompatibleVisualStudioBuildToolsInstallation( void setMockCompatibleVisualStudioBuildToolsInstallation(
Map<String, dynamic> response, Map<String, dynamic> response,
FileSystem fileSystem, FileSystem fileSystem,
FakeProcessManager processManager, FakeProcessManager processManager, [
) { int exitCode,
Exception exception,
]) {
setMockVswhereResponse( setMockVswhereResponse(
fileSystem, fileSystem,
processManager, processManager,
_requirementsBuildTools, _requirementsBuildTools,
<String>['-version', '16'], <String>['-version', '16'],
response, response,
null,
exitCode,
exception,
); );
} }
...@@ -186,14 +203,19 @@ void setMockCompatibleVisualStudioBuildToolsInstallation( ...@@ -186,14 +203,19 @@ void setMockCompatibleVisualStudioBuildToolsInstallation(
void setMockPrereleaseVisualStudioBuildToolsInstallation( void setMockPrereleaseVisualStudioBuildToolsInstallation(
Map<String, dynamic> response, Map<String, dynamic> response,
FileSystem fileSystem, FileSystem fileSystem,
FakeProcessManager processManager, FakeProcessManager processManager, [
) { int exitCode,
Exception exception,
]) {
setMockVswhereResponse( setMockVswhereResponse(
fileSystem, fileSystem,
processManager, processManager,
_requirementsBuildTools, _requirementsBuildTools,
<String>['-version', '16', '-prerelease'], <String>['-version', '16', '-prerelease'],
response, response,
null,
exitCode,
exception,
); );
} }
...@@ -202,14 +224,19 @@ void setMockPrereleaseVisualStudioBuildToolsInstallation( ...@@ -202,14 +224,19 @@ void setMockPrereleaseVisualStudioBuildToolsInstallation(
void setMockAnyVisualStudioInstallation( void setMockAnyVisualStudioInstallation(
Map<String, dynamic> response, Map<String, dynamic> response,
FileSystem fileSystem, FileSystem fileSystem,
FakeProcessManager processManager, FakeProcessManager processManager, [
) { int exitCode,
Exception exception,
]) {
setMockVswhereResponse( setMockVswhereResponse(
fileSystem, fileSystem,
processManager, processManager,
null, null,
<String>['-prerelease', '-all'], <String>['-prerelease', '-all'],
response, response,
null,
exitCode,
exception,
); );
} }
...@@ -315,65 +342,48 @@ void setNoViableToolchainInstallation( ...@@ -315,65 +342,48 @@ void setNoViableToolchainInstallation(
void main() { void main() {
group('Visual Studio', () { group('Visual Studio', () {
testWithoutContext('isInstalled returns false when vswhere is missing', () { testWithoutContext('isInstalled and cmakePath correct when vswhere is missing', () {
final MockProcessManager mockProcessManager = MockProcessManager(); final FileSystem fileSystem = MemoryFileSystem.test(style: FileSystemStyle.windows);
when(mockProcessManager.runSync( const Exception exception = ProcessException('vswhere', <String>[]);
any, final FakeProcessManager fakeProcessManager = FakeProcessManager.list(<FakeCommand>[]);
workingDirectory: anyNamed('workingDirectory'),
environment: anyNamed('environment'),
stdoutEncoding: utf8,
stderrEncoding: utf8,
)).thenThrow(const ProcessException('vswhere', <String>[]));
final VisualStudio visualStudio = VisualStudio(
logger: BufferLogger.test(),
fileSystem: MemoryFileSystem.test(style: FileSystemStyle.windows),
platform: windowsPlatform,
processManager: mockProcessManager,
);
expect(visualStudio.isInstalled, false); setMockCompatibleVisualStudioInstallation(null, fileSystem, fakeProcessManager, null, exception);
}); setMockCompatibleVisualStudioBuildToolsInstallation(null, fileSystem, fakeProcessManager, null, exception);
setMockPrereleaseVisualStudioInstallation(null, fileSystem, fakeProcessManager, null, exception);
setMockPrereleaseVisualStudioBuildToolsInstallation(null, fileSystem, fakeProcessManager, null, exception);
setMockAnyVisualStudioInstallation(null, fileSystem, fakeProcessManager, null, exception);
testWithoutContext('cmakePath returns null when vswhere is missing', () {
final MockProcessManager mockProcessManager = MockProcessManager();
when(mockProcessManager.runSync(
any,
workingDirectory: anyNamed('workingDirectory'),
environment: anyNamed('environment'),
stdoutEncoding: utf8,
stderrEncoding: utf8,
)).thenThrow(const ProcessException('vswhere', <String>[]));
final VisualStudio visualStudio = VisualStudio( final VisualStudio visualStudio = VisualStudio(
logger: BufferLogger.test(), logger: BufferLogger.test(),
fileSystem: MemoryFileSystem.test(style: FileSystemStyle.windows), fileSystem: fileSystem,
platform: windowsPlatform, platform: windowsPlatform,
processManager: mockProcessManager, processManager: fakeProcessManager,
); );
expect(visualStudio.isInstalled, false);
expect(visualStudio.cmakePath, isNull); expect(visualStudio.cmakePath, isNull);
}); });
testWithoutContext( testWithoutContext(
'isInstalled returns false when vswhere returns non-zero', () { 'isInstalled returns false when vswhere returns non-zero', () {
final MockProcessManager mockProcessManager = MockProcessManager(); final FileSystem fileSystem = MemoryFileSystem.test(style: FileSystemStyle.windows);
when(mockProcessManager.runSync( final FakeProcessManager fakeProcessManager = FakeProcessManager.list(<FakeCommand>[]);
any,
workingDirectory: anyNamed('workingDirectory'), setMockCompatibleVisualStudioInstallation(null, fileSystem, fakeProcessManager, 1);
environment: anyNamed('environment'), setMockCompatibleVisualStudioBuildToolsInstallation(null, fileSystem, fakeProcessManager, 1);
stdoutEncoding: utf8, setMockPrereleaseVisualStudioInstallation(null, fileSystem, fakeProcessManager, 1);
stderrEncoding: utf8, setMockPrereleaseVisualStudioBuildToolsInstallation(null, fileSystem, fakeProcessManager, 1);
)).thenAnswer((Invocation invocation) { setMockAnyVisualStudioInstallation(null, fileSystem, fakeProcessManager, 1);
return FakeProcessResult(exitCode: 1, stderr: '', stdout: '');
});
final VisualStudio visualStudio = VisualStudio( final VisualStudio visualStudio = VisualStudio(
logger: BufferLogger.test(), logger: BufferLogger.test(),
fileSystem: MemoryFileSystem.test(style: FileSystemStyle.windows), fileSystem: fileSystem,
platform: windowsPlatform, platform: windowsPlatform,
processManager: mockProcessManager, processManager: fakeProcessManager,
); );
expect(visualStudio.isInstalled, false); expect(visualStudio.isInstalled, false);
expect(visualStudio.isInstalled, false); expect(visualStudio.cmakePath, isNull);
}); });
testWithoutContext('VisualStudio getters return the right values if no installation is found', () { testWithoutContext('VisualStudio getters return the right values if no installation is found', () {
...@@ -820,5 +830,3 @@ class VisualStudioFixture { ...@@ -820,5 +830,3 @@ class VisualStudioFixture {
final FileSystem fileSystem; final FileSystem fileSystem;
final FakeProcessManager processManager; final FakeProcessManager processManager;
} }
class MockProcessManager extends Mock implements ProcessManager {}
...@@ -323,31 +323,6 @@ class MockResidentCompiler extends _BasicMock implements ResidentCompiler { ...@@ -323,31 +323,6 @@ class MockResidentCompiler extends _BasicMock implements ResidentCompiler {
void addFileSystemRoot(String root) { } void addFileSystemRoot(String root) { }
} }
/// A fake implementation of [ProcessResult].
class FakeProcessResult implements ProcessResult {
FakeProcessResult({
this.exitCode = 0,
this.pid = 1,
this.stderr,
this.stdout,
});
@override
final int exitCode;
@override
final int pid;
@override
final dynamic stderr;
@override
final dynamic stdout;
@override
String toString() => stdout?.toString() ?? stderr?.toString() ?? runtimeType.toString();
}
class MockStdIn extends Mock implements IOSink { class MockStdIn extends Mock implements IOSink {
final StringBuffer stdInWrites = StringBuffer(); final StringBuffer stdInWrites = StringBuffer();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment