Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ build/
dist/
local.properties
node_modules/
!test/fixtures/**/node_modules/
package-lock.json
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
xcuserdata/
Expand Down
2 changes: 0 additions & 2 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,11 @@ Metrics/MethodLength:
Metrics/CyclomaticComplexity:
IgnoredMethods: [
make_project!,
use_react_native!,
use_test_app_internal!
]

Metrics/PerceivedComplexity:
IgnoredMethods: [
use_react_native!,
use_test_app_internal!
]

Expand Down
2 changes: 1 addition & 1 deletion example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -359,4 +359,4 @@ SPEC CHECKSUMS:

PODFILE CHECKSUM: 2e7c7df6fd87cf74da985794a7d8f186edd6ac1f

COCOAPODS: 1.9.1
COCOAPODS: 1.9.3
33 changes: 21 additions & 12 deletions ios/test_app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ def flipper_enabled?(react_native_version)
react_native_version >= 6200 && @flipper_versions != false
end

def flipper_versions
@flipper_versions != false && (@flipper_versions || {})
end

def nearest_node_modules(project_root)
path = find_file('node_modules', project_root)
assert(!path.nil?, "Could not find 'node_modules'")
Expand All @@ -56,6 +60,21 @@ def package_version(package_path)
Gem::Version.new(package_json['version'])
end

def react_native_pods(version)
v = version.release
if v >= Gem::Version.new('0.63')
'use_react_native-0.63'
elsif v >= Gem::Version.new('0.62')
'use_react_native-0.62'
elsif v >= Gem::Version.new('0.61')
'use_react_native-0.61'
elsif v >= Gem::Version.new('0.60')
'use_react_native-0.60'
else
raise "Unsupported React Native version: #{version}"
end
end

def resolve_module(request)
script = "console.log(path.dirname(require.resolve('#{request}/package.json')));"
Pod::Executable.execute_command('node', ['-e', script], true).strip
Expand Down Expand Up @@ -105,22 +124,12 @@ def use_react_native!(project_root, target_platform)
react_native = Pathname.new(resolve_module('react-native'))
version = package_version(react_native.to_s)

if version >= Gem::Version.new('0.63')
require_relative('use_react_native-0.63')
elsif version >= Gem::Version.new('0.62')
require_relative('use_react_native-0.62')
elsif version >= Gem::Version.new('0.61')
require_relative('use_react_native-0.61')
elsif version >= Gem::Version.new('0.60')
require_relative('use_react_native-0.60')
else
raise "Unsupported React Native version: #{version}"
end
require_relative(react_native_pods(version))

include_react_native!(react_native: react_native.relative_path_from(project_root).to_s,
target_platform: target_platform,
project_root: project_root,
flipper_versions: @flipper_versions != false && (@flipper_versions || {}))
flipper_versions: flipper_versions)
end

def make_project!(xcodeproj, project_root, target_platform)
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions test/fixtures/test_app/node_modules/react-native/package.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

75 changes: 75 additions & 0 deletions test/test_test_app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,81 @@ def fixture_path(*args)
end

class TestTestApp < Minitest::Test
def test_flipper_enabled?
refute(flipper_enabled?(6199))
assert(flipper_enabled?(6200))

use_flipper!(false)

refute(flipper_enabled?(6199))
refute(flipper_enabled?(6200))

use_flipper!

refute(flipper_enabled?(6199))
assert(flipper_enabled?(6200))
ensure
use_flipper!(nil)
end

def test_flipper_versions
assert_equal({}, flipper_versions)

use_flipper!(false)
refute(flipper_versions)

versions = { 'Flipper': '~> 0.41.1' }
use_flipper!(versions)
assert_equal(versions, flipper_versions)

use_flipper!
assert_equal({}, flipper_versions)

use_flipper!(false)
refute(flipper_versions)
ensure
use_flipper!(nil)
end

def test_nearest_node_modules
expected = fixture_path('test_app', 'node_modules')

assert_equal(expected, nearest_node_modules(fixture_path('test_app')))

react_native = fixture_path('test_app', 'node_modules', 'react-native')
assert_equal(expected, nearest_node_modules(react_native))

assert_equal(expected, nearest_node_modules(fixture_path('test_app', 'src')))
end

def test_package_version
react_native = fixture_path('test_app', 'node_modules', 'react-native')
assert_equal(Gem::Version.new('1000.0.0'), package_version(react_native))

cli = fixture_path('test_app', 'node_modules', '@react-native-community', 'cli-platform-ios')
assert_equal(Gem::Version.new('4.10.1'), package_version(cli))
end

def test_react_native_pods
assert_equal('use_react_native-0.63', react_native_pods(Gem::Version.new('1000.0.0')))

assert_equal('use_react_native-0.63', react_native_pods(Gem::Version.new('0.63.0')))
assert_equal('use_react_native-0.63', react_native_pods(Gem::Version.new('0.63.0-rc.1')))

assert_equal('use_react_native-0.62', react_native_pods(Gem::Version.new('0.62.2')))
assert_equal('use_react_native-0.62', react_native_pods(Gem::Version.new('0.62.0')))

assert_equal('use_react_native-0.61', react_native_pods(Gem::Version.new('0.61.5')))
assert_equal('use_react_native-0.61', react_native_pods(Gem::Version.new('0.61.0')))

assert_equal('use_react_native-0.60', react_native_pods(Gem::Version.new('0.60.6')))
assert_equal('use_react_native-0.60', react_native_pods(Gem::Version.new('0.60.0')))

assert_raises(RuntimeError) do
react_native_pods(Gem::Version.new('0.59.10'))
end
end

%i[ios macos].each do |target|
define_method("test_#{target}_resources_pod_returns_spec_path") do
assert_nil(resources_pod(Pathname.new('/'), target))
Expand Down