def test_expandvars_nonascii(self):
        if self.pathmodule.__name__ == 'macpath':
            self.skipTest('macpath.expandvars is a stub')
        expandvars = self.pathmodule.expandvars
        def check(value, expected):
            self.assertEqual(expandvars(value), expected)
        with support.EnvironmentVarGuard() as env:
            env.clear()
            nonascii = support.FS_NONASCII
            env['spam'] = nonascii
            env[nonascii] = 'ham' + nonascii
            check(nonascii, nonascii)
            check('$spam bar', '%s bar' % nonascii)
            check('${spam}bar', '%sbar' % nonascii)
            check('${%s}bar' % nonascii, 'ham%sbar' % nonascii)
            check('$bar%s bar' % nonascii, '$bar%s bar' % nonascii)
            check('$spam}bar', '%s}bar' % nonascii)

            check(os.fsencode(nonascii), os.fsencode(nonascii))
            check(b'$spam bar', os.fsencode('%s bar' % nonascii))
            check(b'${spam}bar', os.fsencode('%sbar' % nonascii))
            check(os.fsencode('${%s}bar' % nonascii),
                  os.fsencode('ham%sbar' % nonascii))
            check(os.fsencode('$bar%s bar' % nonascii),
                  os.fsencode('$bar%s bar' % nonascii))
            check(b'$spam}bar', os.fsencode('%s}bar' % nonascii))
Exemple #2
0
    def test_expanduser(self):
        tester('ntpath.expanduser("test")', 'test')

        with support.EnvironmentVarGuard() as env:
            env.clear()
            tester('ntpath.expanduser("~test")', '~test')

            env['HOMEPATH'] = 'eric\\idle'
            env['HOMEDRIVE'] = 'C:\\'
            tester('ntpath.expanduser("~test")', 'C:\\eric\\test')
            tester('ntpath.expanduser("~")', 'C:\\eric\\idle')

            del env['HOMEDRIVE']
            tester('ntpath.expanduser("~test")', 'eric\\test')
            tester('ntpath.expanduser("~")', 'eric\\idle')

            env.clear()
            env['USERPROFILE'] = 'C:\\eric\\idle'
            tester('ntpath.expanduser("~test")', 'C:\\eric\\test')
            tester('ntpath.expanduser("~")', 'C:\\eric\\idle')

            env.clear()
            env['HOME'] = 'C:\\idle\\eric'
            tester('ntpath.expanduser("~test")', 'C:\\idle\\test')
            tester('ntpath.expanduser("~")', 'C:\\idle\\eric')

            tester('ntpath.expanduser("~test\\foo\\bar")',
                   'C:\\idle\\test\\foo\\bar')
            tester('ntpath.expanduser("~test/foo/bar")',
                   'C:\\idle\\test/foo/bar')
            tester('ntpath.expanduser("~\\foo\\bar")',
                   'C:\\idle\\eric\\foo\\bar')
            tester('ntpath.expanduser("~/foo/bar")', 'C:\\idle\\eric/foo/bar')
Exemple #3
0
 def test_expandvars(self):
     with support.EnvironmentVarGuard() as env:
         env.clear()
         env["foo"] = "bar"
         env["{foo"] = "baz1"
         env["{foo}"] = "baz2"
         tester('ntpath.expandvars("foo")', "foo")
         tester('ntpath.expandvars("$foo bar")', "bar bar")
         tester('ntpath.expandvars("${foo}bar")', "barbar")
         tester('ntpath.expandvars("$[foo]bar")', "$[foo]bar")
         tester('ntpath.expandvars("$bar bar")', "$bar bar")
         tester('ntpath.expandvars("$?bar")', "$?bar")
         tester('ntpath.expandvars("$foo}bar")', "bar}bar")
         tester('ntpath.expandvars("${foo")', "${foo")
         tester('ntpath.expandvars("${{foo}}")', "baz1}")
         tester('ntpath.expandvars("$foo$foo")', "barbar")
         tester('ntpath.expandvars("$bar$bar")', "$bar$bar")
         tester('ntpath.expandvars("%foo% bar")', "bar bar")
         tester('ntpath.expandvars("%foo%bar")', "barbar")
         tester('ntpath.expandvars("%foo%%foo%")', "barbar")
         tester('ntpath.expandvars("%%foo%%foo%foo%")', "%foo%foobar")
         tester('ntpath.expandvars("%?bar%")', "%?bar%")
         tester('ntpath.expandvars("%foo%%bar")', "bar%bar")
         tester('ntpath.expandvars("\'%foo%\'%bar")', "\'%foo%\'%bar")
         tester('ntpath.expandvars("bar\'%foo%")', "bar\'%foo%")
    def test_expandvars(self):
        if self.pathmodule.__name__ == 'macpath':
            self.skipTest('macpath.expandvars is a stub')
        expandvars = self.pathmodule.expandvars
        with support.EnvironmentVarGuard() as env:
            env.clear()
            env["foo"] = "bar"
            env["{foo"] = "baz1"
            env["{foo}"] = "baz2"
            self.assertEqual(expandvars("foo"), "foo")
            self.assertEqual(expandvars("$foo bar"), "bar bar")
            self.assertEqual(expandvars("${foo}bar"), "barbar")
            self.assertEqual(expandvars("$[foo]bar"), "$[foo]bar")
            self.assertEqual(expandvars("$bar bar"), "$bar bar")
            self.assertEqual(expandvars("$?bar"), "$?bar")
            self.assertEqual(expandvars("$foo}bar"), "bar}bar")
            self.assertEqual(expandvars("${foo"), "${foo")
            self.assertEqual(expandvars("${{foo}}"), "baz1}")
            self.assertEqual(expandvars("$foo$foo"), "barbar")
            self.assertEqual(expandvars("$bar$bar"), "$bar$bar")

            self.assertEqual(expandvars(b"foo"), b"foo")
            self.assertEqual(expandvars(b"$foo bar"), b"bar bar")
            self.assertEqual(expandvars(b"${foo}bar"), b"barbar")
            self.assertEqual(expandvars(b"$[foo]bar"), b"$[foo]bar")
            self.assertEqual(expandvars(b"$bar bar"), b"$bar bar")
            self.assertEqual(expandvars(b"$?bar"), b"$?bar")
            self.assertEqual(expandvars(b"$foo}bar"), b"bar}bar")
            self.assertEqual(expandvars(b"${foo"), b"${foo")
            self.assertEqual(expandvars(b"${{foo}}"), b"baz1}")
            self.assertEqual(expandvars(b"$foo$foo"), b"barbar")
            self.assertEqual(expandvars(b"$bar$bar"), b"$bar$bar")
Exemple #5
0
 def test_sensitive(self):
     with test_support.EnvironmentVarGuard() as env:
         env.unset('PYTHONCASEOK')
         self.caseok_env_changed(should_exist=False)
         sensitive, insensitive = self.sensitivity_test()
         self.assertIsNotNone(sensitive)
         self.assertIn(self.name, sensitive.get_filename(self.name))
         self.assertIsNone(insensitive)
 def test_source(self):
     # XXX (ncoghlan): It would be nice to use test.support.CleanImport
     # here, but that breaks because the os module registers some
     # handlers in copy_reg on import. Since CleanImport doesn't
     # revert that registration, the module is left in a broken
     # state after reversion. Reinitialising the module contents
     # and just reverting os.environ to its previous state is an OK
     # workaround
     with support.EnvironmentVarGuard():
         import os
         imp.reload(os)
    def test_expanduser(self):
        self.assertEqual(posixpath.expanduser("foo"), "foo")
        self.assertEqual(posixpath.expanduser(b"foo"), b"foo")
        with support.EnvironmentVarGuard() as env:
            for home in '/', '', '//', '///':
                with self.subTest(home=home):
                    env['HOME'] = home
                    self.assertEqual(posixpath.expanduser("~"), "/")
                    self.assertEqual(posixpath.expanduser("~/"), "/")
                    self.assertEqual(posixpath.expanduser("~/foo"), "/foo")
        try:
            import pwd
        except ImportError:
            pass
        else:
            self.assertIsInstance(posixpath.expanduser("~/"), str)
            self.assertIsInstance(posixpath.expanduser(b"~/"), bytes)
            # if home directory == root directory, this test makes no sense
            if posixpath.expanduser("~") != '/':
                self.assertEqual(
                    posixpath.expanduser("~") + "/",
                    posixpath.expanduser("~/"))
                self.assertEqual(
                    posixpath.expanduser(b"~") + b"/",
                    posixpath.expanduser(b"~/"))
            self.assertIsInstance(posixpath.expanduser("~root/"), str)
            self.assertIsInstance(posixpath.expanduser("~foo/"), str)
            self.assertIsInstance(posixpath.expanduser(b"~root/"), bytes)
            self.assertIsInstance(posixpath.expanduser(b"~foo/"), bytes)

            with support.EnvironmentVarGuard() as env:
                # expanduser should fall back to using the password database
                del env['HOME']
                home = pwd.getpwuid(os.getuid()).pw_dir
                # $HOME can end with a trailing /, so strip it (see #17809)
                home = home.rstrip("/") or '/'
                self.assertEqual(posixpath.expanduser("~"), home)
 def setUp(self):
     if not os.path.isdir(LOCALEDIR):
         os.makedirs(LOCALEDIR)
     with open(MOFILE, 'wb') as fp:
         fp.write(base64.decodebytes(GNU_MO_DATA))
     with open(MOFILE_BAD_MAJOR_VERSION, 'wb') as fp:
         fp.write(base64.decodebytes(GNU_MO_DATA_BAD_MAJOR_VERSION))
     with open(MOFILE_BAD_MINOR_VERSION, 'wb') as fp:
         fp.write(base64.decodebytes(GNU_MO_DATA_BAD_MINOR_VERSION))
     with open(UMOFILE, 'wb') as fp:
         fp.write(base64.decodebytes(UMO_DATA))
     with open(MMOFILE, 'wb') as fp:
         fp.write(base64.decodebytes(MMO_DATA))
     self.env = support.EnvironmentVarGuard()
     self.env['LANGUAGE'] = 'xx'
     gettext._translations.clear()
 def test_load_from_source(self):
     # Verify that the imp module can correctly load and find .py files
     # XXX (ncoghlan): It would be nice to use support.CleanImport
     # here, but that breaks because the os module registers some
     # handlers in copy_reg on import. Since CleanImport doesn't
     # revert that registration, the module is left in a broken
     # state after reversion. Reinitialising the module contents
     # and just reverting os.environ to its previous state is an OK
     # workaround
     orig_path = os.path
     orig_getenv = os.getenv
     with support.EnvironmentVarGuard():
         x = imp.find_module("os")
         self.addCleanup(x[0].close)
         new_os = imp.load_module("os", *x)
         self.assertIs(os, new_os)
         self.assertIs(orig_path, new_os.path)
         self.assertIsNot(orig_getenv, new_os.getenv)
    def testLoadWithUNC(self):
        # Build a UNC path from the regular path.
        # Something like
        #   \\%COMPUTERNAME%\c$\python27\python.exe

        fullname = os.path.abspath(sys.executable)
        if fullname[1] != ':':
            raise unittest.SkipTest('Absolute path should have drive part')
        unc_name = r'\\%s\%s$\%s' % (os.environ['COMPUTERNAME'], fullname[0],
                                     fullname[3:])
        if not os.path.exists(unc_name):
            raise unittest.SkipTest('Cannot connect to UNC Path')

        with support.EnvironmentVarGuard() as env:
            env.unset("TCL_LIBRARY")
            stdout = subprocess.check_output(
                [unc_name, '-c', 'import tkinter; print(tkinter)'])

        self.assertIn(b'tkinter', stdout)
Exemple #11
0
    def test_expandvars_nonascii(self):
        def check(value, expected):
            tester('ntpath.expandvars(%r)' % value, expected)

        with support.EnvironmentVarGuard() as env:
            env.clear()
            nonascii = support.FS_NONASCII
            env['spam'] = nonascii
            env[nonascii] = 'ham' + nonascii
            check('$spam bar', '%s bar' % nonascii)
            check('$%s bar' % nonascii, '$%s bar' % nonascii)
            check('${spam}bar', '%sbar' % nonascii)
            check('${%s}bar' % nonascii, 'ham%sbar' % nonascii)
            check('$spam}bar', '%s}bar' % nonascii)
            check('$%s}bar' % nonascii, '$%s}bar' % nonascii)
            check('%spam% bar', '%s bar' % nonascii)
            check('%{}% bar'.format(nonascii), 'ham%s bar' % nonascii)
            check('%spam%bar', '%sbar' % nonascii)
            check('%{}%bar'.format(nonascii), 'ham%sbar' % nonascii)
Exemple #12
0
 def test_security(self):
     # This test is incomplete since we are normally not run as root and
     # therefore can't test the file ownership being wrong.
     d = support.TESTFN
     os.mkdir(d)
     self.addCleanup(support.rmtree, d)
     fn = os.path.join(d, '.netrc')
     with open(fn, 'wt') as f:
         f.write("""\
             machine foo.domain.com login bar password pass
             default login foo password pass
             """)
     with support.EnvironmentVarGuard() as environ:
         environ.set('HOME', d)
         os.chmod(fn, 0o600)
         nrc = netrc.netrc()
         self.assertEqual(nrc.hosts['foo.domain.com'],
                          ('bar', None, 'pass'))
         os.chmod(fn, 0o622)
         self.assertRaises(netrc.NetrcParseError, netrc.netrc)
Exemple #13
0
 def test_uname_win32_ARCHITEW6432(self):
     # Issue 7860: make sure we get architecture from the correct variable
     # on 64 bit Windows: if PROCESSOR_ARCHITEW6432 exists we should be
     # using it, per
     # http://blogs.msdn.com/david.wang/archive/2006/03/26/HOWTO-Detect-Process-Bitness.aspx
     try:
         with support.EnvironmentVarGuard() as environ:
             if 'PROCESSOR_ARCHITEW6432' in environ:
                 del environ['PROCESSOR_ARCHITEW6432']
             environ['PROCESSOR_ARCHITECTURE'] = 'foo'
             platform._uname_cache = None
             system, node, release, version, machine, processor = platform.uname(
             )
             self.assertEqual(machine, 'foo')
             environ['PROCESSOR_ARCHITEW6432'] = 'bar'
             platform._uname_cache = None
             system, node, release, version, machine, processor = platform.uname(
             )
             self.assertEqual(machine, 'bar')
     finally:
         platform._uname_cache = None
    def testLoadTkFailure(self):
        old_display = None
        if sys.platform.startswith(('win', 'darwin', 'cygwin')):
            # no failure possible on windows?

            # XXX Maybe on tk older than 8.4.13 it would be possible,
            # see tkinter.h.
            return
        with test_support.EnvironmentVarGuard() as env:
            if 'DISPLAY' in os.environ:
                del env['DISPLAY']
                # on some platforms, deleting environment variables
                # doesn't actually carry through to the process level
                # because they don't support unsetenv
                # If that's the case, abort.
                with os.popen('echo $DISPLAY') as pipe:
                    display = pipe.read().strip()
                if display:
                    return

            tcl = Tcl()
            self.assertRaises(TclError, tcl.winfo_geometry)
            self.assertRaises(TclError, tcl.loadtk)
 def test_case_insensitivity(self):
     with support.EnvironmentVarGuard() as env:
         env.set('PYTHONCASEOK', '1')
         self.caseok_env_changed(should_exist=True)
         loader = self.find_module()
         self.assertTrue(hasattr(loader, 'load_module'))
 def test_case_sensitive(self):
     with support.EnvironmentVarGuard() as env:
         env.unset('PYTHONCASEOK')
         self.caseok_env_changed(should_exist=False)
         loader = self.find_module()
         self.assertIsNone(loader)