from test
.test_support
import run_unittest
, TESTFN
if os
.path
.exists(fname
) or fname
== '':
base
, file = os
.path
.split(fname
)
base
, file = os
.path
.split(fname
)
for f
in os
.listdir(fname
):
fullname
= os
.path
.join(fname
, f
)
if os
.path
.isdir(fullname
):
class GlobTests(unittest
.TestCase
):
return os
.path
.normpath(os
.path
.join(self
.tempdir
, *parts
))
def mktemp(self
, *parts
):
touchfile(self
.norm(*parts
))
self
.tempdir
= TESTFN
+"_dir"
self
.mktemp('aaa', 'zzzF')
self
.mktemp('a', 'bcd', 'EF')
self
.mktemp('a', 'bcd', 'efg', 'ha')
if hasattr(os
, 'symlink'):
os
.symlink(self
.norm('broken'), self
.norm('sym1'))
os
.symlink(self
.norm('broken'), self
.norm('sym2'))
pattern
= os
.path
.join(*parts
)
p
= os
.path
.join(self
.tempdir
, pattern
)
def assertSequencesEqual_noorder(self
, l1
, l2
):
self
.assertEqual(set(l1
), set(l2
))
def test_glob_literal(self
):
eq
= self
.assertSequencesEqual_noorder
eq(self
.glob('a'), [self
.norm('a')])
eq(self
.glob('a', 'D'), [self
.norm('a', 'D')])
eq(self
.glob('aab'), [self
.norm('aab')])
eq(self
.glob('zymurgy'), [])
def test_glob_one_directory(self
):
eq
= self
.assertSequencesEqual_noorder
eq(self
.glob('a*'), map(self
.norm
, ['a', 'aab', 'aaa']))
eq(self
.glob('*a'), map(self
.norm
, ['a', 'aaa']))
eq(self
.glob('aa?'), map(self
.norm
, ['aaa', 'aab']))
eq(self
.glob('aa[ab]'), map(self
.norm
, ['aaa', 'aab']))
def test_glob_nested_directory(self
):
eq
= self
.assertSequencesEqual_noorder
if os
.path
.normcase("abCD") == "abCD":
# case-sensitive filesystem
eq(self
.glob('a', 'bcd', 'E*'), [self
.norm('a', 'bcd', 'EF')])
# case insensitive filesystem
eq(self
.glob('a', 'bcd', 'E*'), [self
.norm('a', 'bcd', 'EF'),
self
.norm('a', 'bcd', 'efg')])
eq(self
.glob('a', 'bcd', '*g'), [self
.norm('a', 'bcd', 'efg')])
def test_glob_directory_names(self
):
eq
= self
.assertSequencesEqual_noorder
eq(self
.glob('*', 'D'), [self
.norm('a', 'D')])
eq(self
.glob('*', '*a'), [])
eq(self
.glob('a', '*', '*', '*a'),
[self
.norm('a', 'bcd', 'efg', 'ha')])
eq(self
.glob('?a?', '*F'), map(self
.norm
, [os
.path
.join('aaa', 'zzzF'),
os
.path
.join('aab', 'F')]))
def test_glob_broken_symlinks(self
):
if hasattr(os
, 'symlink'):
eq
= self
.assertSequencesEqual_noorder
eq(self
.glob('sym*'), [self
.norm('sym1'), self
.norm('sym2')])
eq(self
.glob('sym1'), [self
.norm('sym1')])
eq(self
.glob('sym2'), [self
.norm('sym2')])
if __name__
== "__main__":