1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
#!/usr/bin/env ruby
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
require 'puppet'
require 'puppettest'
# $Id: symlink.rb 1793 2006-10-16 22:01:40Z luke $
class TestSymlink < Test::Unit::TestCase
include PuppetTest::FileTesting
def mktmpfile
# because luke's home directory is on nfs, it can't be used for testing
# as root
tmpfile = tempfile()
File.open(tmpfile, "w") { |f| f.puts rand(100) }
@@tmpfiles.push tmpfile
return tmpfile
end
def mktmpdir
dir = File.join(tmpdir(), "puppetlinkdir")
unless FileTest.exists?(dir)
Dir.mkdir(dir)
end
@@tmpfiles.push dir
return dir
end
def tmplink
link = File.join(tmpdir(), "puppetlinktest")
@@tmpfiles.push link
return link
end
def newlink(hash = {})
hash[:name] = tmplink()
unless hash.include?(:ensure)
hash[:ensure] = mktmpfile()
end
link = Puppet.type(:symlink).create(hash)
return link
end
def test_target
link = nil
file = mktmpfile()
assert_nothing_raised() {
link = newlink()
}
assert_nothing_raised() {
link.retrieve
}
# we might already be in sync
assert(!link.insync?())
assert_apply(link)
assert_nothing_raised() {
link.retrieve
}
assert(link.insync?())
end
def test_recursion
source = mktmpdir()
FileUtils.cd(source) {
mkranddirsandfiles()
}
link = nil
assert_nothing_raised {
link = newlink(:ensure => source, :recurse => true)
}
comp = newcomp(link)
cycle(comp)
path = link.name
assert(FileTest.directory?(path), "Did not make %s" % path)
list = file_list(path)
FileUtils.cd(path) {
list.each { |file|
unless FileTest.directory?(file)
assert(FileTest.symlink?(file), "file %s is not a symlink" %
file)
target = File.readlink(file)
assert_equal(target,File.join(source,file.sub(/^\.\//,'')))
end
}
}
end
def disabled_test_createdrecursion
source = tempfile()
file = File.join(source, "file")
dest = tempfile()
link = File.join(dest, "file")
objects = []
objects << Puppet.type(:file).create(
:path => source,
:ensure => "directory"
)
objects << Puppet.type(:file).create(
:path => file,
:ensure => "file"
)
objects << Puppet.type(:symlink).create(
:path => dest,
:ensure => source,
:recurse => true
)
assert_apply(*objects)
assert(FileTest.symlink?(link), "Link was not created")
end
end
|