Aula 05 – Mini curso de Git
GIT – CONTROLE DE VERSÃO DISTRIBUÍDO
MINI CURSO DE GIT
Link do Meu Github
VAMOS CRIAR UMA NOVA BRANCH setup_program_and_tests
git checkout -b setup_program_and_tests
CRIAREMOS O PRIMEIRO TESTE DO NOSSO PROGRAMA, NO ARQUIVO test_noel.py.
INSIRA NELE O SEGUINTE CONTEÚDO:
# -*- coding: utf-8 -*-
"""
@author: toti.cavalcanti
"""
import unittest
from noel import solution
class TestNoel(unittest.TestCase):
def test_one_Ho(self):
self.assertEqual(solution(1), "Ho!")
unittest.main()
AGORA O ARQUIVO noel.py.
# -*- coding: utf-8 -*-
"""
@author: toti.cavalcanti
"""
def solution():
pass
VAMOS RODAR O TESTE
- DENTRO DA PASTA hohoho DIGITE
python test_noel.py
- VEJA A MENSAGEM DE ERRO DIZENDO QUE None != ‘Ho!’ None É DIFERENTE DA STRING ‘Ho!’
- AGORA IREMOS CORRIGIR O ERRO REFERENTE AO PRIMEIRO TESTE
# -*- coding: utf-8 -*-
"""
@author: toti.cavalcanti
"""
def solution(num):
return 'Ho!'
RODE O TESTE NOVAMENTE python test_noel.py
E VEJA QUE AGORA O PRIMEIRO TESTE VAI PASSAR
HORA DE ADICIONAR A MODIFICAÇÃO A STAGING AREA, COMMITAR E FAZER O PUSH PARA O GITHUB
git add .
git commit "insert return Ho! in noel.py"
git push origin initial_set_files
VAMOS CONSTRUIR UM NOVO TESTE, AGORA COM DOIS HO ( ‘Ho Ho!’)
# -*- coding: utf-8 -*-
"""
@author: toti.cavalcanti
"""
import unittest
from noel import solution
class TestNoel(unittest.TestCase):
def test_one_Ho(self):
self.assertEqual(solution(1), "Ho!")
def test_two_Ho(self):
self.assertEqual(solution(2), "Ho Ho!")
unittest.main()
RODE NOVAMENTE O ARQUIVO DE TESTE test_noel.py E VEJA QUE UM TESTE VAI PASSAR, MAS O NOVO TESTE NÃO.
PODEMOS AGORA ADICIONAR A MUDANÇA NO ARQUIVO DE TESTE A STAGING AREA, DEPOIS COMIITAR E SE QUISER, PODE FAZER LOGO O PUSH PRO GITHUB.
git add .
git commit -m "create a second test with 2 as parameter and expected Ho Ho! as return"
git add push origin initial_set_files
AGORA VAMOS CORRIGIR NOSSO PROGRAMA noel.py PARA QUE ELE CONSIGA RESOLVER NOSSO SEGUNDO CASO DE TESTE SEM QUEBRAR O PRIMEIRO TESTE.
# -*- coding: utf-8 -*-
"""
@author: toti.cavalcanti
"""
def solution(num):
if num == 1:
return 'Ho!'
return 'Ho Ho!'
VAMOS ADICIONAR AS MUDANÇAS NO ARQUIVO noel.py A STAGING AREA, DEPOIS COMMITAR E FAZER O PUSH PARA O GITHUB.
git add .
git commit -m "change the noel code to fix the second test case"
git add push origin initial_set_files
TEMOS DOIS TESTE, E O NOSSO PROGRAMA TÁ FUNCIONANDO PARA ESSES DOIS TESTES, VAMOS CRIAR UM OUTRO TESTE QUE QUEBRE NOSSO PROGRAMA.
# -*- coding: utf-8 -*-
"""
@author: toti.cavalcanti
"""
import unittest
from noel import solution
class TestNoel(unittest.TestCase):
def test_one_Ho(self):
self.assertEqual(solution(1), "Ho!")
def test_two_Ho(self):
self.assertEqual(solution(2), "Ho Ho!")
def test_five_Ho(self):
self.assertEqual(solution(5), "Ho Ho Ho Ho Ho!")
unittest.main()
NOSSO TERCEIRO TESTE NÃO IRÁ PASSAR
VAMOS AGORA TENTAR UMA SOLUÇÃO QUE RESOLVA O CASO MAIS GERAL POSSÍVEL, QUE PASSANDO QUALQUER NÚMERO ENTRE ZERO e 1.000.000 (10⁶ ou 10^6) ELE TRAGA A RESPOSTA CORRETA.
VAMOS PRIMEIRO ADICIONAR AS MUDANÇAS NO test_noel.py A STAGING AREA, COMMITAR E FAZER O PUSH.
git add .
git commit -m "create a third test with 5 as parameter and expected Ho Ho Ho Ho Ho! as return"
git add push origin initial_set_files
AGORA VAMOS RETIRAR TODO O HARDCODE QUE FIZEMOS NO NOSSO PROGRAMA E COLOCAR A SOLUÇÃO DEFINITIVA PARA TODOS OS CASOS POSSÍVEIS DE TESTE.
# -*- coding: utf-8 -*-
"""
@author: toti.cavalcanti
"""
def solution(num):
return "Ho " * (num - 1) + "Ho!"
AGORA PARA FINALIZAR, JÁ QUE NOSSO PROGRAMA ESTÁ PRONTO, VAMOS ADICIONAR AS MUDANÇAS A STAGING AREA, COMMITAR, FAZER O PUSH PARA O GITHUB, SAIR DA BRANCH initial_set_files E VOLTAR PARA A master, FAZER O MERGE COM A BRANCH initial_set_files E FAZER O PUSH PARA A MASTER.
git add .
git commit -m "change the noel.py file to resolve any possible test"
git add push origin initial_set_files
git checkout master
git merge initial_set_files
git push origin master
CONCLUSÃO:
COM ESSES COMANDOS E ENTENDIMENTO BÁSICOS DO GIT, VOCÊ JÁ CONSEGUE FAZER O CONTROLE DE VERSÃO DE SEUS PROJETOS.
CLARO QUE EXISTE MUITO MAIS COISAS A APRENDER, MAS O INTUITO DESSE PEQUENO TUTORIAL SOBRE O GIT, É MAIS PARA DÁ UMA BASE PRA QUEM QUER COMEÇAR A USAR ESSES RECURSOS NA PRÁTICA.