2011-11-30 6 views
0

Je travaille sur un plugin de test JavaScript pour Grails. J'ai écrit quelques classes Groovy pour effectuer les tests que j'ai stockés dans mon dossier src/groovy. Je me connecte aux événements de test dans le script _Events.groovy de mon plugin et j'injecte une instance du coureur de test. À partir de cette instance du coureur de test, j'ai besoin d'accéder aux fichiers JavaScript, que j'ai stockés dans src/js, pour effectuer le test.Comment puis-je accéder à un fichier de mon plugin Grails à partir d'un fichier src dans le même plugin?

Le plugin documentation spécifie un moyen d'obtenir le chemin à partir de mes scripts Gant, mais cela ne fonctionne pas ailleurs. J'ai également essayé d'accéder au GrailsApplication via grailsApplication ou ApplicationHolder, mais je reçois null. Enfin, j'ai essayé d'accéder à BuildSettings et ConfigurationHolder, mais ceux-ci me montrent une configuration vide. Pour faire fonctionner mon plugin, je suis en train de copier les fichiers JavaScript dans le dossier test/resources de l'application afin qu'il soit dans un emplacement connu par rapport au répertoire de travail, que je suppose être le dossier du projet. Cela me semble envahissant et fragile, alors je voudrais trouver une «bonne» façon.

Comment puis-je obtenir un chemin vers mon plugin depuis mon coureur d'essai pour que je puisse trouver ces fichiers?

+0

Au lieu de copier les fichiers, maintenant, je ne fais que passer dans l'emplacement du plugin depuis le script _Events vers le constructeur de mon coureur de test. Ce chemin est beaucoup plus propre, mais me semble toujours artificiel. –

Répondre

2

Si vous avez les BuildSettings et le haricot pluginManager (soit injecté dépendance avec def pluginManager ou via PluginManagerHolder), vous pouvez obtenir le chemin avec

new File(buildSettings.projectPluginsDir, pluginManager.getPluginPath('foo')) 
+0

Je n'arrive pas à obtenir une instance du gestionnaire de plugins. 'PluginManagerHolder.currentPluginManager()' déclenche une exception IllegalStateException car il n'y a pas de gestionnaire de plugin. Je suppose que c'est parce que je l'appelle à partir d'un fichier dans src au lieu de quelque chose qui a un contexte. –

+0

Quel est le chemin de l'appel - est-ce lors d'une demande, ou d'un nouveau fil? Ou à partir de la ligne de commande en dehors de Gant? –

+0

L'appel provient de _TestApp.groovy, car il est appelé à partir de 'grails test-app'. Je me connecte aux événements de test dans le script _Events de mon plugin et j'injecte une instance de ma classe dans src/groovy. Je vais ajouter cela à la question. –

Questions connexes