Compare commits
7 Commits
6-cover-co
...
v14
Author | SHA1 | Date | |
---|---|---|---|
db413e4a35
|
|||
e8fc6d0816
|
|||
be7efbbfa7
|
|||
b8161eef93
|
|||
bcfd13442f
|
|||
f3dd9157c7
|
|||
40076ad3c1
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,6 @@
|
|||||||
*.pyc
|
*.pyc
|
||||||
|
|
||||||
|
.pytest_cache
|
||||||
|
.coverage
|
||||||
|
|
||||||
venv
|
venv
|
||||||
|
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.
|
44
main.py
44
main.py
@ -51,16 +51,16 @@ def seminaire():
|
|||||||
"""
|
"""
|
||||||
Affiche les slides du séminaire.
|
Affiche les slides du séminaire.
|
||||||
"""
|
"""
|
||||||
print("\x4c\x61\x69\x73\x73\x65\x20\x74\x6f\x6d\x62\x65"
|
return "\x4c\x61\x69\x73\x73\x65\x20\x74\x6f\x6d\x62\x65" \
|
||||||
"\x72\x2c\x20\x74\x6f\x6e\x20\x74\x72\x75\x63\x20"
|
"\x72\x2c\x20\x74\x6f\x6e\x20\x74\x72\x75\x63\x20" \
|
||||||
"\x65\x73\x74\x20\x74\x72\x6f\x70\x20\x62\x65\x75"
|
"\x65\x73\x74\x20\x74\x72\x6f\x70\x20\x62\x65\x75" \
|
||||||
"\x67\x75\xe9\x2c\x20\x74\x75\x20\x64\x65\x76\x72"
|
"\x67\x75\xe9\x2c\x20\x74\x75\x20\x64\x65\x76\x72" \
|
||||||
"\x61\x69\x73\x20\x70\x61\x73\x73\x65\x72\x20\x64"
|
"\x61\x69\x73\x20\x70\x61\x73\x73\x65\x72\x20\x64" \
|
||||||
"\x75\x20\x74\x65\x6d\x70\x73\x20\xe0\x20\xe9\x63"
|
"\x75\x20\x74\x65\x6d\x70\x73\x20\xe0\x20\xe9\x63" \
|
||||||
"\x72\x69\x72\x65\x20\x64\x65\x73\x20\x74\x65\x73"
|
"\x72\x69\x72\x65\x20\x64\x65\x73\x20\x74\x65\x73" \
|
||||||
"\x74\x73\x20\x65\x74\x20\x66\x61\x69\x72\x65\x20"
|
"\x74\x73\x20\x65\x74\x20\x66\x61\x69\x72\x65\x20" \
|
||||||
"\x64\xe9\x66\x69\x6c\x65\x72\x20\x74\x65\x73\x20"
|
"\x64\xe9\x66\x69\x6c\x65\x72\x20\x74\x65\x73\x20" \
|
||||||
"\x73\x6c\x69\x64\x65\x73")
|
"\x73\x6c\x69\x64\x65\x73"
|
||||||
|
|
||||||
|
|
||||||
def blague():
|
def blague():
|
||||||
@ -68,10 +68,10 @@ def blague():
|
|||||||
Renvoie une blague aléatoire.
|
Renvoie une blague aléatoire.
|
||||||
"""
|
"""
|
||||||
return choice(
|
return choice(
|
||||||
["Je vais vous raconter une blague sur, mais vous "
|
["Je vais vous raconter une blague sur UDP, mais vous "
|
||||||
"ne l'aurez peut-être pas.",
|
"ne l'aurez peut-être pas.",
|
||||||
"Connaissez-vous la différence entre la théroie "
|
"Connaissez-vous la différence entre la théorie "
|
||||||
"et la pratique ? Il n'y en left pas, en théorie."])
|
"et la pratique ? Il n'y en a pas, en théorie."])
|
||||||
|
|
||||||
|
|
||||||
def calcul(left: int, right: int, res: int, operation='+'):
|
def calcul(left: int, right: int, res: int, operation='+'):
|
||||||
@ -79,19 +79,23 @@ def calcul(left: int, right: int, res: int, operation='+'):
|
|||||||
Vérifie si left operation b == c, où a, b et c sont des entiers.
|
Vérifie si left operation b == c, où a, b et c sont des entiers.
|
||||||
L'opération peut être +, -, *, /, &, |, ^, % ou l'un de ses alias anglais.
|
L'opération peut être +, -, *, /, &, |, ^, % ou l'un de ses alias anglais.
|
||||||
"""
|
"""
|
||||||
|
left = int(left)
|
||||||
|
right = int(right)
|
||||||
|
res = int(res)
|
||||||
|
|
||||||
if operation in ['+', 'add', 'sum']:
|
if operation in ['+', 'add', 'sum']:
|
||||||
result = left + right
|
result = left + right
|
||||||
if operation in ['-', 'sub']:
|
elif operation in ['-', 'sub']:
|
||||||
result = left - right
|
result = left - right
|
||||||
if operation in ['*', 'mul', 'prod']:
|
elif operation in ['*', 'mul', 'prod']:
|
||||||
result = left * right
|
result = left * right
|
||||||
if operation in ['/', 'div']:
|
elif operation in ['/', 'div']:
|
||||||
result = left / right
|
result = left / right
|
||||||
if operation in ['&', 'and']:
|
elif operation in ['&', 'and']:
|
||||||
result = left & right
|
result = left & right
|
||||||
if operation in ['|', 'or']:
|
elif operation in ['|', 'or']:
|
||||||
result = left | right
|
result = left | right
|
||||||
if operation in ['^', 'xor']:
|
elif operation in ['^', 'xor']:
|
||||||
result = left ^ right
|
result = left ^ right
|
||||||
else:
|
else:
|
||||||
result = left % right
|
result = left % right
|
||||||
@ -102,7 +106,7 @@ def tri(*args):
|
|||||||
"""
|
"""
|
||||||
Trie les éléments donnés en argument.
|
Trie les éléments donnés en argument.
|
||||||
"""
|
"""
|
||||||
return sorted(args)
|
return sorted(int(number) for number in args)
|
||||||
|
|
||||||
|
|
||||||
def stop(exit_code: int = 0):
|
def stop(exit_code: int = 0):
|
||||||
|
62
main_test.py
62
main_test.py
@ -4,6 +4,7 @@
|
|||||||
Exécution des tests du script.
|
Exécution des tests du script.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from random import randint, seed, shuffle
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import main
|
import main
|
||||||
@ -16,7 +17,8 @@ class TestMain(unittest.TestCase):
|
|||||||
|
|
||||||
def test_aide(self):
|
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")
|
res = main.commande("aide")
|
||||||
lines = res.split("\n")
|
lines = res.split("\n")
|
||||||
@ -27,3 +29,61 @@ class TestMain(unittest.TestCase):
|
|||||||
self.assertTrue(lines[3].startswith("calcul"))
|
self.assertTrue(lines[3].startswith("calcul"))
|
||||||
self.assertTrue(lines[4].startswith("tri"))
|
self.assertTrue(lines[4].startswith("tri"))
|
||||||
self.assertTrue(lines[5].startswith("stop"))
|
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 = [-4, 16, 23, 234567]
|
||||||
|
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