-
Notifications
You must be signed in to change notification settings - Fork 11
/
irods_consortium_continuous_integration_test_hook.py
50 lines (39 loc) · 1.98 KB
/
irods_consortium_continuous_integration_test_hook.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
from __future__ import print_function
import optparse
import os
import shutil
import glob
import irods_python_ci_utilities
def install_test_prerequisites():
irods_python_ci_utilities.subprocess_get_output(['sudo', 'python3', '-m', 'pip', 'install', 'boto3', '--upgrade'], check_rc=True)
def main():
parser = optparse.OptionParser()
parser.add_option('--output_root_directory')
parser.add_option('--built_packages_root_directory')
parser.add_option('--test', metavar='dotted name')
parser.add_option('--skip-setup', action='store_false', dest='do_setup', default=True)
options, _ = parser.parse_args()
built_packages_root_directory = options.built_packages_root_directory
package_suffix = irods_python_ci_utilities.get_package_suffix()
os_specific_directory = irods_python_ci_utilities.append_os_specific_directory(built_packages_root_directory)
if options.do_setup:
irods_python_ci_utilities.install_os_packages_from_files(
glob.glob(os.path.join(os_specific_directory,
f'irods-microservice-plugins-curl*.{package_suffix}')
)
)
install_test_prerequisites()
test = options.test or 'test_irods_microservice_plugins_curl'
try:
test_output_file = 'log/test_output.log'
irods_python_ci_utilities.subprocess_get_output(['sudo', 'su', '-', 'irods', '-c',
f'python3 scripts/run_tests.py --xml_output --run_s {test} 2>&1 | tee {test_output_file}; exit $PIPESTATUS'],
check_rc=True)
finally:
output_root_directory = options.output_root_directory
if output_root_directory:
irods_python_ci_utilities.gather_files_satisfying_predicate('/var/lib/irods/log', output_root_directory, lambda x: True)
shutil.copy('/var/lib/irods/log/test_output.log', output_root_directory)
#shutil.copytree('/var/lib/irods/test-reports', os.path.join(output_root_directory, 'test-reports'))
if __name__ == '__main__':
main()