autograder.testing.testdata

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

Generate HTTP test data by setting an exchange path, pointing to a live autograder server, and running all tests. The arguments may come directly from the parser for autograder.cli.testing.generate-test-data.

def verify(args: Union[argparse.Namespace, Dict[str, Any]]) -> int:
48def verify(args: typing.Union[argparse.Namespace, typing.Dict[str, typing.Any]]) -> int:
49    """
50    Verify that test data matches data returned by the autograder server.
51    The arguments may come directly from the parser for autograder.cli.testing.verify-test-data.
52    """
53
54    if (not isinstance(args, dict)):
55        args = vars(args)
56
57    args.update(args.get('_config', {}))
58
59    test_data_dir = args.get('test_data_dir', None)
60    if (test_data_dir is None):
61        raise ValueError("No test data dir was providded.")
62
63    server_runner = autograder.testing.serverrunner.ServerRunner(**args)
64    server_runner.start()
65
66    failure_count = int(edq.procedure.verify_exchanges.run([test_data_dir], server_runner.server, fail_fast = args.get('fail_fast', False)))
67
68    server_runner.stop()
69
70    return failure_count

Verify that test data matches data returned by the autograder server. The arguments may come directly from the parser for autograder.cli.testing.verify-test-data.