38
from bzrlib.tests import (
38
from breezy.tests import (
41
41
test__walkdirs_win32,
43
from bzrlib.tests.scenarios import load_tests_apply_scenarios
43
from breezy.tests.scenarios import load_tests_apply_scenarios
46
46
class _UTF8DirReaderFeature(features.Feature):
50
from bzrlib import _readdir_pyx
50
from breezy import _readdir_pyx
51
51
self.reader = _readdir_pyx.UTF8DirReader
53
53
except ImportError:
56
56
def feature_name(self):
57
return 'bzrlib._readdir_pyx'
57
return 'breezy._readdir_pyx'
59
UTF8DirReaderFeature = features.ModuleAvailableFeature('bzrlib._readdir_pyx')
59
UTF8DirReaderFeature = features.ModuleAvailableFeature('breezy._readdir_pyx')
61
61
term_ios_feature = features.ModuleAvailableFeature('termios')
82
82
# Some DirReaders are platform specific and even there they may not be
84
84
if UTF8DirReaderFeature.available():
85
from bzrlib import _readdir_pyx
85
from breezy import _readdir_pyx
86
86
scenarios.append(('utf8',
87
87
dict(_dir_reader_class=_readdir_pyx.UTF8DirReader,
88
88
_native_to_unicode=_utf8_to_unicode)))
90
90
if test__walkdirs_win32.win32_readdir_feature.available():
92
from bzrlib import _walkdirs_win32
92
from breezy import _walkdirs_win32
95
95
dict(_dir_reader_class=_walkdirs_win32.Win32ReadDir,
1117
1117
osutils.chunks_to_lines(['foo\n', 'bar\n', 'baz\n']))
1119
1119
def test_osutils_binding(self):
1120
from bzrlib.tests import test__chunks_to_lines
1120
from breezy.tests import test__chunks_to_lines
1121
1121
if test__chunks_to_lines.compiled_chunkstolines_feature.available():
1122
from bzrlib._chunks_to_lines_pyx import chunks_to_lines
1122
from breezy._chunks_to_lines_pyx import chunks_to_lines
1124
from bzrlib._chunks_to_lines_py import chunks_to_lines
1124
from breezy._chunks_to_lines_py import chunks_to_lines
1125
1125
self.assertIs(chunks_to_lines, osutils.chunks_to_lines)
1340
1340
self.requireFeature(test__walkdirs_win32.win32_readdir_feature)
1341
1341
self._save_platform_info()
1342
1342
win32utils.winver = 'Windows NT'
1343
from bzrlib._walkdirs_win32 import Win32ReadDir
1343
from breezy._walkdirs_win32 import Win32ReadDir
1344
1344
self.assertDirReaderIs(Win32ReadDir)
1346
1346
def test_force_walkdirs_utf8_98(self):
1503
1503
def test__walkdirs_utf8_win32readdir(self):
1504
1504
self.requireFeature(test__walkdirs_win32.win32_readdir_feature)
1505
1505
self.requireFeature(features.UnicodeFilenameFeature)
1506
from bzrlib._walkdirs_win32 import Win32ReadDir
1506
from breezy._walkdirs_win32 import Win32ReadDir
1507
1507
self._save_platform_info()
1508
1508
osutils._selected_dir_reader = Win32ReadDir()
1509
1509
name0u = u'0file-\xb6'
1560
1560
"""make sure our Stat values are valid"""
1561
1561
self.requireFeature(test__walkdirs_win32.win32_readdir_feature)
1562
1562
self.requireFeature(features.UnicodeFilenameFeature)
1563
from bzrlib._walkdirs_win32 import Win32ReadDir
1563
from breezy._walkdirs_win32 import Win32ReadDir
1564
1564
name0u = u'0file-\xb6'
1565
1565
name0 = name0u.encode('utf8')
1566
1566
self.build_tree([name0u])
1584
1584
"""make sure our Stat values are valid"""
1585
1585
self.requireFeature(test__walkdirs_win32.win32_readdir_feature)
1586
1586
self.requireFeature(features.UnicodeFilenameFeature)
1587
from bzrlib._walkdirs_win32 import Win32ReadDir
1587
from breezy._walkdirs_win32 import Win32ReadDir
1588
1588
name0u = u'0dir-\u062c\u0648'
1589
1589
name0 = name0u.encode('utf8')
1590
1590
self.build_tree([name0u + '/'])
1731
1731
def setUp(self):
1732
1732
super(TestSetUnsetEnv, self).setUp()
1734
self.assertEqual(None, os.environ.get('BZR_TEST_ENV_VAR'),
1734
self.assertEqual(None, os.environ.get('BRZ_TEST_ENV_VAR'),
1735
1735
'Environment was not cleaned up properly.'
1736
' Variable BZR_TEST_ENV_VAR should not exist.')
1736
' Variable BRZ_TEST_ENV_VAR should not exist.')
1738
if 'BZR_TEST_ENV_VAR' in os.environ:
1739
del os.environ['BZR_TEST_ENV_VAR']
1738
if 'BRZ_TEST_ENV_VAR' in os.environ:
1739
del os.environ['BRZ_TEST_ENV_VAR']
1740
1740
self.addCleanup(cleanup)
1742
1742
def test_set(self):
1743
1743
"""Test that we can set an env variable"""
1744
old = osutils.set_or_unset_env('BZR_TEST_ENV_VAR', 'foo')
1744
old = osutils.set_or_unset_env('BRZ_TEST_ENV_VAR', 'foo')
1745
1745
self.assertEqual(None, old)
1746
self.assertEqual('foo', os.environ.get('BZR_TEST_ENV_VAR'))
1746
self.assertEqual('foo', os.environ.get('BRZ_TEST_ENV_VAR'))
1748
1748
def test_double_set(self):
1749
1749
"""Test that we get the old value out"""
1750
osutils.set_or_unset_env('BZR_TEST_ENV_VAR', 'foo')
1751
old = osutils.set_or_unset_env('BZR_TEST_ENV_VAR', 'bar')
1750
osutils.set_or_unset_env('BRZ_TEST_ENV_VAR', 'foo')
1751
old = osutils.set_or_unset_env('BRZ_TEST_ENV_VAR', 'bar')
1752
1752
self.assertEqual('foo', old)
1753
self.assertEqual('bar', os.environ.get('BZR_TEST_ENV_VAR'))
1753
self.assertEqual('bar', os.environ.get('BRZ_TEST_ENV_VAR'))
1755
1755
def test_unicode(self):
1756
1756
"""Environment can only contain plain strings
1763
1763
'Cannot find a unicode character that works in encoding %s'
1764
1764
% (osutils.get_user_encoding(),))
1766
old = osutils.set_or_unset_env('BZR_TEST_ENV_VAR', uni_val)
1767
self.assertEqual(env_val, os.environ.get('BZR_TEST_ENV_VAR'))
1766
old = osutils.set_or_unset_env('BRZ_TEST_ENV_VAR', uni_val)
1767
self.assertEqual(env_val, os.environ.get('BRZ_TEST_ENV_VAR'))
1769
1769
def test_unset(self):
1770
1770
"""Test that passing None will remove the env var"""
1771
osutils.set_or_unset_env('BZR_TEST_ENV_VAR', 'foo')
1772
old = osutils.set_or_unset_env('BZR_TEST_ENV_VAR', None)
1771
osutils.set_or_unset_env('BRZ_TEST_ENV_VAR', 'foo')
1772
old = osutils.set_or_unset_env('BRZ_TEST_ENV_VAR', None)
1773
1773
self.assertEqual('foo', old)
1774
self.assertEqual(None, os.environ.get('BZR_TEST_ENV_VAR'))
1775
self.assertFalse('BZR_TEST_ENV_VAR' in os.environ)
1774
self.assertEqual(None, os.environ.get('BRZ_TEST_ENV_VAR'))
1775
self.assertFalse('BRZ_TEST_ENV_VAR' in os.environ)
1778
1778
class TestSizeShaFile(tests.TestCaseInTempDir):
1814
1814
class TestResourceLoading(tests.TestCaseInTempDir):
1816
1816
def test_resource_string(self):
1817
# test resource in bzrlib
1818
text = osutils.resource_string('bzrlib', 'debug.py')
1817
# test resource in breezy
1818
text = osutils.resource_string('breezy', 'debug.py')
1819
1819
self.assertContainsRe(text, "debug_flags = set()")
1820
# test resource under bzrlib
1821
text = osutils.resource_string('bzrlib.ui', 'text.py')
1820
# test resource under breezy
1821
text = osutils.resource_string('breezy.ui', 'text.py')
1822
1822
self.assertContainsRe(text, "class TextUIFactory")
1823
1823
# test unsupported package
1824
1824
self.assertRaises(errors.BzrError, osutils.resource_string, 'zzzz',
1826
1826
# test unknown resource
1827
self.assertRaises(IOError, osutils.resource_string, 'bzrlib', 'yyy.xx')
1827
self.assertRaises(IOError, osutils.resource_string, 'breezy', 'yyy.xx')
1830
1830
class TestReCompile(tests.TestCase):
2021
2021
self.assertIsInstance(concurrency, int)
2023
2023
def test_local_concurrency_environment_variable(self):
2024
self.overrideEnv('BZR_CONCURRENCY', '2')
2024
self.overrideEnv('BRZ_CONCURRENCY', '2')
2025
2025
self.assertEqual(2, osutils.local_concurrency(use_cache=False))
2026
self.overrideEnv('BZR_CONCURRENCY', '3')
2026
self.overrideEnv('BRZ_CONCURRENCY', '3')
2027
2027
self.assertEqual(3, osutils.local_concurrency(use_cache=False))
2028
self.overrideEnv('BZR_CONCURRENCY', 'foo')
2028
self.overrideEnv('BRZ_CONCURRENCY', 'foo')
2029
2029
self.assertEqual(1, osutils.local_concurrency(use_cache=False))
2031
2031
def test_option_concurrency(self):
2032
self.overrideEnv('BZR_CONCURRENCY', '1')
2032
self.overrideEnv('BRZ_CONCURRENCY', '1')
2033
2033
self.run_bzr('rocks --concurrency 42')
2034
2034
# Command line overrides environment variable
2035
self.assertEqual('42', os.environ['BZR_CONCURRENCY'])
2035
self.assertEqual('42', os.environ['BRZ_CONCURRENCY'])
2036
2036
self.assertEqual(42, osutils.local_concurrency(use_cache=False))
2104
2104
def test_default_values(self):
2105
2105
self.assertEqual(80, osutils.default_terminal_width)
2107
def test_defaults_to_BZR_COLUMNS(self):
2108
# BZR_COLUMNS is set by the test framework
2109
self.assertNotEqual('12', os.environ['BZR_COLUMNS'])
2110
self.overrideEnv('BZR_COLUMNS', '12')
2107
def test_defaults_to_BRZ_COLUMNS(self):
2108
# BRZ_COLUMNS is set by the test framework
2109
self.assertNotEqual('12', os.environ['BRZ_COLUMNS'])
2110
self.overrideEnv('BRZ_COLUMNS', '12')
2111
2111
self.assertEqual(12, osutils.terminal_width())
2113
def test_BZR_COLUMNS_0_no_limit(self):
2114
self.overrideEnv('BZR_COLUMNS', '0')
2113
def test_BRZ_COLUMNS_0_no_limit(self):
2114
self.overrideEnv('BRZ_COLUMNS', '0')
2115
2115
self.assertEqual(None, osutils.terminal_width())
2117
2117
def test_falls_back_to_COLUMNS(self):
2118
self.overrideEnv('BZR_COLUMNS', None)
2118
self.overrideEnv('BRZ_COLUMNS', None)
2119
2119
self.assertNotEqual('42', os.environ['COLUMNS'])
2120
2120
self.set_fake_tty()
2121
2121
self.overrideEnv('COLUMNS', '42')
2122
2122
self.assertEqual(42, osutils.terminal_width())
2124
2124
def test_tty_default_without_columns(self):
2125
self.overrideEnv('BZR_COLUMNS', None)
2125
self.overrideEnv('BRZ_COLUMNS', None)
2126
2126
self.overrideEnv('COLUMNS', None)
2128
2128
def terminal_size(w, h):
2136
2136
self.assertEqual(42, osutils.terminal_width())
2138
2138
def test_non_tty_default_without_columns(self):
2139
self.overrideEnv('BZR_COLUMNS', None)
2139
self.overrideEnv('BRZ_COLUMNS', None)
2140
2140
self.overrideEnv('COLUMNS', None)
2141
2141
self.replace_stdout(None)
2142
2142
self.assertEqual(None, osutils.terminal_width())
2154
2154
self.overrideAttr(termios, 'TIOCGWINSZ')
2155
2155
del termios.TIOCGWINSZ
2156
self.overrideEnv('BZR_COLUMNS', None)
2156
self.overrideEnv('BRZ_COLUMNS', None)
2157
2157
self.overrideEnv('COLUMNS', None)
2158
2158
# Whatever the result is, if we don't raise an exception, it's ok.
2159
2159
osutils.terminal_width()
2198
2198
class TestPathFromEnviron(tests.TestCase):
2200
2200
def test_is_unicode(self):
2201
self.overrideEnv('BZR_TEST_PATH', './anywhere at all/')
2202
path = osutils.path_from_environ('BZR_TEST_PATH')
2201
self.overrideEnv('BRZ_TEST_PATH', './anywhere at all/')
2202
path = osutils.path_from_environ('BRZ_TEST_PATH')
2203
2203
self.assertIsInstance(path, unicode)
2204
2204
self.assertEqual(u'./anywhere at all/', path)
2206
2206
def test_posix_path_env_ascii(self):
2207
self.overrideEnv('BZR_TEST_PATH', '/tmp')
2208
home = osutils._posix_path_from_environ('BZR_TEST_PATH')
2207
self.overrideEnv('BRZ_TEST_PATH', '/tmp')
2208
home = osutils._posix_path_from_environ('BRZ_TEST_PATH')
2209
2209
self.assertIsInstance(home, unicode)
2210
2210
self.assertEqual(u'/tmp', home)
2212
2212
def test_posix_path_env_unicode(self):
2213
2213
self.requireFeature(features.ByteStringNamedFilesystem)
2214
self.overrideEnv('BZR_TEST_PATH', '/home/\xa7test')
2214
self.overrideEnv('BRZ_TEST_PATH', '/home/\xa7test')
2215
2215
self.overrideAttr(osutils, "_fs_enc", "iso8859-1")
2216
2216
self.assertEqual(u'/home/\xa7test',
2217
osutils._posix_path_from_environ('BZR_TEST_PATH'))
2217
osutils._posix_path_from_environ('BRZ_TEST_PATH'))
2218
2218
osutils._fs_enc = "iso8859-5"
2219
2219
self.assertEqual(u'/home/\u0407test',
2220
osutils._posix_path_from_environ('BZR_TEST_PATH'))
2220
osutils._posix_path_from_environ('BRZ_TEST_PATH'))
2221
2221
osutils._fs_enc = "utf-8"
2222
2222
self.assertRaises(errors.BadFilenameEncoding,
2223
osutils._posix_path_from_environ, 'BZR_TEST_PATH')
2223
osutils._posix_path_from_environ, 'BRZ_TEST_PATH')
2226
2226
class TestGetHomeDir(tests.TestCase):