Écrit par

CEO at Ellipse
Question Pierre LaFay · Jan 12, 2024

Envoyer la sortie standard vers un fichier

Bonjour a tous,

Dans le cadre d'un projet, j'ai mis en place à l'aide de quelques classes objectscript une solution de tests d'integration.

Son principe est basique, les tests sont rassemblés dans des suites elles mêmes incluses dans un fichier par classe ou ensemble de classes testé.

Mon outil m'affiche à l'écran le bon passage des tests et utilise des séquences d'échappement terminal pour mettre en exergue les échecs (écriture en rouge) .

Mon souci est maintenant que j'aimerai obtenir les résultat dans un fichier tcommunicable à mon client.

Je me demandais s'il y avait une solution simple pour envoyer la sortie standard dans un fichier, il ne serait pas compliqué de gérer les séquence d'escape utilisée pour la coloration, et me permettrai de répondre rapidement

Si ce n'est pas possible, je modifierai un peu mes classes, ce qui sera une bonne chose car j'aurai du prendre en compte ce requierment dès le début de l'écriture de mes classes.

Je ferai dans tous le cas ces modifications pour pouvoir également proposer une sortie HTML ou PDF, quand ce sera terminé je passerai ça dans open-exchange

Product version: IRIS 2023.1

Comments

Sylvain Guilbaud · Jan 12, 2024

Bonjour @Pierre LaFay

pour rediriger la sortie standard du Terminal IRIS, tu peux ouvrir un fichier et l'indiquer via la commande USE 
Exemple ci-dessous et en ligne :

Class utils.file
{

Parameter DIRECTORY = "/data/";Parameter FILENAME = "results";Parameter EXTENSION = ".txt";/// Redirect standard output to a fileClassMethod results() As%Status
{
        set sc = $$$OKSET file=..#DIRECTORY _ ..#FILENAME _ "_" _ $tr($zdt($h,8)," :")_..#EXTENSION
        OPEN file:("NRW"):5USE file
            WRITE !,"BEGIN RESULTS ",$zdt($h,3),!
            do##class(UnitTest.utils).run("Test3")
            WRITE !,"END RESULTS ",$zdt($h,3)
        CLOSE file
        WRITE !,"Results are in ",file,!
        return sc
}

}

Avec le fichier contenant toutes les écritures vers la sortie :

0
Pierre LaFay  Jan 13, 2024 to Sylvain Guilbaud

Merci @Sylvain Guilbaud ,

Cela va me permettre de conserver un peu mon code pas trop propre 🙃 et de produire un résultat, je vais aussi regarder le package de @Lorenzo Scalese 
 

0
Pierre LaFay  Jan 13, 2024 to Lorenzo Scalese

Merci @Lorenzo Scalese 

Je suis allé voir le package et c'est exactement ce qu'il me faut Echo Redirect et Redirect Output to a global sont deux fonctionnalités qui vont me servir pour faire une sortie document plus adaptée

0