Skip to content

Commit d59864f

Browse files
authored
fix: Wrong pods get installed with release candidates (#133)
1 parent 062b83e commit d59864f

File tree

7 files changed

+114
-15
lines changed

7 files changed

+114
-15
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ build/
99
dist/
1010
local.properties
1111
node_modules/
12+
!test/fixtures/**/node_modules/
1213
package-lock.json
1314
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
1415
xcuserdata/

.rubocop.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,11 @@ Metrics/MethodLength:
1818
Metrics/CyclomaticComplexity:
1919
IgnoredMethods: [
2020
make_project!,
21-
use_react_native!,
2221
use_test_app_internal!
2322
]
2423

2524
Metrics/PerceivedComplexity:
2625
IgnoredMethods: [
27-
use_react_native!,
2826
use_test_app_internal!
2927
]
3028

example/ios/Podfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,4 +359,4 @@ SPEC CHECKSUMS:
359359

360360
PODFILE CHECKSUM: 2e7c7df6fd87cf74da985794a7d8f186edd6ac1f
361361

362-
COCOAPODS: 1.9.1
362+
COCOAPODS: 1.9.3

ios/test_app.rb

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ def flipper_enabled?(react_native_version)
4444
react_native_version >= 6200 && @flipper_versions != false
4545
end
4646

47+
def flipper_versions
48+
@flipper_versions != false && (@flipper_versions || {})
49+
end
50+
4751
def nearest_node_modules(project_root)
4852
path = find_file('node_modules', project_root)
4953
assert(!path.nil?, "Could not find 'node_modules'")
@@ -56,6 +60,21 @@ def package_version(package_path)
5660
Gem::Version.new(package_json['version'])
5761
end
5862

63+
def react_native_pods(version)
64+
v = version.release
65+
if v >= Gem::Version.new('0.63')
66+
'use_react_native-0.63'
67+
elsif v >= Gem::Version.new('0.62')
68+
'use_react_native-0.62'
69+
elsif v >= Gem::Version.new('0.61')
70+
'use_react_native-0.61'
71+
elsif v >= Gem::Version.new('0.60')
72+
'use_react_native-0.60'
73+
else
74+
raise "Unsupported React Native version: #{version}"
75+
end
76+
end
77+
5978
def resolve_module(request)
6079
script = "console.log(path.dirname(require.resolve('#{request}/package.json')));"
6180
Pod::Executable.execute_command('node', ['-e', script], true).strip
@@ -105,22 +124,12 @@ def use_react_native!(project_root, target_platform)
105124
react_native = Pathname.new(resolve_module('react-native'))
106125
version = package_version(react_native.to_s)
107126

108-
if version >= Gem::Version.new('0.63')
109-
require_relative('use_react_native-0.63')
110-
elsif version >= Gem::Version.new('0.62')
111-
require_relative('use_react_native-0.62')
112-
elsif version >= Gem::Version.new('0.61')
113-
require_relative('use_react_native-0.61')
114-
elsif version >= Gem::Version.new('0.60')
115-
require_relative('use_react_native-0.60')
116-
else
117-
raise "Unsupported React Native version: #{version}"
118-
end
127+
require_relative(react_native_pods(version))
119128

120129
include_react_native!(react_native: react_native.relative_path_from(project_root).to_s,
121130
target_platform: target_platform,
122131
project_root: project_root,
123-
flipper_versions: @flipper_versions != false && (@flipper_versions || {}))
132+
flipper_versions: flipper_versions)
124133
end
125134

126135
def make_project!(xcodeproj, project_root, target_platform)

test/fixtures/test_app/node_modules/@react-native-community/cli-platform-ios/package.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/fixtures/test_app/node_modules/react-native/package.json

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/test_test_app.rb

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,81 @@ def fixture_path(*args)
1818
end
1919

2020
class TestTestApp < Minitest::Test
21+
def test_flipper_enabled?
22+
refute(flipper_enabled?(6199))
23+
assert(flipper_enabled?(6200))
24+
25+
use_flipper!(false)
26+
27+
refute(flipper_enabled?(6199))
28+
refute(flipper_enabled?(6200))
29+
30+
use_flipper!
31+
32+
refute(flipper_enabled?(6199))
33+
assert(flipper_enabled?(6200))
34+
ensure
35+
use_flipper!(nil)
36+
end
37+
38+
def test_flipper_versions
39+
assert_equal({}, flipper_versions)
40+
41+
use_flipper!(false)
42+
refute(flipper_versions)
43+
44+
versions = { 'Flipper': '~> 0.41.1' }
45+
use_flipper!(versions)
46+
assert_equal(versions, flipper_versions)
47+
48+
use_flipper!
49+
assert_equal({}, flipper_versions)
50+
51+
use_flipper!(false)
52+
refute(flipper_versions)
53+
ensure
54+
use_flipper!(nil)
55+
end
56+
57+
def test_nearest_node_modules
58+
expected = fixture_path('test_app', 'node_modules')
59+
60+
assert_equal(expected, nearest_node_modules(fixture_path('test_app')))
61+
62+
react_native = fixture_path('test_app', 'node_modules', 'react-native')
63+
assert_equal(expected, nearest_node_modules(react_native))
64+
65+
assert_equal(expected, nearest_node_modules(fixture_path('test_app', 'src')))
66+
end
67+
68+
def test_package_version
69+
react_native = fixture_path('test_app', 'node_modules', 'react-native')
70+
assert_equal(Gem::Version.new('1000.0.0'), package_version(react_native))
71+
72+
cli = fixture_path('test_app', 'node_modules', '@react-native-community', 'cli-platform-ios')
73+
assert_equal(Gem::Version.new('4.10.1'), package_version(cli))
74+
end
75+
76+
def test_react_native_pods
77+
assert_equal('use_react_native-0.63', react_native_pods(Gem::Version.new('1000.0.0')))
78+
79+
assert_equal('use_react_native-0.63', react_native_pods(Gem::Version.new('0.63.0')))
80+
assert_equal('use_react_native-0.63', react_native_pods(Gem::Version.new('0.63.0-rc.1')))
81+
82+
assert_equal('use_react_native-0.62', react_native_pods(Gem::Version.new('0.62.2')))
83+
assert_equal('use_react_native-0.62', react_native_pods(Gem::Version.new('0.62.0')))
84+
85+
assert_equal('use_react_native-0.61', react_native_pods(Gem::Version.new('0.61.5')))
86+
assert_equal('use_react_native-0.61', react_native_pods(Gem::Version.new('0.61.0')))
87+
88+
assert_equal('use_react_native-0.60', react_native_pods(Gem::Version.new('0.60.6')))
89+
assert_equal('use_react_native-0.60', react_native_pods(Gem::Version.new('0.60.0')))
90+
91+
assert_raises(RuntimeError) do
92+
react_native_pods(Gem::Version.new('0.59.10'))
93+
end
94+
end
95+
2196
%i[ios macos].each do |target|
2297
define_method("test_#{target}_resources_pod_returns_spec_path") do
2398
assert_nil(resources_pod(Pathname.new('/'), target))

0 commit comments

Comments
 (0)