facelessuser: Two tests are broken, so we need to figure out why and either fix the underlying issue, or fix the test if it was wrong.
facelessuser: Ugh, we still have some Windows issues.
diff --git a/docs/src/markdown/changelog.md b/docs/src/markdown/changelog.md
index e990e91..9fa3a10 100644
--- a/docs/src/markdown/changelog.md
+++ b/docs/src/markdown/changelog.md
@@ -1,5 +1,10 @@
 # Changelog
 
+## 2.0.4
+
+- **FIX**: Fix issue where negated patterns would trigger before end of path.
+- **FIX**: Fix `GLOBSTAR` regular expression pattern issues.
+
 ## 2.0.3
 
 - **FIX**: In `glob`, properly handle files in the current working directory when give a literal pattern that matches it.
diff --git a/wcmatch/_wcparse.py b/wcmatch/_wcparse.py
index e188415..827c216 100644
--- a/wcmatch/_wcparse.py
+++ b/wcmatch/_wcparse.py
@@ -107,6 +107,7 @@ _EOP = r'$'
 _GLOBSTAR_DIV = r'(?:^|$|%s)+'
 # Lookahead to see there is one character.
 _NEED_CHAR = r'(?=.)'
+_NEED_SEP = r'(?=%s)'
 # Group that matches one or none
 _QMARK_GROUP = r'(?:%s)?'
 # Group that matches Zero or more
@@ -914,7 +915,7 @@ class WcParse(object):
                     current[-1] = value
                 else:
                     # Replace the last path separator
-                    current[-1] = _NEED_CHAR
+                    current[-1] = _NEED_SEP % self.get_path_sep()
                     current.append(value)
                 self.consume_path_sep(i)
                 current.append(sep)
@@ -1095,7 +1096,12 @@ class WcParse(object):
             m = RE_WIN_PATH.match(pattern)
             if m:
                 drive = m.group(0).replace('\\\\', '\\')
+                if drive.endswith('\\'):
+                    slash = True
+                drive = drive[:-1]
                 current.append(re.escape(drive))
+                if slash:
+                    current.append(self.get_path_sep() + _ONE_OR_MORE)
                 i.advance(m.end(0))
                 self.consume_path_sep(i)
 
@@ -1161,9 +1167,9 @@ class WcParse(object):
 
         case_flag = 'i' if not self.case_sensitive else ''
         if util.PY36:
-            pattern = (r'^(?!(?s%s:%s)).*?$' if negative else r'^(?s%s:%s)$') % (case_flag, ''.join(result))
+            pattern = (r'^(?!(?s%s:%s)$).*?$' if negative else r'^(?s%s:%s)$') % (case_flag, ''.join(result))
         else:
-            pattern = (r'(?s%s)^(?!(?:%s)).*?$' if negative else r'(?s%s)^(?:%s)$') % (case_flag, ''.join(result))
+            pattern = (r'(?s%s)^(?!(?:%s)$).*?$' if negative else r'(?s%s)^(?:%s)$') % (case_flag, ''.join(result))
 
         if self.is_bytes:
             pattern = pattern.encode('latin-1')
diff --git a/wcmatch/file_hidden.py b/wcmatch/file_hidden.py
index d89200b..087c304 100644
--- a/wcmatch/file_hidden.py
+++ b/wcmatch/file_hidden.py
@@ -87,7 +87,7 @@ if util.platform() == "osx" and _OSX_FOUNDATION_METHOD == _OSX_FOUNDATION_NOT_LO
         cf.CFBooleanGetValue.restype = ctypes.c_int
 
         # This one is a static `CFStringRef`.
-        kCFURLIsHiddenKey = ctypes.c_void_p.in_dll(cf, 'kCFURLIsHiddenKey')
+        kCFURLIsHiddenKey = ctypes.c_void_p.in_dll(cf, 'kCFURLIsHiddenKey')  # noqa: N816
 
         @contextlib.contextmanager
         def cfreleasing(objects):

Odd behavior with wcmatch.glob.glob()?
Hello there.  I was very pleased to see a python module that attempted to codify the extended glob pattern matching that one gets with the Bash command line. Great stuff!

However, in making use of it, I found a weird scenario. 

Consider this piece of code run under Python 3.6:

```py
glob.globfilter(["goo.cfg", "foo.bar", "foo.bar.cfg", 'foo.cfg.bar'], '!*.bar', flags=glob.EXTGLOB|glob.NEGATE)
```

It unexpectedly returns:

```
['goo.cfg']
```

That doesn't make sense to me. I would have expected:

```
['goo.cfg', 'foo.bar.cfg']
```

I meant, the following code behaves the way I would expect when I remove the negation:

```py
glob.globfilter(["goo.cfg", "foo.bar", "foo.bar.cfg", 'foo.cfg.bar'], '*.bar', flags=glob.EXTGLOB|glob.NEGATE)
```

```
['foo.bar', 'foo.cfg.bar']
```

foo.bar.cfg doesn't appear and rightly so in the positive case so why is it disappearing in the negative one.

Could there be a syntactic misunderstanding that I am not picking up from the docs?

Regards,
IMc

diff --git a/tests/test_fnmatch.py b/tests/test_fnmatch.py
index 0737a70..5fa09a5 100644
--- a/tests/test_fnmatch.py
+++ b/tests/test_fnmatch.py
@@ -233,7 +233,11 @@ class TestFnMatchFilter:
             0
         ],
         [r'te\st[ma]', ['testm', 'test\\3', 'testa'], ['testm', 'testa'], fnmatch.I],
-        [r'te\st[ma]', ['testm', 'test\\3', 'testa'], ['testm', 'testa'], fnmatch.F]
+        [r'te\st[ma]', ['testm', 'test\\3', 'testa'], ['testm', 'testa'], fnmatch.F],
+
+        # Issue #24
+        ['*.bar', ["goo.cfg", "foo.bar", "foo.bar.cfg", "foo.cfg.bar"], ["foo.bar", "foo.cfg.bar"], 0],
+        ['!*.bar', ["goo.cfg", "foo.bar", "foo.bar.cfg", "foo.cfg.bar"], ["goo.cfg", "foo.bar.cfg"], fnmatch.N]
     ]
 
     @classmethod
@@ -297,10 +301,10 @@ class TestFnMatchTranslate(unittest.TestCase):
         p1, p2 = self.split_translate('*test[a-z]?|*test2[a-z]?|!test[!a-z]|!test[!-|a-z]', flags | fnmatch.N)
         if util.PY36:
             self.assertEqual(p1, [r'^(?s:(?=.).*?test[a-z].)$', r'^(?s:(?=.).*?test2[a-z].)$'])
-            self.assertEqual(p2, [r'^(?!(?s:test[^a-z])).*?$', r'^(?!(?s:test[^\-\|a-z])).*?$'])
+            self.assertEqual(p2, [r'^(?!(?s:test[^a-z])$).*?$', r'^(?!(?s:test[^\-\|a-z])$).*?$'])
         else:
             self.assertEqual(p1, [r'(?s)^(?:(?=.).*?test[a-z].)$', r'(?s)^(?:(?=.).*?test2[a-z].)$'])
-            self.assertEqual(p2, [r'(?s)^(?!(?:test[^a-z])).*?$', r'(?s)^(?!(?:test[^\-\|a-z])).*?$'])
+            self.assertEqual(p2, [r'(?s)^(?!(?:test[^a-z])$).*?$', r'(?s)^(?!(?:test[^\-\|a-z])$).*?$'])
 
         p1, p2 = self.split_translate('test[]][!][][]', flags | fnmatch.F)
         if util.PY36:
@@ -332,10 +336,10 @@ class TestFnMatchTranslate(unittest.TestCase):
         p1, p2 = self.split_translate('-|-test|-', flags=flags | fnmatch.N | fnmatch.M)
         if util.PY36:
             self.assertEqual(p1, [])
-            self.assertEqual(p2, [r'^(?!(?s:)).*?$', r'^(?!(?s:test)).*?$', r'^(?!(?s:)).*?$'])
+            self.assertEqual(p2, [r'^(?!(?s:)$).*?$', r'^(?!(?s:test)$).*?$', r'^(?!(?s:)$).*?$'])
         else:
             self.assertEqual(p1, [])
-            self.assertEqual(p2, [r'(?s)^(?!(?:)).*?$', r'(?s)^(?!(?:test)).*?$', r'(?s)^(?!(?:)).*?$'])
+            self.assertEqual(p2, [r'(?s)^(?!(?:)$).*?$', r'(?s)^(?!(?:test)$).*?$', r'(?s)^(?!(?:)$).*?$'])
 
         p1, p2 = self.split_translate('test[^chars]', flags)
         if util.PY36:
diff --git a/tests/test_glob.py b/tests/test_glob.py
index 3baed7f..e353738 100644
--- a/tests/test_glob.py
+++ b/tests/test_glob.py
@@ -366,12 +366,12 @@ class Testglob(_TestGlob):
 
         # Glob inverse
         [
-            ('a*',),
+            ('a*', '**'),
             [
                 ('EF',), ('ZZZ',), ('',)
             ] if not can_symlink() else [
                 ('EF',), ('ZZZ',), ('',), ('sym1',), ('sym3',), ('sym2',),
-                ('sym3', 'efg'), ('sym3', 'efg', 'ha'), ('sym3', 'EF')
+                ('a',), ('aaa', ), ('aab', ), ('sym3', 'efg'), ('sym3', 'efg', 'ha'), ('sym3', 'EF')
             ],
             glob.N
         ],
@@ -714,12 +714,13 @@ class Testglob(_TestGlob):
         ],
         Options(just_negative=True),
         [
-            ('a*',),
+            ('a*', '**'),
             [
                 ('EF',), ('ZZZ',)
             ] if not can_symlink() else [
                 ('EF',), ('ZZZ',),
-                ('sym1',), ('sym3',), ('sym2',), ('sym3', 'efg'), ('sym3', 'efg', 'ha'), ('sym3', 'EF')
+                ('a',), ('aaa', ), ('aab', ), ('sym1',), ('sym3',), ('sym2',), ('sym3', 'efg'), ('sym3', 'efg', 'ha'),
+                ('sym3', 'EF')
             ],
             glob.N
         ],
diff --git a/tests/test_globmatch.py b/tests/test_globmatch.py
index 2aa8761..87c9a0b 100644
--- a/tests/test_globmatch.py
+++ b/tests/test_globmatch.py
@@ -394,7 +394,14 @@ class TestGlobFilter:
         ['@(test/test)', [], glob.F],
         [r'@(test\/test)', [], glob.F],
         ['test[/]test', [], glob.F],
-        [r'test[\/]test', [], glob.F]
+        [r'test[\/]test', [], glob.F],
+
+        # Issue #24
+        GlobFiles(
+            ["goo.cfg", "foo.bar", "foo.bar.cfg", "foo.cfg.bar"]
+        ),
+        ['*.bar', ["foo.bar", "foo.cfg.bar"]],
+        ['!*.bar', ["goo.cfg", "foo.bar.cfg"]]
     ]
 
     @classmethod

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cov coverage mock
3.6
requirements/setup.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
backrefs==5.2
bracex==2.2.1
certifi==2021.5.30
coverage==6.2
importlib-metadata==4.8.3
iniconfig==1.1.1
mock==5.2.0
packaging==21.3
pep562==1.1
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
pytest-cov==4.0.0
tomli==1.2.3
typing_extensions==4.1.1
-e git+https://github.com/facelessuser/wcmatch.git@eac64b1fa24887478b98f1e38cb49ab1004994f3#egg=wcmatch
zipp==3.6.0

name: wcmatch
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - backrefs==5.2
      - bracex==2.2.1
      - coverage==6.2
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - mock==5.2.0
      - packaging==21.3
      - pep562==1.1
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-cov==4.0.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - zipp==3.6.0
prefix: /opt/conda/envs/wcmatch

tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case9] tests/test_fnmatch.py::TestFnMatchTranslate::test_split_parsing tests/test_glob.py::Testglob::test_glob_cases[case15] tests/test_glob.py::Testglob::test_glob_cases[case74] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case131] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case131]
tests/test_fnmatch.py::TestFnMatch::test_cases[case77] tests/test_fnmatch.py::TestFnMatch::test_cases[case78] tests/test_fnmatch.py::TestFnMatch::test_cases[case79] tests/test_fnmatch.py::TestFnMatch::test_cases[case80] tests/test_fnmatch.py::TestFnMatch::test_cases[case81] tests/test_fnmatch.py::TestFnMatch::test_cases[case82] tests/test_fnmatch.py::TestFnMatch::test_cases[case83] tests/test_fnmatch.py::TestFnMatch::test_cases[case84] tests/test_fnmatch.py::TestFnMatch::test_cases[case85] tests/test_fnmatch.py::TestFnMatchTranslate::test_posix_range tests/test_globmatch.py::TestGlobMatchSpecial::test_glob_translate
tests/test_fnmatch.py::TestFnMatch::test_cases[case0] tests/test_fnmatch.py::TestFnMatch::test_cases[case1] tests/test_fnmatch.py::TestFnMatch::test_cases[case2] tests/test_fnmatch.py::TestFnMatch::test_cases[case3] tests/test_fnmatch.py::TestFnMatch::test_cases[case4] tests/test_fnmatch.py::TestFnMatch::test_cases[case5] tests/test_fnmatch.py::TestFnMatch::test_cases[case6] tests/test_fnmatch.py::TestFnMatch::test_cases[case7] tests/test_fnmatch.py::TestFnMatch::test_cases[case8] tests/test_fnmatch.py::TestFnMatch::test_cases[case9] tests/test_fnmatch.py::TestFnMatch::test_cases[case10] tests/test_fnmatch.py::TestFnMatch::test_cases[case11] tests/test_fnmatch.py::TestFnMatch::test_cases[case12] tests/test_fnmatch.py::TestFnMatch::test_cases[case13] tests/test_fnmatch.py::TestFnMatch::test_cases[case14] tests/test_fnmatch.py::TestFnMatch::test_cases[case15] tests/test_fnmatch.py::TestFnMatch::test_cases[case16] tests/test_fnmatch.py::TestFnMatch::test_cases[case17] tests/test_fnmatch.py::TestFnMatch::test_cases[case18] tests/test_fnmatch.py::TestFnMatch::test_cases[case19] tests/test_fnmatch.py::TestFnMatch::test_cases[case20] tests/test_fnmatch.py::TestFnMatch::test_cases[case21] tests/test_fnmatch.py::TestFnMatch::test_cases[case22] tests/test_fnmatch.py::TestFnMatch::test_cases[case23] tests/test_fnmatch.py::TestFnMatch::test_cases[case24] tests/test_fnmatch.py::TestFnMatch::test_cases[case25] tests/test_fnmatch.py::TestFnMatch::test_cases[case26] tests/test_fnmatch.py::TestFnMatch::test_cases[case27] tests/test_fnmatch.py::TestFnMatch::test_cases[case28] tests/test_fnmatch.py::TestFnMatch::test_cases[case29] tests/test_fnmatch.py::TestFnMatch::test_cases[case30] tests/test_fnmatch.py::TestFnMatch::test_cases[case31] tests/test_fnmatch.py::TestFnMatch::test_cases[case32] tests/test_fnmatch.py::TestFnMatch::test_cases[case33] tests/test_fnmatch.py::TestFnMatch::test_cases[case34] tests/test_fnmatch.py::TestFnMatch::test_cases[case35] tests/test_fnmatch.py::TestFnMatch::test_cases[case36] tests/test_fnmatch.py::TestFnMatch::test_cases[case37] tests/test_fnmatch.py::TestFnMatch::test_cases[case38] tests/test_fnmatch.py::TestFnMatch::test_cases[case39] tests/test_fnmatch.py::TestFnMatch::test_cases[case40] tests/test_fnmatch.py::TestFnMatch::test_cases[case41] tests/test_fnmatch.py::TestFnMatch::test_cases[case42] tests/test_fnmatch.py::TestFnMatch::test_cases[case43] tests/test_fnmatch.py::TestFnMatch::test_cases[case44] tests/test_fnmatch.py::TestFnMatch::test_cases[case45] tests/test_fnmatch.py::TestFnMatch::test_cases[case46] tests/test_fnmatch.py::TestFnMatch::test_cases[case47] tests/test_fnmatch.py::TestFnMatch::test_cases[case48] tests/test_fnmatch.py::TestFnMatch::test_cases[case49] tests/test_fnmatch.py::TestFnMatch::test_cases[case50] tests/test_fnmatch.py::TestFnMatch::test_cases[case51] tests/test_fnmatch.py::TestFnMatch::test_cases[case52] tests/test_fnmatch.py::TestFnMatch::test_cases[case53] tests/test_fnmatch.py::TestFnMatch::test_cases[case54] tests/test_fnmatch.py::TestFnMatch::test_cases[case55] tests/test_fnmatch.py::TestFnMatch::test_cases[case56] tests/test_fnmatch.py::TestFnMatch::test_cases[case57] tests/test_fnmatch.py::TestFnMatch::test_cases[case58] tests/test_fnmatch.py::TestFnMatch::test_cases[case59] tests/test_fnmatch.py::TestFnMatch::test_cases[case60] tests/test_fnmatch.py::TestFnMatch::test_cases[case61] tests/test_fnmatch.py::TestFnMatch::test_cases[case62] tests/test_fnmatch.py::TestFnMatch::test_cases[case63] tests/test_fnmatch.py::TestFnMatch::test_cases[case64] tests/test_fnmatch.py::TestFnMatch::test_cases[case65] tests/test_fnmatch.py::TestFnMatch::test_cases[case66] tests/test_fnmatch.py::TestFnMatch::test_cases[case67] tests/test_fnmatch.py::TestFnMatch::test_cases[case68] tests/test_fnmatch.py::TestFnMatch::test_cases[case69] tests/test_fnmatch.py::TestFnMatch::test_cases[case70] tests/test_fnmatch.py::TestFnMatch::test_cases[case71] tests/test_fnmatch.py::TestFnMatch::test_cases[case72] tests/test_fnmatch.py::TestFnMatch::test_cases[case73] tests/test_fnmatch.py::TestFnMatch::test_cases[case74] tests/test_fnmatch.py::TestFnMatch::test_cases[case75] tests/test_fnmatch.py::TestFnMatch::test_cases[case76] tests/test_fnmatch.py::TestFnMatch::test_cases[case86] tests/test_fnmatch.py::TestFnMatch::test_cases[case87] tests/test_fnmatch.py::TestFnMatch::test_cases[case88] tests/test_fnmatch.py::TestFnMatch::test_cases[case89] tests/test_fnmatch.py::TestFnMatch::test_cases[case90] tests/test_fnmatch.py::TestFnMatch::test_cases[case91] tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case0] tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case1] tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case2] tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case3] tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case4] tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case5] tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case6] tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case7] tests/test_fnmatch.py::TestFnMatchFilter::test_cases[case8] tests/test_fnmatch.py::TestFnMatchTranslate::test_special_escapes tests/test_glob.py::Testglob::test_glob_cases[case0] tests/test_glob.py::Testglob::test_glob_cases[case1] tests/test_glob.py::Testglob::test_glob_cases[case2] tests/test_glob.py::Testglob::test_glob_cases[case3] tests/test_glob.py::Testglob::test_glob_cases[case5] tests/test_glob.py::Testglob::test_glob_cases[case6] tests/test_glob.py::Testglob::test_glob_cases[case8] tests/test_glob.py::Testglob::test_glob_cases[case9] tests/test_glob.py::Testglob::test_glob_cases[case10] tests/test_glob.py::Testglob::test_glob_cases[case11] tests/test_glob.py::Testglob::test_glob_cases[case12] tests/test_glob.py::Testglob::test_glob_cases[case13] tests/test_glob.py::Testglob::test_glob_cases[case14] tests/test_glob.py::Testglob::test_glob_cases[case16] tests/test_glob.py::Testglob::test_glob_cases[case17] tests/test_glob.py::Testglob::test_glob_cases[case18] tests/test_glob.py::Testglob::test_glob_cases[case19] tests/test_glob.py::Testglob::test_glob_cases[case20] tests/test_glob.py::Testglob::test_glob_cases[case21] tests/test_glob.py::Testglob::test_glob_cases[case29] tests/test_glob.py::Testglob::test_glob_cases[case30] tests/test_glob.py::Testglob::test_glob_cases[case31] tests/test_glob.py::Testglob::test_glob_cases[case32] tests/test_glob.py::Testglob::test_glob_cases[case33] tests/test_glob.py::Testglob::test_glob_cases[case34] tests/test_glob.py::Testglob::test_glob_cases[case35] tests/test_glob.py::Testglob::test_glob_cases[case37] tests/test_glob.py::Testglob::test_glob_cases[case41] tests/test_glob.py::Testglob::test_glob_cases[case42] tests/test_glob.py::Testglob::test_glob_cases[case43] tests/test_glob.py::Testglob::test_glob_cases[case44] tests/test_glob.py::Testglob::test_glob_cases[case45] tests/test_glob.py::Testglob::test_glob_cases[case47] tests/test_glob.py::Testglob::test_glob_cases[case49] tests/test_glob.py::Testglob::test_glob_cases[case50] tests/test_glob.py::Testglob::test_glob_cases[case51] tests/test_glob.py::Testglob::test_glob_cases[case52] tests/test_glob.py::Testglob::test_glob_cases[case53] tests/test_glob.py::Testglob::test_glob_cases[case54] tests/test_glob.py::Testglob::test_glob_cases[case55] tests/test_glob.py::Testglob::test_glob_cases[case56] tests/test_glob.py::Testglob::test_glob_cases[case57] tests/test_glob.py::Testglob::test_glob_cases[case58] tests/test_glob.py::Testglob::test_glob_cases[case59] tests/test_glob.py::Testglob::test_glob_cases[case60] tests/test_glob.py::Testglob::test_glob_cases[case61] tests/test_glob.py::Testglob::test_glob_cases[case62] tests/test_glob.py::Testglob::test_glob_cases[case64] tests/test_glob.py::Testglob::test_glob_cases[case65] tests/test_glob.py::Testglob::test_glob_cases[case66] tests/test_glob.py::Testglob::test_glob_cases[case67] tests/test_glob.py::Testglob::test_glob_cases[case68] tests/test_glob.py::Testglob::test_glob_cases[case69] tests/test_glob.py::Testglob::test_glob_cases[case70] tests/test_glob.py::Testglob::test_glob_cases[case71] tests/test_glob.py::Testglob::test_glob_cases[case72] tests/test_glob.py::Testglob::test_glob_cases[case76] tests/test_glob.py::TestCWD::test_cwd tests/test_glob.py::TestGlobCornerCase::test_glob_cases[case0] tests/test_glob.py::TestGlobCornerCase::test_glob_cases[case1] tests/test_glob.py::TestGlobCornerCase::test_glob_cases[case2] tests/test_glob.py::TestGlobCornerCase::test_glob_cases[case3] tests/test_glob.py::TestGlobCornerCase::test_glob_cases[case4] tests/test_glob.py::TestGlobCornerCase::test_glob_cases[case5] tests/test_glob.py::TestGlobEscapes::test_escape tests/test_glob.py::TestGlobEscapes::test_raw_escape tests/test_glob.py::SymlinkLoopGlobTests::test_selflink tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case2] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case3] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case4] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case5] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case6] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case7] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case8] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case9] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case10] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case11] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case12] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case13] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case14] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case15] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case16] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case18] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case20] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case22] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case23] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case24] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case25] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case26] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case27] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case28] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case29] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case30] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case31] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case33] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case34] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case35] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case36] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case37] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case38] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case39] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case40] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case41] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case42] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case43] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case44] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case45] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case46] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case47] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case48] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case49] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case50] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case51] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case52] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case53] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case54] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case55] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case56] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case57] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case58] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case59] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case60] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case61] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case62] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case63] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case64] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case65] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case66] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case67] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case68] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case69] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case70] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case71] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case72] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case73] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case74] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case76] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case77] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case78] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case79] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case80] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case81] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case82] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case83] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case84] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case86] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case88] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case89] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case90] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case91] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case92] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case94] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case95] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case97] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case98] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case99] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case101] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case103] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case104] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case105] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case106] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case108] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case109] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case111] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case113] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case114] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case115] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case116] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case118] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case119] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case120] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case121] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case123] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case124] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case125] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case126] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case127] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case128] tests/test_globmatch.py::TestGlobFilter::test_glob_filter[case130] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case2] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case3] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case4] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case5] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case6] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case7] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case8] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case9] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case10] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case11] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case12] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case13] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case14] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case15] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case16] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case18] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case20] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case22] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case23] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case24] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case25] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case26] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case27] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case28] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case29] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case30] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case31] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case33] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case34] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case35] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case36] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case37] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case38] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case39] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case40] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case41] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case42] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case43] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case44] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case45] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case46] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case47] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case48] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case49] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case50] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case51] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case52] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case53] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case54] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case55] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case56] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case57] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case58] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case59] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case60] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case61] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case62] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case63] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case64] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case65] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case66] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case67] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case68] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case69] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case70] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case71] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case72] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case73] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case74] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case76] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case77] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case78] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case79] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case80] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case81] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case82] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case83] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case84] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case86] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case88] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case89] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case90] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case91] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case92] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case94] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case95] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case97] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case98] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case99] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case101] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case103] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case104] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case105] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case106] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case108] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case109] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case111] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case113] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case114] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case115] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case116] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case118] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case119] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case120] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case121] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case123] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case124] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case125] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case126] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case127] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case128] tests/test_globmatch.py::TestGlobFilter::test_glob_split_filter[case130] tests/test_globmatch.py::TestGlobMatch::test_cases[case0] tests/test_globmatch.py::TestGlobMatch::test_cases[case1] tests/test_globmatch.py::TestGlobMatch::test_cases[case2] tests/test_globmatch.py::TestGlobMatch::test_cases[case3] tests/test_globmatch.py::TestGlobMatch::test_cases[case4] tests/test_globmatch.py::TestGlobMatch::test_cases[case5] tests/test_globmatch.py::TestGlobMatch::test_cases[case6] tests/test_globmatch.py::TestGlobMatch::test_cases[case7] tests/test_globmatch.py::TestGlobMatch::test_cases[case8] tests/test_globmatch.py::TestGlobMatch::test_cases[case9] tests/test_globmatch.py::TestGlobMatch::test_cases[case10] tests/test_globmatch.py::TestGlobMatch::test_cases[case11] tests/test_globmatch.py::TestGlobMatch::test_cases[case12] tests/test_globmatch.py::TestGlobMatch::test_cases[case13] tests/test_globmatch.py::TestGlobMatch::test_cases[case14] tests/test_globmatch.py::TestGlobMatch::test_cases[case15] tests/test_globmatch.py::TestGlobMatch::test_cases[case16] tests/test_globmatch.py::TestGlobMatch::test_cases[case17] tests/test_globmatch.py::TestGlobMatch::test_cases[case18] tests/test_globmatch.py::TestGlobMatch::test_cases[case19] tests/test_globmatch.py::TestGlobMatch::test_cases[case20] tests/test_globmatch.py::TestGlobMatch::test_cases[case21] tests/test_globmatch.py::TestGlobMatch::test_cases[case22] tests/test_globmatch.py::TestGlobMatch::test_cases[case23] tests/test_globmatch.py::TestGlobMatch::test_cases[case24] tests/test_globmatch.py::TestGlobMatch::test_cases[case25] tests/test_globmatch.py::TestGlobMatch::test_cases[case26] tests/test_globmatch.py::TestGlobMatch::test_cases[case27] tests/test_globmatch.py::TestGlobMatch::test_cases[case28] tests/test_globmatch.py::TestGlobMatch::test_cases[case29] tests/test_globmatch.py::TestGlobMatch::test_cases[case30] tests/test_globmatch.py::TestGlobMatch::test_cases[case31] tests/test_globmatch.py::TestGlobMatch::test_cases[case32] tests/test_globmatch.py::TestGlobMatch::test_cases[case33] tests/test_globmatch.py::TestGlobMatch::test_cases[case34] tests/test_globmatch.py::TestGlobMatch::test_cases[case35] tests/test_globmatch.py::TestGlobMatch::test_cases[case36] tests/test_globmatch.py::TestGlobMatch::test_cases[case37] tests/test_globmatch.py::TestGlobMatch::test_cases[case38] tests/test_globmatch.py::TestGlobMatch::test_cases[case39] tests/test_globmatch.py::TestGlobMatch::test_cases[case40] tests/test_globmatch.py::TestGlobMatch::test_cases[case41] tests/test_globmatch.py::TestGlobMatch::test_cases[case42] tests/test_globmatch.py::TestGlobMatch::test_cases[case43] tests/test_globmatch.py::TestGlobMatch::test_cases[case44] tests/test_globmatch.py::TestGlobMatch::test_cases[case45] tests/test_globmatch.py::TestGlobMatchSpecial::test_glob_integrity tests/test_globmatch.py::TestGlobMatchSpecial::test_glob_parsing_nix tests/test_globmatch.py::TestGlobMatchSpecial::test_glob_parsing_win tests/test_globmatch.py::TestGlobMatchSpecial::test_unfinished_ext tests/test_globmatch.py::TestGlobMatchSpecial::test_windows_drives
wcmatch/_wcparse.py wcmatch/file_hidden.py docs/src/markdown/changelog.md
wcmatch/_wcparse.py wcmatch/file_hidden.py docs/src/markdown/changelog.md