def test_config_help_message(exit): testargs = ['placeholder', 'configure'] with LogCapture() as logs: with patch.object(sys, 'argv', testargs): parser = main.build_parser() config.sys.exit.assert_called_with(1)
def test_get_status_parsing(): parser = main.build_parser() args = parser.parse_args('get_status COURSE_ID GRADER_ID'.split()) assert args.func == get_status.command_get_status assert args.course == 'COURSE_ID' assert args.graderId == 'GRADER_ID'
def test_get_resource_limits_parsing(): parser = main.build_parser() args = parser.parse_args( 'get_resource_limits COURSE_ID ITEM_ID PART_ID'.split()) assert args.func == get_resource_limits.command_get_resource_limits assert args.course == 'COURSE_ID' assert args.item == 'ITEM_ID' assert args.part == 'PART_ID'
def test_grade_local_parsing_no_rm(): parser = main.build_parser() args = parser.parse_args( ('grade local --no-rm --mem-limit 2048 ' + 'myContainerTag /tmp {"partId":"1a2b3"}').split()) assert args.func == grade.command_grade_local assert args.containerTag == 'myContainerTag' assert args.dir == '/tmp' assert args.envVar == '{"partId":"1a2b3"}' assert args.no_rm assert args.mem_limit == 2048
def test_grade_local_parsing(): # TODO: mock out `os.path.isdir` to make this test more portable. parser = main.build_parser() args = parser.parse_args( 'grade local myContainerTag /tmp {"partId":"1a2b3"}'.split()) assert args.func == grade.command_grade_local assert args.containerTag == 'myContainerTag' assert args.dir == '/tmp' assert args.envVar == '{"partId":"1a2b3"}' assert not args.no_rm assert args.mem_limit == 1024
def test_upload_parsing_invalid_memory(): parser = main.build_parser() try: parser.parse_args('upload CONTAINER_IMAGE_ID COURSE_ID ITEM_ID ' 'PART_ID ' '--grader-cpu 1 ' '--grader-memory-limit 3 ' '--grading-timeout 300 ' .split()) except SystemExit: assert True else: assert False, 'parser should have thrown exception'
def test_upload_parsing(): parser = main.build_parser() zip_file = './test.zip' open(zip_file, 'w') args = parser.parse_args( 'upload {} COURSE_ID ITEM_ID PART_ID'.format(zip_file).split()) assert args.imageZipFile.endswith('test.zip') assert args.course == 'COURSE_ID' assert args.item == 'ITEM_ID' assert args.part == 'PART_ID' assert args.additional_item_and_part is None remove(zip_file)
def test_update_resource_limits_parsing(): parser = main.build_parser() args = parser.parse_args( ('update_resource_limits COURSE_ID ITEM_ID PART_ID ' + '--grader-cpu 4 --grader-memory-limit 8192 ' + '--grader-timeout 1800').split()) assert args.func == update_resource_limits.command_update_resource_limits assert args.course == 'COURSE_ID' assert args.item == 'ITEM_ID' assert args.part == 'PART_ID' assert args.grader_cpu == '4' assert args.grader_memory_limit == '8192' assert args.grader_timeout == '1800'
def test_upload_parsing_with_additional_items(): parser = main.build_parser() zip_file = './test.zip' open(zip_file, 'w') args = parser.parse_args('upload {} COURSE_ID ITEM_ID ' 'PART_ID ' '--additional_item_and_part ITEM_2 PART_2 ' '--additional_item_and_part ITEM_3 PART_3' .format(zip_file) .split()) assert args.additional_item_and_part == [['ITEM_2', 'PART_2'], ['ITEM_3', 'PART_3']] remove(zip_file)
def test_upload_parsing_with_resource_customization(): parser = main.build_parser() zip_file = './test.zip' open(zip_file, 'w') args = parser.parse_args('upload {} COURSE_ID ITEM_ID ' 'PART_ID ' '--grader-cpu 1 ' '--grader-memory-limit 4096 ' '--grading-timeout 300 ' .format(zip_file) .split()) assert args.grader_cpu == 1 assert args.grader_memory_limit == 4096 assert args.grading_timeout == 300 remove(zip_file)
def test_config_parsing_check_auth(): parser = main.build_parser() args = parser.parse_args('configure check-auth'.split()) assert args.func == config.check_auth
def test_list_graders_parsing(): parser = main.build_parser() args = parser.parse_args('list_graders COURSE_ID'.split()) assert args.func == list_graders.command_list_graders assert args.course == 'COURSE_ID'
def test_set_timeout(): parser = main.build_parser() args = parser.parse_args('--timeout 120 configure'.split()) assert args.timeout == 120
def test_no_timeout(): parser = main.build_parser() args = parser.parse_args('configure'.split()) assert args.timeout == 60
def test_set_logging_level_noneSpecified(): parser = main.build_parser() args = parser.parse_args('configure'.split()) utils.set_logging_level(args) assert logging.getLogger().getEffectiveLevel() == logging.INFO or \ logging.getLogger().getEffectiveLevel() == logging.NOTSET
def test_set_logging_level(): parser = main.build_parser() args = parser.parse_args('-vv configure'.split()) utils.set_logging_level(args) assert logging.getLogger().getEffectiveLevel() == 5 # "Trace"
def test_chattiness_parsing_verbose(): parser = main.build_parser() args = parser.parse_args('-v configure'.split()) assert args.verbose == 1
def test_chattiness_parsing_quiet(): parser = main.build_parser() args = parser.parse_args('-qq configure'.split()) print('args: ', args) assert args.quiet == 2
def test_config_parsing_check_auth(): parser = main.build_parser() args = parser.parse_args('configure display-auth-cache'.split()) assert args.func == config.display_auth_cache