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.backend.testing.BackendTest.server_runner = server_runner
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
50
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
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.backend.testing.BackendTest.server_runner = server_runner
37    lms.model.backend.APIBackend._testing_override = False
38    lms.backend.canvas.model._testing_override = True
39
40    # Run the tests (which generate the data).
41    test_args = {
42        'test_dirs': [ROOT_PACKAGE_DIR],
43        'fail_fast': args.get('fail_fast', False),
44        'pattern': args.get('pattern', None),
45    }
46    failure_count = int(edq.testing.run.run(test_args))
47
48    server_runner.stop()
49
50    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:
52def verify(args: typing.Union[argparse.Namespace, typing.Dict[str, typing.Any]]) -> int:
53    """
54    Verify that test data matches data returned by the LMS server.
55    The arguments may come directly from the parser for lms.cli.lib.verify-test-data.
56    """
57
58    if (not isinstance(args, dict)):
59        args = vars(args)
60
61    args.update(args.get('_config', {}))
62
63    test_data_dir = args.get('test_data_dir', None)
64    if (test_data_dir is None):
65        raise ValueError("No test data dir was providded.")
66
67    server_runner = lms.testing.serverrunner.LMSServerRunner(**args)
68    server_runner.start()
69
70    failure_count = int(edq.procedure.verify_exchanges.run([test_data_dir], server_runner.server, fail_fast = args.get('fail_fast', False)))
71
72    server_runner.stop()
73
74    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.