Comment définir le statut de sortie dans un Script Groovy

Nous avons un Script Groovy qui se ferme avec un status de 0 quand tout a fonctionné et un non-0 status pour différents types de conditions de défaillance. Par exemple, si le script a pris un utilisateur et une adresse e-mail comme arguments, il serait sortie avec un status de 1 pour un utilisateur non valide, et une status de 2 pour une adresse email invalide format. Nous utilisons System.exit(statusCode) pour cela. Cela fonctionne bien, mais qui rend le script difficile d'écrire des cas de test pour.

Dans un test, nous avons créer notre GroovyShell, créer nos Binding et appel shell.run(script,args). Pour les tests d'affirmer que les conditions de panne de la System.exit() causes de la JVM (et le test) pour quitter.

Sont il des alternatives à l'utilisation de System.exit() à la sortie d'un Script Groovy? J'ai expérimenté avec lancer les exceptions non traitées, mais qui encombre la sortie et fait toujours le code d'état 1.

Dans notre cas de test, j'ai également expérimenté avec l'aide de System.metaClass.static.invokeMethod pour modifier le comportement de System.exit() de ne pas sortir de la JVM, mais qui semble comme un vilain hack.

OriginalL'auteur Patrick | 2012-02-16