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.