aptly/system/fs_endpoint_lib.py

52 lines
1.9 KiB
Python

import os
from lib import BaseTest
class FileSystemEndpointTest(BaseTest):
"""
BaseTest + support for filesystem endpoints
"""
def prepare(self):
self.configOverride = {"FileSystemPublishEndpoints": {
"symlink": {
"rootDir": os.path.join(os.environ["HOME"], ".aptly", "public_symlink"),
"linkMethod": "symlink"
},
"hardlink": {
"rootDir": os.path.join(os.environ["HOME"], ".aptly", "public_hardlink"),
"linkMethod": "hardlink"
},
"copy": {
"rootDir": os.path.join(os.environ["HOME"], ".aptly", "public_copy"),
"linkMethod": "copy",
"verifyMethod": "md5"
},
"copysize": {
"rootDir": os.path.join(os.environ["HOME"], ".aptly", "public_copysize"),
"linkMethod": "copy",
"verifyMethod": "size"
}
}}
super(FileSystemEndpointTest, self).prepare()
def check_is_regular(self, path):
if not os.path.isfile(os.path.join(os.environ["HOME"], ".aptly", path)):
raise Exception("path %s is not a regular file" % (path, ))
def check_is_symlink(self, path):
if not os.path.islink(os.path.join(os.environ["HOME"], ".aptly", path)):
raise Exception("path %s is not a symlink" % (path, ))
def is_hardlink(self, path):
return os.stat(os.path.join(os.environ["HOME"], ".aptly", path)).st_nlink >= 2
def check_is_hardlink(self, path):
if not self.is_hardlink(path):
raise Exception("path %s is not a hardlink" % (path, ))
def check_is_copy(self, path):
fullpath = os.path.join(os.environ["HOME"], ".aptly", path)
if not (os.path.isfile(fullpath) and not self.is_hardlink(path)):
raise Exception("path %s is not a copy" % (path, ))