Automatically create output directories

This commit is contained in:
Jouke Witteveen 2021-05-10 15:47:20 +02:00
parent 28aa67314e
commit efc15cf4f1
2 changed files with 5 additions and 2 deletions

View file

@ -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:

View file

@ -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