Créer un devoir de programmation à partir d’un dépôt Git, avec des tests cachés

Un bon exercice de programmation est en général un petit projet : du code de départ, quelques fichiers d’outils, un fichier de paquets et un dossier de tests. Si vous gardez déjà les vôtres dans Git, inutile de les recopier fichier par fichier dans le navigateur. Chargez le dépôt dans une tâche, indiquez quels fichiers sont des tests que les élèves ne doivent pas voir, et distribuez-la.

Cela fonctionne avec le serveur Git fourni avec la plateforme, pour le personnel et les élèves d’un établissement. Toute tâche de code peut être chargée ainsi, y compris une tâche que les élèves cloneront et sur laquelle ils enverront leur code, qui a sa propre page.

Charger une tâche depuis un dépôt

Dans l’éditeur de la tâche, cliquez sur « Charger depuis Git », choisissez un dépôt que vous pouvez lire et une branche, ou saisissez une étiquette ou un commit, puis cliquez sur « Prévisualiser ». L’aperçu liste chaque fichier qui serait chargé, le fichier par lequel le programme commence, et chaque fichier qui serait laissé de côté avec la raison : pas du texte, trop volumineux, ou un nom inutilisable. Rien ne change avant que vous cliquiez sur « Charger ».

Le chargement copie les fichiers une fois, dossiers et fichier de paquets compris. Ensuite, la tâche est comme les autres : vous la modifiez dans le navigateur comme d’habitude, et le dépôt n’est pas modifié. Les limites sont celles de tout projet, 50 fichiers de 64 Ko au plus chacun.

  1. Ouvrez la tâche dans son éditeur. Cliquez sur « Charger depuis Git » parmi les outils au-dessus du code.
  2. Choisissez le dépôt et la branche. Seuls les dépôts que vous pouvez lire sont proposés. Une étiquette ou un commit conviennent aussi.
  3. Indiquez les chemins masqués et protégés. Un par ligne : un dossier comme tests/, un nom comme test_*.py, ou un chemin.
  4. Prévisualisez, puis chargez. Vérifiez ce qui sera chargé et ce qui sera laissé de côté avant tout changement.
  5. Distribuez-la. Chaque élève reçoit sa propre copie, sans les fichiers masqués.

Des fichiers de tests cachés, et des fichiers que les élèves ne peuvent pas changer

Dans la même fenêtre, indiquez les chemins que les élèves ne doivent jamais voir, comme tests/ ou test_*.py, et ceux qu’ils peuvent voir sans pouvoir changer ce qui compte. Les fichiers masqués ne sont jamais distribués, ni placés dans le dépôt d’un élève.

Chaque fois que le travail d’un élève est testé ou noté, vos fichiers masqués et protégés sont d’abord remis depuis la tâche : modifier un test dans sa propre copie ne change rien à ce qui compte. Pour Python, Java, Go et JavaScript sur Node, les fichiers de tests masqués sont exécutés par l’outil de test du langage, pytest, JUnit, go test ou celui de Node, à côté de l’onglet Tests de la tâche.

Ces listes ne sont pas réservées aux tâches venues de Git : une tâche saisie dans le navigateur peut aussi avoir des chemins masqués et protégés.

Mettre la tâche à jour depuis un commit plus récent

La tâche retient le commit dont elle vient. « Mettre à jour depuis Git » en charge un plus récent et remplace ce qui a été modifié dans le navigateur depuis. Les élèves qui ont déjà la tâche gardent leurs copies : une correction du code de départ parvient à ceux à qui la tâche est distribuée ensuite.

Questions fréquentes

Puis-je charger une tâche depuis GitHub ?
Depuis le serveur Git de la plateforme. Pour utiliser un projet qui se trouve sur GitHub, envoyez-le d’abord dans un dépôt de notre serveur Git, ce qui tient en un git remote add et un git push.
Les élèves voient-ils mon dépôt ?
Non. Ils reçoivent leur propre copie de la tâche, sans les fichiers masqués. Si vous leur permettez de cloner la tâche, chacun reçoit un nouveau dépôt créé à partir de sa propre copie, jamais le vôtre.
Un élève peut-il modifier les tests sur lesquels il est noté ?
Non. Les fichiers de tests masqués ne lui sont jamais donnés, et chaque fois que son travail est testé ou noté, vos fichiers masqués et protégés sont remis depuis la tâche.