Como Configurar Git Hooks para Rodar Testes Automáticos Antes de Fazer Push

Table of Contents

Introdução

Olá, pessoal! Hoje, vamos explorar um tópico prático e essencial para desenvolvedores: como configurar testes automáticos no Git para que sejam executados antes de fazer um push. Este é um passo crucial para garantir que seu código esteja impecável antes de enviá-lo para o repositório remoto.

É importante que esses testes não se limitem ao ambiente local; eles também devem ser executados no seu serviço de versionamento, seja GitHub, GitLab, Bitbucket ou outro. Isso garante que o código funcione corretamente em diferentes ambientes e cenários.

O que são Git Hooks?

De acordo com o site git-scm, Git Hooks são scripts personalizados que o Git executa automaticamente em determinadas ações importantes. Esses ganchos se dividem em dois grupos principais: “cliente” e “servidor”.

Os hooks do lado cliente são acionados por operações como commit e merge, enquanto os hooks do lado servidor são executados em operações de rede, como o recebimento de commits.

Conhecer os Git Hooks é essencial, pois algumas ferramentas, como o Commitizen, que utiliza esses ganchos para facilitar o processo de commit. Neste tutorial, porém, não iremos modificar o hook

.git/hooks/prepare-commit-msg,

mas, sim o hook

.git/hooks/pre-push.

Lembre-se de que todos os hooks são scripts shell por padrão, mas você pode adicionar um “shebang” para alterar a linguagem do script, se necessário.

Como rodar o teste antes de dar push

Agora, vamos ao que interessa! Comece copiando um hook de exemplo para editá-lo:

cp .git/hooks/pre-push.sample .git/hooks/pre-push

Em seguida, crie um script simples para rodar sua suíte de testes. Neste exemplo, usaremos o pytest, mas você pode adaptar o código para utilizar a ferramenta de testes de sua escolha. O objetivo é garantir que o push seja cancelado caso os testes falhem:

#!/usr/bin/env bash

echo "Executando suíte de testes..."

pytest
RESULT=$?

if [ $RESULT -ne 0 ]; then
  # Caso os testes falhem, o push será abortado
  exit 1
fi

A partir deste momento, sempre que você executar o comando:

git push

A suíte de testes será executada. Se os testes passarem, o código será enviado para o repositório remoto, onde novos testes podem ser executados.

Recomendações

Embora os Git Hooks sejam uma ferramenta poderosa, é importante lembrar que eles podem tornar o Git um pouco mais lento em comparação a um repositório sem hooks. No entanto, essa pequena perda de performance é compensada pela garantia de que seu código está sendo testado localmente e remotamente, mantendo seu fluxo de trabalho ágil e eficiente.

Minha recomendação principal é limitar o uso de hooks a apenas um por tipo de operação, utilizando-os apenas quando necessário. Testes são uma necessidade clara. Ferramentas como o cz-cli também podem ser úteis para manter a consistência nos commits.

Estude a documentação oficial do Git e avalie cuidadosamente se você precisa de outros hooks—na maioria das vezes, não precisará.

Conclusão

Espero que este breve tutorial tenha sido útil! Git Hooks são uma maneira simples e eficaz de melhorar a qualidade do seu código e do seu fluxo de trabalho. Não deixe de testar e adaptar essas dicas ao seu próprio projeto.

comments powered by Disqus
Tags:
Git Git Hooks CI Continuous Integration Tests Automatic Tests