generated from sunbeam-labs/sbx_template
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathtest_dry_run.py
More file actions
executable file
·106 lines (82 loc) · 2.48 KB
/
test_dry_run.py
File metadata and controls
executable file
·106 lines (82 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import os
import pytest
import shutil
import subprocess as sp
import tempfile
from pathlib import Path
@pytest.fixture
def setup():
temp_dir = Path(tempfile.mkdtemp())
reads_fp = Path(".tests/data/reads/").resolve()
project_dir = temp_dir / "project/"
sp.check_output(["sunbeam", "init", "--data_fp", reads_fp, project_dir])
config_fp = project_dir / "sunbeam_config.yml"
config_str = f"sbx_sga: {{mash_ref: '{temp_dir}/dummy.msh'}}"
Path(temp_dir / "dummy.msh").touch()
sp.check_output(
[
"sunbeam",
"config",
"--modify",
f"{config_str}",
f"{config_fp}",
]
)
config_str = f"sbx_sga: {{checkm_ref: '{temp_dir}/dummy.1.dmnd'}}"
Path(temp_dir / "dummy.1.dmnd").touch()
sp.check_output(
[
"sunbeam",
"config",
"--modify",
f"{config_str}",
f"{config_fp}",
]
)
config_str = f"sbx_sga: {{bakta_ref: '{temp_dir}/bakta/db/'}}"
Path(temp_dir / "bakta/db/").mkdir(parents=True, exist_ok=True)
sp.check_output(
[
"sunbeam",
"config",
"--modify",
f"{config_str}",
f"{config_fp}",
]
)
yield temp_dir, project_dir
shutil.rmtree(temp_dir)
@pytest.fixture
def run_sunbeam(setup):
temp_dir, project_dir = setup
output_fp = project_dir / "sunbeam_output"
log_fp = output_fp / "logs"
stats_fp = project_dir / "stats"
sbx_proc = sp.run(
[
"sunbeam",
"run",
"--profile",
project_dir,
"all_sga",
"--directory",
temp_dir,
"-n",
],
capture_output=True,
text=True,
)
print("STDOUT: ", sbx_proc.stdout)
print("STDERR: ", sbx_proc.stderr)
if os.getenv("GITHUB_ACTIONS") == "true":
try:
shutil.copytree(log_fp, "logs/")
shutil.copytree(stats_fp, "stats/")
except FileNotFoundError:
print("No logs or stats directory found.")
output_fp = project_dir / "sunbeam_output"
benchmarks_fp = project_dir / "stats/"
yield output_fp, benchmarks_fp, sbx_proc
def test_dry_run(run_sunbeam):
output_fp, benchmarks_fp, proc = run_sunbeam
assert proc.returncode == 0, f"Sunbeam run failed with error: {proc.stderr}"