Question
· Jan 12

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

Version du produit: IRIS 2023.1
Discussion (4)3
Connectez-vous ou inscrivez-vous pour continuer

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 file
ClassMethod results() As %Status
{
        set sc = $$$OK
        SET file=..#DIRECTORY _ ..#FILENAME _ "_" _ $tr($zdt($h,8)," :")_..#EXTENSION
        OPEN file:("NRW"):5
            USE 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 :