Commit 5aada475 authored by Fabio Pelosin's avatar Fabio Pelosin

[Validator] Cleanup spec

parent 7c740de7
...@@ -32,96 +32,103 @@ module Pod ...@@ -32,96 +32,103 @@ module Pod
#-------------------------------------------------------------------------# #-------------------------------------------------------------------------#
describe "Quick mode" do
it "validates a correct podspec" do it "validates a correct podspec" do
validator = Validator.new(podspec_path) sut = Validator.new(podspec_path)
validator.quick = true sut.quick = true
validator.validate sut.validate
validator.results.should == [] sut.results.should == []
validator.validated?.should.be.true sut.validated?.should.be.true
end end
it "lints the podspec during validation" do it "lints the podspec during validation" do
podspec = stub_podspec(/s.name.*$/, 's.name = "TEST"') podspec = stub_podspec(/s.name.*$/, 's.name = "TEST"')
file = write_podspec(podspec) file = write_podspec(podspec)
validator = Validator.new(file) sut = Validator.new(file)
validator.quick = true sut.quick = true
validator.validate sut.validate
validator.results.map(&:to_s).first.should.match /should match the name/ sut.results.map(&:to_s).first.should.match /should match the name/
validator.validated?.should.be.false sut.validated?.should.be.false
end end
it "uses xcodebuild to generate notes and warnings" do it "respects quick mode" do
validator = Validator.new(podspec_path) file = write_podspec(stub_podspec)
validator.stubs(:check_file_patterns) sut = Validator.new(file)
validator.stubs(:xcodebuild).returns("file.m:1:1: warning: direct access to objective-c's isa is deprecated") sut.quick = true
validator.validate sut.expects(:perform_extensive_analysis).never
first = validator.results.map(&:to_s).first sut.validate
first.should.include "[xcodebuild]"
validator.result_type.should == :note
end end
it "checks for file patterns" do it "respects the only errors option" do
file = write_podspec(stub_podspec(/s\.source_files = 'JSONKit\.\*'/, "s.source_files = 'wrong_paht.*'")) podspec = stub_podspec(/s.summary.*/, "s.summary = 'A short description of'")
validator = Validator.new(file) file = write_podspec(podspec)
validator.stubs(:build_pod) sut = Validator.new(file)
validator.validate sut.quick = true
validator.results.map(&:to_s).first.should.match /source_files.*did not match/ sut.only_errors = true
validator.result_type.should == :error sut.validate
sut.results.map(&:to_s).first.should.match /summary.*meaningful/
sut.validated?.should.be.true
end end
it "validates a podspec with dependencies" do
podspec = stub_podspec(/s.name.*$/, 's.name = "ZKit"')
podspec.gsub!(/s.requires_arc/, "s.dependency 'SBJson', '~> 3.2'\n s.requires_arc")
podspec.gsub!(/s.license.*$/, 's.license = "Public Domain"')
file = write_podspec(podspec, "ZKit.podspec")
spec = Specification.from_file(file)
validator = Validator.new(spec)
validator.validate
validator.validated?.should.be.true
end end
#--------------------------------------# #-------------------------------------------------------------------------#
it "respects quick mode" do describe "Extensive analysis" do
it "respects the no clean option" do
file = write_podspec(stub_podspec) file = write_podspec(stub_podspec)
validator = Validator.new(file) sut = Validator.new(file)
validator.quick = true sut.no_clean = true
validator.expects(:perform_extensive_analysis).never sut.validate
validator.validate sut.validation_dir.should.exist
end end
it "respects the no clean option" do it "uses the deployment target of the specification" do
file = write_podspec(stub_podspec) sut = Validator.new(podspec_path)
validator = Validator.new(file) podfile = sut.send(:podfile_from_spec, :ios, '5.0')
validator.no_clean = true dependency = podfile.target_definitions['Pods'].dependencies.first
validator.validate dependency.external_source.has_key?(:podspec).should.be.true
validator.validation_dir.should.exist
end end
it "respects the local option" do it "respects the local option" do
validator = Validator.new(podspec_path) sut = Validator.new(podspec_path)
podfile = validator.send(:podfile_from_spec, :ios, '5.0') podfile = sut.send(:podfile_from_spec, :ios, '5.0')
deployment_target = podfile.target_definitions['Pods'].platform.deployment_target deployment_target = podfile.target_definitions['Pods'].platform.deployment_target
deployment_target.to_s.should == "5.0" deployment_target.to_s.should == "5.0"
end end
it "respects the only errors option" do it "uses xcodebuild to generate notes and warnings" do
podspec = stub_podspec(/s.summary.*/, "s.summary = 'A short description of'") sut = Validator.new(podspec_path)
file = write_podspec(podspec) sut.stubs(:check_file_patterns)
validator = Validator.new(file) sut.stubs(:xcodebuild).returns("file.m:1:1: warning: direct access to objective-c's isa is deprecated")
validator.quick = true sut.validate
validator.only_errors = true first = sut.results.map(&:to_s).first
validator.validate first.should.include "[xcodebuild]"
validator.results.map(&:to_s).first.should.match /summary.*meaningful/ sut.result_type.should == :note
validator.validated?.should.be.true
end end
it "uses the deployment target of the specification" do it "checks for file patterns" do
validator = Validator.new(podspec_path) file = write_podspec(stub_podspec(/s\.source_files = 'JSONKit\.\*'/, "s.source_files = 'wrong_paht.*'"))
podfile = validator.send(:podfile_from_spec, :ios, '5.0') sut = Validator.new(file)
dependency = podfile.target_definitions['Pods'].dependencies.first sut.stubs(:build_pod)
dependency.external_source.has_key?(:podspec).should.be.true sut.validate
sut.results.map(&:to_s).first.should.match /source_files.*did not match/
sut.result_type.should == :error
end
it "validates a podspec with dependencies" do
podspec = stub_podspec(/s.name.*$/, 's.name = "ZKit"')
podspec.gsub!(/s.requires_arc/, "s.dependency 'SBJson', '~> 3.2'\n s.requires_arc")
podspec.gsub!(/s.license.*$/, 's.license = "Public Domain"')
file = write_podspec(podspec, "ZKit.podspec")
spec = Specification.from_file(file)
sut = Validator.new(spec)
sut.validate
sut.validated?.should.be.true
end
end end
#-------------------------------------------------------------------------#
end 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