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
ffefba98
Commit
ffefba98
authored
Oct 11, 2011
by
Eloy Duran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor Pod::Xcode::Project to use actual objects instead of raw hashes.
parent
7c8ac07b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
104 additions
and
30 deletions
+104
-30
project.rb
lib/cocoapods/xcode/project.rb
+0
-0
project_spec.rb
spec/unit/xcode/project_spec.rb
+104
-30
No files found.
lib/cocoapods/xcode/project.rb
View file @
ffefba98
This diff is collapsed.
Click to expand it.
spec/unit/xcode/project_spec.rb
View file @
ffefba98
...
@@ -7,15 +7,90 @@ describe "Pod::Xcode::Project" do
...
@@ -7,15 +7,90 @@ describe "Pod::Xcode::Project" do
@project
=
Pod
::
Xcode
::
Project
.
ios_static_library
@project
=
Pod
::
Xcode
::
Project
.
ios_static_library
end
end
def
find_objects
(
conditions
)
@project
.
objects_hash
.
select
do
|
_
,
object
|
object
.
objectsForKeys
(
conditions
.
keys
,
notFoundMarker
:Object
.
new
)
==
conditions
.
values
end
end
def
find_object
(
conditions
)
find_objects
(
conditions
).
first
end
it
"returns an instance initialized from the iOS static library template"
do
it
"returns an instance initialized from the iOS static library template"
do
template_dir
=
Pod
::
Xcode
::
Project
::
TEMPLATES_DIR
+
'cocoa-touch-static-library'
template_dir
=
Pod
::
Xcode
::
Project
::
TEMPLATES_DIR
+
'cocoa-touch-static-library'
template_file
=
(
template_dir
+
'Pods.xcodeproj/project.pbxproj'
).
to_s
template_file
=
(
template_dir
+
'Pods.xcodeproj/project.pbxproj'
).
to_s
@project
.
to_hash
.
should
==
NSDictionary
.
dictionaryWithContentsOfFile
(
template_file
)
@project
.
to_hash
.
should
==
NSDictionary
.
dictionaryWithContentsOfFile
(
template_file
)
end
end
it
"returns the objects hash"
do
@project
.
objects_hash
.
should
==
@project
.
to_hash
[
'objects'
]
end
describe
"PBXObject"
do
before
do
@object
=
Pod
::
Xcode
::
Project
::
PBXObject
.
new
(
@project
.
objects
,
nil
,
'name'
=>
'AnObject'
)
end
it
"merges the class name into the attributes"
do
@object
.
isa
.
should
==
'PBXObject'
@object
.
attributes
[
'isa'
].
should
==
'PBXObject'
end
it
"takes a name"
do
@object
.
name
.
should
==
'AnObject'
@object
.
name
=
'AnotherObject'
@object
.
name
.
should
==
'AnotherObject'
end
it
"generates a uuid"
do
@object
.
uuid
.
should
.
be
.
instance_of
String
@object
.
uuid
.
size
.
should
==
24
@object
.
uuid
.
should
==
@object
.
uuid
end
end
it
"returns the objects as PBXObject instances"
do
@project
.
objects
.
each
do
|
object
|
@project
.
objects_hash
[
object
.
uuid
].
should
==
object
.
attributes
end
end
it
"adds any type of new PBXObject to the objects hash"
do
object
=
@project
.
objects
.
add
(
Pod
::
Xcode
::
Project
::
PBXObject
,
'name'
=>
'An Object'
)
object
.
name
.
should
==
'An Object'
@project
.
objects_hash
[
object
.
uuid
].
should
==
object
.
attributes
end
it
"adds a new PBXObject, of the configured type, to the objects hash"
do
group
=
@project
.
groups
.
new
(
'name'
=>
'A new group'
)
group
.
isa
.
should
==
'PBXGroup'
group
.
name
.
should
==
'A new group'
@project
.
objects_hash
[
group
.
uuid
].
should
==
group
.
attributes
end
it
"adds a new PBXFileReference to the objects hash"
do
file
=
@project
.
files
.
new
(
'path'
=>
'/some/file.m'
)
file
.
isa
.
should
==
'PBXFileReference'
file
.
name
.
should
==
'file.m'
file
.
path
.
should
==
'/some/file.m'
file
.
sourceTree
.
should
==
'SOURCE_ROOT'
@project
.
objects_hash
[
file
.
uuid
].
should
==
file
.
attributes
end
it
"adds a new PBXBuildFile to the objects hash when a new PBXFileReference is created"
do
file
=
@project
.
files
.
new
(
'name'
=>
'/some/source/file.h'
)
build_file
=
file
.
build_file
build_file
.
file
=
file
build_file
.
fileRef
.
should
==
file
.
uuid
build_file
.
isa
.
should
==
'PBXBuildFile'
@project
.
objects_hash
[
build_file
.
uuid
].
should
==
build_file
.
attributes
end
it
"adds a group to the `Pods' group"
do
it
"adds a group to the `Pods' group"
do
@project
.
add_group
(
'JSONKit'
)
group
=
@project
.
add_pod_group
(
'JSONKit'
)
@project
.
find_object
({
@project
.
pods
.
children
.
should
.
include
group
.
uuid
find_object
({
'isa'
=>
'PBXGroup'
,
'isa'
=>
'PBXGroup'
,
'name'
=>
'JSONKit'
,
'name'
=>
'JSONKit'
,
'sourceTree'
=>
'<group>'
,
'sourceTree'
=>
'<group>'
,
...
@@ -25,32 +100,32 @@ describe "Pod::Xcode::Project" do
...
@@ -25,32 +100,32 @@ describe "Pod::Xcode::Project" do
it
"adds an `m' or `c' file as a build file, adds it to the specified group, and adds it to the `sources build' phase list"
do
it
"adds an `m' or `c' file as a build file, adds it to the specified group, and adds it to the `sources build' phase list"
do
file_ref_uuids
,
build_file_uuids
=
[],
[]
file_ref_uuids
,
build_file_uuids
=
[],
[]
group_uuid
=
@project
.
add_group
(
'SomeGroup'
)
group
=
@project
.
add_pod_group
(
'SomeGroup'
)
group
=
@project
.
to_hash
[
'objects'
][
group_uuid
]
%w{ m mm c cpp }
.
each
do
|
ext
|
%w{ m mm c cpp }
.
each
do
|
ext
|
path
=
Pathname
.
new
(
"path/to/file.
#{
ext
}
"
)
path
=
Pathname
.
new
(
"path/to/file.
#{
ext
}
"
)
file_ref_uuid
=
@project
.
add_source_file
(
path
,
'SomeGroup'
)
file
=
group
.
add_source_file
(
path
)
@project
.
to_hash
[
'objects'
][
file_ref_uuid
].
should
==
{
@project
.
objects_hash
[
file
.
uuid
].
should
==
{
'name'
=>
path
.
basename
.
to_s
,
'name'
=>
path
.
basename
.
to_s
,
'isa'
=>
'PBXFileReference'
,
'isa'
=>
'PBXFileReference'
,
'sourceTree'
=>
'SOURCE_ROOT'
,
'sourceTree'
=>
'SOURCE_ROOT'
,
'path'
=>
path
.
to_s
'path'
=>
path
.
to_s
}
}
file_ref_uuids
<<
file
_ref_
uuid
file_ref_uuids
<<
file
.
uuid
build_file_uuid
,
_
=
@project
.
find_object
({
build_file_uuid
,
_
=
find_object
({
'isa'
=>
'PBXBuildFile'
,
'isa'
=>
'PBXBuildFile'
,
'fileRef'
=>
file
_ref_
uuid
'fileRef'
=>
file
.
uuid
})
})
build_file_uuids
<<
build_file_uuid
build_file_uuids
<<
build_file_uuid
group
[
'children'
]
.
should
==
file_ref_uuids
group
.
children
.
should
==
file_ref_uuids
_
,
object
=
@project
.
find_object
(
'isa'
=>
'PBXSourcesBuildPhase'
)
_
,
object
=
find_object
(
'isa'
=>
'PBXSourcesBuildPhase'
)
object
[
'files'
].
should
==
build_file_uuids
object
[
'files'
].
should
==
build_file_uuids
_
,
object
=
@project
.
find_object
(
'isa'
=>
'PBXHeadersBuildPhase'
)
_
,
object
=
find_object
(
'isa'
=>
'PBXHeadersBuildPhase'
)
object
[
'files'
].
should
.
not
.
include
build_file_uuid
object
[
'files'
].
should
.
not
.
include
build_file_uuid
end
end
end
end
...
@@ -59,10 +134,10 @@ describe "Pod::Xcode::Project" do
...
@@ -59,10 +134,10 @@ describe "Pod::Xcode::Project" do
build_file_uuids
=
[]
build_file_uuids
=
[]
%w{ m mm c cpp }
.
each
do
|
ext
|
%w{ m mm c cpp }
.
each
do
|
ext
|
path
=
Pathname
.
new
(
"path/to/file.
#{
ext
}
"
)
path
=
Pathname
.
new
(
"path/to/file.
#{
ext
}
"
)
file
_ref_uuid
=
@project
.
add_source_file
(
path
,
'Pods'
,
nil
,
'-fno-obj-arc'
)
file
=
@project
.
pods
.
add_source_file
(
path
,
nil
,
'-fno-obj-arc'
)
@project
.
find_object
({
find_object
({
'isa'
=>
'PBXBuildFile'
,
'isa'
=>
'PBXBuildFile'
,
'fileRef'
=>
file
_ref_
uuid
,
'fileRef'
=>
file
.
uuid
,
'settings'
=>
{
'COMPILER_FLAGS'
=>
'-fno-obj-arc'
}
'settings'
=>
{
'COMPILER_FLAGS'
=>
'-fno-obj-arc'
}
}).
should
.
not
==
nil
}).
should
.
not
==
nil
end
end
...
@@ -70,36 +145,35 @@ describe "Pod::Xcode::Project" do
...
@@ -70,36 +145,35 @@ describe "Pod::Xcode::Project" do
it
"creates a copy build header phase which will copy headers to a specified path"
do
it
"creates a copy build header phase which will copy headers to a specified path"
do
phase_uuid
=
@project
.
add_copy_header_build_phase
(
"SomePod"
,
"Path/To/Source"
)
phase_uuid
=
@project
.
add_copy_header_build_phase
(
"SomePod"
,
"Path/To/Source"
)
@project
.
find_object
({
find_object
({
'isa'
=>
'PBXCopyFilesBuildPhase'
,
'isa'
=>
'PBXCopyFilesBuildPhase'
,
'dstPath'
=>
'$(PUBLIC_HEADERS_FOLDER_PATH)/Path/To/Source'
,
'dstPath'
=>
'$(PUBLIC_HEADERS_FOLDER_PATH)/Path/To/Source'
,
'name'
=>
'Copy SomePod Public Headers'
'name'
=>
'Copy SomePod Public Headers'
}).
should
.
not
==
nil
}).
should
.
not
==
nil
target
=
@project
.
targets
.
first
_
,
target
=
@project
.
objects_by_isa
(
'PBXNativeTarget'
).
first
target
.
attributes
[
'buildPhases'
].
should
.
include
phase_uuid
target
[
'buildPhases'
].
should
.
include
phase_uuid
end
end
it
"adds a `h' file as a build file and adds it to the `headers build' phase list"
do
it
"adds a `h' file as a build file and adds it to the `headers build' phase list"
do
@project
.
add_group
(
'SomeGroup'
)
group
=
@project
.
groups
.
new
(
'name'
=>
'SomeGroup'
)
path
=
Pathname
.
new
(
"path/to/file.h"
)
path
=
Pathname
.
new
(
"path/to/file.h"
)
file
_ref_uuid
=
@project
.
add_source_file
(
path
,
'SomeGroup'
)
file
=
group
.
add_source_file
(
path
)
@project
.
to_hash
[
'objects'
][
file_ref_
uuid
].
should
==
{
@project
.
objects_hash
[
file
.
uuid
].
should
==
{
'name'
=>
path
.
basename
.
to_s
,
'name'
=>
path
.
basename
.
to_s
,
'isa'
=>
'PBXFileReference'
,
'isa'
=>
'PBXFileReference'
,
'sourceTree'
=>
'SOURCE_ROOT'
,
'sourceTree'
=>
'SOURCE_ROOT'
,
'path'
=>
path
.
to_s
'path'
=>
path
.
to_s
}
}
build_file_uuid
,
_
=
@project
.
find_object
({
build_file_uuid
,
_
=
find_object
({
'isa'
=>
'PBXBuildFile'
,
'isa'
=>
'PBXBuildFile'
,
'fileRef'
=>
file
_ref_
uuid
'fileRef'
=>
file
.
uuid
})
})
#_, object =
@project.
find_object('isa' => 'PBXHeadersBuildPhase')
#_, object = find_object('isa' => 'PBXHeadersBuildPhase')
_
,
object
=
@project
.
find_object
(
'isa'
=>
'PBXCopyFilesBuildPhase'
)
_
,
object
=
find_object
(
'isa'
=>
'PBXCopyFilesBuildPhase'
)
object
[
'files'
].
should
==
[
build_file_uuid
]
object
[
'files'
].
should
==
[
build_file_uuid
]
_
,
object
=
@project
.
find_object
(
'isa'
=>
'PBXSourcesBuildPhase'
)
_
,
object
=
find_object
(
'isa'
=>
'PBXSourcesBuildPhase'
)
object
[
'files'
].
should
.
not
.
include
build_file_uuid
object
[
'files'
].
should
.
not
.
include
build_file_uuid
end
end
...
@@ -112,9 +186,9 @@ describe "Pod::Xcode::Project" do
...
@@ -112,9 +186,9 @@ describe "Pod::Xcode::Project" do
end
end
it
"returns all source files"
do
it
"returns all source files"
do
@project
.
add_group
(
'SomeGroup'
)
group
=
@project
.
groups
.
new
(
'name'
=>
'SomeGroup'
)
files
=
[
Pathname
.
new
(
'/some/file.h'
),
Pathname
.
new
(
'/some/file.m'
)]
files
=
[
Pathname
.
new
(
'/some/file.h'
),
Pathname
.
new
(
'/some/file.m'
)]
files
.
each
{
|
file
|
@project
.
add_source_file
(
file
,
'SomeGroup'
)
}
files
.
each
{
|
file
|
group
.
add_source_file
(
file
)
}
@project
.
source_files
[
'SomeGroup'
]
.
sort
.
should
==
files
.
sort
group
.
source_files
.
map
(
&
:pathname
)
.
sort
.
should
==
files
.
sort
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