No momento, estou escrevendo uma estrutura de teste bash, onde em uma função de teste, tanto os testes padrão do bash ( [[
) quanto os matchers predefinidos podem ser usados. Matchers são wrappers para '[[' e além de retornar um código de retorno, defina alguma mensagem significativa dizendo o que era esperado.
Exemplo:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
Portanto, quando um matcher é usado e falha, somente então um error_message é definido.
Agora, em algum ponto depois, eu testo se os testes foram bem-sucedidos. Se deu certo, imprimo a expectativa em verde, se falhou em vermelho.
Além disso, pode haver um error_message definido, então eu testo se uma mensagem existe, imprimo-a e, em seguida, cancelo a definição (porque o teste a seguir pode não definir um error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
Agora minha pergunta é, se é melhor remover a variável ou apenas defini-la como '', como
error_message=''
Qual é o melhor? Isso realmente faz diferença? Ou talvez eu deva ter um sinalizador adicional indicando que a mensagem foi definida?
error_message
com qualquer outra coisa, eu diria que não importa. No entanto, acho que você deseja[[ $error_message ]]
, caso contrário, você está testando se a string literal "mensagem_erro" existe.