2016-08-21 2 views
3

J'essaye actuellement de refactoriser la base de code d'une extension gnome-shell existante. Une partie de cela est l'introduction de tests unitaires car il semble plutôt négligent de ne pas utiliser les tests en 2016.Existe-t-il un moyen d'écrire des tests unitaires pour les extensions GNOME-Shell?

Après un peu de bricolage, j'ai réussi à installer un pipeline de travail-phantomjs-qunit qui m'amène réellement quelque part.

Cependant, les extensions shell utilisent une coutume imports -mechanic ainsi que quelques modifications à construire dans les classes (ex: String.format via GJS) qui ne permettent pas de réellement tester ces fichiers dans un environnement isolé, qui est: non au sein de le shell. Donc, ma question est la suivante: Est-il vraiment vrai qu'il est impossible d'écrire des tests unitaires pour les extensions shell?

+0

Pas totalement impossible à faire mais ne vaut vraiment pas la peine. Le petit groupe de développeurs de GNOME Shell continue à changer les API internes, ce qui signifie qu'en pratique, il est souvent nécessaire de retravailler une extension chaque fois qu'une nouvelle version de GNOME Shell est publiée. – fpmurphy1

+1

@ fpmurphy1 merci pour les commentaires. Je suis bien au courant des changements rapides de l'API, mais je pense qu'il serait préférable d'avoir une couverture de base. Si seulement pour obtenir un avertissement précoce si les choses se brisent. – Elbenfreund

Répondre

0

Je l'ai fait un peu de travail avec les tests unitaires avec des extensions shell gnome, jetez un oeil à cette extension pour un exemple complet:

https://github.com/emerinohdz/power-alt-tab

Je l'ai utilisé webpack avec babel, le karma avec le jasmin et PhantomJS. J'ai inclus un polyfill stupide pour les pièces GS dont j'avais besoin, et fourni une alternative pour gérer les modules, en utilisant les importations ES6 au lieu du mécanisme d'importation GS par défaut. Aucun test d'intégration n'est possible en ce moment, seulement des tests unitaires, mais au moins vous avez le contrôle de le plus de votre base de code.