~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_win32utils.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-06-05 04:05:05 UTC
  • mfrom: (3473.1.1 ianc-integration)
  • Revision ID: pqm@pqm.ubuntu.com-20080605040505-i9kqxg2fps2qjdi0
Add the 'alias' command (Tim Penhey)

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
import sys
19
19
 
20
20
from bzrlib import osutils
21
 
from bzrlib.tests import TestCase, TestCaseInTempDir, TestSkipped, Feature
 
21
from bzrlib.tests import TestCase, TestCaseInTempDir, Feature
22
22
from bzrlib.win32utils import glob_expand, get_app_path
23
 
from bzrlib import win32utils
24
23
 
25
24
 
26
25
# Features
37
36
NeedsGlobExpansionFeature = _NeedsGlobExpansionFeature()
38
37
 
39
38
 
40
 
class _RequiredModuleFeature(Feature):
41
 
 
42
 
    def __init__(self, mod_name):
43
 
        self.mod_name = mod_name
44
 
        super(_RequiredModuleFeature, self).__init__()
 
39
class _Win32RegistryFeature(Feature):
45
40
 
46
41
    def _probe(self):
47
42
        try:
48
 
            __import__(self.mod_name)
 
43
            import _winreg
49
44
            return True
50
45
        except ImportError:
51
46
            return False
52
47
 
53
48
    def feature_name(self):
54
 
        return self.mod_name
 
49
        return '_winreg'
55
50
 
56
 
Win32RegistryFeature = _RequiredModuleFeature('_winreg')
57
 
CtypesFeature = _RequiredModuleFeature('ctypes')
58
 
Win32comShellFeature = _RequiredModuleFeature('win32com.shell')
 
51
Win32RegistryFeature = _Win32RegistryFeature()
59
52
 
60
53
 
61
54
# Tests
167
160
    def test_not_existing(self):
168
161
        p = get_app_path('not-existing')
169
162
        self.assertEquals('not-existing', p)
170
 
 
171
 
 
172
 
class TestLocationsCtypes(TestCase):
173
 
 
174
 
    _test_needs_features = [CtypesFeature]
175
 
 
176
 
    def assertPathsEqual(self, p1, p2):
177
 
        # TODO: The env var values in particular might return the "short"
178
 
        # version (ie, "C:\DOCUME~1\...").  Its even possible the returned
179
 
        # values will differ only by case - handle these situations as we
180
 
        # come across them.
181
 
        self.assertEquals(p1, p2)
182
 
 
183
 
    def test_appdata_not_using_environment(self):
184
 
        # Test that we aren't falling back to the environment
185
 
        first = win32utils.get_appdata_location()
186
 
        self._captureVar("APPDATA", None)
187
 
        self.assertPathsEqual(first, win32utils.get_appdata_location())
188
 
 
189
 
    def test_appdata_matches_environment(self):
190
 
        # Typically the APPDATA environment variable will match
191
 
        # get_appdata_location
192
 
        # XXX - See bug 262874, which asserts the correct encoding is 'mbcs',
193
 
        encoding = osutils.get_user_encoding()
194
 
        env_val = os.environ.get("APPDATA", None)
195
 
        if not env_val:
196
 
            raise TestSkipped("No APPDATA environment variable exists")
197
 
        self.assertPathsEqual(win32utils.get_appdata_location(),
198
 
                              env_val.decode(encoding))
199
 
 
200
 
    def test_local_appdata_not_using_environment(self):
201
 
        # Test that we aren't falling back to the environment
202
 
        first = win32utils.get_local_appdata_location()
203
 
        self._captureVar("LOCALAPPDATA", None)
204
 
        self.assertPathsEqual(first, win32utils.get_local_appdata_location())
205
 
 
206
 
    def test_local_appdata_matches_environment(self):
207
 
        # LOCALAPPDATA typically only exists on Vista, so we only attempt to
208
 
        # compare when it exists.
209
 
        lad = win32utils.get_local_appdata_location()
210
 
        env = os.environ.get("LOCALAPPDATA")
211
 
        if env:
212
 
            # XXX - See bug 262874, which asserts the correct encoding is 'mbcs'
213
 
            encoding = osutils.get_user_encoding()
214
 
            self.assertPathsEqual(lad, env.decode(encoding))
215
 
 
216
 
 
217
 
class TestLocationsPywin32(TestLocationsCtypes):
218
 
 
219
 
    _test_needs_features = [Win32comShellFeature]
220
 
 
221
 
    def setUp(self):
222
 
        super(TestLocationsPywin32, self).setUp()
223
 
        # We perform the exact same tests after disabling the use of ctypes.
224
 
        # This causes the implementation to fall back to pywin32.
225
 
        self.old_ctypes = win32utils.has_ctypes
226
 
        win32utils.has_ctypes = False
227
 
        self.addCleanup(self.restoreCtypes)
228
 
 
229
 
    def restoreCtypes(self):
230
 
        win32utils.has_ctypes = self.old_ctypes