Describe the bug
The Monte Carlo test fixtures pass a bare filename, so the logs land in whatever directory pytest was started from. Running the unit tests leaves three untracked files in the repository root, and nothing is ignoring them.
To Reproduce
On a clean develop:
$ git status --porcelain # nothing
$ pytest tests/unit/simulation -q
197 passed, 5 skipped
$ git status --porcelain
?? monte_carlo_test.errors.txt
?? monte_carlo_test.inputs.txt
?? monte_carlo_test.outputs.txt
All three are zero bytes, so they come from the files being opened rather than from anything being written.
Expected behavior
The suite leaves the working tree as it found it.
Additional context
The name comes from the shared fixture:
# tests/fixtures/monte_carlo/monte_carlo_fixtures.py
return MonteCarlo(
filename="monte_carlo_test",
...
)
That is relative, so it resolves against the current working directory. It appears in three places: twice in that fixture and once in tests/unit/simulation/test_monte_carlo_plots_background.py.
There is already a workaround for this in the tree, which is what made me look. tests/integration/simulation/test_monte_carlo.py carries a helper that removes the files by name:
def _post_test_file_cleanup():
"""Clean monte carlo files after test session if they exist."""
files_to_cleanup = [
"monte_carlo_class_example.kml",
"monte_carlo_test.errors.txt",
...
It is called from finally blocks in the integration tests, so it does not run for a unit-only invocation, which is why those runs leave the files behind. Its list also names a .kml and three .png, so more than the Monte Carlo logs are being written to the working directory.
Two ways to go, and I do not have a preference strong enough to argue for one:
- point the fixtures at
tmp_path, which removes the need for the cleanup helper as well;
- or add the names to
.gitignore, which hides them without stopping them.
The first is the one that would let the helper go away. Happy to open a pull request if that is the direction, though it touches fixtures several tests share, so it seemed worth asking first.
Not urgent. It is a papercut, but an untracked file in the root is easy to sweep into an unrelated commit.
Describe the bug
The Monte Carlo test fixtures pass a bare
filename, so the logs land in whatever directory pytest was started from. Running the unit tests leaves three untracked files in the repository root, and nothing is ignoring them.To Reproduce
On a clean
develop:All three are zero bytes, so they come from the files being opened rather than from anything being written.
Expected behavior
The suite leaves the working tree as it found it.
Additional context
The name comes from the shared fixture:
That is relative, so it resolves against the current working directory. It appears in three places: twice in that fixture and once in
tests/unit/simulation/test_monte_carlo_plots_background.py.There is already a workaround for this in the tree, which is what made me look.
tests/integration/simulation/test_monte_carlo.pycarries a helper that removes the files by name:It is called from
finallyblocks in the integration tests, so it does not run for a unit-only invocation, which is why those runs leave the files behind. Its list also names a.kmland three.png, so more than the Monte Carlo logs are being written to the working directory.Two ways to go, and I do not have a preference strong enough to argue for one:
tmp_path, which removes the need for the cleanup helper as well;.gitignore, which hides them without stopping them.The first is the one that would let the helper go away. Happy to open a pull request if that is the direction, though it touches fixtures several tests share, so it seemed worth asking first.
Not urgent. It is a papercut, but an untracked file in the root is easy to sweep into an unrelated commit.