1
 
# Copyright (C) 2009, 2010 Canonical Ltd
 
3
 
# This program is free software; you can redistribute it and/or modify
 
4
 
# it under the terms of the GNU General Public License as published by
 
5
 
# the Free Software Foundation; either version 2 of the License, or
 
6
 
# (at your option) any later version.
 
8
 
# This program is distributed in the hope that it will be useful,
 
9
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
 
# GNU General Public License for more details.
 
13
 
# You should have received a copy of the GNU General Public License
 
14
 
# along with this program; if not, write to the Free Software
 
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
20
 
from bzrlib import tests
 
21
 
from bzrlib.symbol_versioning import deprecated_in
 
24
 
apport = tests.ModuleAvailableFeature('apport')
 
25
 
paramiko = tests.ModuleAvailableFeature('paramiko')
 
26
 
pycurl = tests.ModuleAvailableFeature('pycurl')
 
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()