Commit d51f5a06 authored by Eloy Duran's avatar Eloy Duran

Make UserProjectIntegrator work again.

parent 3a9bf898
......@@ -4,12 +4,12 @@ Kicker::Recipes::Ruby.runner_bin = 'bacon'
process do |files|
specs = files.take_and_map do |file|
case file
when %r{lib/cocoapods/installer.+\.rb$}
['spec/unit/installer_spec.rb', 'spec/unit/installer/target_installer_spec.rb']
when %r{lib/cocoapods/(.+?)\.rb$}
s = Dir.glob("spec/**/#{$1}_spec.rb")
s unless s.empty?
if file =~ %r{lib/cocoapods/(.+?)\.rb$}
s = Dir.glob("spec/**/#{File.basename(file, '.rb')}_spec.rb")
if file =~ %r{lib/cocoapods/installer.+\.rb$}
s.concat(['spec/unit/installer_spec.rb', 'spec/unit/installer/target_installer_spec.rb'])
end
s.uniq unless s.empty?
end
end
Kicker::Recipes::Ruby.run_tests(specs)
......
......@@ -11,7 +11,7 @@ module Pod
The Xcode project file should be specified in your `Podfile` like this:
xcodeproj "path/to/project.xcodeproj"
xcodeproj 'path/to/project.xcodeproj'
If no xcodeproj is specified, then a search for an Xcode project will
be made. If more than one Xcode project is found, the command will
......@@ -59,7 +59,7 @@ module Pod
Repo.new(ARGV.new(["update"])).run
end
Installer.new(podfile, @projpath).install!
Installer.new(podfile).install!
end
end
end
......
......@@ -9,8 +9,8 @@ module Pod
attr_reader :sandbox
def initialize(podfile, user_project_path = nil)
@podfile, @user_project_path = podfile, user_project_path
def initialize(podfile)
@podfile = podfile
# FIXME: pass this into the installer as a parameter
@sandbox = Sandbox.new(config.project_pods_root)
@resolver = Resolver.new(@podfile, @sandbox)
......@@ -91,7 +91,7 @@ module Pod
puts "* Writing Xcode project file to `#{@sandbox.project_path}'\n\n" if config.verbose?
project.save_as(@sandbox.project_path)
UserProjectIntegrator.new(@podfile.xcodeproj, @podfile).integrate!
UserProjectIntegrator.new(@podfile).integrate! if @podfile.xcodeproj
end
def run_post_install_hooks
......
......@@ -7,12 +7,8 @@ module Pod
class UserProjectIntegrator
include Pod::Config::Mixin
attr_reader :user_project_path, :user_project
def initialize(user_project_path, podfile)
@user_project_path = config.project_root + user_project_path
def initialize(podfile)
@podfile = podfile
@user_project = Xcodeproj::Project.new(user_project_path)
end
def integrate!
......@@ -21,7 +17,7 @@ module Pod
# Only need to write out the user's project if any of the target
# integrators actually did some work.
if targets.map(&:integrate!).any?
@user_project.save_as(user_project_path)
user_project.save_as(user_project_path)
end
unless config.silent?
......@@ -30,6 +26,14 @@ module Pod
end
end
def user_project_path
@podfile.xcodeproj
end
def user_project
@user_project ||= Xcodeproj::Project.new(user_project_path)
end
def workspace_path
config.project_root + "#{user_project_path.basename('.xcodeproj')}.xcworkspace"
end
......
......@@ -4,10 +4,16 @@ describe Pod::Installer::UserProjectIntegrator do
extend SpecHelper::TemporaryDirectory
before do
@sample_project_path = SpecHelper.create_sample_app_copy_from_fixture('SampleProject')
config.project_root = @sample_project_path.dirname
sample_project_path = @sample_project_path
@podfile = Pod::Podfile.new do
platform :ios
xcodeproj sample_project_path
link_with 'SampleProject' # this is an app target!
dependency 'JSONKit'
target :test_runner, :exclusive => true do
......@@ -16,11 +22,9 @@ describe Pod::Installer::UserProjectIntegrator do
end
end
@sample_project_path = SpecHelper.create_sample_app_copy_from_fixture('SampleProject')
config.project_root = @sample_project_path.dirname
@integrator = Pod::Installer::UserProjectIntegrator.new(@sample_project_path, @podfile)
@integrator = Pod::Installer::UserProjectIntegrator.new(@podfile)
@integrator.integrate!
@sample_project = Xcodeproj::Project.new(@sample_project_path)
end
......
......@@ -367,11 +367,14 @@ else
basename = platform == :ios ? 'iPhone' : 'Mac'
projpath = temporary_directory + 'ASIHTTPRequest.xcodeproj'
FileUtils.cp_r(fixture("integration/ASIHTTPRequest/#{basename}.xcodeproj"), projpath)
spec = Pod::Podfile.new do
podfile = Pod::Podfile.new do
self.platform platform
xcodeproj projpath
dependency 'SSZipArchive'
end
installer = SpecHelper::Installer.new(spec, projpath)
installer = SpecHelper::Installer.new(podfile)
installer.install!
workspace = Xcodeproj::Workspace.new_from_xcworkspace(temporary_directory + 'ASIHTTPRequest.xcworkspace')
......
require File.expand_path('../../spec_helper', __FILE__)
require File.expand_path('../../../spec_helper', __FILE__)
describe "Pod::Command::Install" do
it "should include instructions on how to reference the xcode project" do
Pod::Command::Install.banner.should.match /xcodeproj path\/to\/project.xcodeproj/
Pod::Command::Install.banner.should.match %r{xcodeproj 'path/to/project\.xcodeproj'}
end
before do
......@@ -17,9 +17,10 @@ describe "Pod::Command::Install" do
describe "When the Podfile does not specify the xcodeproject" do
before do
config.stubs(:rootspec).returns(Pod::Podfile.new { platform :ios; dependency 'AFNetworking'})
config.stubs(:podfile).returns(Pod::Podfile.new { platform :ios; dependency 'AFNetworking'})
@installer = Pod::Command::Install.new(Pod::Command::ARGV.new)
end
it "raises an informative error" do
should.raise(Pod::Informative) { @installer.run }
end
......@@ -28,14 +29,14 @@ describe "Pod::Command::Install" do
begin
@installer.run
rescue Pod::Informative => err
err.message.should.match /xcodeproj 'path\/to\/project\.xcodeproj/
err.message.should.match %r{xcodeproj 'path/to/project\.xcodeproj'}
end
end
end
describe "When the Podfile specifies xcodeproj to an invalid path" do
before do
config.stubs(:rootspec).returns(Pod::Podfile.new { platform :ios; xcodeproj 'nonexistent/project.xcodeproj'; dependency 'AFNetworking'})
config.stubs(:podfile).returns(Pod::Podfile.new { platform :ios; xcodeproj 'nonexistent/project.xcodeproj'; dependency 'AFNetworking'})
@installer = Pod::Command::Install.new(Pod::Command::ARGV.new)
end
......
......@@ -4,8 +4,13 @@ describe Pod::Installer::UserProjectIntegrator do
extend SpecHelper::TemporaryDirectory
before do
@sample_project_path = SpecHelper.create_sample_app_copy_from_fixture('SampleProject')
config.project_root = @sample_project_path.dirname
sample_project_path = @sample_project_path
@podfile = Pod::Podfile.new do
platform :ios
xcodeproj sample_project_path
dependency 'JSONKit'
target :test_runner, :exclusive => true do
link_with 'TestRunner'
......@@ -13,10 +18,7 @@ describe Pod::Installer::UserProjectIntegrator do
end
end
@sample_project_path = SpecHelper.create_sample_app_copy_from_fixture('SampleProject')
config.project_root = @sample_project_path.dirname
@integrator = Pod::Installer::UserProjectIntegrator.new(@sample_project_path, @podfile)
@integrator = Pod::Installer::UserProjectIntegrator.new(@podfile)
end
after do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment