Commit bf3ae971 authored by Samuel E. Giddins's avatar Samuel E. Giddins

Refactored Command::Outdated to make it stub-able

parent 3ece3e70
......@@ -23,26 +23,6 @@ module Pod
# @todo fix.
#
def run
verify_podfile_exists!
verify_lockfile_exists!
lockfile = config.lockfile
pods = lockfile.pod_names
updates = []
deprecated = []
pods.each do |pod_name|
set = SourcesManager.search(Dependency.new(pod_name))
next unless set
spec = set.specification
source_version = set.versions.first
lockfile_version = lockfile.version(pod_name)
if source_version > lockfile_version
updates << [pod_name, lockfile_version, source_version]
end
if spec.deprecated || spec.deprecated_in_favor_of
deprecated << spec
end
end
if updates.empty?
UI.puts "No updates are available.".yellow
......@@ -54,12 +34,12 @@ module Pod
end
end
if deprecated.any?
if deprecated_pods.any?
UI.section 'The following pods are deprecated:' do
deprecated.each do |spec|
deprecated_pods.each do |spec|
if spec.deprecated_in_favor_of
UI.puts "- #{spec.name} in " \
"favor of #{spec.deprecated_in_favor_of}"
UI.puts "- #{spec.name}" \
" (in favor of #{spec.deprecated_in_favor_of})"
else
UI.puts "- #{spec.name}"
end
......@@ -68,6 +48,56 @@ module Pod
end
end
private
def updates
@updates ||= begin
spec_sets.map do |set|
spec = set.specification
source_version = set.versions.first
pod_name = spec.name
lockfile_version = lockfile.version(pod_name)
if source_version > lockfile_version
[pod_name, lockfile_version, source_version]
else
nil
end
end.compact.uniq
end
end
def deprecated_pods
@deprecated_pods ||= begin
spec_sets.map(&:specification).select do |spec|
spec.deprecated || spec.deprecated_in_favor_of
end.compact.uniq
end
end
def spec_sets
@spec_sets ||= begin
installed_pods.map do |pod_name|
SourcesManager.search(Dependency.new(pod_name))
end.compact.uniq
end
end
def installed_pods
@installed_pods ||= begin
verify_podfile_exists!
lockfile.pod_names
end
end
def lockfile
@lockfile ||= begin
verify_lockfile_exists!
config.lockfile
end
end
end
end
end
......
......@@ -17,6 +17,15 @@ module Pod
exception.message.should.include "No `Podfile.lock' found in the current working directory"
end
end
it 'tells the user about deprecated pods' do
spec = Specification.new(nil, 'AFNetworking')
spec.deprecated_in_favor_of = 'BlocksKit'
Command::Outdated.any_instance.stubs(:deprecated_pods).returns([spec])
Command::Outdated.any_instance.stubs(:updates).returns([])
run_command('outdated', '--no-repo-update')
UI.output.should.include('in favor of BlocksKit')
end
end
end
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