Skip to content

desenvolvedor

Rodolfo Dirack edited this page Jul 2, 2021 · 23 revisions

Documentação do desenvolvedor

Variáveis globais

A biblioteca shellunity utiliza das seguintes variáveis globais:

  • NUMBER_OF_TESTS_UNITY, armazena o número total de testes realizados.
  • NUMBER_OF_FAILURES_UNITY, armazena o número total de testes que falharam.
  • NUMBER_OF_IGNORED_UNITY, armazena o número total de testes ignorados
  • FINISHED_ALL_TESTS_UNITY
  • TEST_IGNORE_UNITY, configura a função TEST_UNITY para ignorar todos os testes se estiver definida como 1, ou para realizar todos os testes se estiver definida como 0.

Principais funções

TEST_UNITY

Esta é a principal função da biblioteca shellunity e que manipula as variáveis globais com os contadores dos testes realizados, que falharam e os ignorados. A cada chamada a esta função, o número total de testes em $NUMBER_OF_TESTS_UNITY é incrementado uma unidade. Se a variável $TEST_IGNORE_UNITY estiver configurada igual a 1, o teste é ignorado e a função incrementa o número de testes ignorados em $NUMBER_OF_IGNORED_UNITY e retorna. Esta lógica é implementada nas linhas a seguir:

NUMBER_OF_TESTS_UNITY=$((NUMBER_OF_TESTS_UNITY+1))
[ "$TEST_IGNORE_UNITY" == "1" ] && {
        NUMBER_OF_IGNORED_UNITY=$((NUMBER_OF_IGNORED_UNITY+1))
        echo -e "$0:$2:$3:\033[43mIGNORED\033[m"
        return
}
    if [ "$FINISHED_ALL_TESTS_UNITY" == "0" ]
    then 
            echo -n "$0:$2:$3:"
    fi      

    if [ "$1" == "0" ]
    then 
            echo -e "\033[42mPASS\033[m"
    else    
            NUMBER_OF_FAILURES_UNITY=$((NUMBER_OF_FAILURES_UNITY+1))
            echo -e "\033[41mFAIL\033[m"
    fi

}

RESULT_UNITY

Esta função é chamada ao final da execução da suíte de testes, como estabelecido utilizando o comando trap a seguir:

trap RESULT_UNITY exit

O objetivo da função RESULT_UNITY é exibir a contagem final dos casos de testes, apresentando o total dos testes realizados, os testes que falharam (se houver falha em algum teste) e o número de testes ignorados. Para tanto, a função utiliza os valores armazenados nas variáveis globais $NUMBER_OF_TESTS_UNITY, $NUMBER_OF_FAILURES_UNITY, e $NUMBER_OF_IGNORED_UNITY. O resultado esperado a seguir:

-----------------------
16 Tests 7 Failures 2 Ignored
FAIL

As duas últimas linhas da função RESULT_UNITY, apresentadas a seguir, servem para verificar se todos os testes passaram ou se algum teste falhou, fazer a chamada à função TEST_UNITY para imprimir FAIL ou SUCCES na tela e encerrar com o status de execução 0 ou 1, respectivamente. Basta que um dos testes falhe para o status de execução retornado ser 1.

[ "$NUMBER_OF_FAILURES_UNITY" -eq "0" ] && TEST_UNITY 0 && exit 0
TEST_UNITY 1 && exit 1

Asserções básicas

TEST_IGNORE

A função TEST_IGNORE é utilizada para ignorar um bloco de testes. Esta funciona por meio de uma chave "on/off" recebida através do parâmetro $1 que altera a variável global TEST_IGNORE_UNITY. Quando a variável TEST_IGNORE_UNITY é igual a 1 os testes são ignorados pela função principal TEST_UNITY, quando esta variável é igual a 0 os testes são realizados e considerados pela função TEST_UNITY. A utilização da função TEST_IGNORE ocorre como no exemplo de uso a seguir:

TEST_IGNORE on # Ligar a chave para ignorar testes
TEST_ASSERT_TRUE "2==2" #... testes ignorado
TEST_ASSERT_FALSE "2==3" #... teste ignorado
TEST_ASSERT_FALSE "3==3" #... teste ignorado
TEST_IGNORE off # Desligar a chave para ignorar testes
# Os testes a seguir serão realizados
TEST_ASSERT_TRUE "2==2" #... testes realizado
TEST_ASSERT_FALSE "3==3" #... teste realizado

Esta manipulação da variável global TEST_IGNORE_UNITY ocorre dentro de um bloco if simples a depender do parâmetro $1 passado a função TEST_IGNORE_UNITY.

TEST_IGNORE(){
        if [ "$1" == "on" ]
        then
                TEST_IGNORE_UNITY="1"
        elif [ "$1" == "off" ]
        then
                TEST_IGNORE_UNITY="0"
        fi
}

⬆️ Voltar ao topo


TEST_MESSAGE(){

    echo "$0:$BASH_LINENO:INFO: $1"

}

TEST_FAIL(){ TEST_UNITY 1 "$BASH_LINENO" "$FUNCNAME" }

TEST_FAIL_MESSAGE(){

    echo "$0:$BASH_LINENO:FAIL: $1"
    TEST_UNITY 1 "$BASH_LINENO" "$FUNCNAME"

}

TEST_PASS(){

    TEST_UNITY 0 "$BASH_LINENO" "$FUNCNAME"

}

TEST_PASS_MESSAGE(){

    echo "$0:$BASH_LINENO:PASS: $1"
    TEST_UNITY 0 "$BASH_LINENO" "$FUNCNAME"

}

Asserções

TEST_ASSERT_EQUAL(){ TEST_ASSERT_NOT_EQUAL(){ TEST_ASSERT_TRUE(){ TEST_ASSERT_FALSE(){ TEST_ASSERT_EQUAL_STRING(){ TEST_FILE_FIND(){ TEST_DIR_FIND(){ TEST_FILE_X(){ TEST_FILE_W(){ TEST_FILE_R(){ TEST_ISATTY(){ TEST_FILE_NEWER(){ TEST_FILE_OLDER(){ TEST_FILE_EQUAL(){ TEST_FILE_EMPTY(){

Clone this wiki locally