Skip to content

Commit

Permalink
mv temp_output_dir to pytest conftest for multiple testfiles
Browse files Browse the repository at this point in the history
  • Loading branch information
asmacdo committed Jun 12, 2024
1 parent 064f562 commit 2cf10ab
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 33 deletions.
10 changes: 10 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import os
from pathlib import Path
import pytest


@pytest.fixture
def temp_output_dir(tmp_path: Path) -> str:
# Append path separator so that value is recognized as a directory when
# passed to `output_prefix`
return str(tmp_path) + os.sep
9 changes: 0 additions & 9 deletions test/test_execution.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,12 @@
from __future__ import annotations
import os
from pathlib import Path
from unittest import mock
import pytest
from utils import assert_files
from duct.__main__ import Arguments, Outputs, RecordTypes, execute

TEST_SCRIPT = str(Path(__file__).with_name("data") / "test_script.py")


@pytest.fixture
def temp_output_dir(tmp_path: Path) -> str:
# Append path separator so that value is recognized as a directory when
# passed to `output_prefix`
return str(tmp_path) + os.sep


def test_sanity_green(temp_output_dir: str) -> None:
args = Arguments(
command="echo",
Expand Down
48 changes: 24 additions & 24 deletions test/test_prepare_outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,67 +6,66 @@


@patch("sys.stdout", new_callable=MockStream)
def test_prepare_outputs_all_stdout(mock_stdout: MockStream) -> None:
output_prefix = "test_outputs_"
def test_prepare_outputs_all_stdout(
mock_stdout: MockStream, temp_output_dir: str
) -> None:
with patch("duct.__main__.TailPipe") as mock_tee_stream, patch(
"builtins.open", new_callable=MagicMock
) as mock_open:
mock_tee_stream.return_value.start = MagicMock()
stdout, stderr = prepare_outputs(
Outputs.ALL, Outputs.STDOUT, output_prefix, clobber=True
Outputs.ALL, Outputs.STDOUT, temp_output_dir, clobber=True
)
mock_tee_stream.assert_called_with(
f"{output_prefix}stdout", buffer=mock_stdout.buffer
f"{temp_output_dir}stdout", buffer=mock_stdout.buffer
)
assert stdout == mock_tee_stream.return_value
assert stderr == mock_open.return_value


@patch("sys.stderr", new_callable=MockStream)
def test_prepare_outputs_all_stderr(mock_stderr: MockStream) -> None:
output_prefix = "test_outputs_"
def test_prepare_outputs_all_stderr(
mock_stderr: MockStream, temp_output_dir: str
) -> None:
with patch("duct.__main__.TailPipe") as mock_tee_stream, patch(
"builtins.open", new_callable=MagicMock
) as mock_open:
mock_tee_stream.return_value.start = MagicMock()
stdout, stderr = prepare_outputs(
Outputs.ALL, Outputs.STDERR, output_prefix, clobber=True
Outputs.ALL, Outputs.STDERR, temp_output_dir, clobber=True
)
mock_tee_stream.assert_called_with(
f"{output_prefix}stderr", buffer=mock_stderr.buffer
f"{temp_output_dir}stderr", buffer=mock_stderr.buffer
)
assert stdout == mock_open.return_value
assert stderr == mock_tee_stream.return_value


def test_prepare_outputs_all_none() -> None:
output_prefix = "test_outputs_"
def test_prepare_outputs_all_none(temp_output_dir: str) -> None:
with patch("builtins.open", new_callable=MagicMock) as mock_open:
stdout, stderr = prepare_outputs(
Outputs.ALL, Outputs.NONE, output_prefix, clobber=True
Outputs.ALL, Outputs.NONE, temp_output_dir, clobber=True
)
calls = [
call(f"{output_prefix}stdout", "w"),
call(f"{output_prefix}stderr", "w"),
call(f"{temp_output_dir}stdout", "w"),
call(f"{temp_output_dir}stderr", "w"),
]
mock_open.assert_has_calls(calls, any_order=True)
assert stdout == mock_open.return_value
assert stderr == mock_open.return_value


def test_prepare_outputs_none_stdout() -> None:
output_prefix = "test_outputs_"
def test_prepare_outputs_none_stdout(temp_output_dir: str) -> None:
stdout, stderr = prepare_outputs(
Outputs.NONE, Outputs.STDOUT, output_prefix, clobber=True
Outputs.NONE, Outputs.STDOUT, temp_output_dir, clobber=True
)
assert stdout is None
assert stderr == subprocess.DEVNULL


def test_prepare_outputs_none_stderr() -> None:
output_prefix = "test_outputs_"
def test_prepare_outputs_none_stderr(temp_output_dir: str) -> None:
stdout, stderr = prepare_outputs(
Outputs.NONE, Outputs.STDERR, output_prefix, clobber=True
Outputs.NONE, Outputs.STDERR, temp_output_dir, clobber=True
)
assert stderr is None
assert stdout == subprocess.DEVNULL
Expand All @@ -75,18 +74,19 @@ def test_prepare_outputs_none_stderr() -> None:
@patch("sys.stderr", new_callable=MockStream)
@patch("sys.stdout", new_callable=MockStream)
def test_prepare_outputs_all_all(
mock_stdout: MockStream, mock_stderr: MockStream
mock_stdout: MockStream,
mock_stderr: MockStream,
temp_output_dir: str,
) -> None:
output_prefix = "test_outputs_"
with patch("duct.__main__.TailPipe") as mock_tee_stream:
mock_tee_stream.return_value.start = MagicMock()
stdout, stderr = prepare_outputs(
Outputs.ALL, Outputs.ALL, output_prefix, clobber=True
Outputs.ALL, Outputs.ALL, temp_output_dir, clobber=True
)
assert stdout == mock_tee_stream.return_value
assert stderr == mock_tee_stream.return_value
calls = [
call(f"{output_prefix}stdout", buffer=mock_stdout.buffer),
call(f"{output_prefix}stderr", buffer=mock_stderr.buffer),
call(f"{temp_output_dir}stdout", buffer=mock_stdout.buffer),
call(f"{temp_output_dir}stderr", buffer=mock_stderr.buffer),
]
mock_tee_stream.assert_has_calls(calls, any_order=True)

0 comments on commit 2cf10ab

Please sign in to comment.