diff options
| author | Jouke Witteveen <j.witteveen@cosine.nl> | 2021-05-10 15:47:20 +0200 |
|---|---|---|
| committer | Jouke Witteveen <j.witteveen@cosine.nl> | 2021-05-10 16:41:01 +0200 |
| commit | efc15cf4f10ad45f88bda1cb6578b9ef7a06cd8d (patch) | |
| tree | dd6d5049906e7471b6739e6d3244081fbee06b05 | |
| parent | 28aa67314e2c451002d6362c54aed6e08f4f9f19 (diff) | |
| download | flake8-efc15cf4f10ad45f88bda1cb6578b9ef7a06cd8d.tar.gz | |
Automatically create output directories
| -rw-r--r-- | src/flake8/formatting/base.py | 3 | ||||
| -rw-r--r-- | tests/integration/test_main.py | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/flake8/formatting/base.py b/src/flake8/formatting/base.py index e362e65..806d9b8 100644 --- a/src/flake8/formatting/base.py +++ b/src/flake8/formatting/base.py @@ -1,5 +1,6 @@ """The base class and interface for all formatting plugins.""" import argparse +import os from typing import IO from typing import List from typing import Optional @@ -76,6 +77,8 @@ class BaseFormatter: This defaults to initializing :attr:`output_fd` if :attr:`filename` """ if self.filename: + dirname = os.path.dirname(os.path.abspath(self.filename)) + os.makedirs(dirname, exist_ok=True) self.output_fd = open(self.filename, "a") def handle(self, error: "Violation") -> None: diff --git a/tests/integration/test_main.py b/tests/integration/test_main.py index 5c99d3c..16ecba0 100644 --- a/tests/integration/test_main.py +++ b/tests/integration/test_main.py @@ -343,10 +343,10 @@ def test_output_file(tmpdir, capsys): tmpdir.join("t.py").write("import os\n") with tmpdir.as_cwd(): - _call_main(["t.py", "--output-file=f"], retv=1) + _call_main(["t.py", "--output-file=a/b/f"], retv=1) out, err = capsys.readouterr() assert out == err == "" expected = "t.py:1:1: F401 'os' imported but unused\n" - assert tmpdir.join("f").read() == expected + assert tmpdir.join("a/b/f").read() == expected |
