Page 1 sur 1

[Résolu] Débuggage d'exercices

Publié : 03 août 2015, 18:12
par spalax
Salut,
je me demandais quelle était votre méthode pour « débugger » les exercices. Je pense en particulier à la création d'exercices, lorsque le code LaTeX généré contient des erreurs (ne compile pas) qu'il faut corriger.

Pour le moment, avant la création de l'outil testexo, la méthode que je vois est d'utiliser l'interface graphique pour créer un fichier LaTeX, mais ça fait beaucoup de clics pour détecter une accolade manquante. J'ai une idée en tête, mais avant de l'implémenter, je voulais savoir si vous aviez d'autres solutions, meilleures.

Mon idée est d'ajouter une option `--pipe` à la sous-commande `compile` de `testexo`. Actuellement, `testexo` permet de compiler un exercice (en définissant éventuellement la graine utilisée par le générateur aléatoire, pour avoir quelque chose de déterministe). Dans mon idée, le fichier LaTeX est généré, placé dans un fichier temporaire, et avant d'être compilé, la (ou les) arguments de `--pipe`, qui sont des commandes, sont exécutés sur le fichier. Par exemple :
  • `testexo.py chemin/vers/mon/exercice.py compile --pipe more` permet de visualiser le fichier LaTeX généré avant sa compilation ;
  • `testexo.py chemin/vers/mon/exercice.py compile --pipe vim` permet d'éditer le fichier dans vim sa compilation ;
  • `testexo.py chemin/vers/mon/exercice.py compile --pipe "cp {} foo.tex` copie le fichier temporaire vers `foo.tex`.
Les arguments de `--pipe` sont interprétés comme suit :
  • s'ils contiennent `{}`, c'est remplacé par le chemin (absolu) du fichier LaTeX ;
  • sinon, le chemin (absolu) du fichier LaTeX est ajouté en fin de commandes.
Ainsi, `--pipe vim` et `--pipe "vim {}"` donnent le même résultat.

Des commentaires ?

-- Louis

Re: [Résolu] Débuggage d'exercices

Publié : 15 sept. 2015, 23:43
par spalax

Re: [Résolu] Débuggage d'exercices

Publié : 16 sept. 2015, 15:37
par Jérôme
Merci beaucoup Louis :)

Re: [Résolu] Débuggage d'exercices

Publié : 17 nov. 2015, 19:31
par Jérôme
Salut Louis,

j'ai voulu tester aujourd'hui mais je ne parviens pas à faire fonctionner testexos.py. J'ai utilisé la commande :
./testexo.py pyromaths/ex/lycee/SecondDegre.py compile --pipe vim
mais j'obtiens le message d'erreur suivant :
Traceback (most recent call last):
  File "./testexo.py", line 240, in <module>
    main()
  File "./testexo.py", line 221, in main
    pyromaths.ex.load()
AttributeError: 'module' object has no attribute 'load'
As-tu la moindre idée de ce dont il s'agit ?

Jérôme

Re: [Résolu] Débuggage d'exercices

Publié : 17 nov. 2015, 20:43
par spalax
Bonjour,
depuis que j'ai écris ce message, j'ai modifié la manière de spécifier les exercices. Maintenant, chaque exercice a un identifiant unique (de la forme NIVEAU.NOM_DE_LA_CLASSE). Pour voir les identifiants disponibles :

Code : Tout sélectionner

./testexo.py lsexos | sort
Ensuite, (mais tu as recopié mon exemple erroné), le mot-clef `compile` vient avant le nom de l'exercice. Donc ta commande ressemblerait plutôt à :

Code : Tout sélectionner

./testexo.py compile lycee.exo_factorisation_degre2 --pipe vim
Mais le message d'erreur que tu obtiens ne correspond pas aux erreurs que je viens de citer. Pourrais-tu ré-essayer avec la bonne commande, et me donner le message d'erreur si nécessaire ? De même, peux-tu vérifier que tu es bien sur la branche `develop` ? Ça fonctionnait au moins au commit fb4d417. Par contre, l'introduction de gettext a cassé cela (car la fonction `_()` n'est pas définie). Il faudrait que je répare cela. C'est ajouté à ma TODO liste…

Re: [Résolu] Débuggage d'exercices

Publié : 17 nov. 2015, 21:15
par spalax
Addendum :

Je viens de définir à l'arrache `_()` comme la fonction identité. Donc `testexo` fonctionne même dans la branche `develop` à jour.

Re: [Résolu] Débuggage d'exercices

Publié : 17 nov. 2015, 21:39
par Jérôme
C'est parfait ! Merci :)