Add warning when passing a value to the RCT_NEW_ARCH_ENABLED (#39782)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39782

## Changelog
[Internal] - Add warning when passing a value to the RCT_NEW_ARCH_ENABLED

Reviewed By: dmytrorykun

Differential Revision: D49830121

fbshipit-source-id: 02bfd52ecf832d25f539f7178326472b2620acf6
This commit is contained in:
Riccardo Cipolleschi
2023-10-05 08:26:43 -07:00
committed by Facebook GitHub Bot
parent 46d541f7b3
commit 983bd14d99
2 changed files with 102 additions and 17 deletions
@@ -10,11 +10,19 @@ require_relative "./test_utils/PodMock.rb"
require_relative "./test_utils/SpecMock.rb"
require_relative "./test_utils/FileMock.rb"
## Monkey patching to reset properly static props of the Helper.
class NewArchitectureHelper
def self.reset
@@NewArchWarningEmitted = false
end
end
class NewArchitectureTests < Test::Unit::TestCase
def teardown
Pod::UI.reset()
FileMock.reset()
ENV["RCT_NEW_ARCH_ENABLED"] = nil
NewArchitectureHelper.reset()
end
# ============================= #
@@ -189,58 +197,126 @@ class NewArchitectureTests < Test::Unit::TestCase
# Test - Compute New Arch Enabled #
# =============================== #
def test_computeNewArchEnabled_whenOnMainAndFlagTrue_returnTrue
def test_computeNewArchEnabled_whenOnMainAndFlagTrueAndEnvVarNil_returnTrueWithNoWarning
version = '1000.0.0'
new_arch_enabled = true
ENV['RCT_NEW_ARCH_ENABLED'] = nil
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("1", isEnabled)
assert_equal([], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOnMainAndFlagFalse_returnFalse
def test_computeNewArchEnabled_whenOnMainAndFlagTrueAndEnvVar1_returnTrueWithNoWarning
version = '1000.0.0'
new_arch_enabled = true
ENV['RCT_NEW_ARCH_ENABLED'] = "1"
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("1", isEnabled)
assert_equal([], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOnMainAndFlagFalseAndEnvVarNil_returnFalseWithNoWarning
version = '1000.0.0'
new_arch_enabled = false
ENV['RCT_NEW_ARCH_ENABLED'] = nil
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("0", isEnabled)
assert_equal([], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOnStableAndFlagTrue_returnTrue
version = '0.73.0'
new_arch_enabled = true
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("1", isEnabled)
end
def test_computeNewArchEnabled_whenOnStableAndFlagFalse_returnFalse
version = '0.73.0'
def test_computeNewArchEnabled_whenOnMainAndFlagFalseAndEnvVar0_returnFalseWithNoWarning
version = '1000.0.0'
new_arch_enabled = false
ENV['RCT_NEW_ARCH_ENABLED'] = "0"
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("0", isEnabled)
assert_equal([], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOn100AndFlagTrue_returnTrue
def test_computeNewArchEnabled_whenOnStableAndFlagTrueAndEnvNil_returnTrueWithNoWarning
version = '0.73.0'
new_arch_enabled = true
ENV['RCT_NEW_ARCH_ENABLED'] = nil
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("1", isEnabled)
assert_equal([], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOnStableAndFlagTrueAndEnv1_returnTrueWithNoWarning
version = '0.73.0'
new_arch_enabled = true
ENV['RCT_NEW_ARCH_ENABLED'] = "1"
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("1", isEnabled)
assert_equal([], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOnStableAndFlagFalseAndEnvNil_returnFalseWithNoWarning
version = '0.73.0'
new_arch_enabled = false
ENV['RCT_NEW_ARCH_ENABLED'] = nil
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("0", isEnabled)
assert_equal([], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOnStableAndFlagFalseAndEnv0_returnFalseWithNoWarning
version = '0.73.0'
new_arch_enabled = false
ENV['RCT_NEW_ARCH_ENABLED'] = "0"
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("0", isEnabled)
assert_equal([], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOn100AndFlagTrueAndEnvNil_returnTrueWithNoWarning
version = '1.0.0-prealpha.0'
new_arch_enabled = true
ENV['RCT_NEW_ARCH_ENABLED'] = nil
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("1", isEnabled)
assert_equal([], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOn100PrealphaWithDotsAndFlagFalse_returnTrue
def test_computeNewArchEnabled_whenOn100AndFlagTrueAndEnv1_returnTrueWithWarning
version = '1.0.0-prealpha.0'
new_arch_enabled = false
new_arch_enabled = true
ENV['RCT_NEW_ARCH_ENABLED'] = "1"
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("1", isEnabled)
assert_equal(["[New Architecture] Starting from version 1.0.0-prealpha the value of the " \
"RCT_NEW_ARCH_ENABLED flag is ignored and the New Architecture is enabled by default."], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOn100PrealphaWithDotsAndFlagFalseAndEnv0_returnTrueWithWarning
version = '1.0.0-prealpha.0'
new_arch_enabled = false
ENV['RCT_NEW_ARCH_ENABLED'] = "0"
isEnabled = NewArchitectureHelper.compute_new_arch_enabled(new_arch_enabled, version)
assert_equal("1", isEnabled)
assert_equal(["[New Architecture] Starting from version 1.0.0-prealpha the value of the " \
"RCT_NEW_ARCH_ENABLED flag is ignored and the New Architecture is enabled by default."], Pod::UI.collected_warns)
end
def test_computeNewArchEnabled_whenOn100PrealphaWithDashAndFlagFalse_returnTrue
@@ -14,6 +14,8 @@ class NewArchitectureHelper
@@cplusplus_version = "c++20"
@@NewArchWarningEmitted = false # Used not to spam warnings to the user.
def self.set_clang_cxx_language_standard_if_needed(installer)
language_standard = nil
@@ -189,6 +191,13 @@ class NewArchitectureHelper
# We want to enforce the new architecture for 1.0.0 and greater,
# but not for 1000 as version 1000 is currently main.
if major > 0 && major < 1000
if ENV['RCT_NEW_ARCH_ENABLED'] != nil && !@@NewArchWarningEmitted
warning_message = "[New Architecture] Starting from version 1.0.0-prealpha the value of the " \
"RCT_NEW_ARCH_ENABLED flag is ignored and the New Architecture is enabled by default."
Pod::UI.warn warning_message
@@NewArchWarningEmitted = true
end
return "1"
end
end