diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index 3e6f2c798d1cab..36b03d00d2cbaf 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -37,7 +37,8 @@ def pods(target_name, options = {}, use_flipper: !IN_CI && !USE_FRAMEWORKS) flipper_configuration: use_flipper ? FlipperConfiguration.enabled : FlipperConfiguration.disabled, app_path: "#{Dir.pwd}", config_file_dir: "#{Dir.pwd}/node_modules", - production: !ENV['PRODUCTION'].nil? + production: !ENV['PRODUCTION'].nil?, + ios_folder: '.', ) pod 'ReactCommon/turbomodule/samples', :path => "#{@prefix_path}/ReactCommon" diff --git a/scripts/cocoapods/__tests__/codegen_utils-test.rb b/scripts/cocoapods/__tests__/codegen_utils-test.rb index be5c2cdf7f8173..f8580d20288bfe 100644 --- a/scripts/cocoapods/__tests__/codegen_utils-test.rb +++ b/scripts/cocoapods/__tests__/codegen_utils-test.rb @@ -380,9 +380,10 @@ def testCleanUpCodegenFolder_whenCleanupDone_doNothing # Arrange CodegenUtils.set_cleanup_done(true) codegen_dir = "build/generated/ios" + ios_folder = '.' # Act - CodegenUtils.clean_up_build_folder(@base_path, codegen_dir) + CodegenUtils.clean_up_build_folder(@base_path, ios_folder, codegen_dir) # Assert assert_equal(FileUtils::FileUtilsStorage.rmrf_invocation_count, 0) @@ -394,9 +395,10 @@ def testCleanUpCodegenFolder_whenFolderDoesNotExists_markAsCleanupDone # Arrange CodegenUtils.set_cleanup_done(false) codegen_dir = "build/generated/ios" + ios_folder = '.' # Act - CodegenUtils.clean_up_build_folder(@base_path, codegen_dir) + CodegenUtils.clean_up_build_folder(@base_path, ios_folder, codegen_dir) # Assert assert_equal(FileUtils::FileUtilsStorage.rmrf_invocation_count, 0) @@ -409,7 +411,8 @@ def testCleanUpCodegenFolder_whenFolderExists_deleteItAndSetCleanupDone # Arrange CodegenUtils.set_cleanup_done(false) codegen_dir = "build/generated/ios" - codegen_path = "#{@base_path}/#{codegen_dir}" + ios_folder = '.' + codegen_path = "#{@base_path}/./#{codegen_dir}" globs = [ "/MyModuleSpecs/MyModule.h", "#{codegen_path}/MyModuleSpecs/MyModule.mm", @@ -420,7 +423,7 @@ def testCleanUpCodegenFolder_whenFolderExists_deleteItAndSetCleanupDone Dir.mocked_existing_globs(globs, "#{codegen_path}/*") # Act - CodegenUtils.clean_up_build_folder(@base_path, codegen_dir) + CodegenUtils.clean_up_build_folder(@base_path, ios_folder, codegen_dir) # Assert assert_equal(Dir.exist_invocation_params, [codegen_path, codegen_path]) @@ -437,10 +440,11 @@ def testCleanUpCodegenFolder_whenFolderExists_deleteItAndSetCleanupDone def test_assertCodegenFolderIsEmpty_whenItDoesNotExists_doesNotAbort # Arrange codegen_dir = "build/generated/ios" - codegen_path = "#{@base_path}/#{codegen_dir}" + codegen_path = "#{@base_path}/./#{codegen_dir}" + ios_folder = '.' # Act - CodegenUtils.assert_codegen_folder_is_empty(@base_path, codegen_dir) + CodegenUtils.assert_codegen_folder_is_empty(@base_path, ios_folder, codegen_dir) # Assert assert_equal(Pod::UI.collected_warns, []) @@ -449,12 +453,13 @@ def test_assertCodegenFolderIsEmpty_whenItDoesNotExists_doesNotAbort def test_assertCodegenFolderIsEmpty_whenItExistsAndIsEmpty_doesNotAbort # Arrange codegen_dir = "build/generated/ios" - codegen_path = "#{@base_path}/#{codegen_dir}" + codegen_path = "#{@base_path}/./#{codegen_dir}" + ios_folder = '.' Dir.mocked_existing_dirs(codegen_path) Dir.mocked_existing_globs([], "#{codegen_path}/*") # Act - CodegenUtils.assert_codegen_folder_is_empty(@base_path, codegen_dir) + CodegenUtils.assert_codegen_folder_is_empty(@base_path, ios_folder, codegen_dir) # Assert assert_equal(Pod::UI.collected_warns, []) @@ -463,18 +468,19 @@ def test_assertCodegenFolderIsEmpty_whenItExistsAndIsEmpty_doesNotAbort def test_assertCodegenFolderIsEmpty_whenItIsNotEmpty_itAborts # Arrange codegen_dir = "build/generated/ios" - codegen_path = "#{@base_path}/#{codegen_dir}" + codegen_path = "#{@base_path}/./#{codegen_dir}" + ios_folder = '.' Dir.mocked_existing_dirs(codegen_path) Dir.mocked_existing_globs(["#{codegen_path}/MyModuleSpecs/MyModule.mm",], "#{codegen_path}/*") # Act assert_raises() { - CodegenUtils.assert_codegen_folder_is_empty(@base_path, codegen_dir) + CodegenUtils.assert_codegen_folder_is_empty(@base_path, ios_folder, codegen_dir) } # Assert assert_equal(Pod::UI.collected_warns, [ - "Unable to remove the content of ~/app/ios/build/generated/ios folder. Please run rm -rf ~/app/ios/build/generated/ios and try again." + "Unable to remove the content of ~/app/ios/./build/generated/ios folder. Please run rm -rf ~/app/ios/./build/generated/ios and try again." ]) end diff --git a/scripts/cocoapods/codegen_utils.rb b/scripts/cocoapods/codegen_utils.rb index c4aad591a8e490..8b5aac5ef140b3 100644 --- a/scripts/cocoapods/codegen_utils.rb +++ b/scripts/cocoapods/codegen_utils.rb @@ -306,22 +306,22 @@ def self.cleanup_done return @@CLEANUP_DONE end - def self.clean_up_build_folder(app_path, codegen_dir) + def self.clean_up_build_folder(app_path, ios_folder, codegen_dir) return if CodegenUtils.cleanup_done() CodegenUtils.set_cleanup_done(true) - codegen_path = File.join(app_path, codegen_dir) + codegen_path = File.join(app_path, ios_folder, codegen_dir) return if !Dir.exist?(codegen_path) FileUtils.rm_rf(Dir.glob("#{codegen_path}/*")) - CodegenUtils.assert_codegen_folder_is_empty(app_path, codegen_dir) + CodegenUtils.assert_codegen_folder_is_empty(app_path, ios_folder, codegen_dir) end # Need to split this function from the previous one to be able to test it properly. - def self.assert_codegen_folder_is_empty(app_path, codegen_dir) + def self.assert_codegen_folder_is_empty(app_path, ios_folder, codegen_dir) # double check that the files have actually been deleted. # Emit an error message if not. - codegen_path = File.join(app_path, codegen_dir) + codegen_path = File.join(app_path, ios_folder, codegen_dir) if Dir.exist?(codegen_path) && Dir.glob("#{codegen_path}/*").length() != 0 Pod::UI.warn "Unable to remove the content of #{codegen_path} folder. Please run rm -rf #{codegen_path} and try again." abort diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index 064fc32eb9db6a..82d48cef76cd48 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -51,6 +51,7 @@ def prepare_react_native_project! # - flipper_configuration: The configuration to use for flipper. # - app_path: path to the React Native app. Required by the New Architecture. # - config_file_dir: directory of the `package.json` file, required by the New Architecture. +# - ios_folder: the folder where the iOS code base lives. For a template app, it is `ios`, the default. For RNTester, it is `.`. def use_react_native! ( path: "../node_modules/react-native", fabric_enabled: false, @@ -59,13 +60,15 @@ def use_react_native! ( hermes_enabled: ENV['USE_HERMES'] && ENV['USE_HERMES'] == '0' ? false : true, flipper_configuration: FlipperConfiguration.disabled, app_path: '..', - config_file_dir: '') + config_file_dir: '', + ios_folder: 'ios' +) # Current target definition is provided by Cocoapods and it refers to the target # that has invoked the `use_react_native!` function. ReactNativePodsUtils.detect_use_frameworks(current_target_definition) - CodegenUtils.clean_up_build_folder(app_path, $CODEGEN_OUTPUT_DIR) + CodegenUtils.clean_up_build_folder(app_path, ios_folder, $CODEGEN_OUTPUT_DIR) # We are relying on this flag also in third parties libraries to proper install dependencies. # Better to rely and enable this environment flag if the new architecture is turned on using flags.