Beetje Coderen

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.

๐Ÿ“– ยฑ 5 min lezen โฑ 20–30 minuten leestijd + oefenen ๐Ÿ“ quiz

Een terminal met een lijst groene vinkjes en één rood kruisje, naast een klembord met een checklist

๐ŸŽฏ 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: en jouw 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-les1 terwijl BEETJE_COURSE=python is:

    beetje start concepten-les1
    

    De bestanden komen dan in ~/lessen/programmeerconcepten/01. Daar werkt beetje check zonder id ook.

  • Een les opnieuw beginnen. beetje start overschrijft 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-les2
    
  • Werk 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

  1. Start een lab, typ beetje check in de lesmap vรณรณr je iets hebt gedaan, en lees welke controles falen. Wat moet je dus maken?
  2. Typ beetje check bestaat-niet en daarna echo $?. Welke exitcode krijg je, en wat betekent die?
  3. Zoek met beetje lijst het 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 lijst toont 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

5 vragen ยท 70% nodig om te slagen

1. Welke exitcode geeft `beetje check` als alles gehaald is?
2. Wanneer mag je `beetje check` zonder les-id typen?
3. Hoe vind je alle les-id's in een image?
4. Wat doet `beetje start python-les2` als de lesmap al bestaat?
5. Zie je een geslaagde lokale check terug in je account op de site?

Log in of maak gratis een account om deze quiz te maken.