Tests for Pathname+Yeast

I removed the rename and mv functions as when I wrote the tests I realised the function implied the pathname object would be updated to reflect the moved or renamed file. However that cannot be done. Also frankly I think writing it out in full makes clearer code.
This commit is contained in:
Max Howell 2009-09-02 14:31:28 +01:00
parent fbda4b45d6
commit 422ec29363
3 changed files with 57 additions and 14 deletions

View File

@ -55,7 +55,10 @@ class HttpDownloadStrategy <AbstractDownloadStrategy
else else
# we are assuming it is not an archive, use original filename # we are assuming it is not an archive, use original filename
# this behaviour is due to ScriptFileFormula expectations # this behaviour is due to ScriptFileFormula expectations
@dl.mv File.basename(@url) # So I guess we should cp, but we mv, for this historic reason
# HOWEVER if this breaks some expectation you had we *will* change the
# behaviour, just open an issue at github
FileUtils.mv @dl, File.basename(@url)
end end
end end
private private

View File

@ -25,16 +25,6 @@ require 'pathname'
# we enhance pathname to make our code more readable # we enhance pathname to make our code more readable
class Pathname class Pathname
def mv dst
FileUtils.mv to_s, dst
end
def rename newname
dst=dirname+newname
dst.unlink if dst.exist? and file?
mv dst
end
def install src def install src
if src.is_a? Array if src.is_a? Array
src.collect {|src| install src } src.collect {|src| install src }
@ -50,13 +40,14 @@ class Pathname
# this function when installing from the temporary build directory # this function when installing from the temporary build directory
FileUtils.mv src, to_s FileUtils.mv src, to_s
end end
return self+src src=Pathname.new src
return self+src.basename
end end
end end
# we assume this pathname object is a file obviously # we assume this pathname object is a file obviously
def write content def write content
raise "Will not overwrite #{f}" if exist? and not ARGV.force? raise "Will not overwrite #{to_s}" if exist? and not ARGV.force?
dirname.mkpath dirname.mkpath
File.open(self, 'w') {|f| f.write content } File.open(self, 'w') {|f| f.write content }
end end
@ -67,6 +58,7 @@ class Pathname
else else
FileUtils.cp_r to_s, dst FileUtils.cp_r to_s, dst
end end
return dst
end end
# extended to support the double extensions .tar.gz and .tar.bz2 # extended to support the double extensions .tar.gz and .tar.bz2
@ -86,8 +78,10 @@ class Pathname
# instead rely on good ol' libc and the filesystem # instead rely on good ol' libc and the filesystem
def rmdir_if_possible def rmdir_if_possible
rmdir rmdir
true
rescue SystemCallError => e rescue SystemCallError => e
raise unless e.errno == Errno::ENOTEMPTY::Errno or e.errno == Errno::EACCES::Errno raise unless e.errno == Errno::ENOTEMPTY::Errno or e.errno == Errno::EACCES::Errno
false
end end
def chmod_R perms def chmod_R perms
@ -96,7 +90,10 @@ class Pathname
end end
def abv def abv
`find #{to_s} -type f | wc -l`.strip+' files, '+`du -hd0 #{to_s} | cut -d"\t" -f1`.strip out=''
n=`find #{to_s} -type f | wc -l`.to_i
out<<"#{n} files, " if n > 1
out<<`du -hd0 #{to_s} | cut -d"\t" -f1`.strip
end end
def version def version

View File

@ -362,4 +362,47 @@ class BeerTasting <Test::Unit::TestCase
assert_equal 10.5, f-0.1 assert_equal 10.5, f-0.1
assert_equal 10.7, f+0.1 assert_equal 10.7, f+0.1
end end
def test_pathname_plus_yeast
nostdout do
assert_nothing_raised do
assert !Pathname.getwd.rmdir_if_possible
assert !Pathname.getwd.abv.empty?
abcd=orig_abcd=HOMEBREW_CACHE+'abcd'
FileUtils.cp ABS__FILE__, abcd
abcd=HOMEBREW_PREFIX.install abcd
assert (HOMEBREW_PREFIX+orig_abcd.basename).exist?
assert abcd.exist?
assert_equal HOMEBREW_PREFIX+'abcd', abcd
assert_raises(RuntimeError) {abcd.write 'CONTENT'}
abcd.unlink
abcd.write 'HELLOWORLD'
assert_equal 'HELLOWORLD', File.read(abcd)
assert !orig_abcd.exist?
rv=abcd.cp orig_abcd
assert orig_abcd.exist?
assert_equal rv, orig_abcd
orig_abcd.unlink
assert !orig_abcd.exist?
abcd.cp HOMEBREW_CACHE
assert orig_abcd.exist?
foo1=HOMEBREW_CACHE+'foo-0.1.tar.gz'
FileUtils.cp ABS__FILE__, foo1
assert foo1.file?
assert_equal '.tar.gz', foo1.extname
assert_equal 'foo-0.1', foo1.stem
assert_equal '0.1', foo1.version
HOMEBREW_CACHE.chmod_R 0777
end
end
assert_raises(RuntimeError) {Pathname.getwd.install 'non_existant_file'}
end
end end