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
b8160f92
Commit
b8160f92
authored
Sep 08, 2013
by
Fabio Pelosin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PodsProjectGenerator] Improve sync logic
parent
8c401549
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
224 additions
and
116 deletions
+224
-116
pods_project_generator.rb
lib/cocoapods/installer/pods_project_generator.rb
+209
-76
pods_project_generator_spec.rb
spec/unit/installer/pods_project_generator_spec.rb
+15
-40
No files found.
lib/cocoapods/installer/pods_project_generator.rb
View file @
b8160f92
module
Pod
module
Pod
class
Installer
class
Installer
# Generates the Pods project according to the targets identified by the
# Generates the Pods project according to the targets identified by the
# analyzer.
# analyzer.
#
#
class
PodsProjectGenerator
class
PodsProjectGenerator
autoload
:FileReferencesInstaller
,
'cocoapods/installer/pods_project_generator/file_references_installer'
autoload
:TargetInstaller
,
'cocoapods/installer/pods_project_generator/target_installer'
autoload
:AggregateTargetInstaller
,
'cocoapods/installer/pods_project_generator/target_installer/aggregate_target_installer'
autoload
:AggregateTargetInstaller
,
'cocoapods/installer/pods_project_generator/target_installer/aggregate_target_installer'
autoload
:FileReferencesInstaller
,
'cocoapods/installer/pods_project_generator/file_references_installer'
autoload
:PodTargetInstaller
,
'cocoapods/installer/pods_project_generator/target_installer/pod_target_installer'
autoload
:PodTargetInstaller
,
'cocoapods/installer/pods_project_generator/target_installer/pod_target_installer'
autoload
:TargetInstaller
,
'cocoapods/installer/pods_project_generator/target_installer'
# @return [Sandbox] The sandbox of the installation.
# @return [Sandbox] The sandbox of the installation.
#
#
...
@@ -30,7 +29,7 @@ module Pod
...
@@ -30,7 +29,7 @@ module Pod
@user_build_configurations
=
[]
@user_build_configurations
=
[]
end
end
# @return [
Pathname
] The path of the Podfile.
# @return [
Array
] The path of the Podfile.
#
#
attr_accessor
:podfile_path
attr_accessor
:podfile_path
...
@@ -45,10 +44,10 @@ module Pod
...
@@ -45,10 +44,10 @@ module Pod
#
#
def
install
def
install
prepare_project
prepare_project
install_file_reference
s
sync_pod_target
s
install
_targets
sync_aggregate
_targets
install_system_framework
s
sync_target_dependencie
s
s
et_target_dependenc
ies
s
ync_aggregate_targets_librar
ies
end
end
# @return [Project] the generated Pods project.
# @return [Project] the generated Pods project.
...
@@ -59,9 +58,9 @@ module Pod
...
@@ -59,9 +58,9 @@ module Pod
#
#
# @return [void]
# @return [void]
#
#
def
write_p
od_p
roject
def
write_project
UI
.
message
"- Writing Xcode project file
to
#{
UI
.
path
sandbox
.
project_path
}
"
do
UI
.
message
"- Writing Xcode project file"
do
clean_up_project
project
.
prepare_for_serialization
project
.
save
project
.
save
end
end
end
end
...
@@ -77,81 +76,140 @@ module Pod
...
@@ -77,81 +76,140 @@ module Pod
# @return [void]
# @return [void]
#
#
def
prepare_project
def
prepare_project
UI
.
message
"- Creating Pods project"
do
if
should_create_new_project?
UI
.
message
"- Initializing new project"
do
@project
=
Pod
::
Project
.
new
(
sandbox
.
project_path
)
@project
=
Pod
::
Project
.
new
(
sandbox
.
project_path
)
@new_project
=
true
user_build_configurations
.
each
do
|
name
,
type
|
end
project
.
add_build_configuration
(
name
,
type
)
else
UI
.
message
"- Opening existing project"
do
@project
=
Pod
::
Project
.
open
(
sandbox
.
project_path
)
detect_native_targets
end
end
pod_names
=
pod_targets
.
map
(
&
:pod_name
).
uniq
pod_names
.
each
do
|
pod_name
|
path
=
sandbox
.
pod_dir
(
pod_name
)
local
=
sandbox
.
local?
(
pod_name
)
project
.
add_pod_group
(
pod_name
,
path
,
local
)
end
end
if
podfile_path
project
.
set_podfile
(
podfile_path
)
project
.
add_podfile
(
podfile_path
)
setup_build_configurations
sandbox
.
project
=
project
end
end
sandbox
.
project
=
@project
# Matches the native targets of the Pods project with the targets
platforms
=
aggregate_targets
.
map
(
&
:platform
)
# generated by the analyzer.
osx_deployment_target
=
platforms
.
select
{
|
p
|
p
.
name
==
:osx
}.
map
(
&
:deployment_target
).
min
#
ios_deployment_target
=
platforms
.
select
{
|
p
|
p
.
name
==
:ios
}.
map
(
&
:deployment_target
).
min
# @return [void]
project
.
build_configurations
.
each
do
|
build_configuration
|
#
build_configuration
.
build_settings
[
'MACOSX_DEPLOYMENT_TARGET'
]
=
osx_deployment_target
.
to_s
if
osx_deployment_target
def
detect_native_targets
build_configuration
.
build_settings
[
'IPHONEOS_DEPLOYMENT_TARGET'
]
=
ios_deployment_target
.
to_s
if
ios_deployment_target
UI
.
message
"- Matching targets"
do
build_configuration
.
build_settings
[
'STRIP_INSTALLED_PRODUCT'
]
=
'NO'
p
native_targets_by_name
=
project
.
targets
.
group_by
(
&
:name
)
p
cp_targets
=
aggregate_targets
+
all_pod_targets
cp_targets
.
each
do
|
pod_target
|
native_targets
=
native_targets_by_name
[
pod_target
.
label
]
if
native_targets
pod_target
.
target
=
native_targets
.
first
end
end
end
end
end
end
end
# Installs the file references in the Pods project. This is done once per
# Pod as the same file reference might be shared by multiple aggregate
# targets.
#
# @return [void]
# @return [void]
#
#
def
install_file_references
def
sync_pod_targets
installer
=
FileReferencesInstaller
.
new
(
sandbox
,
pod_targets
,
project
)
pods_to_remove
.
each
do
|
name
|
installer
.
install!
remove_pod
(
name
)
end
pods_to_install
.
each
do
|
name
|
add_pod
(
name
)
end
end
end
# Installs the pods and the aggregate targets generating their support
# Adds and removes aggregate targets to the
# files.
#
#
# @return [void]
# @return [void]
#
#
def
install_targets
def
sync_aggregate_targets
UI
.
message
"- Installing Targets"
do
targets_to_remove
=
[]
pod_targets
.
sort_by
(
&
:name
).
each
do
|
pod_target
|
next
if
pod_target
.
target_definition
.
empty?
targets_to_install
.
each
do
|
target
|
target_installer
=
PodTargetInstaller
.
new
(
sandbox
,
pod_target
)
add_aggregate_target
(
target
)
target_installer
.
install!
end
end
aggregate_targets
.
sort_by
(
&
:name
).
each
do
|
target
|
targets_to_remove
.
each
do
|
target
|
next
if
target
.
target_definition
.
empty?
remove_aggregate_target
(
target
)
target_installer
=
AggregateTargetInstaller
.
new
(
sandbox
,
target
)
target_installer
.
install!
end
end
# TODO: clean up dependencies and linking
# TODO: clean removed targets and their support files
# TODO: clean stray and unrecognized targets
# TODO: skip empty aggregate targets
# TODO: Install aggregate targets first
# TODO: sort targets by name before serialization in the project
end
#
#
def
add_aggregate_target
(
target
)
UI
.
message
"- Installing `
#{
target
.
label
}
`"
do
# TODO: the support files should be created from scratch in any case
AggregateTargetInstaller
.
new
(
sandbox
,
target
).
install!
end
end
end
end
# Generates file references to the system frameworks used by the targets.
# This is done for informative purposes and is not needed as the
# canonical source for the build settings are the xcconfig files.
#
#
# @return [void]
#
#
def
install_system_frameworks
def
remove_aggregate_target
(
target
)
UI
.
message
"- Removing `
#{
target
.
label
}
`"
do
target
.
remove_from_project
target
.
product_reference
.
remove_from_project
project
.
support_files_group
[
target
.
name
].
remove_from_project
end
end
#
#
def
add_pod
(
name
)
UI
.
message
"- Installing `
#{
name
}
`"
do
pod_targets
=
all_pod_targets
.
select
{
|
target
|
target
.
pod_name
==
name
}
UI
.
message
"- Installing file references"
do
path
=
sandbox
.
pod_dir
(
name
)
local
=
sandbox
.
local?
(
name
)
project
.
add_pod_group
(
name
,
path
,
local
)
FileReferencesInstaller
.
new
(
sandbox
,
pod_targets
).
install!
end
pod_targets
.
each
do
|
pod_target
|
pod_targets
.
each
do
|
pod_target
|
pod_target
.
specs
.
each
do
|
spec
|
UI
.
message
"- Installing targets"
do
spec
.
consumer
(
pod_target
.
platform
).
frameworks
.
each
do
|
framework
|
PodTargetInstaller
.
new
(
sandbox
,
pod_target
).
install!
project
.
add_system_framework
(
framework
,
pod_target
.
target
)
end
end
end
end
#
#
def
remove_pod
(
name
)
UI
.
message
"- Removing `
#{
name
}
`"
do
products_group
=
project
.
group_for_spec
(
name
,
:products
)
UI
.
message
"- Removing targets"
do
targets
=
project
.
targets
.
select
{
|
target
|
products_group
.
children
.
include?
(
target
.
product_reference
)
}
targets
.
each
do
|
target
|
target
.
referrers
.
each
do
|
ref
|
if
ref
.
isa
==
'PBXTargetDependency'
ref
.
remove_from_project
end
end
target
.
remove_from_project
end
end
end
end
UI
.
message
"- Removing file references"
do
group
=
project
.
pod_group
(
name
)
group
.
remove_from_project
end
end
end
end
end
...
@@ -159,13 +217,24 @@ module Pod
...
@@ -159,13 +217,24 @@ module Pod
#
#
# @return [void]
# @return [void]
#
#
def
set_target_dependencies
def
sync_target_dependencies
UI
.
message
"- Setting-up dependencies"
do
aggregate_targets
.
each
do
|
aggregate_target
|
aggregate_target
.
pod_targets
.
each
do
|
dep
|
if
dep
.
target
aggregate_target
.
target
.
add_dependency
(
dep
.
target
)
else
puts
"[BUG]
#{
dep
}
"
end
end
end
aggregate_targets
.
each
do
|
aggregate_target
|
aggregate_targets
.
each
do
|
aggregate_target
|
aggregate_target
.
pod_targets
.
each
do
|
pod_target
|
aggregate_target
.
pod_targets
.
each
do
|
pod_target
|
aggregate_target
.
target
.
add_dependency
(
pod_target
.
target
)
dependencies
=
pod_target
.
dependencies
.
map
{
|
dep_name
|
aggregate_target
.
pod_targets
.
find
{
|
target
|
target
.
pod_name
==
dep_name
}
}
pod_target
.
dependencies
.
each
do
|
dep
|
dependencies
.
each
do
|
dep
|
pod_dependency_target
=
aggregate_target
.
pod_targets
.
find
{
|
target
|
target
.
pod_name
==
dep
}
pod_target
.
target
.
add_dependency
(
dep
.
target
)
pod_target
.
target
.
add_dependency
(
pod_dependency_target
.
target
)
end
end
end
end
end
end
end
...
@@ -175,6 +244,16 @@ module Pod
...
@@ -175,6 +244,16 @@ module Pod
#
#
# @return [void]
# @return [void]
#
#
def
sync_aggregate_targets_libraries
UI
.
message
"- Populating aggregate targets"
do
aggregate_targets
.
each
do
|
aggregate_target
|
native_target
=
aggregate_target
.
target
aggregate_target
.
pod_targets
.
each
do
|
pod_target
|
product
=
pod_target
.
target
.
product_reference
unless
native_target
.
frameworks_build_phase
.
files_references
.
include?
(
product
)
native_target
.
frameworks_build_phase
.
add_file_reference
(
product
)
end
end
end
end
end
end
end
end
...
@@ -182,32 +261,86 @@ module Pod
...
@@ -182,32 +261,86 @@ module Pod
private
private
# @!group
Write step
s
# @!group
Private Helper
s
#-----------------------------------------------------------------------#
#-----------------------------------------------------------------------#
# Cleans up the project to prepare it for serialization.
#
#
# @return [void]
#
#
def
clean_up_project
def
should_create_new_project?
project
.
pods
.
remove_from_project
if
project
.
pods
.
empty?
# TODO
project
.
development_pods
.
remove_from_project
if
project
.
development_pods
.
empty?
incompatible
=
false
project
.
main_group
.
recursively_sort_by_type
incompatible
||
!
sandbox
.
project_path
.
exist?
end
end
#
private
#
attr_accessor
:new_project
# @!group Private Helpers
alias_method
:new_project?
,
:new_project
#-----------------------------------------------------------------------#
# @return [Array<PodTarget>] The pod targets generated by the installation
# @return [Array<PodTarget>] The pod targets generated by the installation
# process.
# process.
#
#
def
pod_targets
def
all_
pod_targets
aggregate_targets
.
map
(
&
:pod_targets
).
flatten
aggregate_targets
.
map
(
&
:pod_targets
).
flatten
end
end
#
#
def
pods_to_install
if
new_project
puts
"$$$ Installing all Pods"
all_pod_targets
.
map
(
&
:pod_name
).
uniq
.
sort
else
# TODO: Add missing groups
missing_target
=
all_pod_targets
.
select
{
|
pod_target
|
pod_target
.
target
.
nil?
}.
map
(
&
:pod_name
).
uniq
puts
"$$$ missing target:
#{
missing_target
}
"
puts
"$$$ sandbox.state.added:
#{
sandbox
.
state
.
added
}
"
puts
"$$$ sandbox.state.changed:
#{
sandbox
.
state
.
changed
}
"
@pods_to_install
||=
(
sandbox
.
state
.
added
|
sandbox
.
state
.
changed
|
missing_target
).
uniq
.
sort
end
end
#
#
def
pods_to_remove
return
[]
if
new_project
# TODO: Superfluous groups
@pods_to_remove
||=
(
sandbox
.
state
.
deleted
|
sandbox
.
state
.
changed
).
sort
end
def
targets_to_install
aggregate_targets
.
select
do
|
aggregate_target
|
if
new_project
true
else
missing
=
aggregate_target
.
target
.
nil?
empty
=
aggregate_target
.
target_definition
.
empty?
missing
||
empty
end
end
end
# Sets the build configuration of the Pods project according the build
# configurations of the user as detected by the analyzer and other
# default values.
#
# @return [void]
#
def
setup_build_configurations
user_build_configurations
.
each
do
|
name
,
type
|
project
.
add_build_configuration
(
name
,
type
)
end
platforms
=
aggregate_targets
.
map
(
&
:platform
)
osx_deployment_target
=
platforms
.
select
{
|
p
|
p
.
name
==
:osx
}.
map
(
&
:deployment_target
).
min
ios_deployment_target
=
platforms
.
select
{
|
p
|
p
.
name
==
:ios
}.
map
(
&
:deployment_target
).
min
project
.
build_configurations
.
each
do
|
build_configuration
|
build_configuration
.
build_settings
[
'MACOSX_DEPLOYMENT_TARGET'
]
=
osx_deployment_target
.
to_s
if
osx_deployment_target
build_configuration
.
build_settings
[
'IPHONEOS_DEPLOYMENT_TARGET'
]
=
ios_deployment_target
.
to_s
if
ios_deployment_target
build_configuration
.
build_settings
[
'STRIP_INSTALLED_PRODUCT'
]
=
'NO'
end
end
#-----------------------------------------------------------------------#
#-----------------------------------------------------------------------#
end
end
...
...
spec/unit/installer/pods_project_generator_spec.rb
View file @
b8160f92
...
@@ -17,10 +17,11 @@ module Pod
...
@@ -17,10 +17,11 @@ module Pod
@sut
.
project
.
should
.
not
.
be
.
nil
@sut
.
project
.
should
.
not
.
be
.
nil
end
end
it
"
can write
the pods project"
do
it
"
writes
the pods project"
do
@sut
.
send
(
:install
)
@sut
.
send
(
:install
)
@sut
.
project
.
expects
(
:prepare_for_serialization
)
@sut
.
project
.
expects
(
:save
)
@sut
.
project
.
expects
(
:save
)
@sut
.
send
(
:write_p
od_p
roject
)
@sut
.
send
(
:write_project
)
end
end
end
end
...
@@ -39,7 +40,7 @@ module Pod
...
@@ -39,7 +40,7 @@ module Pod
@sut
.
project
.
class
.
should
==
Pod
::
Project
@sut
.
project
.
class
.
should
==
Pod
::
Project
end
end
it
"creates a group for each Pod"
do
x
it
"creates a group for each Pod"
do
pod_target
=
PodTarget
.
new
([],
nil
,
config
.
sandbox
)
pod_target
=
PodTarget
.
new
([],
nil
,
config
.
sandbox
)
pod_target
.
stubs
(
:pod_name
).
returns
(
'BananaLib'
)
pod_target
.
stubs
(
:pod_name
).
returns
(
'BananaLib'
)
@sut
.
stubs
(
:pod_targets
).
returns
([
pod_target
])
@sut
.
stubs
(
:pod_targets
).
returns
([
pod_target
])
...
@@ -47,7 +48,7 @@ module Pod
...
@@ -47,7 +48,7 @@ module Pod
@sut
.
project
[
'Pods/BananaLib'
].
should
.
not
.
be
.
nil
@sut
.
project
[
'Pods/BananaLib'
].
should
.
not
.
be
.
nil
end
end
it
"creates a group for each development Pod"
do
x
it
"creates a group for each development Pod"
do
pod_target
=
PodTarget
.
new
([],
nil
,
config
.
sandbox
)
pod_target
=
PodTarget
.
new
([],
nil
,
config
.
sandbox
)
pod_target
.
stubs
(
:pod_name
).
returns
(
'BananaLib'
)
pod_target
.
stubs
(
:pod_name
).
returns
(
'BananaLib'
)
@sut
.
stubs
(
:pod_targets
).
returns
([
pod_target
])
@sut
.
stubs
(
:pod_targets
).
returns
([
pod_target
])
...
@@ -99,7 +100,7 @@ module Pod
...
@@ -99,7 +100,7 @@ module Pod
@sut
=
PodsProjectGenerator
.
new
(
config
.
sandbox
,
[])
@sut
=
PodsProjectGenerator
.
new
(
config
.
sandbox
,
[])
end
end
it
"installs the file references"
do
x
it
"installs the file references"
do
Installer
::
PodsProjectGenerator
::
FileReferencesInstaller
.
any_instance
.
expects
(
:install!
)
Installer
::
PodsProjectGenerator
::
FileReferencesInstaller
.
any_instance
.
expects
(
:install!
)
@sut
.
send
(
:install_file_references
)
@sut
.
send
(
:install_file_references
)
end
end
...
@@ -119,21 +120,21 @@ module Pod
...
@@ -119,21 +120,21 @@ module Pod
@sut
=
PodsProjectGenerator
.
new
(
config
.
sandbox
,
[
aggregate_target
])
@sut
=
PodsProjectGenerator
.
new
(
config
.
sandbox
,
[
aggregate_target
])
end
end
it
"install the aggregate targets"
do
x
it
"install the aggregate targets"
do
@target_definition
.
store_pod
(
'BananaLib'
)
@target_definition
.
store_pod
(
'BananaLib'
)
Installer
::
PodsProjectGenerator
::
PodTargetInstaller
.
any_instance
.
stubs
(
:install!
)
Installer
::
PodsProjectGenerator
::
PodTargetInstaller
.
any_instance
.
stubs
(
:install!
)
Installer
::
PodsProjectGenerator
::
AggregateTargetInstaller
.
any_instance
.
expects
(
:install!
)
Installer
::
PodsProjectGenerator
::
AggregateTargetInstaller
.
any_instance
.
expects
(
:install!
)
@sut
.
send
(
:install_targets
)
@sut
.
send
(
:install_targets
)
end
end
it
"install the Pod targets"
do
x
it
"install the Pod targets"
do
@target_definition
.
store_pod
(
'BananaLib'
)
@target_definition
.
store_pod
(
'BananaLib'
)
Installer
::
PodsProjectGenerator
::
AggregateTargetInstaller
.
any_instance
.
stubs
(
:install!
)
Installer
::
PodsProjectGenerator
::
AggregateTargetInstaller
.
any_instance
.
stubs
(
:install!
)
Installer
::
PodsProjectGenerator
::
PodTargetInstaller
.
any_instance
.
expects
(
:install!
)
Installer
::
PodsProjectGenerator
::
PodTargetInstaller
.
any_instance
.
expects
(
:install!
)
@sut
.
send
(
:install_targets
)
@sut
.
send
(
:install_targets
)
end
end
it
"skips empty targets"
do
x
it
"skips empty targets"
do
Installer
::
PodsProjectGenerator
::
PodTargetInstaller
.
any_instance
.
expects
(
:install!
).
never
Installer
::
PodsProjectGenerator
::
PodTargetInstaller
.
any_instance
.
expects
(
:install!
).
never
Installer
::
PodsProjectGenerator
::
PodTargetInstaller
.
any_instance
.
expects
(
:install!
).
never
Installer
::
PodsProjectGenerator
::
PodTargetInstaller
.
any_instance
.
expects
(
:install!
).
never
@sut
.
send
(
:install_targets
)
@sut
.
send
(
:install_targets
)
...
@@ -158,7 +159,7 @@ module Pod
...
@@ -158,7 +159,7 @@ module Pod
@sut
.
send
(
:prepare_project
)
@sut
.
send
(
:prepare_project
)
end
end
it
'adds the frameworks required by to the pod to the project for informative purposes'
do
x
it
'adds the frameworks required by to the pod to the project for informative purposes'
do
Project
.
any_instance
.
expects
(
:add_system_framework
).
with
(
'QuartzCore'
,
@pod_native_target
)
Project
.
any_instance
.
expects
(
:add_system_framework
).
with
(
'QuartzCore'
,
@pod_native_target
)
@sut
.
send
(
:install_system_frameworks
)
@sut
.
send
(
:install_system_frameworks
)
end
end
...
@@ -166,7 +167,7 @@ module Pod
...
@@ -166,7 +167,7 @@ module Pod
#-----------------------------------------------------------------------#
#-----------------------------------------------------------------------#
describe
"#s
et
_target_dependencies"
do
describe
"#s
ync
_target_dependencies"
do
before
do
before
do
project
=
Pod
::
Project
.
new
(
config
.
sandbox
.
project_path
)
project
=
Pod
::
Project
.
new
(
config
.
sandbox
.
project_path
)
...
@@ -187,14 +188,14 @@ module Pod
...
@@ -187,14 +188,14 @@ module Pod
it
"sets the pod targets as dependencies of the aggregate target"
do
it
"sets the pod targets as dependencies of the aggregate target"
do
@sut
.
send
(
:s
et
_target_dependencies
)
@sut
.
send
(
:s
ync
_target_dependencies
)
dependencies
=
@aggregate_target
.
target
.
dependencies
dependencies
=
@aggregate_target
.
target
.
dependencies
dependencies
.
map
{
|
d
|
d
.
target
.
name
}.
should
==
[
"Pods-BananaLib"
,
"Pods-monkey"
]
dependencies
.
map
{
|
d
|
d
.
target
.
name
}.
should
==
[
"Pods-BananaLib"
,
"Pods-monkey"
]
end
end
it
"sets the dependencies of the pod targets"
do
it
"sets the dependencies of the pod targets"
do
@pod_target_1
.
stubs
(
:dependencies
).
returns
([
'monkey'
])
@pod_target_1
.
stubs
(
:dependencies
).
returns
([
'monkey'
])
@sut
.
send
(
:s
et
_target_dependencies
)
@sut
.
send
(
:s
ync
_target_dependencies
)
dependencies
=
@pod_target_1
.
target
.
dependencies
dependencies
=
@pod_target_1
.
target
.
dependencies
dependencies
.
map
{
|
d
|
d
.
target
.
name
}.
should
==
[
"Pods-monkey"
]
dependencies
.
map
{
|
d
|
d
.
target
.
name
}.
should
==
[
"Pods-monkey"
]
end
end
...
@@ -203,7 +204,7 @@ module Pod
...
@@ -203,7 +204,7 @@ module Pod
#-----------------------------------------------------------------------#
#-----------------------------------------------------------------------#
describe
"#
link_aggregate_target
"
do
describe
"#
sync_aggregate_targets_libraries
"
do
before
do
before
do
project
=
Pod
::
Project
.
new
(
config
.
sandbox
.
project_path
)
project
=
Pod
::
Project
.
new
(
config
.
sandbox
.
project_path
)
...
@@ -218,7 +219,7 @@ module Pod
...
@@ -218,7 +219,7 @@ module Pod
end
end
it
"links the aggregate targets to the pod targets"
do
it
"links the aggregate targets to the pod targets"
do
@sut
.
send
(
:
link_aggregate_target
)
@sut
.
send
(
:
sync_aggregate_targets_libraries
)
@aggregate_native_target
.
frameworks_build_phase
.
files
.
map
(
&
:file_ref
).
should
.
include?
(
@pod_native_target
.
product_reference
)
@aggregate_native_target
.
frameworks_build_phase
.
files
.
map
(
&
:file_ref
).
should
.
include?
(
@pod_native_target
.
product_reference
)
end
end
...
@@ -226,32 +227,6 @@ module Pod
...
@@ -226,32 +227,6 @@ module Pod
#-----------------------------------------------------------------------#
#-----------------------------------------------------------------------#
describe
"#clean_up_project"
do
before
do
@sut
=
PodsProjectGenerator
.
new
(
config
.
sandbox
,
[])
@sut
.
install
end
it
"removes the Pods group if empty"
do
@sut
.
send
(
:write_pod_project
)
@sut
.
project
[
'Pods'
].
should
.
be
.
nil
end
it
"removes the Development Pods group if empty"
do
@sut
.
send
(
:write_pod_project
)
@sut
.
project
[
'Development Pods'
].
should
.
be
.
nil
end
it
"recursively sorts the project by type"
do
@sut
.
project
.
main_group
.
expects
(
:recursively_sort_by_type
)
@sut
.
send
(
:write_pod_project
)
end
end
#-----------------------------------------------------------------------#
end
end
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