Skip to content

Commit 42335b2

Browse files
authored
fix: prevent pytest tests from creating files in working directory or data dirs
1 parent d41f7b1 commit 42335b2

24 files changed

Lines changed: 511744 additions & 82 deletions

tests/apps/test_base.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@ def test_sample_N():
3535
assert a == [2, 3, 1, 2]
3636

3737

38-
def test_download():
38+
def test_download(tmp_path, monkeypatch):
3939
from jcvi.apps.base import cleanup, download
4040
from jcvi.apps.vecscreen import ECOLI_URL, UNIVEC_URL
4141

42+
monkeypatch.chdir(tmp_path)
4243
ret = download("http://www.google.com")
4344
assert ret == "index.html"
4445
cleanup(ret)
@@ -83,10 +84,11 @@ def test_flatten(input_list, output_list):
8384
assert flatten(input_list) == output_list
8485

8586

86-
def test_cleanup():
87+
def test_cleanup(tmp_path, monkeypatch):
8788
from jcvi.apps.base import cleanup, mkdir
8889
from jcvi.formats.base import write_file
8990

91+
monkeypatch.chdir(tmp_path)
9092
write_file("a", "content_a", skipcheck=True)
9193
write_file("b", "content_b", skipcheck=True)
9294
write_file("c", "content_c", skipcheck=True)
@@ -109,11 +111,11 @@ def test_cleanup():
109111
assert not op.exists(path)
110112

111113

112-
def test_need_update():
114+
def test_need_update(tmp_path, monkeypatch):
113115
from jcvi.apps.base import cleanup, need_update
114116
from jcvi.formats.base import write_file
115117

116-
cleanup("a", "b", "c")
118+
monkeypatch.chdir(tmp_path)
117119
assert need_update("does_not_exist.txt", "does_not_exist.txt")
118120

119121
write_file("a", "content_a", skipcheck=True)
@@ -130,7 +132,6 @@ def test_need_update():
130132
assert need_update(["c", "b"], "a")
131133
assert not need_update("a", ["b", "c"])
132134
assert need_update(["a", "b"], ["c", "d"])
133-
cleanup("a", "b", "c")
134135

135136

136137
def test_set_image_options():
@@ -155,9 +156,10 @@ def test_set_image_options():
155156
g.add_argument("--group", default="jcvi", help="pytest coverage")
156157

157158

158-
def test_getpath():
159+
def test_getpath(tmp_path, monkeypatch):
159160
from jcvi.apps.base import getpath
160161

162+
monkeypatch.chdir(tmp_path)
161163
with mock.patch("builtins.input", lambda _: "e\rvvvvvvvv = zzzzzzzz\n"):
162164
assert getpath("not-part-of-path", name="CLUSTALW2", warn="warn") is None
163165

tests/apps/test_fetch.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,15 @@
88

99
@patch("builtins.input", return_value="username")
1010
@patch("getpass.getpass", return_value="password")
11-
def test_get_cookies(mock_username, mock_password):
11+
def test_get_cookies(mock_username, mock_password, tmp_path, monkeypatch):
1212
from jcvi.apps.fetch import get_cookies, PHYTOZOME_COOKIES
13-
from jcvi.apps.base import cleanup, which
13+
from jcvi.apps.base import which
1414

15-
cleanup(PHYTOZOME_COOKIES)
15+
monkeypatch.chdir(tmp_path)
1616
if which("curl"):
1717
assert get_cookies() == PHYTOZOME_COOKIES
1818
else:
1919
assert get_cookies() is None # errored out with "curl not found"
20-
cleanup(PHYTOZOME_COOKIES)
2120

2221

2322
def test_usage_with_percent_prog():
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
##agp-version 2.1
2+
# COMMENT: Generated by ALLMAPS 0.1.dev2+g2ce5bee02 (2026-07-05)
3+
# COMMAND: python -m jcvi.assembly.allmaps path /home/runner/work/jcvi/jcvi/tests/assembly/allmaps.py/inputs/JM-2.bed /home/runner/work/jcvi/jcvi/tests/assembly/allmaps.py/inputs/scaffolds.fasta.gz -w /home/runner/work/jcvi/jcvi/tests/assembly/allmaps.py/inputs/weights.txt
4+
# FIELDS: object, object_beg, object_end, part_number, component_type, component_id/gap_length, component_beg/gap_type, component_end/linkage, orientation/linkage_evidence
5+
chr23 1 137336 1 W scaffold_821 1 137336 ?
6+
chr23 137337 137436 2 U 100 scaffold yes map
7+
chr23 137437 284865 3 W scaffold_792 1 147429 ?
8+
chr23 284866 284965 4 U 100 scaffold yes map
9+
chr23 284966 412560 5 W scaffold_866 1 127595 ?
10+
chr23 412561 412660 6 U 100 scaffold yes map
11+
chr23 412661 484207 7 W scaffold_1189 1 71547 -
12+
chr23 484208 484307 8 U 100 scaffold yes map
13+
chr23 484308 891092 9 W scaffold_375 1 406785 -
14+
chr23 891093 891192 10 U 100 scaffold yes map
15+
chr23 891193 1393339 11 W scaffold_310 1 502147 -
16+
chr23 1393340 1393439 12 U 100 scaffold yes map
17+
chr23 1393440 2982363 13 W scaffold_95 1 1588924 ?
18+
chr23 2982364 2982463 14 U 100 scaffold yes map
19+
chr23 2982464 4080317 15 W scaffold_148 1 1097854 -
20+
chr23 4080318 4080417 16 U 100 scaffold yes map
21+
chr23 4080418 4781064 17 W scaffold_225 1 700647 ?
22+
chr23 4781065 4781164 18 U 100 scaffold yes map
23+
chr23 4781165 5760583 19 W scaffold_164 1 979419 -
24+
chr23 5760584 5760683 20 U 100 scaffold yes map
25+
chr23 5760684 6999179 21 W scaffold_129 1 1238496 +
26+
chr23 6999180 6999279 22 U 100 scaffold yes map
27+
chr23 6999280 9562302 23 W scaffold_43 1 2563023 -
28+
chr23 9562303 9562402 24 U 100 scaffold yes map
29+
chr23 9562403 11388199 25 W scaffold_80 1 1825797 -
30+
chr23 11388200 11388299 26 U 100 scaffold yes map
31+
chr23 11388300 12471757 27 W scaffold_150 1 1083458 -
32+
chr23 12471758 12471857 28 U 100 scaffold yes map
33+
chr23 12471858 12942229 29 W scaffold_331 1 470372 ?
34+
chr23 12942230 12942329 30 U 100 scaffold yes map
35+
chr23 12942330 13145841 31 W scaffold_642 1 203512 ?
36+
chr23 13145842 13145941 32 U 100 scaffold yes map
37+
chr23 13145942 13277112 33 W scaffold_829 1 131171 -
38+
chr23 13277113 13277212 34 U 100 scaffold yes map
39+
chr23 13277213 13540514 35 W scaffold_513 1 263302 -
40+
chr23 13540515 13540614 36 U 100 scaffold yes map
41+
chr23 13540615 13742295 37 W scaffold_648 1 201681 ?
42+
chr23 13742296 13742395 38 U 100 scaffold yes map
43+
chr23 13742396 14146998 39 W scaffold_382 1 404603 +
44+
chr23 14146999 14147098 40 U 100 scaffold yes map
45+
chr23 14147099 14246084 41 W scaffold_1006 1 98986 ?
46+
chr23 14246085 14246184 42 U 100 scaffold yes map
47+
chr23 14246185 15272643 43 W scaffold_158 1 1026459 ?
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
##agp-version 2.1
2+
# COMMENT: Generated by ALLMAPS 0.1.dev2+g2ce5bee02 (2026-07-05)
3+
# COMMAND: python -m jcvi.assembly.allmaps path /home/runner/work/jcvi/jcvi/tests/assembly/allmaps.py/inputs/JM-2.bed /home/runner/work/jcvi/jcvi/tests/assembly/allmaps.py/inputs/scaffolds.fasta.gz -w /home/runner/work/jcvi/jcvi/tests/assembly/allmaps.py/inputs/weights.txt
4+
# FIELDS: object, object_beg, object_end, part_number, component_type, component_id/gap_length, component_beg/gap_type, component_end/linkage, orientation/linkage_evidence
5+
chr23 1 137336 1 W scaffold_821 1 137336 ?
6+
chr23 137337 137436 2 U 100 scaffold yes map
7+
chr23 137437 284865 3 W scaffold_792 1 147429 ?
8+
chr23 284866 284965 4 U 100 scaffold yes map
9+
chr23 284966 412560 5 W scaffold_866 1 127595 ?
10+
chr23 412561 412660 6 U 100 scaffold yes map
11+
chr23 412661 484207 7 W scaffold_1189 1 71547 -
12+
chr23 484208 484307 8 U 100 scaffold yes map
13+
chr23 484308 891092 9 W scaffold_375 1 406785 -
14+
chr23 891093 891192 10 U 100 scaffold yes map
15+
chr23 891193 1393339 11 W scaffold_310 1 502147 -
16+
chr23 1393340 1393439 12 U 100 scaffold yes map
17+
chr23 1393440 2982363 13 W scaffold_95 1 1588924 ?
18+
chr23 2982364 2982463 14 U 100 scaffold yes map
19+
chr23 2982464 4080317 15 W scaffold_148 1 1097854 -
20+
chr23 4080318 4080417 16 U 100 scaffold yes map
21+
chr23 4080418 4781064 17 W scaffold_225 1 700647 ?
22+
chr23 4781065 4781164 18 U 100 scaffold yes map
23+
chr23 4781165 5760583 19 W scaffold_164 1 979419 -
24+
chr23 5760584 5760683 20 U 100 scaffold yes map
25+
chr23 5760684 6999179 21 W scaffold_129 1 1238496 +
26+
chr23 6999180 6999279 22 U 100 scaffold yes map
27+
chr23 6999280 9562302 23 W scaffold_43 1 2563023 -
28+
chr23 9562303 9562402 24 U 100 scaffold yes map
29+
chr23 9562403 11388199 25 W scaffold_80 1 1825797 -
30+
chr23 11388200 11388299 26 U 100 scaffold yes map
31+
chr23 11388300 12471757 27 W scaffold_150 1 1083458 -
32+
chr23 12471758 12471857 28 U 100 scaffold yes map
33+
chr23 12471858 12942229 29 W scaffold_331 1 470372 ?
34+
chr23 12942230 12942329 30 U 100 scaffold yes map
35+
chr23 12942330 13145841 31 W scaffold_642 1 203512 ?
36+
chr23 13145842 13145941 32 U 100 scaffold yes map
37+
chr23 13145942 13277112 33 W scaffold_829 1 131171 -
38+
chr23 13277113 13277212 34 U 100 scaffold yes map
39+
chr23 13277213 13540514 35 W scaffold_513 1 263302 -
40+
chr23 13540515 13540614 36 U 100 scaffold yes map
41+
chr23 13540615 13742295 37 W scaffold_648 1 201681 ?
42+
chr23 13742296 13742395 38 U 100 scaffold yes map
43+
chr23 13742396 14146998 39 W scaffold_382 1 404603 +
44+
chr23 14146999 14147098 40 U 100 scaffold yes map
45+
chr23 14147099 14246084 41 W scaffold_1006 1 98986 ?
46+
chr23 14246085 14246184 42 U 100 scaffold yes map
47+
chr23 14246185 15272643 43 W scaffold_158 1 1026459 ?

0 commit comments

Comments
 (0)