-
Notifications
You must be signed in to change notification settings - Fork 2
Structure des tâches
Un dossier de tâche typique ressemble à ceci
|- run
|- config.json
|- task.yaml
|- src
|- Runner.java
|- Tests.java
|- librairies (optionnel)
|- Librairies.jar
|- Correction.java
|- Templates
|- EtudiantCode.tmpl
|-student
|- Translations
Le script run
a plusieurs utilités :
- Il va mettre les réponses des étudiants dans les fichiers
.tmpl
(voir section sur le dossier Templates); - Il va compiler les fichiers
.java
du dossiersrc
et ceux générés lors de l'étape précédente; - Il va éventuellement exécuter un script custom supplémentaire (voir section sur le config.json);
- Il va lancer le
Runner
et donner le feedback adéquat à l'étudiant;
Il prend ses arguments depuis le fichier config.json
qui sera détaillé dans la section suivante.
Le fichier config.json
est le fichier de configuration de la tâche. Voici ses champs:
-
customscript
: le nom d'un fichier de script personnalisé, dans un langage de script quelconque; -
execcustom
: s'il faut exécuter oui (1) ou non (0) le script personnalisé; -
nexercices
: le nombre d'exercice (sous-problèmes) de la tâche
Il y a deux autre champs qui sont optionnels
-
tests
: une liste (i.e.[elem1,elem2,...]
) qui contient l'ensemble des fichiers de tests à compiler et lancer. Si le champs n'est pas présent ou si la liste est vide, les fichiers qui sont considérer comme des fichier de tests sont les fichiers.java
tel qu'ils sont- Différent du fichier
runner
; - dont le nom ne commence pas par 'Correction'
- Différent du fichier
-
runner
: une chaîne de caractère qui spécifie le runner à utiliser. Si le champs n'est pas présent, le fichierRunner.java
est utilisé.
Ce fichier est généré automatiquement lors de la création d'une tâche, via l'interface graphique. Sur cette interface vous retrouvez
- Un onglet Basic settings. Dans cet onglet vous avez notamment le nom de l'auteur, de la tâche , le contexte et quelques autres options. Le contexte de la tâche est l'énoncé de l'exercice que vous écrivez. Le contexte est écrit en rST;
- Un onglet Container setup dans lequel vous pouvez définir les paramètres de l'environnement dans lequel le code de l'étudiant va être exécuté;
- Un onglet Subproblems dans lequel vous pouvez définir de nouveau sous-problème dans votre tâche. Chaque sous-problème est identifié par un id unique. Cet identifiant est important pour les fichiers de template (voir section sur le dossier Templates);
- Un onglet Task files où vous pouvez manipuler les fichiers de la tâches.
Le dossier src
doit contenir
- L'ensemble des fichiers de tests
- Le runner qui lancent les tests
Éventuellement, on peut trouver dedans
- Un (des) fichier(s) de correction de l'exercice. Notons que nous recommandons fortement l'écriture de fichiers de corrections pour s'assurer que l'exercice soit réalisable. Le(s) fichier(s) de correction doivent tous suivre la nomenclature
Correction<String>.java
.
Notons que le nom des fichiers de test n'ont pas d'importance. Il est cependant important que le fichier runner renvoie 127 si les tests ont réussis.
Ce dossier contient des fichiers .tmpl
. Ces fichiers sont des templates dans lesquels seront insérés les réponses de l'étudiant aux sous-problèmes. Un fichier .tmpl
est un fichier écrit en Java dans lequel une partie du code a été remplacé par @ @<id-question>@@
ou <id-question>
est l'id d'un sous-problème de votre tâche. C'est à cet endroit que sera inséré le code de l'étudiant. Cette opération est effectuée par le fichier run
et le résultat sera écrit dans un fichier .java
qui sera placé dans un dossier StudentCode
à la racine du dossier. C'est pourquoi les fichiers des étudiants se trouvent dans le package StudentCode
.
Remarquez que vous pouvez avoir plusieurs fichiere .tmpl
avec chacun un ou plusieurs sous-problème à remplacer.
Ce dossier contient un utilitaire Java (Translator.java) permettant l'intégration de gnugettext dans les autres fichiers Java. Ce dossier contient aussi un dossier translation_run
et translation_java
. Ceux-ci contiennent les traduction des chaines de caractères. Vous ne devez à priori pas y toucher. Il est nécessaire que ces fichiers se trouvent dans le dossier student afin que les traductions soient accessibles au runtime (au runtime, seul le dossier student est accessible).