]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Make empty --include mean "anything goes", simplify `gen_python_files_in_dir`
authorŁukasz Langa <lukasz@langa.pl>
Fri, 1 Jun 2018 02:40:07 +0000 (19:40 -0700)
committerŁukasz Langa <lukasz@langa.pl>
Fri, 1 Jun 2018 02:40:07 +0000 (19:40 -0700)
black.py
tests/test_black.py

index 7587ba82161e2b9ed6f70d9ebc60bf18a1f341e1..8ac6d87e7c25d35ed4ecde193bf47f6b3a81006b 100644 (file)
--- a/black.py
+++ b/black.py
@@ -190,8 +190,10 @@ class FileMode(Flag):
     default=DEFAULT_INCLUDES,
     help=(
         "A regular expression that matches files and directories that should be "
-        "included on recursive searches. On Windows, use forward slashes for "
-        "directories."
+        "included on recursive searches.  An empty value means all files are "
+        "included regardless of the name.  Use forward slashes for directories on "
+        "all platforms (Windows, too).  Exclusions are calculated first, inclusions "
+        "later."
     ),
     show_default=True,
 )
@@ -201,8 +203,9 @@ class FileMode(Flag):
     default=DEFAULT_EXCLUDES,
     help=(
         "A regular expression that matches files and directories that should be "
-        "excluded on recursive searches. On Windows, use forward slashes for "
-        "directories."
+        "excluded on recursive searches.  An empty value means no paths are excluded. "
+        "Use forward slashes for directories on all platforms (Windows, too).  "
+        "Exclusions are calculated first, inclusions later."
     ),
     show_default=True,
 )
@@ -2794,28 +2797,20 @@ def gen_python_files_in_dir(
     """Generate all files under `path` whose paths are not excluded by the
     `exclude` regex, but are included by the `include` regex.
     """
-
     for child in path.iterdir():
-        searchable_path = str(child.as_posix())
-        if Path(child.parts[0]).is_dir():
-            searchable_path = "/" + searchable_path
+        normalized_path = child.resolve().as_posix()
         if child.is_dir():
-            searchable_path = searchable_path + "/"
-            exclude_match = exclude.search(searchable_path)
-            if exclude_match and len(exclude_match.group()) > 0:
-                continue
+            normalized_path += "/"
+        exclude_match = exclude.search(normalized_path)
+        if exclude_match and exclude_match.group(0):
+            continue
 
+        if child.is_dir():
             yield from gen_python_files_in_dir(child, include, exclude)
 
-        else:
-            include_match = include.search(searchable_path)
-            exclude_match = exclude.search(searchable_path)
-            if (
-                child.is_file()
-                and include_match
-                and len(include_match.group()) > 0
-                and (not exclude_match or len(exclude_match.group()) == 0)
-            ):
+        elif child.is_file():
+            include_match = include.search(normalized_path)
+            if include_match:
                 yield child
 
 
index c10dd1d90c3d3d217895ea52ba644010913a5ce6..08a3f31696df5c75fa745299dd3861ca7437b947 100644 (file)
@@ -868,24 +868,35 @@ class BlackTestCase(unittest.TestCase):
         path = THIS_DIR / "include_exclude_tests"
         empty = re.compile(r"")
         sources: List[Path] = []
+        expected = [
+            Path(path / "b/exclude/a.pie"),
+            Path(path / "b/exclude/a.py"),
+            Path(path / "b/exclude/a.pyi"),
+            Path(path / "b/dont_exclude/a.pie"),
+            Path(path / "b/dont_exclude/a.py"),
+            Path(path / "b/dont_exclude/a.pyi"),
+            Path(path / "b/.definitely_exclude/a.pie"),
+            Path(path / "b/.definitely_exclude/a.py"),
+            Path(path / "b/.definitely_exclude/a.pyi"),
+        ]
         sources.extend(
             black.gen_python_files_in_dir(
                 path, empty, re.compile(black.DEFAULT_EXCLUDES)
             )
         )
-        self.assertEqual([], (sources))
+        self.assertEqual(sorted(expected), sorted(sources))
 
     def test_empty_exclude(self) -> None:
         path = THIS_DIR / "include_exclude_tests"
         empty = re.compile(r"")
         sources: List[Path] = []
         expected = [
-            Path(THIS_DIR / "include_exclude_tests/b/dont_exclude/a.py"),
-            Path(THIS_DIR / "include_exclude_tests/b/dont_exclude/a.pyi"),
-            Path(THIS_DIR / "include_exclude_tests/b/exclude/a.py"),
-            Path(THIS_DIR / "include_exclude_tests/b/exclude/a.pyi"),
-            Path(THIS_DIR / "include_exclude_tests/b/.definitely_exclude/a.py"),
-            Path(THIS_DIR / "include_exclude_tests/b/.definitely_exclude/a.pyi"),
+            Path(path / "b/dont_exclude/a.py"),
+            Path(path / "b/dont_exclude/a.pyi"),
+            Path(path / "b/exclude/a.py"),
+            Path(path / "b/exclude/a.pyi"),
+            Path(path / "b/.definitely_exclude/a.py"),
+            Path(path / "b/.definitely_exclude/a.pyi"),
         ]
         sources.extend(
             black.gen_python_files_in_dir(