/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_osutils.py

  • Committer: Vincent Ladeuil
  • Date: 2010-10-07 14:34:39 UTC
  • mto: This revision was merged to the branch mainline in revision 5469.
  • Revision ID: v.ladeuil+lp@free.fr-20101007143439-1mncq23hk2h9xxl3
Bump API version to 2.3.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
import os
22
22
import re
23
23
import socket
24
 
import stat
25
24
import sys
26
25
import time
27
26
 
28
27
from bzrlib import (
29
28
    errors,
 
29
    lazy_regex,
30
30
    osutils,
 
31
    symbol_versioning,
31
32
    tests,
32
33
    trace,
33
34
    win32utils,
184
185
        shape = sorted(os.listdir('.'))
185
186
        self.assertEquals(['A', 'B'], shape)
186
187
 
187
 
    def test_rename_error(self):
188
 
        # We wrap os.rename to make it give an error including the filenames
189
 
        # https://bugs.launchpad.net/bzr/+bug/491763
190
 
        err = self.assertRaises(OSError, osutils.rename,
191
 
            'nonexistent', 'target')
192
 
        self.assertContainsString(str(err), 'nonexistent')
193
 
 
194
188
 
195
189
class TestRandChars(tests.TestCase):
196
190
 
868
862
        self.assertEqual('//HOST/path', osutils._win98_abspath('//HOST/path'))
869
863
        # relative path
870
864
        cwd = osutils.getcwd().rstrip('/')
871
 
        drive = osutils._nt_splitdrive(cwd)[0]
 
865
        drive = osutils.ntpath.splitdrive(cwd)[0]
872
866
        self.assertEqual(cwd+'/path', osutils._win98_abspath('path'))
873
867
        self.assertEqual(drive+'/path', osutils._win98_abspath('/path'))
874
868
        # unicode path
1071
1065
        self.assertExpectedBlocks(expected_dirblocks[1:], result)
1072
1066
 
1073
1067
    def test_walkdirs_os_error(self):
1074
 
        # <https://bugs.edge.launchpad.net/bzr/+bug/338653>
 
1068
        # <https://bugs.launchpad.net/bzr/+bug/338653>
1075
1069
        # Pyrex readdir didn't raise useful messages if it had an error
1076
1070
        # reading the directory
1077
1071
        if sys.platform == 'win32':
1078
1072
            raise tests.TestNotApplicable(
1079
1073
                "readdir IOError not tested on win32")
 
1074
        self.requireFeature(features.not_running_as_root)
1080
1075
        os.mkdir("test-unreadable")
1081
1076
        os.chmod("test-unreadable", 0000)
1082
1077
        # must chmod it back so that it can be removed
1090
1085
        # Ensure the message contains the file name
1091
1086
        self.assertContainsRe(str(e), "\./test-unreadable")
1092
1087
 
 
1088
 
 
1089
    def test_walkdirs_encoding_error(self):
 
1090
        # <https://bugs.launchpad.net/bzr/+bug/488519>
 
1091
        # walkdirs didn't raise a useful message when the filenames
 
1092
        # are not using the filesystem's encoding
 
1093
 
 
1094
        # require a bytestring based filesystem
 
1095
        self.requireFeature(tests.ByteStringNamedFilesystem)
 
1096
 
 
1097
        tree = [
 
1098
            '.bzr',
 
1099
            '0file',
 
1100
            '1dir/',
 
1101
            '1dir/0file',
 
1102
            '1dir/1dir/',
 
1103
            '1file'
 
1104
            ]
 
1105
 
 
1106
        self.build_tree(tree)
 
1107
 
 
1108
        # rename the 1file to a latin-1 filename
 
1109
        os.rename("./1file", "\xe8file")
 
1110
 
 
1111
        self._save_platform_info()
 
1112
        win32utils.winver = None # Avoid the win32 detection code
 
1113
        osutils._fs_enc = 'UTF-8'
 
1114
 
 
1115
        # this should raise on error
 
1116
        def attempt():
 
1117
            for dirdetail, dirblock in osutils.walkdirs('.'):
 
1118
                pass
 
1119
 
 
1120
        self.assertRaises(errors.BadFilenameEncoding, attempt)
 
1121
 
1093
1122
    def test__walkdirs_utf8(self):
1094
1123
        tree = [
1095
1124
            '.bzr',
1678
1707
 
1679
1708
class TestReCompile(tests.TestCase):
1680
1709
 
 
1710
    def _deprecated_re_compile_checked(self, *args, **kwargs):
 
1711
        return self.applyDeprecated(symbol_versioning.deprecated_in((2, 2, 0)),
 
1712
            osutils.re_compile_checked, *args, **kwargs)
 
1713
 
1681
1714
    def test_re_compile_checked(self):
1682
 
        r = osutils.re_compile_checked(r'A*', re.IGNORECASE)
 
1715
        r = self._deprecated_re_compile_checked(r'A*', re.IGNORECASE)
1683
1716
        self.assertTrue(r.match('aaaa'))
1684
1717
        self.assertTrue(r.match('aAaA'))
1685
1718
 
1686
1719
    def test_re_compile_checked_error(self):
1687
1720
        # like https://bugs.launchpad.net/bzr/+bug/251352
 
1721
 
 
1722
        # Due to possible test isolation error, re.compile is not lazy at
 
1723
        # this point. We re-install lazy compile.
 
1724
        lazy_regex.install_lazy_compile()
1688
1725
        err = self.assertRaises(
1689
1726
            errors.BzrCommandError,
1690
 
            osutils.re_compile_checked, '*', re.IGNORECASE, 'test case')
 
1727
            self._deprecated_re_compile_checked, '*', re.IGNORECASE, 'test case')
1691
1728
        self.assertEqual(
1692
 
            "Invalid regular expression in test case: '*': "
1693
 
            "nothing to repeat",
 
1729
            'Invalid regular expression in test case: '
 
1730
            '"*" nothing to repeat',
1694
1731
            str(err))
1695
1732
 
1696
1733
 
1917
1954
 
1918
1955
class TestTerminalWidth(tests.TestCase):
1919
1956
 
 
1957
    def setUp(self):
 
1958
        tests.TestCase.setUp(self)
 
1959
        self._orig_terminal_size_state = osutils._terminal_size_state
 
1960
        self._orig_first_terminal_size = osutils._first_terminal_size
 
1961
        self.addCleanup(self.restore_osutils_globals)
 
1962
        osutils._terminal_size_state = 'no_data'
 
1963
        osutils._first_terminal_size = None
 
1964
 
 
1965
    def restore_osutils_globals(self):
 
1966
        osutils._terminal_size_state = self._orig_terminal_size_state
 
1967
        osutils._first_terminal_size = self._orig_first_terminal_size
 
1968
 
1920
1969
    def replace_stdout(self, new):
1921
1970
        self.overrideAttr(sys, 'stdout', new)
1922
1971
 
2018
2067
        self.assertEquals(self.path, 'test_file')
2019
2068
        self.assertEquals(self.uid, s.st_uid)
2020
2069
        self.assertEquals(self.gid, s.st_gid)
 
2070
 
 
2071
class TestGetuserUnicode(tests.TestCase):
 
2072
 
 
2073
    def test_ascii_user(self):
 
2074
        osutils.set_or_unset_env('LOGNAME', 'jrandom')
 
2075
        self.assertEqual(u'jrandom', osutils.getuser_unicode())
 
2076
 
 
2077
    def test_unicode_user(self):
 
2078
        ue = osutils.get_user_encoding()
 
2079
        uni_val, env_val = tests.probe_unicode_in_user_encoding()
 
2080
        if uni_val is None:
 
2081
            raise tests.TestSkipped(
 
2082
                'Cannot find a unicode character that works in encoding %s'
 
2083
                % (osutils.get_user_encoding(),))
 
2084
        uni_username = u'jrandom' + uni_val
 
2085
        encoded_username = uni_username.encode(ue)
 
2086
        osutils.set_or_unset_env('LOGNAME', encoded_username)
 
2087
        self.assertEqual(uni_username, osutils.getuser_unicode())