diff options
-rw-r--r-- | isort/main.py | 7 | ||||
-rw-r--r-- | tests/test_main.py | 21 |
2 files changed, 28 insertions, 0 deletions
diff --git a/isort/main.py b/isort/main.py index 5d48f84c..b9b86687 100644 --- a/isort/main.py +++ b/isort/main.py @@ -4,6 +4,7 @@ import functools import glob import os import re +import stat import sys from pathlib import Path from typing import Any, Dict, Iterable, Iterator, List, MutableMapping, Optional, Sequence @@ -45,6 +46,12 @@ def is_python_file(path: str) -> bool: return False try: + if stat.S_ISFIFO(os.stat(path).st_mode): + return False + except OSError: + pass + + try: with open(path, "rb") as fp: line = fp.readline(100) except OSError: diff --git a/tests/test_main.py b/tests/test_main.py new file mode 100644 index 00000000..300108a0 --- /dev/null +++ b/tests/test_main.py @@ -0,0 +1,21 @@ +import os +import sys + +import pytest + +from isort import main + + +def test_is_python_file(): + assert main.is_python_file("file.py") + assert main.is_python_file("file.pyi") + assert main.is_python_file("file.pyx") + assert not main.is_python_file("file.pyc") + assert not main.is_python_file("file.txt") + + +@pytest.mark.skipif(sys.platform == "win32", reason="cannot create fifo file on Windows platform") +def test_is_python_file_fifo(tmpdir): + fifo_file = os.path.join(tmpdir, "fifo_file") + os.mkfifo(fifo_file) + assert not main.is_python_file(fifo_file) |