--- a/Lib/test/test_glob.py Fri Apr 20 18:04:03 2012 -0400 +++ b/Lib/test/test_glob.py Wed Apr 25 13:11:07 2012 +0300 @@ -25,6 +25,7 @@ self.mktemp('ZZZ') self.mktemp('a', 'bcd', 'EF') self.mktemp('a', 'bcd', 'efg', 'ha') + self.mktemp('r', 'EF') if can_symlink(): os.symlink(self.norm('broken'), self.norm('sym1')) os.symlink(self.norm('broken'), self.norm('sym2')) @@ -105,6 +106,44 @@ eq(self.glob('sym1'), [self.norm('sym1')]) eq(self.glob('sym2'), [self.norm('sym2')]) + def test_rglob(self): + eq = self.assertSequencesEqual_noorder + fs = ('aab', 'F'), ('aaa', 'zzzF'), ('a', 'bcd', 'EF'), ('r', 'EF') + expected = [os.path.abspath(self.norm(*i)) for i in fs] + res = glob.glob(os.path.join(self.tempdir, '**F')) + eq(expected, [os.path.abspath(i) for i in res]) + + bcds = ('a', 'bcd', 'EF'), ('a', 'bcd', 'efg', 'ha') + expected = [os.path.abspath(self.norm(*i)) for i in bcds] + pat = os.path.join(self.tempdir, '**/bcd/*') + res = glob.glob(pat) + eq(expected, [os.path.abspath(i) for i in res]) + + expected = [] + pat = os.path.join(self.tempdir, 'a/**/bcd') + res = glob.glob(pat) + eq(expected, [os.path.abspath(i) for i in res]) + + predir = os.path.abspath(os.curdir) + try: + os.chdir(self.norm('.')) + expected = [os.path.join('aaa', 'zzzF')] + res = glob.glob('**zz*F') + eq(expected, res) + + efs = ('r', 'EF'), ('a', 'bcd', 'EF') + expected = [os.path.join(*i) for i in efs] + res = glob.glob('**EF') + eq(expected, res) + + # shouldn't be yielded: deep = os.path.join('a', 'bcd', 'efg', 'ha') + expected = [] + res = glob.glob('*efg/ha') + eq(expected, res) + finally: + os.chdir(predir) + + def test_main(): run_unittest(GlobTests)