Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
C
cocoapods
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gengmeiios
cocoapods
Commits
904c3481
Commit
904c3481
authored
Nov 13, 2015
by
Samuel Giddins
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[InfoPlistFile] Include UIRequiredDeviceCapabilities for tvOS pods
parent
2e892140
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
109 additions
and
72 deletions
+109
-72
info_plist_file.rb
lib/cocoapods/generator/info_plist_file.rb
+31
-6
info_plist_file_spec.rb
spec/unit/generator/info_plist_file_spec.rb
+78
-66
No files found.
lib/cocoapods/generator/info_plist_file.rb
View file @
904c3481
...
@@ -51,14 +51,29 @@ module Pod
...
@@ -51,14 +51,29 @@ module Pod
# @return [String]
# @return [String]
#
#
def
generate
def
generate
FILE_CONTENTS
.
sub
(
'${CURRENT_PROJECT_VERSION_STRING}'
,
target_version
)
header
+
dict
+
footer
end
end
FILE_CONTENTS
=
<<-
EOS
private
def
header
<<-
PLIST
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<plist version="1.0">
<dict>
<dict>
PLIST
end
def
footer
<<-
PLIST
</dict>
</plist>
PLIST
end
def
dict
dict
=
<<-
PLIST
<key>CFBundleDevelopmentRegion</key>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<string>en</string>
<key>CFBundleExecutable</key>
<key>CFBundleExecutable</key>
...
@@ -72,16 +87,26 @@ module Pod
...
@@ -72,16 +87,26 @@ module Pod
<key>CFBundlePackageType</key>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<key>CFBundleShortVersionString</key>
<string>
${CURRENT_PROJECT_VERSION_STRING
}</string>
<string>
#{
target_version
}
</string>
<key>CFBundleSignature</key>
<key>CFBundleSignature</key>
<string>????</string>
<string>????</string>
<key>CFBundleVersion</key>
<key>CFBundleVersion</key>
<string>${CURRENT_PROJECT_VERSION}</string>
<string>${CURRENT_PROJECT_VERSION}</string>
<key>NSPrincipalClass</key>
<key>NSPrincipalClass</key>
<string></string>
<string></string>
</dict>
PLIST
</plist>
EOS
if
target
.
platform
.
name
==
:tvos
dict
<<
<<-
PLIST
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
PLIST
end
dict
end
end
end
end
end
end
end
spec/unit/generator/info_plist_file_spec.rb
View file @
904c3481
require
File
.
expand_path
(
'../../../spec_helper'
,
__FILE__
)
require
File
.
expand_path
(
'../../../spec_helper'
,
__FILE__
)
describe
Pod
::
Generator
::
InfoPlistFile
do
module
Pod
describe
'#target_version'
do
describe
Generator
::
InfoPlistFile
do
it
'returns 1.0.0 for the aggregate target'
do
describe
'#target_version'
do
generator
=
Pod
::
Generator
::
InfoPlistFile
.
new
(
fixture_aggregate_target
)
it
'returns 1.0.0 for the aggregate target'
do
generator
.
target_version
.
should
==
'1.0.0'
generator
=
Generator
::
InfoPlistFile
.
new
(
fixture_aggregate_target
)
end
generator
.
target_version
.
should
==
'1.0.0'
describe
'sanitization'
do
before
do
@root_spec
=
mock
(
'RootSpec'
)
pod_target
=
stub
(
'PodTarget'
,
:root_spec
=>
@root_spec
)
@generator
=
Pod
::
Generator
::
InfoPlistFile
.
new
(
pod_target
)
end
end
it
'handles when the version is HEAD'
do
describe
'sanitization'
do
version
=
Pod
::
Version
.
new
(
'0.2.0'
)
before
do
version
.
head
=
true
@root_spec
=
mock
(
'RootSpec'
)
@root_spec
.
stubs
(
:version
).
returns
(
version
)
@platform
=
stub
(
'Platform'
,
:name
=>
:ios
)
@generator
.
target_version
.
should
==
'0.2.0'
pod_target
=
stub
(
'PodTarget'
,
:root_spec
=>
@root_spec
,
:platform
=>
@platform
)
end
@generator
=
Generator
::
InfoPlistFile
.
new
(
pod_target
)
end
it
'handles when the version is more than 3 numeric parts'
do
it
'handles when the version is HEAD'
do
version
=
Pod
::
Version
.
new
(
'0.2.0.1'
)
version
=
Version
.
new
(
'0.2.0'
)
@root_spec
.
stubs
(
:version
).
returns
(
version
)
version
.
head
=
true
@generator
.
target_version
.
should
==
'0.2.0'
@root_spec
.
stubs
(
:version
).
returns
(
version
)
end
@generator
.
target_version
.
should
==
'0.2.0'
end
it
'handles when the version is less than 3 numeric parts'
do
it
'handles when the version is more than 3 numeric parts'
do
version
=
Pod
::
Version
.
new
(
'0.2'
)
version
=
Version
.
new
(
'0.2.0.1'
)
@root_spec
.
stubs
(
:version
).
returns
(
version
)
@root_spec
.
stubs
(
:version
).
returns
(
version
)
@generator
.
target_version
.
should
==
'0.2.0'
@generator
.
target_version
.
should
==
'0.2.0'
end
end
it
'handles when the version is less than 3 numeric parts'
do
version
=
Version
.
new
(
'0.2'
)
@root_spec
.
stubs
(
:version
).
returns
(
version
)
@generator
.
target_version
.
should
==
'0.2.0'
end
it
'handles when the version is a pre-release'
do
version
=
Version
.
new
(
'1.0.0-beta.1'
)
@root_spec
.
stubs
(
:version
).
returns
(
version
)
@generator
.
target_version
.
should
==
'1.0.0'
it
'handles when the version is a pre-release'
do
version
=
Version
.
new
(
'1.0-beta.5'
)
version
=
Pod
::
Version
.
new
(
'1.0.0-beta.1'
)
@root_spec
.
stubs
(
:version
).
returns
(
version
)
@root_spec
.
stubs
(
:version
).
returns
(
version
)
@generator
.
target_version
.
should
==
'1.0.0'
@generator
.
target_version
.
should
==
'1.0.0'
end
end
version
=
Pod
::
Version
.
new
(
'1.0-beta.5'
)
it
'returns the specification\'s version for the pod target'
do
@root_spec
.
stubs
(
:version
).
returns
(
version
)
generator
=
Generator
::
InfoPlistFile
.
new
(
fixture_pod_target
(
'orange-framework/OrangeFramework.podspec'
)
)
@generator
.
target_version
.
should
==
'1.0
.0'
generator
.
target_version
.
should
==
'0.1
.0'
end
end
end
end
it
're
turns the specification\'s version for the pod targe
t'
do
it
're
places the version in the generated plis
t'
do
generator
=
Pod
::
Generator
::
InfoPlistFile
.
new
(
fixture_pod_target
(
'orange-framework/OrangeFramework.podspec'
))
generator
=
Generator
::
InfoPlistFile
.
new
(
fixture_pod_target
(
'orange-framework/OrangeFramework.podspec'
))
generator
.
target_version
.
should
==
'0.1.0'
generator
.
generate
.
should
.
include
"<key>CFBundleShortVersionString</key>
\n
<string>0.1.0</string>"
end
end
end
it
'replaces the version in the generated plist'
do
it
'generates a valid Info.plist file'
do
generator
=
Pod
::
Generator
::
InfoPlistFile
.
new
(
fixture_pod_target
(
'orange-framework/OrangeFramework.podspec'
))
generator
=
Generator
::
InfoPlistFile
.
new
(
fixture_pod_target
(
'orange-framework/OrangeFramework.podspec'
))
generator
.
generate
.
should
.
include
"<key>CFBundleShortVersionString</key>
\n
<string>0.1.0</string>"
file
=
temporary_directory
+
'Info.plist'
end
generator
.
save_as
(
file
)
`plutil -lint
#{
file
}
`
$?
.
should
.
be
.
success
end
it
'generates a valid Info.plist file'
do
it
'generates a correct Info.plist file'
do
generator
=
Pod
::
Generator
::
InfoPlistFile
.
new
(
mock
(
'Target'
))
generator
=
Generator
::
InfoPlistFile
.
new
(
mock
(
'Target'
,
:platform
=>
stub
(
:name
=>
:ios
)))
file
=
temporary_directory
+
'Info.plist'
file
=
temporary_directory
+
'Info.plist'
generator
.
save_as
(
file
)
generator
.
save_as
(
file
)
`plutil -lint
#{
file
}
`
Xcodeproj
::
PlistHelper
.
read
(
file
).
should
==
{
$?
.
should
.
be
.
success
'CFBundleDevelopmentRegion'
=>
'en'
,
end
'CFBundleExecutable'
=>
'${EXECUTABLE_NAME}'
,
'CFBundleIdentifier'
=>
'${PRODUCT_BUNDLE_IDENTIFIER}'
,
'CFBundleInfoDictionaryVersion'
=>
'6.0'
,
'CFBundleName'
=>
'${PRODUCT_NAME}'
,
'CFBundlePackageType'
=>
'FMWK'
,
'CFBundleShortVersionString'
=>
'1.0.0'
,
'CFBundleSignature'
=>
'????'
,
'CFBundleVersion'
=>
'${CURRENT_PROJECT_VERSION}'
,
'NSPrincipalClass'
=>
''
,
}
end
it
'generates a correct Info.plist file'
do
it
'adds UIRequiredDeviceCapabilities for tvOS targets'
do
generator
=
Pod
::
Generator
::
InfoPlistFile
.
new
(
mock
(
'Target'
))
pod_target
=
fixture_pod_target
(
'orange-framework/OrangeFramework.podspec'
)
file
=
temporary_directory
+
'Info.plist'
pod_target
.
stubs
(
:platform
).
returns
(
Platform
.
new
(
:tvos
,
'9.0'
))
generator
.
save_as
(
file
)
generator
=
Generator
::
InfoPlistFile
.
new
(
pod_target
)
Xcodeproj
::
PlistHelper
.
read
(
file
).
should
==
{
file
=
temporary_directory
+
'Info.plist'
'CFBundleDevelopmentRegion'
=>
'en'
,
generator
.
save_as
(
file
)
'CFBundleExecutable'
=>
'${EXECUTABLE_NAME}'
,
Xcodeproj
::
PlistHelper
.
read
(
file
)[
'UIRequiredDeviceCapabilities'
].
should
==
%w(arm64)
'CFBundleIdentifier'
=>
'${PRODUCT_BUNDLE_IDENTIFIER}'
,
end
'CFBundleInfoDictionaryVersion'
=>
'6.0'
,
'CFBundleName'
=>
'${PRODUCT_NAME}'
,
'CFBundlePackageType'
=>
'FMWK'
,
'CFBundleShortVersionString'
=>
'1.0.0'
,
'CFBundleSignature'
=>
'????'
,
'CFBundleVersion'
=>
'${CURRENT_PROJECT_VERSION}'
,
'NSPrincipalClass'
=>
''
,
}
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment