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.