Example #1
0
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'
Example #3
0
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'
Example #4
0
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
Example #5
0
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
Example #6
0
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'
Example #7
0
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'
Example #9
0
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)
Example #10
0
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)
Example #11
0
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
Example #19
0
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