lms.testing.testdata
1import argparse 2import os 3import typing 4 5import edq.procedure.verify_exchanges 6import edq.testing.run 7 8import lms.backend.testing 9import lms.backend.canvas.model 10import lms.model.backend 11import lms.testing.serverrunner 12 13THIS_DIR: str = os.path.abspath(os.path.dirname(os.path.realpath(__file__))) 14ROOT_PACKAGE_DIR: str = os.path.join(THIS_DIR, '..') 15 16def generate(args: typing.Union[argparse.Namespace, typing.Dict[str, typing.Any]]) -> int: 17 """ 18 Generate HTTP test data by 19 setting an exchange path, pointing to a live LMS server, and running all tests. 20 The arguments may come directly from the parser for lms.cli.lib.generate-test-data. 21 """ 22 23 if (not isinstance(args, dict)): 24 args = vars(args) 25 26 args.update(args.get('_config', {})) 27 28 server_runner = lms.testing.serverrunner.LMSServerRunner(**args) 29 server_runner.start() 30 31 # Configure backend tests. 32 lms.backend.testing.BackendTest.allowed_backend = server_runner.backend_type 33 lms.backend.testing.BackendTest.skip_test_exchanges_base = True 34 lms.backend.testing.BackendTest.override_server_url = server_runner.server 35 lms.model.backend.APIBackend._testing_override = False 36 lms.backend.canvas.model._testing_override = True 37 38 # Run the tests (which generate the data). 39 test_args = { 40 'test_dirs': [ROOT_PACKAGE_DIR], 41 'fail_fast': args.get('fail_fast', False), 42 'pattern': args.get('pattern', None), 43 } 44 failure_count = int(edq.testing.run.run(test_args)) 45 46 server_runner.stop() 47 48 return failure_count 49 50def verify(args: typing.Union[argparse.Namespace, typing.Dict[str, typing.Any]]) -> int: 51 """ 52 Verify that test data matches data returned by the LMS server. 53 The arguments may come directly from the parser for lms.cli.lib.verify-test-data. 54 """ 55 56 if (not isinstance(args, dict)): 57 args = vars(args) 58 59 args.update(args.get('_config', {})) 60 61 test_data_dir = args.get('test_data_dir', None) 62 if (test_data_dir is None): 63 raise ValueError("No test data dir was providded.") 64 65 server_runner = lms.testing.serverrunner.LMSServerRunner(**args) 66 server_runner.start() 67 68 failure_count = int(edq.procedure.verify_exchanges.run([test_data_dir], server_runner.server, fail_fast = args.get('fail_fast', False))) 69 70 server_runner.stop() 71 72 return failure_count
THIS_DIR: str =
'/home/runner/work/lms-toolkit/lms-toolkit/lms/testing'
ROOT_PACKAGE_DIR: str =
'/home/runner/work/lms-toolkit/lms-toolkit/lms/testing/..'
def
generate(args: Union[argparse.Namespace, Dict[str, Any]]) -> int:
17def generate(args: typing.Union[argparse.Namespace, typing.Dict[str, typing.Any]]) -> int: 18 """ 19 Generate HTTP test data by 20 setting an exchange path, pointing to a live LMS server, and running all tests. 21 The arguments may come directly from the parser for lms.cli.lib.generate-test-data. 22 """ 23 24 if (not isinstance(args, dict)): 25 args = vars(args) 26 27 args.update(args.get('_config', {})) 28 29 server_runner = lms.testing.serverrunner.LMSServerRunner(**args) 30 server_runner.start() 31 32 # Configure backend tests. 33 lms.backend.testing.BackendTest.allowed_backend = server_runner.backend_type 34 lms.backend.testing.BackendTest.skip_test_exchanges_base = True 35 lms.backend.testing.BackendTest.override_server_url = server_runner.server 36 lms.model.backend.APIBackend._testing_override = False 37 lms.backend.canvas.model._testing_override = True 38 39 # Run the tests (which generate the data). 40 test_args = { 41 'test_dirs': [ROOT_PACKAGE_DIR], 42 'fail_fast': args.get('fail_fast', False), 43 'pattern': args.get('pattern', None), 44 } 45 failure_count = int(edq.testing.run.run(test_args)) 46 47 server_runner.stop() 48 49 return failure_count
Generate HTTP test data by setting an exchange path, pointing to a live LMS server, and running all tests. The arguments may come directly from the parser for lms.cli.lib.generate-test-data.
def
verify(args: Union[argparse.Namespace, Dict[str, Any]]) -> int:
51def verify(args: typing.Union[argparse.Namespace, typing.Dict[str, typing.Any]]) -> int: 52 """ 53 Verify that test data matches data returned by the LMS server. 54 The arguments may come directly from the parser for lms.cli.lib.verify-test-data. 55 """ 56 57 if (not isinstance(args, dict)): 58 args = vars(args) 59 60 args.update(args.get('_config', {})) 61 62 test_data_dir = args.get('test_data_dir', None) 63 if (test_data_dir is None): 64 raise ValueError("No test data dir was providded.") 65 66 server_runner = lms.testing.serverrunner.LMSServerRunner(**args) 67 server_runner.start() 68 69 failure_count = int(edq.procedure.verify_exchanges.run([test_data_dir], server_runner.server, fail_fast = args.get('fail_fast', False))) 70 71 server_runner.stop() 72 73 return failure_count
Verify that test data matches data returned by the LMS server. The arguments may come directly from the parser for lms.cli.lib.verify-test-data.