2 from test_support
import run_unittest
, TESTFN
7 if os
.path
.exists(fname
) or fname
== '':
9 base
, file = os
.path
.split(fname
)
14 base
, file = os
.path
.split(fname
)
20 for f
in os
.listdir(fname
):
21 fullname
= os
.path
.join(fname
, f
)
22 if os
.path
.isdir(fullname
):
35 class GlobTests(unittest
.TestCase
):
37 def norm(self
, *parts
):
38 return os
.path
.normpath(os
.path
.join(self
.tempdir
, *parts
))
40 def mktemp(self
, *parts
):
41 touchfile(self
.norm(*parts
))
44 self
.tempdir
= TESTFN
+"_dir"
46 self
.mktemp('aab', 'F')
47 self
.mktemp('aaa', 'zzzF')
49 self
.mktemp('a', 'bcd', 'EF')
50 self
.mktemp('a', 'bcd', 'efg', 'ha')
55 def glob(self
, *parts
):
59 pattern
= os
.path
.join(*parts
)
60 p
= os
.path
.join(self
.tempdir
, pattern
)
63 def assertSequencesEqual_noorder(self
, l1
, l2
):
68 self
.assertEqual(l1
, l2
)
70 def test_glob_literal(self
):
71 eq
= self
.assertSequencesEqual_noorder
72 np
= lambda *f
: norm(self
.tempdir
, *f
)
73 eq(self
.glob('a'), [self
.norm('a')])
74 eq(self
.glob('a', 'D'), [self
.norm('a', 'D')])
75 eq(self
.glob('aab'), [self
.norm('aab')])
76 eq(self
.glob('zymurgy'), [])
78 def test_glob_one_directory(self
):
79 eq
= self
.assertSequencesEqual_noorder
80 np
= lambda *f
: norm(self
.tempdir
, *f
)
81 eq(self
.glob('a*'), map(self
.norm
, ['a', 'aab', 'aaa']))
82 eq(self
.glob('*a'), map(self
.norm
, ['a', 'aaa']))
83 eq(self
.glob('aa?'), map(self
.norm
, ['aaa', 'aab']))
84 eq(self
.glob('aa[ab]'), map(self
.norm
, ['aaa', 'aab']))
85 eq(self
.glob('*q'), [])
87 def test_glob_nested_directory(self
):
88 eq
= self
.assertSequencesEqual_noorder
89 np
= lambda *f
: norm(self
.tempdir
, *f
)
90 if os
.path
.normcase("abCD") == "abCD":
91 # case-sensitive filesystem
92 eq(self
.glob('a', 'bcd', 'E*'), [self
.norm('a', 'bcd', 'EF')])
94 # case insensitive filesystem
95 eq(self
.glob('a', 'bcd', 'E*'), [self
.norm('a', 'bcd', 'EF'),
96 self
.norm('a', 'bcd', 'efg')])
97 eq(self
.glob('a', 'bcd', '*g'), [self
.norm('a', 'bcd', 'efg')])
99 def test_glob_directory_names(self
):
100 eq
= self
.assertSequencesEqual_noorder
101 np
= lambda *f
: norm(self
.tempdir
, *f
)
102 eq(self
.glob('*', 'D'), [self
.norm('a', 'D')])
103 eq(self
.glob('*', '*a'), [])
104 eq(self
.glob('a', '*', '*', '*a'),
105 [self
.norm('a', 'bcd', 'efg', 'ha')])
106 eq(self
.glob('?a?', '*F'), map(self
.norm
, [os
.path
.join('aaa', 'zzzF'),
107 os
.path
.join('aab', 'F')]))
109 run_unittest(GlobTests
)