Merge pull request #1329 from joukewitteveen/output-directories

Automatically create output directories
This commit is contained in:
Anthony Sottile 2021-05-10 08:30:00 -07:00 committed by GitHub
commit 1d30b79ce1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 2 deletions

View file

@ -1,5 +1,6 @@
"""The base class and interface for all formatting plugins.""" """The base class and interface for all formatting plugins."""
import argparse import argparse
import os
from typing import IO from typing import IO
from typing import List from typing import List
from typing import Optional from typing import Optional
@ -76,6 +77,8 @@ class BaseFormatter:
This defaults to initializing :attr:`output_fd` if :attr:`filename` This defaults to initializing :attr:`output_fd` if :attr:`filename`
""" """
if self.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") self.output_fd = open(self.filename, "a")
def handle(self, error: "Violation") -> None: 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") tmpdir.join("t.py").write("import os\n")
with tmpdir.as_cwd(): 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() out, err = capsys.readouterr()
assert out == err == "" assert out == err == ""
expected = "t.py:1:1: F401 'os' imported but unused\n" 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