Rev 6459: (gz) Add osutils._get_home_dir function (Martin Packman) in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
Patch Queue Manager
pqm at pqm.ubuntu.com
Wed Feb 1 16:00:41 UTC 2012
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6459 [merge]
revision-id: pqm at pqm.ubuntu.com-20120201160040-l2dbtwmyo490cc7b
parent: pqm at pqm.ubuntu.com-20120201085545-9vsszbsn7pbdvqb5
parent: martin.packman at canonical.com-20120201123226-eudbx4v8yl0w8q93
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2012-02-01 16:00:40 +0000
message:
(gz) Add osutils._get_home_dir function (Martin Packman)
modified:
bzrlib/osutils.py osutils.py-20050309040759-eeaff12fbf77ac86
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
=== modified file 'bzrlib/osutils.py'
--- a/bzrlib/osutils.py 2012-01-05 10:44:12 +0000
+++ b/bzrlib/osutils.py 2012-02-01 12:31:53 +0000
@@ -342,6 +342,15 @@
raise errors.BadFilenameEncoding(val, _fs_enc)
+def _posix_get_home_dir():
+ """Get the home directory of the current user as a unicode path"""
+ path = posixpath.expanduser("~")
+ try:
+ return path.decode(_fs_enc)
+ except UnicodeDecodeError:
+ raise errors.BadFilenameEncoding(path, _fs_enc)
+
+
def _posix_getuser_unicode():
"""Get username from environment or password database as unicode"""
name = getpass.getuser()
@@ -448,6 +457,7 @@
pathjoin = os.path.join
normpath = _posix_normpath
path_from_environ = _posix_path_from_environ
+_get_home_dir = _posix_get_home_dir
getuser_unicode = _posix_getuser_unicode
getcwd = os.getcwdu
rename = os.rename
@@ -511,6 +521,7 @@
if f is not None:
get_unicode_argv = f
path_from_environ = win32utils.get_environ_unicode
+ _get_home_dir = win32utils.get_home_location
getuser_unicode = win32utils.get_user_name
elif sys.platform == 'darwin':
=== modified file 'bzrlib/tests/test_osutils.py'
--- a/bzrlib/tests/test_osutils.py 2012-01-04 11:35:56 +0000
+++ b/bzrlib/tests/test_osutils.py 2012-02-01 12:32:26 +0000
@@ -2095,6 +2095,63 @@
self.assertEquals(self.gid, s.st_gid)
+class TestPathFromEnviron(tests.TestCase):
+
+ def test_is_unicode(self):
+ self.overrideEnv('BZR_TEST_PATH', './anywhere at all/')
+ path = osutils.path_from_environ('BZR_TEST_PATH')
+ self.assertIsInstance(path, unicode)
+ self.assertEqual(u'./anywhere at all/', path)
+
+ def test_posix_path_env_ascii(self):
+ self.overrideEnv('BZR_TEST_PATH', '/tmp')
+ home = osutils._posix_path_from_environ('BZR_TEST_PATH')
+ self.assertIsInstance(home, unicode)
+ self.assertEqual(u'/tmp', home)
+
+ def test_posix_path_env_unicode(self):
+ self.requireFeature(features.ByteStringNamedFilesystem)
+ self.overrideEnv('BZR_TEST_PATH', '/home/\xa7test')
+ self.overrideAttr(osutils, "_fs_enc", "iso8859-1")
+ self.assertEqual(u'/home/\xa7test',
+ osutils._posix_path_from_environ('BZR_TEST_PATH'))
+ osutils._fs_enc = "iso8859-5"
+ self.assertEqual(u'/home/\u0407test',
+ osutils._posix_path_from_environ('BZR_TEST_PATH'))
+ osutils._fs_enc = "utf-8"
+ self.assertRaises(errors.BadFilenameEncoding,
+ osutils._posix_path_from_environ, 'BZR_TEST_PATH')
+
+
+class TestGetHomeDir(tests.TestCase):
+
+ def test_is_unicode(self):
+ home = osutils._get_home_dir()
+ self.assertIsInstance(home, unicode)
+
+ def test_posix_homeless(self):
+ self.overrideEnv('HOME', None)
+ home = osutils._get_home_dir()
+ self.assertIsInstance(home, unicode)
+
+ def test_posix_home_ascii(self):
+ self.overrideEnv('HOME', '/home/test')
+ home = osutils._posix_get_home_dir()
+ self.assertIsInstance(home, unicode)
+ self.assertEqual(u'/home/test', home)
+
+ def test_posix_home_unicode(self):
+ self.requireFeature(features.ByteStringNamedFilesystem)
+ self.overrideEnv('HOME', '/home/\xa7test')
+ self.overrideAttr(osutils, "_fs_enc", "iso8859-1")
+ self.assertEqual(u'/home/\xa7test', osutils._posix_get_home_dir())
+ osutils._fs_enc = "iso8859-5"
+ self.assertEqual(u'/home/\u0407test', osutils._posix_get_home_dir())
+ osutils._fs_enc = "utf-8"
+ self.assertRaises(errors.BadFilenameEncoding,
+ osutils._posix_get_home_dir)
+
+
class TestGetuserUnicode(tests.TestCase):
def test_is_unicode(self):
More information about the bazaar-commits
mailing list