@@ -97,12 +97,35 @@ def test_glob_directory_names(self):
9797 os .path .join ('aab' , 'F' )]))
9898
9999 def test_glob_directory_with_trailing_slash (self ):
100- # We are verifying that when there is wildcard pattern which
101- # ends with os.sep doesn't blow up.
102- res = glob .glob (self .tempdir + '*' + os .sep )
103- self .assertEqual (len (res ), 1 )
100+ # Patterns ending with a slash shouldn't match non-dirs
101+ res = glob .glob (os .path .join (self .tempdir , 'Z*Z' ) + os .sep )
102+ self .assertEqual (res , [])
103+ res = glob .glob (os .path .join (self .tempdir , 'ZZZ' ) + os .sep )
104+ self .assertEqual (res , [])
105+ # When there is wildcard pattern which ends with os.sep, glob()
106+ # doesn't blow up.
107+ res = glob .glob (os .path .join (self .tempdir , 'aa*' ) + os .sep )
108+ self .assertEqual (len (res ), 2 )
104109 # either of these results are reasonable
105- self .assertIn (res [0 ], [self .tempdir , self .tempdir + os .sep ])
110+ self .assertIn (set (res ), [
111+ {self .norm ('aaa' ), self .norm ('aab' )},
112+ {self .norm ('aaa' ) + os .sep , self .norm ('aab' ) + os .sep },
113+ ])
114+
115+ def test_glob_bytes_directory_with_trailing_slash (self ):
116+ # Same as test_glob_directory_with_trailing_slash, but with a
117+ # bytes argument.
118+ res = glob .glob (os .fsencode (os .path .join (self .tempdir , 'Z*Z' ) + os .sep ))
119+ self .assertEqual (res , [])
120+ res = glob .glob (os .fsencode (os .path .join (self .tempdir , 'ZZZ' ) + os .sep ))
121+ self .assertEqual (res , [])
122+ res = glob .glob (os .fsencode (os .path .join (self .tempdir , 'aa*' ) + os .sep ))
123+ self .assertEqual (len (res ), 2 )
124+ # either of these results are reasonable
125+ self .assertIn ({os .fsdecode (x ) for x in res }, [
126+ {self .norm ('aaa' ), self .norm ('aab' )},
127+ {self .norm ('aaa' ) + os .sep , self .norm ('aab' ) + os .sep },
128+ ])
106129
107130 @skip_unless_symlink
108131 def test_glob_broken_symlinks (self ):
0 commit comments