Source code for toolbox_scs.test.test_utils

import unittest
import logging
import os
import sys
import argparse


from toolbox_scs.util.data_access import (
    find_run_dir,
    )
from toolbox_scs.util.exceptions import ToolBoxPathError

[docs]suites = {"ed-extensions": ( "test_rundir1", "test_rundir2", "test_rundir3",
) }
[docs]def list_suites(): print("""\nPossible test suites:\n-------------------------""") for key in suites: print(key) print("-------------------------\n")
[docs]class TestDataAccess(unittest.TestCase): @classmethod
[docs] def setUpClass(cls): pass
@classmethod
[docs] def tearDownClass(cls): pass
[docs] def setUp(self): pass
[docs] def tearDown(self): pass
[docs] def test_rundir1(self): Proposal = 2212 Run = 235 Dir = find_run_dir(Proposal, Run) self.assertEqual(Dir, "/gpfs/exfel/exp/SCS/201901/p002212/raw/r0235")
[docs] def test_rundir2(self): Proposal = 23678 Run = 235 with self.assertRaises(Exception) as cm: find_run_dir(Proposal, Run) exp = cm.exception self.assertEqual(str(exp), "Couldn't find proposal dir for 'p023678'")
[docs] def test_rundir3(self): Proposal = 2212 Run = 800 with self.assertRaises(ToolBoxPathError) as cm: find_run_dir(Proposal, Run) exp_msg = cm.exception.message print(exp_msg) path = f'/gpfs/exfel/exp/SCS/201901/p00{Proposal}/raw/r0{Run}' err_msg = f"Invalid path: {path}. " \ "The constructed path does not exist." self.assertEqual(exp_msg, err_msg)
[docs]def suite(*tests): suite = unittest.TestSuite() for test in tests: suite.addTest(TestDataAccess(test)) return suite
[docs]def main(*cliargs): logging.basicConfig(level=logging.DEBUG) log_root = logging.getLogger(__name__) try: for test_suite in cliargs: if test_suite in suites: runner = unittest.TextTestRunner(verbosity=2) runner.run(suite(*suites[test_suite])) else: log_root.warning( "Unknown suite: '{}'".format(test_suite)) pass except Exception as err: log_root.error("Unecpected error: {}".format(err), exc_info=True) pass
if __name__ == '__main__':
[docs] parser = argparse.ArgumentParser()
parser.add_argument('--list-suites', action='store_true', help='list possible test suites') parser.add_argument('--run-suites', metavar='S', nargs='+', action='store', help='a list of valid test suites') args = parser.parse_args() if args.list_suites: list_suites() if args.run_suites: main(*args.run_suites)