Les 5 van 5
Controleren met beetje check
Controleer je labwerk in de container met beetje check, lees de uitvoer, vind het juiste les-id met beetje lijst en zet lesbestanden opnieuw klaar met beetje start.
๐ Op deze pagina
๐ฏ Na deze les kun je
- je labwerk controleren met beetje check
- de uitvoer en de exitcode van een check lezen
- les-id's vinden met beetje lijst
- lesbestanden (opnieuw) klaarzetten met beetje start
Je hebt de opdracht van een lab gemaakt. Maar klopt het ook? Daarvoor zit in elk lab-image het programma beetje. Met beetje check kijkt het je werk na: het draait je programma, vergelijkt de uitvoer, zoekt naar bestanden die er moeten zijn en vertelt je per punt wat goed is en wat nog niet. In deze les leer je hoe je het gebruikt en hoe je de uitvoer leest.
Het commando onder elke les
Onder elke les met een lab staat welk check-commando erbij hoort, bijvoorbeeld:
beetje check python-les2
python-les2 is het les-id: de cursus plus het lesnummer. Bij de cursus Programmeerconcepten begint het id met concepten- en bij Een beetje Linux & Docker is het alleen les1, les2, enzovoort. Je hoeft het id niet te onthouden; het staat altijd bij de les.
Checken vanuit je lesmap
Sta je al in de map van de les, dan mag je het id weglaten:
cd ~/lessen/02
beetje check
beetje ziet dan aan de map (~/lessen/02) welke les je bedoelt. Sta je ergens anders, bijvoorbeeld in je thuismap, dan gebruikt het de les uit BEETJE_LESSON (les 2 van deze cursus). Twijfel je, geef dan gewoon het volledige id.
De uitvoer lezen
Een check bestaat uit een aantal controles. Elke controle krijgt een regel. Een voorbeeld (welke controles er zijn, verschilt per les):
๐ beetje check python-les2 (werkmap: /home/student/lessen/02)
โ
requirements.txt bestaat
โ
requirements.txt noemt requests
โ uitvoer bevat 'Status: 200' niet
jouw uitvoer:
โ Traceback (most recent call last):
โ ...
Nog niet klaar: 1 van 3 controles niet gehaald. Pas aan en probeer opnieuw.
- โ deze controle is gehaald;
- โ deze niet, vaak met
verwacht:enjouw uitvoer:eronder, zodat je ziet waar het verschil zit; - โน๏ธ extra informatie, geen fout.
Zijn alle controles gehaald, dan eindigt het met:
๐ Alles goed (3 controles). Goed gedaan!
Gebruik de โ-regels als aanwijzing: pas je code aan, sla op en check opnieuw. Zo vaak als je wilt; er is geen maximum.
Exitcodes
Net als elk Linux-programma geeft beetje check een exitcode terug:
| Exitcode | Betekenis |
|---|---|
0 |
alles gehaald |
1 |
een of meer controles niet gehaald |
2 |
de check kon niet draaien (onbekend les-id, geen check voor deze les) |
Direct na de check zie je de code met echo $?. Handig als je zelf een scriptje maakt, bijvoorbeeld beetje check && echo "Door naar de volgende les!".
Les-id's vinden met beetje lijst
Wil je weten welke lessen er in het image zitten?
beetje lijst
python-les2 python/02
python-les3 python/03
...
concepten-les1 programmeerconcepten/01
...
Links staat het les-id, rechts de cursus en het lesnummer. Krijg je de melding les 'x' staat niet in dit lab-image, controleer dan je typwerk, of je het image van de goede taal gebruikt, en of je image wel recent genoeg is. Nieuwe lessen komen pas in je image als je het opnieuw downloadt (docker pull) of opnieuw bouwt.
Lesbestanden opnieuw klaarzetten
Bij het opstarten zet het image de startbestanden van alle lessen van je cursus klaar, zonder ooit iets van jou te overschrijven. Soms wil je dat zelf doen:
Een les van een andere cursus in hetzelfde image, bijvoorbeeld
concepten-les1terwijlBEETJE_COURSE=pythonis:beetje start concepten-les1De bestanden komen dan in
~/lessen/programmeerconcepten/01. Daar werktbeetje checkzonder id ook.Een les opnieuw beginnen.
beetje startoverschrijft niets. Wil je echt opnieuw beginnen, hernoem of verwijder dan eerst je lesmap en zet hem daarna opnieuw klaar:mv ~/lessen/02 ~/lessen/02-oud beetje start python-les2Werk je met een volume op je thuismap (les 3) en zit er na een update een nieuwe les in het image? Dan zet
beetje start <les-id>die les klaar.
Lokaal checken en je voortgang op de site
beetje check draait helemaal op je eigen computer, in de container. Het praat niet met beetjecoderen.nl. Een geslaagde lokale check zie je dus niet terug in je account. De lessen zelf rond je op de site af, met de quiz onderaan de les. Bij betaalde cursussen kun je veel labs ook als live lab in de browser doen; daar controleert de server je lab, en een geslaagd live lab levert XP op.
Daar staat tegenover dat lokaal werken geen tijdslimiet heeft, je eigen editor kan gebruiken en ook offline werkt zodra het image eenmaal op je computer staat.
Uitgewerkt voorbeeld
docker run -it --rm --user "$(id -u):$(id -g)" -v "$HOME/beetje-werk/python:/home/student/lessen" -e BEETJE_COURSE=python -e BEETJE_LESSON=2 registry.wizg.it/webhosting/beetjecoderen-web:lab-python-latest
In de container:
cat OPDRACHT.md # lees de opdracht
nano requirements.txt # werk aan de opdracht
beetje check # โ bij รฉรฉn controle: lees wat er verwacht wordt
nano requirements.txt # pas aan
beetje check # ๐ Alles goed
echo $? # 0
exit
Je werk staat nu in ~/beetje-werk/python/02 op je eigen computer.
Oefenen
- Start een lab, typ
beetje checkin de lesmap vรณรณr je iets hebt gedaan, en lees welke controles falen. Wat moet je dus maken? - Typ
beetje check bestaat-nieten daarnaecho $?. Welke exitcode krijg je, en wat betekent die? - Zoek met
beetje lijsthet les-id van les 5 van jouw cursus.
Samenvatting
beetje check <les-id>kijkt je labwerk na; in de lesmap mag het id weg.- โ is gehaald, โ niet (met verwacht/jouw uitvoer), ๐ betekent alles goed.
- Exitcode
0= gehaald,1= nog niet,2= check kon niet draaien. beetje lijsttoont alle les-id's,beetje start <les-id>zet lesbestanden klaar zonder te overschrijven.- Een lokale check blijft op je eigen computer en telt niet mee voor je voortgang op de site.
Dat was het: je kunt nu elk lokaal lab van beetjecoderen.nl op je eigen computer doen. Kies een cursus en begin met het lab van de eerste les.
๐ Quiz: controleren met beetje check
Log in om de quiz te maken. Met een gratis account kijk je je antwoorden na, bewaar je je voortgang en verdien je XP. De les zelf blijft gewoon gratis te lezen.