3 Commits

Author SHA1 Message Date
f3dd9157c7 Ajout de tests pour tester toutes les fonctions
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-27 15:46:24 +01:00
40076ad3c1 Ajout d'un README pour les badges
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 18:57:48 +01:00
60e09751da Calcul de la couverture
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 18:47:18 +01:00
4 changed files with 72 additions and 3 deletions

3
.gitignore vendored
View File

@ -1,3 +1,6 @@
*.pyc
.pytest_cache
.coverage
venv

View File

@ -25,5 +25,5 @@ test:
stage: test
image: python:3-alpine
before_script:
- pip install pytest --no-cache-dir
script: pytest --showlocals .
- pip install pytest pytest-cov --no-cache-dir
script: pytest --showlocals --cov=main --cov=main_test --cov-report=term-missing .

6
README.md Normal file
View File

@ -0,0 +1,6 @@
[![pipeline status](https://gitlab.crans.org/ynerant/seminaire-ci/badges/master/pipeline.svg)](https://gitlab.crans.org/ynerant/seminaire-ci/-/commits/master)
[![coverage report](https://gitlab.crans.org/ynerant/seminaire-ci/badges/master/coverage.svg)](https://gitlab.crans.org/ynerant/seminaire-ci/-/commits/master)
# Séminaire intégration continue
Ce dépôt contient le script utilisé lors du séminaire Crans du 11 février 2021, ainsi que les slides.

View File

@ -4,6 +4,7 @@
Exécution des tests du script.
"""
from random import randint, seed, shuffle
import unittest
import main
@ -16,7 +17,8 @@ class TestMain(unittest.TestCase):
def test_aide(self):
"""
On essaie d'afficher l'aide, et on vérifie si ça affiche la bonne chose.
On essaie d'afficher l'aide,
et on vérifie si ça affiche la bonne chose.
"""
res = main.commande("aide")
lines = res.split("\n")
@ -27,3 +29,61 @@ class TestMain(unittest.TestCase):
self.assertTrue(lines[3].startswith("calcul"))
self.assertTrue(lines[4].startswith("tri"))
self.assertTrue(lines[5].startswith("stop"))
def test_seminaire(self):
"""
Test de l'affichage du "séminaire".
"""
res = main.commande("seminaire")
self.assertEqual(len(res), 114)
def test_blague(self):
"""
On teste les blagues, et on vérifie si
elles fonctionnent bien.
"""
seed(1)
res = main.commande("blague")
self.assertEqual(res, "Je vais vous raconter une blague sur UDP, "
"mais vous ne l'aurez peut-être pas.")
seed(5)
res = main.commande("blague")
self.assertEqual(res, "Connaissez-vous la différence entre la "
"théorie et la pratique ? "
"Il n'y en a pas, en théorie.")
def test_calcul(self):
"""
On vérifie que certains calculs basiques, puis aléatoires,
marchent bien.
"""
self.assertTrue(main.commande("calcul", 1, 2, 3))
self.assertFalse(main.commande("calcul", 1, 2, 2, '+'))
self.assertTrue(main.commande("calcul", 1, 2, 2, '*'))
self.assertTrue(main.commande("calcul", 42, 3, 14, 'div'))
self.assertTrue(main.commande("calcul", 16777215, 42, 42, 'and'))
self.assertTrue(main.commande("calcul", 16777213, 42, 16777215, 'or'))
self.assertFalse(main.commande("calcul", 15, 20, 35, 'xor'))
self.assertTrue(main.commande("calcul", 15, 20, 27, '^'))
self.assertTrue(main.commande("calcul", 100, 76, 24, 'unknown'))
left, right = randint(0, 0x7FFFFFFF), randint(0, 0x7FFFFFFF)
self.assertTrue(main.commande("calcul", left, right,
left - right, "-"))
def test_tri(self):
"""
À partir d'une liste donnée, on trie la liste
et on vérifie qu'elle est bien triée.
"""
my_list = [23, 16, 234567, -4]
shuffle(my_list)
sorted_list = sorted(my_list)
self.assertEqual(main.commande("tri", *my_list), sorted_list)
def test_stop(self):
"""
On vérifie que le programme s'arrête bien.
"""
self.assertRaises(SystemExit, main.commande, "stop", 0)