Skip to content

Commit ce3eefe

Browse files
cipolleschiRiccardo Cipolleschi
authored and
Riccardo Cipolleschi
committed
Fix cleanup not working on template app (#35679)
Summary: Pull Request resolved: #35679 The Codegen cleanup step was not always working due to an issue with the codegen folder path. It was working for RNTester, but not for apps created from the Template. ## Changelog: [iOS][Fixed] - Fix path issue to properly run the codegen cleanup step Reviewed By: jacdebug Differential Revision: D42137600 fbshipit-source-id: ba4cb03d4c6eb17fda70a4aff383908d2e468429
1 parent f7b35c0 commit ce3eefe

File tree

4 files changed

+29
-19
lines changed

4 files changed

+29
-19
lines changed

packages/rn-tester/Podfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ def pods(target_name, options = {}, use_flipper: !IN_CI && !USE_FRAMEWORKS)
3737
flipper_configuration: use_flipper ? FlipperConfiguration.enabled : FlipperConfiguration.disabled,
3838
app_path: "#{Dir.pwd}",
3939
config_file_dir: "#{Dir.pwd}/node_modules",
40-
production: !ENV['PRODUCTION'].nil?
40+
production: !ENV['PRODUCTION'].nil?,
41+
ios_folder: '.',
4142
)
4243
pod 'ReactCommon/turbomodule/samples', :path => "#{@prefix_path}/ReactCommon"
4344

scripts/cocoapods/__tests__/codegen_utils-test.rb

+17-11
Original file line numberDiff line numberDiff line change
@@ -380,9 +380,10 @@ def testCleanUpCodegenFolder_whenCleanupDone_doNothing
380380
# Arrange
381381
CodegenUtils.set_cleanup_done(true)
382382
codegen_dir = "build/generated/ios"
383+
ios_folder = '.'
383384

384385
# Act
385-
CodegenUtils.clean_up_build_folder(@base_path, codegen_dir)
386+
CodegenUtils.clean_up_build_folder(@base_path, ios_folder, codegen_dir)
386387

387388
# Assert
388389
assert_equal(FileUtils::FileUtilsStorage.rmrf_invocation_count, 0)
@@ -394,9 +395,10 @@ def testCleanUpCodegenFolder_whenFolderDoesNotExists_markAsCleanupDone
394395
# Arrange
395396
CodegenUtils.set_cleanup_done(false)
396397
codegen_dir = "build/generated/ios"
398+
ios_folder = '.'
397399

398400
# Act
399-
CodegenUtils.clean_up_build_folder(@base_path, codegen_dir)
401+
CodegenUtils.clean_up_build_folder(@base_path, ios_folder, codegen_dir)
400402

401403
# Assert
402404
assert_equal(FileUtils::FileUtilsStorage.rmrf_invocation_count, 0)
@@ -409,7 +411,8 @@ def testCleanUpCodegenFolder_whenFolderExists_deleteItAndSetCleanupDone
409411
# Arrange
410412
CodegenUtils.set_cleanup_done(false)
411413
codegen_dir = "build/generated/ios"
412-
codegen_path = "#{@base_path}/#{codegen_dir}"
414+
ios_folder = '.'
415+
codegen_path = "#{@base_path}/./#{codegen_dir}"
413416
globs = [
414417
"/MyModuleSpecs/MyModule.h",
415418
"#{codegen_path}/MyModuleSpecs/MyModule.mm",
@@ -420,7 +423,7 @@ def testCleanUpCodegenFolder_whenFolderExists_deleteItAndSetCleanupDone
420423
Dir.mocked_existing_globs(globs, "#{codegen_path}/*")
421424

422425
# Act
423-
CodegenUtils.clean_up_build_folder(@base_path, codegen_dir)
426+
CodegenUtils.clean_up_build_folder(@base_path, ios_folder, codegen_dir)
424427

425428
# Assert
426429
assert_equal(Dir.exist_invocation_params, [codegen_path, codegen_path])
@@ -437,10 +440,11 @@ def testCleanUpCodegenFolder_whenFolderExists_deleteItAndSetCleanupDone
437440
def test_assertCodegenFolderIsEmpty_whenItDoesNotExists_doesNotAbort
438441
# Arrange
439442
codegen_dir = "build/generated/ios"
440-
codegen_path = "#{@base_path}/#{codegen_dir}"
443+
codegen_path = "#{@base_path}/./#{codegen_dir}"
444+
ios_folder = '.'
441445

442446
# Act
443-
CodegenUtils.assert_codegen_folder_is_empty(@base_path, codegen_dir)
447+
CodegenUtils.assert_codegen_folder_is_empty(@base_path, ios_folder, codegen_dir)
444448

445449
# Assert
446450
assert_equal(Pod::UI.collected_warns, [])
@@ -449,12 +453,13 @@ def test_assertCodegenFolderIsEmpty_whenItDoesNotExists_doesNotAbort
449453
def test_assertCodegenFolderIsEmpty_whenItExistsAndIsEmpty_doesNotAbort
450454
# Arrange
451455
codegen_dir = "build/generated/ios"
452-
codegen_path = "#{@base_path}/#{codegen_dir}"
456+
codegen_path = "#{@base_path}/./#{codegen_dir}"
457+
ios_folder = '.'
453458
Dir.mocked_existing_dirs(codegen_path)
454459
Dir.mocked_existing_globs([], "#{codegen_path}/*")
455460

456461
# Act
457-
CodegenUtils.assert_codegen_folder_is_empty(@base_path, codegen_dir)
462+
CodegenUtils.assert_codegen_folder_is_empty(@base_path, ios_folder, codegen_dir)
458463

459464
# Assert
460465
assert_equal(Pod::UI.collected_warns, [])
@@ -463,18 +468,19 @@ def test_assertCodegenFolderIsEmpty_whenItExistsAndIsEmpty_doesNotAbort
463468
def test_assertCodegenFolderIsEmpty_whenItIsNotEmpty_itAborts
464469
# Arrange
465470
codegen_dir = "build/generated/ios"
466-
codegen_path = "#{@base_path}/#{codegen_dir}"
471+
codegen_path = "#{@base_path}/./#{codegen_dir}"
472+
ios_folder = '.'
467473
Dir.mocked_existing_dirs(codegen_path)
468474
Dir.mocked_existing_globs(["#{codegen_path}/MyModuleSpecs/MyModule.mm",], "#{codegen_path}/*")
469475

470476
# Act
471477
assert_raises() {
472-
CodegenUtils.assert_codegen_folder_is_empty(@base_path, codegen_dir)
478+
CodegenUtils.assert_codegen_folder_is_empty(@base_path, ios_folder, codegen_dir)
473479
}
474480

475481
# Assert
476482
assert_equal(Pod::UI.collected_warns, [
477-
"Unable to remove the content of ~/app/ios/build/generated/ios folder. Please run rm -rf ~/app/ios/build/generated/ios and try again."
483+
"Unable to remove the content of ~/app/ios/./build/generated/ios folder. Please run rm -rf ~/app/ios/./build/generated/ios and try again."
478484
])
479485
end
480486

scripts/cocoapods/codegen_utils.rb

+5-5
Original file line numberDiff line numberDiff line change
@@ -306,22 +306,22 @@ def self.cleanup_done
306306
return @@CLEANUP_DONE
307307
end
308308

309-
def self.clean_up_build_folder(app_path, codegen_dir)
309+
def self.clean_up_build_folder(app_path, ios_folder, codegen_dir)
310310
return if CodegenUtils.cleanup_done()
311311
CodegenUtils.set_cleanup_done(true)
312312

313-
codegen_path = File.join(app_path, codegen_dir)
313+
codegen_path = File.join(app_path, ios_folder, codegen_dir)
314314
return if !Dir.exist?(codegen_path)
315315

316316
FileUtils.rm_rf(Dir.glob("#{codegen_path}/*"))
317-
CodegenUtils.assert_codegen_folder_is_empty(app_path, codegen_dir)
317+
CodegenUtils.assert_codegen_folder_is_empty(app_path, ios_folder, codegen_dir)
318318
end
319319

320320
# Need to split this function from the previous one to be able to test it properly.
321-
def self.assert_codegen_folder_is_empty(app_path, codegen_dir)
321+
def self.assert_codegen_folder_is_empty(app_path, ios_folder, codegen_dir)
322322
# double check that the files have actually been deleted.
323323
# Emit an error message if not.
324-
codegen_path = File.join(app_path, codegen_dir)
324+
codegen_path = File.join(app_path, ios_folder, codegen_dir)
325325
if Dir.exist?(codegen_path) && Dir.glob("#{codegen_path}/*").length() != 0
326326
Pod::UI.warn "Unable to remove the content of #{codegen_path} folder. Please run rm -rf #{codegen_path} and try again."
327327
abort

scripts/react_native_pods.rb

+5-2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def prepare_react_native_project!
5151
# - flipper_configuration: The configuration to use for flipper.
5252
# - app_path: path to the React Native app. Required by the New Architecture.
5353
# - config_file_dir: directory of the `package.json` file, required by the New Architecture.
54+
# - ios_folder: the folder where the iOS code base lives. For a template app, it is `ios`, the default. For RNTester, it is `.`.
5455
def use_react_native! (
5556
path: "../node_modules/react-native",
5657
fabric_enabled: false,
@@ -59,13 +60,15 @@ def use_react_native! (
5960
hermes_enabled: ENV['USE_HERMES'] && ENV['USE_HERMES'] == '0' ? false : true,
6061
flipper_configuration: FlipperConfiguration.disabled,
6162
app_path: '..',
62-
config_file_dir: '')
63+
config_file_dir: '',
64+
ios_folder: 'ios'
65+
)
6366

6467
# Current target definition is provided by Cocoapods and it refers to the target
6568
# that has invoked the `use_react_native!` function.
6669
ReactNativePodsUtils.detect_use_frameworks(current_target_definition)
6770

68-
CodegenUtils.clean_up_build_folder(app_path, $CODEGEN_OUTPUT_DIR)
71+
CodegenUtils.clean_up_build_folder(app_path, ios_folder, $CODEGEN_OUTPUT_DIR)
6972

7073
# We are relying on this flag also in third parties libraries to proper install dependencies.
7174
# Better to rely and enable this environment flag if the new architecture is turned on using flags.

0 commit comments

Comments
 (0)