-
Notifications
You must be signed in to change notification settings - Fork 238
/
test_submit.py
120 lines (94 loc) · 3.85 KB
/
test_submit.py
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import os
import pytest
import tempfile
from typer.testing import CliRunner
from hailtop.hailctl.batch import cli
@pytest.fixture
def runner():
yield CliRunner(mix_stderr=False)
def write_script(dir: str, filename: str):
with open(f'{dir}/test_job.py', 'w') as f:
f.write(
f'''
import hailtop.batch as hb
b = hb.Batch()
j = b.new_job()
j.command('cat {filename}')
b.run(wait=False)
backend.close()
'''
)
def write_hello(filename: str):
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, 'w') as f:
f.write('hello\n')
def test_file_with_no_dest(runner: CliRunner):
with tempfile.TemporaryDirectory() as dir:
os.chdir(dir)
write_hello(f'{dir}/hello.txt')
write_script(dir, f'{dir}/hello.txt')
res = runner.invoke(cli.app, ['submit', '--files', 'hello.txt', 'test_job.py'])
assert res.exit_code == 0
def test_file_in_current_dir(runner: CliRunner):
with tempfile.TemporaryDirectory() as dir:
os.chdir(dir)
write_hello(f'{dir}/hello.txt')
write_script(dir, f'/hello.txt')
res = runner.invoke(cli.app, ['submit', '--files', 'hello.txt:/', 'test_job.py'])
assert res.exit_code == 0
def test_file_mount_in_child_dir(runner: CliRunner):
with tempfile.TemporaryDirectory() as dir:
os.chdir(dir)
write_hello(f'{dir}/hello.txt')
write_script(dir, '/child/hello.txt')
res = runner.invoke(cli.app, ['submit', '--files', 'hello.txt:/child/', 'test_job.py'])
assert res.exit_code == 0
def test_file_mount_in_child_dir_to_root_dir(runner: CliRunner):
with tempfile.TemporaryDirectory() as dir:
os.chdir(dir)
write_hello(f'{dir}/child/hello.txt')
write_script(dir, '/hello.txt')
res = runner.invoke(cli.app, ['submit', '--files', 'child/hello.txt:/', 'test_job.py'])
assert res.exit_code == 0
def test_mount_multiple_files(runner: CliRunner):
with tempfile.TemporaryDirectory() as dir:
os.chdir(dir)
write_hello(f'{dir}/child/hello1.txt')
write_hello(f'{dir}/child/hello2.txt')
write_script(dir, '/hello1.txt')
res = runner.invoke(
cli.app, ['submit', '--files', 'child/hello1.txt:/', '--files', 'child/hello2.txt:/', 'test_job.py']
)
assert res.exit_code == 0
def test_dir_mount_in_child_dir_to_child_dir(runner: CliRunner):
with tempfile.TemporaryDirectory() as dir:
os.chdir(dir)
write_hello(f'{dir}/child/hello1.txt')
write_hello(f'{dir}/child/hello2.txt')
write_script(dir, '/child/hello1.txt')
res = runner.invoke(cli.app, ['submit', '--files', 'child/:/child/', 'test_job.py'])
assert res.exit_code == 0
def test_file_outside_curdir(runner: CliRunner):
with tempfile.TemporaryDirectory() as dir:
os.mkdir(f'{dir}/working_dir')
os.chdir(f'{dir}/working_dir')
write_hello(f'{dir}/hello.txt')
write_script(dir, '/hello.txt')
res = runner.invoke(cli.app, ['submit', '--files', f'{dir}/hello.txt:/', '../test_job.py'])
assert res.exit_code == 0
def test_dir_outside_curdir(runner: CliRunner):
with tempfile.TemporaryDirectory() as dir:
os.mkdir(f'{dir}/working_dir')
os.chdir(f'{dir}/working_dir')
write_hello(f'{dir}/hello1.txt')
write_hello(f'{dir}/hello2.txt')
write_script(dir, '/hello1.txt')
res = runner.invoke(cli.app, ['submit', '--files', f'{dir}/:/', '../test_job.py'])
assert res.exit_code == 0
def test_file_prefixed_with_file(runner: CliRunner):
with tempfile.TemporaryDirectory() as dir:
os.chdir(dir)
write_hello(f'{dir}/hello.txt')
write_script(dir, '/hello.txt')
res = runner.invoke(cli.app, ['submit', '--files', f'file://{dir}/hello.txt:/', 'test_job.py'])
assert res.exit_code == 0