14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
20
from bzrlib import tests
19
21
from bzrlib.symbol_versioning import deprecated_in
22
24
apport = tests.ModuleAvailableFeature('apport')
23
ApportFeature = tests._CompatabilityThunkFeature('bzrlib.tests.features',
24
'ApportFeature', 'bzrlib.tests.features.apport', deprecated_in((2,1,0)))
25
25
paramiko = tests.ModuleAvailableFeature('paramiko')
26
26
pycurl = tests.ModuleAvailableFeature('pycurl')
27
27
subunit = tests.ModuleAvailableFeature('subunit')
30
class _PosixPermissionsFeature(tests.Feature):
34
# create temporary file and check if specified perms are maintained.
37
write_perms = stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
38
f = tempfile.mkstemp(prefix='bzr_perms_chk_')
41
os.chmod(name, write_perms)
43
read_perms = os.stat(name).st_mode & 0777
45
return (write_perms == read_perms)
47
return (os.name == 'posix') and has_perms()
49
def feature_name(self):
50
return 'POSIX permissions support'
53
posix_permissions_feature = _PosixPermissionsFeature()
56
class _ChownFeature(tests.Feature):
57
"""os.chown is supported"""
60
return os.name == 'posix' and hasattr(os, 'chown')
62
chown_feature = _ChownFeature()