Unverified Commit 29375645 authored by Renan's avatar Renan Committed by GitHub

Re-land: Allow users to pass in Xcode build settings as env variables to...

Re-land:  Allow users to pass in Xcode build settings as env variables to flutter build macos FLUTTER_XCODE_  (#82298)
parent 0d50604a
......@@ -114,6 +114,7 @@ Future<void> buildMacOS({
else
'-quiet',
'COMPILER_INDEX_STORE_ENABLE=NO',
...environmentVariablesAsXcodeBuildSettings(globals.platform)
],
trace: true,
stdoutErrorMatcher: verboseLogging ? null : _anyOutput,
......
......@@ -45,6 +45,15 @@ final Platform macosPlatform = FakePlatform(
'HOME': '/',
}
);
final FakePlatform macosPlatformCustomEnv = FakePlatform(
operatingSystem: 'macos',
environment: <String, String>{
'FLUTTER_ROOT': '/',
'HOME': '/',
}
);
final Platform notMacosPlatform = FakePlatform(
operatingSystem: 'linux',
environment: <String, String>{
......@@ -55,6 +64,8 @@ final Platform notMacosPlatform = FakePlatform(
void main() {
FileSystem fileSystem;
TestUsage usage;
FakeProcessManager fakeProcessManager;
XcodeProjectInterpreter xcodeProjectInterpreter;
setUpAll(() {
Cache.disableLocking();
......@@ -63,6 +74,8 @@ void main() {
setUp(() {
fileSystem = MemoryFileSystem.test();
usage = TestUsage();
fakeProcessManager = FakeProcessManager.empty();
xcodeProjectInterpreter = FakeXcodeProjectInterpreter();
});
// Sets up the minimal mock project files necessary to look like a Flutter project.
......@@ -301,6 +314,50 @@ void main() {
Artifacts: () => Artifacts.test(),
});
testUsingContext('build settings contains Flutter Xcode environment variables', () async {
macosPlatformCustomEnv.environment = Map<String, String>.unmodifiable(<String, String>{
'FLUTTER_XCODE_ASSETCATALOG_COMPILER_APPICON_NAME': 'AppIcon.special'
});
final FlutterProject flutterProject = FlutterProject.fromDirectory(fileSystem.currentDirectory);
final Directory flutterBuildDir = fileSystem.directory(getMacOSBuildDirectory());
fakeProcessManager.addCommands(<FakeCommand>[
FakeCommand(
command: <String>[
'/usr/bin/env',
'xcrun',
'xcodebuild',
'-workspace', flutterProject.macos.xcodeWorkspace.path,
'-configuration', 'Debug',
'-scheme', 'Runner',
'-derivedDataPath', flutterBuildDir.absolute.path,
'OBJROOT=${fileSystem.path.join(flutterBuildDir.absolute.path, 'Build', 'Intermediates.noindex')}',
'SYMROOT=${fileSystem.path.join(flutterBuildDir.absolute.path, 'Build', 'Products')}',
'-quiet',
'COMPILER_INDEX_STORE_ENABLE=NO',
'ASSETCATALOG_COMPILER_APPICON_NAME=AppIcon.special',
],
),
]);
final BuildCommand command = BuildCommand();
createMinimalMockProjectFiles();
await createTestCommandRunner(command).run(
const <String>['build', 'macos', '--debug', '--no-pub']
);
expect(fakeProcessManager.hasRemainingExpectations, isFalse);
}, overrides: <Type, Generator>{
FileSystem: () => fileSystem,
ProcessManager: () => fakeProcessManager,
Platform: () => macosPlatformCustomEnv,
FeatureFlags: () => TestFeatureFlags(isMacOSEnabled: true),
XcodeProjectInterpreter: () => xcodeProjectInterpreter,
});
testUsingContext('macOS build supports build-name and build-number', () async {
final BuildCommand command = BuildCommand();
createMinimalMockProjectFiles();
......
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