]> granicus.if.org Git - python/commitdiff
Use support.change_cwd() in tests.
authorSerhiy Storchaka <storchaka@gmail.com>
Sun, 6 Sep 2015 11:14:49 +0000 (14:14 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Sun, 6 Sep 2015 11:14:49 +0000 (14:14 +0300)
1  2 
Lib/test/test_glob.py
Lib/test/test_posixpath.py
Lib/test/test_py_compile.py
Lib/test/test_shutil.py
Lib/test/test_subprocess.py
Lib/test/test_sysconfig.py
Lib/test/test_tarfile.py

index 21b015330646f3a12c23672a10de65261679f6eb,a5ab8d6c3e94623c1156e87867c114be2a9772eb..926588e08bda11149df161a391b8733c7ac982a8
@@@ -195,117 -192,8 +195,113 @@@ class GlobTests(unittest.TestCase)
          check('//?/c:/?', '//?/c:/[?]')
          check('//*/*/*', '//*/*/[*]')
  
 -def test_main():
 -    run_unittest(GlobTests)
 +    def rglob(self, *parts, **kwargs):
 +        return self.glob(*parts, recursive=True, **kwargs)
 +
 +    def test_recursive_glob(self):
 +        eq = self.assertSequencesEqual_noorder
 +        full = [('ZZZ',),
 +                ('a',), ('a', 'D'),
 +                ('a', 'bcd'),
 +                ('a', 'bcd', 'EF'),
 +                ('a', 'bcd', 'efg'),
 +                ('a', 'bcd', 'efg', 'ha'),
 +                ('aaa',), ('aaa', 'zzzF'),
 +                ('aab',), ('aab', 'F'),
 +               ]
 +        if can_symlink():
 +            full += [('sym1',), ('sym2',),
 +                     ('sym3',),
 +                     ('sym3', 'EF'),
 +                     ('sym3', 'efg'),
 +                     ('sym3', 'efg', 'ha'),
 +                    ]
 +        eq(self.rglob('**'), self.joins(('',), *full))
 +        eq(self.rglob('.', '**'), self.joins(('.',''),
 +            *(('.',) + i for i in full)))
 +        dirs = [('a', ''), ('a', 'bcd', ''), ('a', 'bcd', 'efg', ''),
 +                ('aaa', ''), ('aab', '')]
 +        if can_symlink():
 +            dirs += [('sym3', ''), ('sym3', 'efg', '')]
 +        eq(self.rglob('**', ''), self.joins(('',), *dirs))
 +
 +        eq(self.rglob('a', '**'), self.joins(
 +            ('a', ''), ('a', 'D'), ('a', 'bcd'), ('a', 'bcd', 'EF'),
 +            ('a', 'bcd', 'efg'), ('a', 'bcd', 'efg', 'ha')))
 +        eq(self.rglob('a**'), self.joins(('a',), ('aaa',), ('aab',)))
 +        expect = [('a', 'bcd', 'EF')]
 +        if can_symlink():
 +            expect += [('sym3', 'EF')]
 +        eq(self.rglob('**', 'EF'), self.joins(*expect))
 +        expect = [('a', 'bcd', 'EF'), ('aaa', 'zzzF'), ('aab', 'F')]
 +        if can_symlink():
 +            expect += [('sym3', 'EF')]
 +        eq(self.rglob('**', '*F'), self.joins(*expect))
 +        eq(self.rglob('**', '*F', ''), [])
 +        eq(self.rglob('**', 'bcd', '*'), self.joins(
 +            ('a', 'bcd', 'EF'), ('a', 'bcd', 'efg')))
 +        eq(self.rglob('a', '**', 'bcd'), self.joins(('a', 'bcd')))
 +
-         predir = os.path.abspath(os.curdir)
-         try:
-             os.chdir(self.tempdir)
++        with change_cwd(self.tempdir):
 +            join = os.path.join
 +            eq(glob.glob('**', recursive=True), [join(*i) for i in full])
 +            eq(glob.glob(join('**', ''), recursive=True),
 +                [join(*i) for i in dirs])
 +            eq(glob.glob(join('**','zz*F'), recursive=True),
 +                [join('aaa', 'zzzF')])
 +            eq(glob.glob('**zz*F', recursive=True), [])
 +            expect = [join('a', 'bcd', 'EF')]
 +            if can_symlink():
 +                expect += [join('sym3', 'EF')]
 +            eq(glob.glob(join('**', 'EF'), recursive=True), expect)
-         finally:
-             os.chdir(predir)
 +
 +
 +@skip_unless_symlink
 +class SymlinkLoopGlobTests(unittest.TestCase):
 +
 +    def test_selflink(self):
 +        tempdir = TESTFN + "_dir"
 +        os.makedirs(tempdir)
 +        self.addCleanup(shutil.rmtree, tempdir)
 +        with change_cwd(tempdir):
 +            os.makedirs('dir')
 +            create_empty_file(os.path.join('dir', 'file'))
 +            os.symlink(os.curdir, os.path.join('dir', 'link'))
 +
 +            results = glob.glob('**', recursive=True)
 +            self.assertEqual(len(results), len(set(results)))
 +            results = set(results)
 +            depth = 0
 +            while results:
 +                path = os.path.join(*(['dir'] + ['link'] * depth))
 +                self.assertIn(path, results)
 +                results.remove(path)
 +                if not results:
 +                    break
 +                path = os.path.join(path, 'file')
 +                self.assertIn(path, results)
 +                results.remove(path)
 +                depth += 1
 +
 +            results = glob.glob(os.path.join('**', 'file'), recursive=True)
 +            self.assertEqual(len(results), len(set(results)))
 +            results = set(results)
 +            depth = 0
 +            while results:
 +                path = os.path.join(*(['dir'] + ['link'] * depth + ['file']))
 +                self.assertIn(path, results)
 +                results.remove(path)
 +                depth += 1
 +
 +            results = glob.glob(os.path.join('**', ''), recursive=True)
 +            self.assertEqual(len(results), len(set(results)))
 +            results = set(results)
 +            depth = 0
 +            while results:
 +                path = os.path.join(*(['dir'] + ['link'] * depth + ['']))
 +                self.assertIn(path, results)
 +                results.remove(path)
 +                depth += 1
  
  
  if __name__ == "__main__":
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge