def self.rename(source, dest)
if directory?(source) && file?(dest)
fail Errno::ENOTDIR, "#{source} or #{dest}"
elsif file?(source) && directory?(dest)
fail Errno::EISDIR, "#{source} or #{dest}"
elsif !exist?(dirname(dest))
fail Errno::ENOENT, "#{source} or #{dest}"
end
if (target = FileSystem.find(source))
if target.is_a?(FakeFS::FakeSymlink)
File.symlink(target.target, dest)
else
FileSystem.add(dest, target.entry.clone)
end
FileSystem.delete(source)
else
fail Errno::ENOENT, "#{source} or #{dest}"
end
0
end