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 myContainerId /tmp'.split()) assert args.func == grade.command_grade_local assert args.containerId == 'myContainerId' assert args.dir == '/tmp'
def test_upload_parsing_with_additional_items(): parser = main.build_parser() args = parser.parse_args( "upload CONTAINER_ID COURSE_ID ITEM_ID PART_ID " "--additional_item_and_part ITEM_2 PART_2 " "--additional_item_and_part ITEM_3 PART_3".split() ) assert args.additional_item_and_part == [["ITEM_2", "PART_2"], ["ITEM_3", "PART_3"]]
def test_upload_parsing(): parser = main.build_parser() args = parser.parse_args("upload CONTAINER_ID COURSE_ID ITEM_ID PART_ID".split()) assert args.containerId == "CONTAINER_ID" assert args.course == "COURSE_ID" assert args.item == "ITEM_ID" assert args.part == "PART_ID" assert args.additional_item_and_part is None
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 myimageId /tmp'.split()) assert args.func == grade.command_grade_local assert args.imageId == 'myimageId' assert args.dir == '/tmp' assert not args.no_rm
def test_upload_parsing_with_additional_items(): parser = main.build_parser() args = parser.parse_args( 'upload CONTAINER_ID COURSE_ID ITEM_ID PART_ID ' '--additional_item_and_part ITEM_2 PART_2 ' '--additional_item_and_part ITEM_3 PART_3'.split()) assert args.additional_item_and_part == [['ITEM_2', 'PART_2'], ['ITEM_3', 'PART_3']]
def test_upload_parsing_with_additional_items(): parser = main.build_parser() args = parser.parse_args('upload CONTAINER_ID COURSE_ID ITEM_ID PART_ID ' '--additional_item_and_part ITEM_2 PART_2 ' '--additional_item_and_part ITEM_3 PART_3' .split()) assert args.additional_item_and_part == [['ITEM_2', 'PART_2'], ['ITEM_3', 'PART_3']]
def test_grade_local_parsing_with_extra_args(): parser = main.build_parser() args = parser.parse_args( 'grade local myContainerId /tmp arg1 arg2'.split()) assert args.func == grade.command_grade_local assert args.containerId == 'myContainerId' assert args.dir == '/tmp' assert args.args == ['arg1', 'arg2']
def test_ls_parsing_flags(): parser = main.build_parser() args = parser.parse_args('ls -al --human my-container /foo/bar'.split()) assert args.func == ls.command_ls assert args.dir == '/foo/bar', args.dir assert args.imageId == 'my-container', args.imageId assert args.a assert args.l assert args.human
def test_grade_local_parsing_with_extra_args(): parser = main.build_parser() args = parser.parse_args( 'grade local --no-rm myimageId /tmp arg1 arg2'.split()) assert args.func == grade.command_grade_local assert args.imageId == 'myimageId' assert args.dir == '/tmp' assert args.args == ['arg1', 'arg2'] assert args.no_rm
def test_ls_parsing_flags(): parser = main.build_parser() args = parser.parse_args('ls -al --human my-container /foo/bar'.split()) assert args.func == ls.command_ls assert args.dir == '/foo/bar', args.dir assert args.containerId == 'my-container', args.containerId assert args.a assert args.l assert args.human
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 myimageId /tmp'.split()) assert args.func == grade.command_grade_local assert args.imageId == 'myimageId' assert args.dir == '/tmp' assert not args.no_rm assert args.mem_limit == 1024
def test_upload_parsing(): parser = main.build_parser() args = parser.parse_args( 'upload CONTAINER_IMAGE_ID COURSE_ID ITEM_ID PART_ID'.split()) assert args.imageId == 'CONTAINER_IMAGE_ID' assert args.course == 'COURSE_ID' assert args.item == 'ITEM_ID' assert args.part == 'PART_ID' assert args.additional_item_and_part is None
def test_ls_parsing_flags(): parser = main.build_parser() args = parser.parse_args("ls -al --human my-container /foo/bar".split()) assert args.func == ls.command_ls assert args.dir == "/foo/bar", args.dir assert args.imageId == "my-container", args.imageId assert args.a assert args.l assert args.human
def test_grade_local_parsing_with_extra_args(): parser = main.build_parser() args = parser.parse_args( 'grade local --no-rm --mem-limit 2048 myimageId /tmp a1 a2'.split()) assert args.func == grade.command_grade_local assert args.imageId == 'myimageId' assert args.dir == '/tmp' assert args.args == ['a1', 'a2'] assert args.no_rm assert args.mem_limit == 2048
def test_upload_parsing_with_resource_customization(): parser = main.build_parser() args = parser.parse_args( "upload CONTAINER_ID COURSE_ID ITEM_ID PART_ID " "--grader-cpu 1 " "--grader-memory-limit 1024 " "--grading-timeout 300 ".split() ) assert args.grader_cpu == 1 assert args.grader_memory_limit == 1024 assert args.grading_timeout == 300
def test_upload_parsing_with_resource_customization(): parser = main.build_parser() args = parser.parse_args('upload CONTAINER_IMAGE_ID COURSE_ID ITEM_ID ' 'PART_ID ' '--grader-cpu 1 ' '--grader-memory-limit 1024 ' '--grading-timeout 300 ' .split()) assert args.grader_cpu == 1 assert args.grader_memory_limit == 1024 assert args.grading_timeout == 300
def test_upload_parsing_timeout_too_low(): parser = main.build_parser() try: parser.parse_args('upload CONTAINER_IMAGE_ID COURSE_ID ITEM_ID ' 'PART_ID ' '--grader-cpu 1 ' '--grader-memory-limit 1024 ' '--grading-timeout 299 ' .split()) except SystemExit: assert True else: assert False, 'parser should have thrown exception'
def test_upload_parsing_timeout_too_low(): parser = main.build_parser() try: parser.parse_args( "upload CONTAINER_ID COURSE_ID ITEM_ID PART_ID " "--grader-cpu 1 " "--grader-memory-limit 1024 " "--grading-timeout 299 ".split() ) except SystemExit: assert True else: assert False, "parser should have thrown exception"
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_no_timeout(): parser = main.build_parser() args = parser.parse_args('version'.split()) assert args.timeout == 60
def test_publish_parsing(): parser = main.build_parser() args = parser.parse_args('publish COURSE_ID ITEM_ID'.split()) assert args.course == 'COURSE_ID' assert args.item == 'ITEM_ID' assert args.additional_items is None
def test_set_logging_level(): parser = main.build_parser() args = parser.parse_args('-vv version'.split()) utils.set_logging_level(args) assert logging.getLogger().getEffectiveLevel() == 5 # "Trace"
def test_set_logging_level_noneSpecified(): parser = main.build_parser() args = parser.parse_args('version'.split()) utils.set_logging_level(args) assert logging.getLogger().getEffectiveLevel() == logging.INFO or \ logging.getLogger().getEffectiveLevel() == logging.NOTSET
def test_upload_parsing_with_additional_items(): parser = main.build_parser() args = parser.parse_args('publish COURSE_ID ITEM_ID'.split() + '--additional-items ITEM_2 ITEM_3 ITEM_4'.split()) print(args.additional_items) assert args.additional_items == ['ITEM_2', 'ITEM_3', 'ITEM_4']
def test_chattiness_parsing_verbose(): parser = main.build_parser() args = parser.parse_args('-v version'.split()) assert args.verbose == 1
def test_version_parsing(): parser = main.build_parser() args = parser.parse_args('version'.split()) assert args.func == version.command_version
def test_sanity_parsing(): parser = main.build_parser() args = parser.parse_args('sanity'.split()) assert args.func == sanity.command_sanity
def test_upload_parsing_with_additional_items(): parser = main.build_parser() args = parser.parse_args('publish COURSE_ID ITEM_ID'.split() + '--additional-items ITEM_2 ITEM_3 ITEM_4'.split()) print args.additional_items assert args.additional_items == ['ITEM_2', 'ITEM_3', 'ITEM_4']
def test_ls_parsing_simple(): parser = main.build_parser() args = parser.parse_args("ls a1b2c3 /".split()) assert args.func == ls.command_ls, "func: %s" % args.func assert args.dir == "/", "Dir is: %s" % args.dir assert args.imageId == "a1b2c3", "Container id: %s" % args.imageId
def test_set_timeout(): parser = main.build_parser() args = parser.parse_args('--timeout 120 version'.split()) assert args.timeout == 120
def test_chattiness_parsing_quiet(): parser = main.build_parser() args = parser.parse_args('-qq version'.split()) assert args.quiet == 2
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_cat_parsing(): parser = main.build_parser() args = parser.parse_args('cat imageId /root/foo bar /bar/baz'.split()) assert args.func == cat.command_cat assert args.imageId == 'imageId' assert args.file == ['/root/foo', 'bar', '/bar/baz']
def test_inspect_parsing(): parser = main.build_parser() args = parser.parse_args('inspect demo/primes'.split()) assert args.func == inspect.command_inspect assert args.containerId == 'demo/primes' assert not args.no_rm
def test_ls_parsing_simple(): parser = main.build_parser() args = parser.parse_args('ls a1b2c3 /'.split()) assert args.func == ls.command_ls, "func: %s" % args.func assert args.dir == '/', "Dir is: %s" % args.dir assert args.containerId == 'a1b2c3', "Container id: %s" % args.containerId
def test_inspect_parsing(): parser = main.build_parser() args = parser.parse_args('inspect demo/primes'.split()) assert args.func == inspect.command_inspect assert args.containerId == 'demo/primes'
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
def test_ls_parsing_simple(): parser = main.build_parser() args = parser.parse_args('ls a1b2c3 /'.split()) assert args.func == ls.command_ls, "func: %s" % args.func assert args.dir == '/', "Dir is: %s" % args.dir assert args.imageId == 'a1b2c3', "Container id: %s" % args.imageId