コード例 #1
0
def valida_exercicio(ex_dir):
    info('Testando exercício', ex_dir)
    ok = True
    try:
        detalhes = valida_detalhes(ex_dir)
        valida_enunciado(ex_dir)
        aplica_testes(ex_dir, detalhes.get('nome_funcao'))
    except AssertionError as e:
        danger('Erro de validação:', e)
        ok = False
    if ok:
        success("OK")
    else:
        danger('FALHA')
    return ok
コード例 #2
0
def build_trace(slug=None, force=False):
    if slug:
        if not (TRACES / slug).is_dir():
            danger(f'The trace challenge {slug} does not exist.')
            sys.exit()
        run_autotracer(slug)
    else:
        info('Building all missing trace challenges')
        count = 0
        for ch_dir in TRACES.iterdir():
            if not ch_dir.is_dir(): continue
            if not force and (ch_dir / TRACE_DATA).is_file(): continue
            run_autotracer(ch_dir.name)
            count += 1
        success(f'Built {count} traces')
コード例 #3
0
def validate_challenge_dir(ch_dir):
    info('Validating challenge', ch_dir)
    ok = True
    try:
        details = validate_challenge_details(ch_dir)
        validate_question(ch_dir)
        run_tests_for_challenge(ch_dir, details.get('function_name'))
    except AssertionError as e:
        danger('Validation error:', e)
        ok = False
    if ok:
        success("OK")
    else:
        danger('FAIL')
    return ok
コード例 #4
0
def teste(nome_teste):
    if nome_teste:
        if not (EXERCICIOS / nome_teste).is_dir():
            danger(f'O exercício {nome_teste} não existe.')
            sys.exit()
        valida_exercicio(EXERCICIOS / nome_teste)
    else:
        info('Testando todos os exercícios')
        ok = True
        for ex_dir in EXERCICIOS.iterdir():
            if not ex_dir.is_dir(): continue
            if not valida_exercicio(ex_dir):
                ok = False
        if ok:
            success('Tudo ok!')
        else:
            danger('Falhou em alguma validação')
コード例 #5
0
def validate_trace_dir(ch_dir):
    info('Validating trace challenge', ch_dir)
    ok = True
    try:
        validate_trace_details(ch_dir)
        validate_not_empty(ch_dir / TRACE_CODE)
        validate_not_empty(
            ch_dir / TRACE_DATA,
            msg='Trace file does not exist. Build it with admin.py build-trace'
        )
    except AssertionError as e:
        danger('Validation error:', e)
        ok = False
    if ok:
        success("OK")
    else:
        danger('FAIL')
    return ok
コード例 #6
0
def validate_trace(slug=None):
    if slug:
        if not (TRACES / slug).is_dir():
            danger(f'The trace challenge {slug} does not exist.')
            sys.exit()
        validate_trace_dir(TRACES / slug)
    else:
        info('Testing all trace challenges')
        failures = []
        for ch_dir in TRACES.iterdir():
            if not ch_dir.is_dir(): continue
            if not validate_trace_dir(ch_dir):
                failures.append(ch_dir.name)
        if failures:
            danger('Failed for the following traces')
            for failure in failures:
                danger(f'  {failure}')
        else:
            success('Everything ok!')
コード例 #7
0
def validate_challenge(challenge_name=None):
    if challenge_name:
        if not (CHALLENGES / challenge_name).is_dir():
            danger(f'The challenge {challenge_name} does not exist.')
            sys.exit()
        validate_challenge_dir(CHALLENGES / challenge_name)
    else:
        info('Testing all challenges')
        failures = []
        for ch_dir in CHALLENGES.iterdir():
            if not ch_dir.is_dir(): continue
            if not validate_challenge_dir(ch_dir):
                failures.append(ch_dir.name)
        if failures:
            danger('Failed for the following challenges:')
            for failure in failures:
                danger(f'  {failure}')
        else:
            success('Everything ok!')