mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Add build warning for non-debug desktop builds (#38932)
When building in profile or release mode on desktop, add a prominent warning that it's actually a debug build. This is to help address issues with people being unaware of the current state of builds due to following third-party guides rather than official documentation. macOS is not included since PRs are in flight for macOS release support.
This commit is contained in:
parent
f515bf6abc
commit
01530928f0
@ -38,6 +38,15 @@ export PROJECT_DIR=${linuxProject.project.directory.path}
|
||||
..createSync(recursive: true)
|
||||
..writeAsStringSync(buffer.toString());
|
||||
|
||||
if (!buildInfo.isDebug) {
|
||||
const String warning = '🚧 ';
|
||||
printStatus(warning * 20);
|
||||
printStatus('Warning: Only debug is currently implemented for Linux. This is effectively a debug build.');
|
||||
printStatus('See https://github.com/flutter/flutter/issues/38478 for details and updates.');
|
||||
printStatus(warning * 20);
|
||||
printStatus('');
|
||||
}
|
||||
|
||||
// Invoke make.
|
||||
final Stopwatch sw = Stopwatch()..start();
|
||||
final Process process = await processManager.start(<String>[
|
||||
|
@ -42,6 +42,15 @@ Future<void> buildWindows(WindowsProject windowsProject, BuildInfo buildInfo, {S
|
||||
'Please run `flutter doctor` for more details.');
|
||||
}
|
||||
|
||||
if (!buildInfo.isDebug) {
|
||||
const String warning = '🚧 ';
|
||||
printStatus(warning * 20);
|
||||
printStatus('Warning: Only debug is currently implemented for Windows. This is effectively a debug build.');
|
||||
printStatus('See https://github.com/flutter/flutter/issues/38477 for details and updates.');
|
||||
printStatus(warning * 20);
|
||||
printStatus('');
|
||||
}
|
||||
|
||||
final String buildScript = fs.path.join(
|
||||
Cache.flutterRoot,
|
||||
'packages',
|
||||
|
@ -7,10 +7,12 @@ import 'package:file/memory.dart';
|
||||
import 'package:flutter_tools/src/base/common.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/io.dart';
|
||||
import 'package:flutter_tools/src/base/logger.dart';
|
||||
import 'package:flutter_tools/src/base/platform.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/commands/build.dart';
|
||||
import 'package:flutter_tools/src/features.dart';
|
||||
import 'package:flutter_tools/src/globals.dart';
|
||||
import 'package:flutter_tools/src/linux/makefile.dart';
|
||||
import 'package:flutter_tools/src/project.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
@ -131,6 +133,35 @@ BINARY_NAME=fizz_bar
|
||||
}, overrides: <Type, Generator>{
|
||||
FeatureFlags: () => TestFeatureFlags(isLinuxEnabled: false),
|
||||
});
|
||||
|
||||
testUsingContext('Release build prints an under-construction warning', () async {
|
||||
final BuildCommand command = BuildCommand();
|
||||
applyMocksToCommand(command);
|
||||
fs.file('linux/build.sh').createSync(recursive: true);
|
||||
fs.file('pubspec.yaml').createSync();
|
||||
fs.file('.packages').createSync();
|
||||
fs.file(fs.path.join('lib', 'main.dart')).createSync(recursive: true);
|
||||
|
||||
when(mockProcessManager.start(<String>[
|
||||
'make',
|
||||
'-C',
|
||||
'/linux',
|
||||
], runInShell: true)).thenAnswer((Invocation invocation) async {
|
||||
return mockProcess;
|
||||
});
|
||||
|
||||
await createTestCommandRunner(command).run(
|
||||
const <String>['build', 'linux']
|
||||
);
|
||||
|
||||
final BufferLogger bufferLogger = logger;
|
||||
expect(bufferLogger.statusText, contains('🚧'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => mockProcessManager,
|
||||
Platform: () => linuxPlatform,
|
||||
FeatureFlags: () => TestFeatureFlags(isLinuxEnabled: true),
|
||||
});
|
||||
}
|
||||
|
||||
class MockProcessManager extends Mock implements ProcessManager {}
|
||||
|
@ -6,10 +6,12 @@ import 'package:file/memory.dart';
|
||||
import 'package:flutter_tools/src/base/common.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/io.dart';
|
||||
import 'package:flutter_tools/src/base/logger.dart';
|
||||
import 'package:flutter_tools/src/base/platform.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:flutter_tools/src/commands/build.dart';
|
||||
import 'package:flutter_tools/src/features.dart';
|
||||
import 'package:flutter_tools/src/globals.dart';
|
||||
import 'package:flutter_tools/src/windows/visual_studio.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:process/process.dart';
|
||||
@ -139,6 +141,38 @@ void main() {
|
||||
VisualStudio: () => mockVisualStudio,
|
||||
FeatureFlags: () => TestFeatureFlags(isWindowsEnabled: true),
|
||||
});
|
||||
|
||||
testUsingContext('Release build prints an under-construction warning', () async {
|
||||
final BuildCommand command = BuildCommand();
|
||||
applyMocksToCommand(command);
|
||||
fs.file(solutionPath).createSync(recursive: true);
|
||||
when(mockVisualStudio.vcvarsPath).thenReturn(vcvarsPath);
|
||||
fs.file('pubspec.yaml').createSync();
|
||||
fs.file('.packages').createSync();
|
||||
fs.file(fs.path.join('lib', 'main.dart')).createSync(recursive: true);
|
||||
|
||||
when(mockProcessManager.start(<String>[
|
||||
r'C:\packages\flutter_tools\bin\vs_build.bat',
|
||||
vcvarsPath,
|
||||
fs.path.basename(solutionPath),
|
||||
'Release',
|
||||
], workingDirectory: fs.path.dirname(solutionPath))).thenAnswer((Invocation invocation) async {
|
||||
return mockProcess;
|
||||
});
|
||||
|
||||
await createTestCommandRunner(command).run(
|
||||
const <String>['build', 'windows']
|
||||
);
|
||||
|
||||
final BufferLogger bufferLogger = logger;
|
||||
expect(bufferLogger.statusText, contains('🚧'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => memoryFilesystem,
|
||||
ProcessManager: () => mockProcessManager,
|
||||
Platform: () => windowsPlatform,
|
||||
VisualStudio: () => mockVisualStudio,
|
||||
FeatureFlags: () => TestFeatureFlags(isWindowsEnabled: true),
|
||||
});
|
||||
}
|
||||
|
||||
class MockProcessManager extends Mock implements ProcessManager {}
|
||||
|
Loading…
Reference in New Issue
Block a user