Compare commits
5 Commits
v8
...
8-write-te
Author | SHA1 | Date | |
---|---|---|---|
f3dd9157c7
|
|||
40076ad3c1
|
|||
60e09751da
|
|||
1fc558a2ad
|
|||
df223bd19e
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,6 @@
|
|||||||
*.pyc
|
*.pyc
|
||||||
|
|
||||||
|
.pytest_cache
|
||||||
|
.coverage
|
||||||
|
|
||||||
venv
|
venv
|
||||||
|
@ -25,5 +25,5 @@ test:
|
|||||||
stage: test
|
stage: test
|
||||||
image: python:3-alpine
|
image: python:3-alpine
|
||||||
before_script:
|
before_script:
|
||||||
- pip install pytest --no-cache-dir
|
- pip install pytest pytest-cov --no-cache-dir
|
||||||
script: pytest --showlocals .
|
script: pytest --showlocals --cov=main --cov=main_test --cov-report=term-missing .
|
||||||
|
6
README.md
Normal file
6
README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[](https://gitlab.crans.org/ynerant/seminaire-ci/-/commits/master)
|
||||||
|
[](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.
|
14
main.py
14
main.py
@ -38,13 +38,13 @@ def aide():
|
|||||||
"""
|
"""
|
||||||
Affiche l'aide
|
Affiche l'aide
|
||||||
"""
|
"""
|
||||||
print("aide\t\tAffiche l'aide")
|
return "aide\t\tAffiche l'aide\n" \
|
||||||
print("seminaire\tLance le séminaire")
|
"seminaire\tLance le séminaire\n" \
|
||||||
print("blague\t\tRaconte une blague")
|
"blague\t\tRaconte une blague\n" \
|
||||||
print("calcul\t\tVérifie une opération arithmétique. "
|
"calcul\t\tVérifie une opération arithmétique. " \
|
||||||
"Par exemple, check(1, 2, 3, '+') renvoie True")
|
"Par exemple, check(1, 2, 3, '+') renvoie True\n" \
|
||||||
print("tri\t\tTrie une liste d'entiers.")
|
"tri\t\tTrie une liste d'entiers.\n" \
|
||||||
print("stop\t\tQuitte le programme")
|
"stop\t\tQuitte le programme"
|
||||||
|
|
||||||
|
|
||||||
def seminaire():
|
def seminaire():
|
||||||
|
89
main_test.py
89
main_test.py
@ -4,19 +4,86 @@
|
|||||||
Exécution des tests du script.
|
Exécution des tests du script.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from random import randint, seed, shuffle
|
||||||
|
import unittest
|
||||||
|
|
||||||
import main
|
import main
|
||||||
|
|
||||||
|
|
||||||
def test_aide():
|
class TestMain(unittest.TestCase):
|
||||||
"""
|
"""
|
||||||
On essaie d'afficher l'aide, et on vérifie si ça affiche la bonne chose.
|
Cette classe permet d'executer l'ensemble des scripts
|
||||||
"""
|
"""
|
||||||
res = main.commande("aide")
|
|
||||||
lines = res.split("\n")
|
def test_aide(self):
|
||||||
assert len(lines) == 6
|
"""
|
||||||
assert lines[0].startswith("aide")
|
On essaie d'afficher l'aide,
|
||||||
assert lines[1].startswith("seminaire")
|
et on vérifie si ça affiche la bonne chose.
|
||||||
assert lines[2].startswith("blague")
|
"""
|
||||||
assert lines[3].startswith("calcul")
|
res = main.commande("aide")
|
||||||
assert lines[4].startswith("tri")
|
lines = res.split("\n")
|
||||||
assert lines[5].startswith("stop")
|
self.assertEqual(len(lines), 6)
|
||||||
|
self.assertTrue(lines[0].startswith("aide"))
|
||||||
|
self.assertTrue(lines[1].startswith("seminaire"))
|
||||||
|
self.assertTrue(lines[2].startswith("blague"))
|
||||||
|
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)
|
||||||
|
Reference in New Issue
Block a user