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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
import argparse
import os
import pytest
import parsl
import parsl.app.errors as pe
from parsl.app.app import bash_app
from parsl.app.errors import BashExitFailure
from parsl.tests.configs.local_threads import fresh_config as local_config
@bash_app
def command_not_found(stderr='std.err', stdout='std.out'):
cmd_line = 'catdogcat'
return cmd_line
@bash_app
def bash_misuse(stderr='std.err', stdout='std.out'):
cmd_line = 'exit 15'
return cmd_line
@bash_app
def div_0(stderr='std.err', stdout='std.out'):
cmd_line = '$((5/0))'
return cmd_line
@bash_app
def not_executable(stderr='std.err', stdout='std.out'):
cmd_line = '/dev/null'
return cmd_line
@bash_app
def bad_format(stderr='std.err', stdout='std.out'):
cmd_line = 'echo {0}'
return cmd_line
test_matrix = {
div_0: {
'exit_code': 1
},
bash_misuse: {
'exit_code': 15
},
command_not_found: {
'exit_code': 127
},
not_executable: {
'exit_code': 126
}
}
whitelist = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'configs', '*threads*')
@pytest.mark.shared_fs
def test_div_0(test_fn=div_0):
err_code = test_matrix[test_fn]['exit_code']
f = test_fn()
try:
f.result()
except BashExitFailure as e:
print("Caught exception", e)
assert e.exitcode == err_code, "{0} expected err_code:{1} but got {2}".format(test_fn.__name__,
err_code,
e.exitcode)
print(os.listdir('.'))
os.remove('std.err')
os.remove('std.out')
@pytest.mark.shared_fs
def test_bash_misuse(test_fn=bash_misuse):
err_code = test_matrix[test_fn]['exit_code']
f = test_fn()
try:
f.result()
except pe.BashExitFailure as e:
print("Caught expected BashExitFailure", e)
assert e.exitcode == err_code, "{0} expected err_code:{1} but got {2}".format(test_fn.__name__,
err_code,
e.exitcode)
os.remove('std.err')
os.remove('std.out')
@pytest.mark.shared_fs
def test_command_not_found(test_fn=command_not_found):
err_code = test_matrix[test_fn]['exit_code']
f = test_fn()
try:
f.result()
except pe.BashExitFailure as e:
print("Caught exception", e)
assert e.exitcode == err_code, "{0} expected err_code:{1} but got {2}".format(test_fn.__name__,
err_code,
e.exitcode)
os.remove('std.err')
os.remove('std.out')
return True
@pytest.mark.shared_fs
def test_not_executable(test_fn=not_executable):
err_code = test_matrix[test_fn]['exit_code']
f = test_fn()
try:
f.result()
except BashExitFailure as e:
print("Caught exception", e)
assert e.exitcode == err_code, "{0} expected err_code:{1} but got {2}".format(test_fn.__name__,
err_code,
e.exitcode)
os.remove('std.err')
os.remove('std.out')
return True
def run_app(test_fn, err_code):
f = test_fn()
print(f)
try:
f.result()
except BashExitFailure as e:
print("Caught exception", e)
assert e.exitcode == err_code, "{0} expected err_code:{1} but got {2}".format(test_fn.__name__,
err_code,
e.exitcode)
os.remove('std.err')
os.remove('std.out')
return True
|