Improved test_run to fail when a test generates an error on create_ref or no_check_ref 01/17701/4
Pierre-Aime Agnel [Tue, 19 Jan 2016 15:35:26 +0000 (16:35 +0100)]
Change-Id: I64dc914e6e46148ce83c6683466a517dd71f9f27

scilab/modules/development_tools/help/en_US/test_run.xml
scilab/modules/development_tools/help/fr_FR/test_run.xml [new file with mode: 0644]
scilab/modules/development_tools/macros/test_run.sci

index 2e48c1a..1638de4 100644 (file)
@@ -15,7 +15,9 @@
 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="test_run" xml:lang="en">
     <refnamediv>
         <refname>test_run</refname>
-        <refpurpose>Launch tests</refpurpose>
+        <refpurpose>
+            Launches unit tests and non-regression test in a module or directory. The test run checks first that test scripts does not generate an error, then that the test diary (<literal>dia</literal> files) is the same as the reference diary (<literal>dia.ref</literal> files).
+        </refpurpose>
     </refnamediv>
     <refsynopsisdiv>
         <title>Calling Sequence</title>
             <varlistentry>
                 <term>module</term>
                 <listitem>
-                    <para>A String array. This input argument must be</para>
+                    <para>
+                        A String array or <literal>[]</literal>. Name of the modules or directory for the tests, all internal modules if <literal>[]</literal>
+                    </para>
                     <itemizedlist>
                         <listitem>
                             <para>
-                                the name of an internal Scilab module ("core", "time", ...) or a sub-module (e.g. "optimization|neldermead").
+                                the name of an internal Scilab module ("core", "time", ...), a sub-module (e.g. "optimization|neldermead").
                             </para>
                         </listitem>
                         <listitem>
@@ -46,7 +50,7 @@
                         </listitem>
                         <listitem>
                             <para>
-                                the absolute directory path of a module.
+                                the absolute directory path of a module containing test/unit_tests or test/nonreg_tests.
                             </para>
                         </listitem>
                     </itemizedlist>
             <varlistentry>
                 <term>test_name</term>
                 <listitem>
-                    <para>A string array</para>
+                    <para>
+                        A string array or []. The names of the tests to execute during this run. If <literal>[]</literal> executes all tests found.
+                    </para>
                 </listitem>
             </varlistentry>
             <varlistentry>
                 <term>options</term>
                 <listitem>
-                    <para>A string array</para>
-                    <variablelist>
+                    <para>
+                        A string array or <literal>[]</literal>. The options for the tests during this run, default options if <literal>[]</literal>.
+                    </para>
+                    <variablelist> or
                         <varlistentry>
-                            <term>no_check_ref</term>
+                            <term>"no_check_ref"</term>
                             <listitem>
                                 <para>does not check if the .dia and .dia.ref are equal</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>no_check_error_output</term>
+                            <term>"no_check_error_output"</term>
                             <listitem>
                                 <para>The error output stream is not checked. This option can be used when Scilab complains about the localization being not available.</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>create_ref</term>
+                            <term>"create_ref"</term>
                             <listitem>
                                 <para>create the .dia.ref file and does not check if the .dia and .dia.ref are equal</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>show_error</term>
+                            <term>"show_error"</term>
                             <listitem>
-                                <para>If an error occurs, show the last 10 lines of the execution</para>
+                                <para>If an error occurs, shows the last 10 lines of the execution</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>show_diff</term>
+                            <term>"show_diff"</term>
                             <listitem>
                                 <para>
-                                    If a difference is found, show the result of the command <literal>diff -u</literal>
+                                    If a difference is found, shows the result of the command <literal>diff -u</literal>
                                 </para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>list</term>
+                            <term>"list"</term>
                             <listitem>
                                 <para>Does not perform the tests but displays a list of available tests</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>help</term>
+                            <term>"help"</term>
                             <listitem>
                                 <para>display some examples about how to use this command</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>mode_nw</term>
+                            <term>"mode_nw"</term>
                             <listitem>
                                 <para>Add the "-nw" option to the launch</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>mode_nwni</term>
+                            <term>"mode_nwni"</term>
                             <listitem>
                                 <para>Add the "-nwni" option to the launch</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>mode_nwni_profiling</term>
+                            <term>"mode_nwni_profiling"</term>
                             <listitem>
                                 <para>Add the "-nwni -profiling" option to the launch for detect valgrind error (Linux only)</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>nonreg_tests</term>
+                            <term>"nonreg_tests"</term>
                             <listitem>
                                 <para>runs only the non-regression tests, skipping unit tests</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>unit_tests</term>
+                            <term>"unit_tests"</term>
                             <listitem>
                                 <para>Runs only the unit tests, skipping non-regression tests</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>skip_tests</term>
+                            <term>"skip_tests"</term>
                             <listitem>
-                                <para>Skip the tests</para>
+                                <para>
+                                    Skip the tests specified in <term>test_name</term>.
+                                </para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>enable_lt</term>
+                            <term>"enable_lt"</term>
                             <listitem>
                                 <para>Enable long-time execution tests</para>
                             </listitem>
                         </varlistentry>
                         <varlistentry>
-                            <term>short_summary</term>
+                            <term>"short_summary"</term>
                             <listitem>
                                 <para>Does not display statistics nor execution time after execution (only number of executed, passed, failed and skipped tests will be displayed on a single line).</para>
                             </listitem>
             execute them, and display a report about success of failures.
             The .tst files are searched in directories SCI+"/modules/*/tests/unit_tests"
             and SCI+"/modules/*/tests/nonreg_tests".
-            Whenever a test is executed, a .dia file is generated which contains
-            the full list of commands executed along with message which appears in the
-            console. When the script is done, the .dia file is compared with
-            the .dia.ref file which is expected to be in the same directory
+        </para>
+        <para>
+            First <literal>test_run</literal> checks that a test does not produce an error.
+        </para>
+        <para>
+            Then <literal>test_run</literal> checks that the output and commands of a script are identical to the reference file. Whenever a test is executed, a <literal>.dia</literal> file is generated which contains
+            the full list of commands executed along with messages that appear in the
+            console output. When the script is done, the <literal>.dia</literal> file is compared with
+            the <literal>.dia.ref</literal> file which is expected to be in the same directory
             as the .tst file. If the two file are different, the test fails.
         </para>
         <para>
         <para>
             The algorithm is the following.
             First, the <literal>.ref</literal> is considered. If this file does not exist,
-            the platform-specific <literal>.ref</literal> file is examined depending on the current platform.
+            the platform-specific <literal>platform.ref</literal> file is examined depending on the current platform.
         </para>
         <itemizedlist>
             <listitem>
@@ -453,8 +468,6 @@ test_run('time','datenum',[],TMPDIR+"/time_datenum_test_run.xml");
         <para>
             The tests are performed in the temporary directory, not in the directory
             which originally contain the tests files.
-            The .tst file is copied into the temporary directory, the test is performed
-            and the .dia.ref is copied back into the original location.
         </para>
         <para>
             The .tst script is not run as is. Instead, a header and a footer are
@@ -491,8 +504,12 @@ test_run('time','datenum',[],TMPDIR+"/time_datenum_test_run.xml");
                         Fourth argument added to export to a XML file
                     </para>
                 </revdescription>
+            </revision>
+            <revision>
                 <revnumber>5.5.0</revnumber>
                 <revdescription>32/64bits separation available</revdescription>
+            </revision>
+            <revision>
                 <revnumber>6.0.0</revnumber>
                 <revdescription>profiling mode added to profile execution with valgrind (Linux only)</revdescription>
             </revision>
diff --git a/scilab/modules/development_tools/help/fr_FR/test_run.xml b/scilab/modules/development_tools/help/fr_FR/test_run.xml
new file mode 100644 (file)
index 0000000..61dc3fe
--- /dev/null
@@ -0,0 +1,501 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA
+ * Copyright (C) 2009-2011 - DIGITEO - Michael Baudin
+ * Copyright (C) 2013 - Scilab Enterprises - Paul Bignier: added 32/64bits separation
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="test_run" xml:lang="fr">
+    <refnamediv>
+        <refname>test_run</refname>
+        <refpurpose>
+            Lance les tests unitaires et de non régression présents dans un module ou dans un répertoire. La passe de test vérifie d'abord que le test s'exécute sans erreur, puis que la sortie console (fichier <literal>dia</literal>) est conforme à un fichier de référence préalablement généré (fichier <literal>dia.ref</literal>).
+        </refpurpose>
+    </refnamediv>
+    <refsynopsisdiv>
+        <title>Syntaxe</title>
+        <synopsis>
+            status = test_run()
+            status = test_run(module)
+            status = test_run(module, test_name)
+            status = test_run(module, test_name, options, exportToFile)
+        </synopsis>
+    </refsynopsisdiv>
+    <refsection>
+        <title>Arguments</title>
+        <variablelist>
+            <varlistentry>
+                <term>module</term>
+                <listitem>
+                    <para>
+                        Un tableau de chaînes de caractères ou <literal>[]</literal>. Nom des modules ou répertoires à tester, tous les modules internes de scilab si <literal>[]</literal>
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                            <para>
+                                le nom d'un module interne de Scilab ("core", "time", ...) ou d'un sous-module ("optimization|neldermead").
+                            </para>
+                        </listitem>
+                        <listitem>
+                            <para>
+                                le nom d'un module ATOMS ("module_lycee", "nisp", ...). Pour être pris en compte le module doit être chargé à l'appel de test_run().
+                            </para>
+                        </listitem>
+                        <listitem>
+                            <para>
+                                le chemin absolu vers le répertoire d'un module.
+                            </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>test_name</term>
+                <listitem>
+                    <para>
+                        Un tableau de chaînes de caractères ou <literal>[]</literal>. Le nom des tests à exécuter lors de cette passe de tests, tous les tests si <literal>[]</literal>
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>options</term>
+                <listitem>
+                    <para>
+                        Un tableau de chaînes de caractères ou <literal>[]</literal>. Les options à utiliser pour la passe de test, les options par défaut si <literal>[]</literal>
+                    </para>
+                    <variablelist>
+                        <varlistentry>
+                            <term>"no_check_ref"</term>
+                            <listitem>
+                                <para>n'effectue pas la comparaison entre les fichiers .dia et .dia.ref</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"no_check_error_output"</term>
+                            <listitem>
+                                <para>ignore les messages affichés en sortie d'erreur standard. Cette option peut être utilisé pour certains messages présents en sortie d'erreur dans la localisation par exemple.</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"create_ref"</term>
+                            <listitem>
+                                <para>génère un fichier .dia.ref (ignore la comparaison avec tout précédent fichier .dia.ref)</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"show_error"</term>
+                            <listitem>
+                                <para>affiche les 10 dernières lignes d'exécution du script si un test échoue.</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"show_diff"</term>
+                            <listitem>
+                                <para>
+                                    si une différence avec le fichier .dia.ref est trouvée, affiche la différence avec une commande <literal>diff -u</literal>
+                                </para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"list"</term>
+                            <listitem>
+                                <para>liste les tests disponibles (aucun test n'est exécuté)</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"help"</term>
+                            <listitem>
+                                <para>affiche des exemples d'utilisation de cette commande</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"mode_nw"</term>
+                            <listitem>
+                                <para>ajoute l'option "-nw" au lancement de chaque test</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"mode_nwni"</term>
+                            <listitem>
+                                <para>ajoute l'option "-nwni" au lancement de chaque test</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"mode_nwni_profiling"</term>
+                            <listitem>
+                                <para>ajoute les options "-nwni -profiling" pour permettre le profiling (seulement disponible sous linux)</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"nonreg_tests"</term>
+                            <listitem>
+                                <para>lance uniquement les tests de non régression</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"unit_tests"</term>
+                            <listitem>
+                                <para>lance uniquement les tests unitaires</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"skip_tests"</term>
+                            <listitem>
+                                <para>
+                                    ignore les tests spécifiés dans <term>test_name</term>
+                                </para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"enable_lt"</term>
+                            <listitem>
+                                <para>active les tests taggés à long temps d'exécution</para>
+                            </listitem>
+                        </varlistentry>
+                        <varlistentry>
+                            <term>"short_summary"</term>
+                            <listitem>
+                                <para>n'affiche pas les statistiques complètes d'exécutions (seuls le nombre de tests exécutés, réussis, échoués et ignorés sont affichés sur une seule ligne de résumé)</para>
+                            </listitem>
+                        </varlistentry>
+                    </variablelist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>exportToFile</term>
+                <listitem>
+                    <para>
+                        une chaîne de caractères. Chemin d'accès à un fichier d'export.
+                    </para>
+                    <para>
+                        Exporte le resultat de la passe de test dans le fichier XML <varname>exportToFile</varname>. Ce fichier suit le format XUnit.
+                        L'utilisation de cet argument d'entrée active automatiquement les options <literal>"show_diff"</literal> et <literal>"show_error"</literal>.
+                    </para>
+                    <para>
+                        Si le fichier spécifié par <varname>exportToFile</varname> existe préalablement, les résultats de tests sont ajoutés en fin de fichier.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>status</term>
+                <listitem>
+                    <para>
+                        Une valeur booléenne.
+                        Renvoie %t dans le cas où aucune erreur n'est détectée pour cette passe.
+                        Renvoie %f sinon.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </refsection>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Cherche les fichiers .tst dans les répertoires unit_tests et nonreg_tests, les exécute et affiche un résumé des succès et échecs pour la passe de test.
+            Les ficheirs .tst se trouvent dans les répertoire SCI+"/modules/*/tests/unit_tests" et SCI+"/modules/*/tests/nonreg_tests".
+        </para>
+        <para>
+            Tout d'abord, <literal>test_run</literal> vérifie que le test ne produit aucune erreur.
+            Si le test produit une erreur, le test est considéré en échec.
+        </para>
+        <para>
+            Ensuite, <literal>test_run</literal> s'assure que les commandes et l'affichage de leurs résultats dans la console sont conformes à un fichier de référence préalablement constitué. Chaque exécution d'un test donne lieu à un fichier <literal>.dia</literal> qui est comparé à une fichier <literal>.dia.ref</literal>.
+            Le fichier <literal>.dia.ref</literal> doit se trouver dans le même répertoire que le fichier <literal>.tst</literal> correspondant.
+            Si les deux fichiers sont différents le test est considéré en échec.
+        </para>
+        <para>
+            Des tags spécifiques insérés dans les fichiers .tst peuvent modifier la gestion des fichiers .tst. Ces tags se trouvent dans des commentaires Scilab présents dans le fichier de test.
+        </para>
+        <para>liste des tags disponbiles : </para>
+        <itemizedlist>
+            <listitem>
+                <para>
+                    &lt;-- INTERACTIVE TEST --&gt;
+                    Le test est taggé Interactif. Les tests interactifs sont ignorés.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- LONG TIME EXECUTION --&gt;
+                    Le test est taggé comme étant long à exécuter. Ces test sont ignorés sauf si l'option <literal>"enable-lt"</literal> est spécifiée.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- NOT FIXED --&gt;
+                    Le test est taggé comme non corrigé. Les tests non corrigés sont ignorés.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- TEST WITH GRAPHIC --&gt;
+                    Ce test est taggé comme nécessitant les fonctionnalités graphiques de Scilab. Ils sont automatiquement exécutés avec l'option de lancement "-nw" (mode par défaut).
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- NO TRY CATCH --&gt;
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- NO CHECK ERROR OUTPUT --&gt;
+                    La sortie d'erreur standard de scilab n'est pas vérifiée.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- NO CHECK REF --&gt;
+                    Les fichiers <literal>.dia</literal> et <literal>.dia.ref</literal> ne sont pas vérifiés.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- ENGLISH IMPOSED --&gt;
+                    Le test est lancé avec l'option <literal>-l en_US</literal>
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- FRENCH IMPOSED --&gt;
+                    Le test est lancé avec l'option <literal>-l fr_FR</literal>
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- CLI SHELL MODE --&gt;
+                    (anciennement &lt;-- JVM NOT MANDATORY --&gt; maintenant obsolète)
+                    Le test est exécuté avec l'option de lancement <literal>-nwni</literal>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- WINDOWS ONLY --&gt;
+                    Ignore le test sur tout autre système d'exploitation que Windows.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- UNIX ONLY --&gt;
+                    Ignore le test sur tout autre système d'exploitation que Unix.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- LINUX ONLY --&gt;
+                    Ignore le test sur tout autre système d'exploitation que GNU/Linux.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- MACOSX ONLY --&gt;
+                    Ignore le test sur tout autre système d'exploitations que Mac OS X.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    &lt;-- XCOS TEST --&gt;
+                    Charge préalablement les librairies d'Xcos pour exécuter le test.
+                </para>
+            </listitem>
+        </itemizedlist>
+        <para>
+            Chaque test est éxécuté dans un processus séparé, créé avec la commande <link linkend="host">host</link>.
+            Ceci permet de continuer à lancer les tests même si l'environnement exécutant le test est devenu instable suite aux commandes passées.
+            Cela permet aussi de rendre les tests indépendants les uns des autres.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Tests spécifiques à une platforme</title>
+        <para>
+            Il est possible que le résultat d'un test dépende de l'OS sur lequel il est exécuté.
+            Si tel est le cas, le fichier <literal>.ref</literal> peut dépendre d'une plateforme et le test peut échouer sur les autres plateformes.
+            Des fichiers <literal>.ref</literal> additionnels peuvent être créés avec des extensions spéciques à la plateforme :
+        </para>
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <literal>.unix.dia.ref</literal> pour la plateforme Unix,
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <literal>.linux.dia.ref</literal> pour la plateforme GNU/Linux,
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <literal>.linux32.dia.ref</literal> pour la plateforme GNU/Linux 32bits,
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <literal>.win.dia.ref</literal> pour la platforme Windows,
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <literal>.win32.dia.ref</literal> pour la plateforme Windows 32bits,
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <literal>.macosx.dia.ref</literal> pour la plateforme Max OS X.
+                </para>
+            </listitem>
+        </itemizedlist>
+        <para>
+            L'algorithme est le suivant :
+            D'abord les fichiers <literal>.ref</literal> sont sélectionnés pour le test. Si ces fichiers n'existent pas le fichier <literal>platform.ref</literal> est examiné pour la platforme sur lequel le test est lancé.
+        </para>
+        <itemizedlist>
+            <listitem>
+                <para>
+                    Sur les plateformes Windows : <literal>.win.dia.ref</literal>, <literal>.win32.dia.ref</literal>
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    sur les plateformes Mac OS : <literal>.unix.dia.ref</literal>, <literal>.macosx.dia.ref</literal>,
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    sur les plateformes GNU/Linux : <literal>.unix.dia.ref</literal>, <literal>.linux.dia.ref</literal>, <literal>.linux32.dia.ref</literal>.
+                </para>
+            </listitem>
+        </itemizedlist>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+// Lance tous les tests
+// =============================================
+
+test_run();
+test_run([]);
+test_run([],[]);
+
+// Teste un ou plusieurs modules
+// =============================================
+
+// Teste un seul module
+test_run('time');
+
+// Teste plusieurs modules
+test_run(['time','string']);
+
+// Teste un sous-module
+test_run('optimization|neldermead');
+
+// Teste définit par le chemin d'accès
+test_run(SCI+'/modules/core');
+
+// Lance un test spécifique
+// =============================================
+
+// Un seul test
+test_run('time','datenum');
+
+// Plusieurs tests
+test_run('time',['datenum';'calendar']);
+
+// Ignorer plusieurs tests
+// =============================================
+
+test_run('time',['datenum';'calendar'],'skip_tests');
+
+// Options
+// =============================================
+
+// sans comparaison entre .dia et .dia.ref
+test_run('time','datenum','no_check_ref');
+
+// création d'un fichier .dia.ref
+test_run([],[],'create_ref');
+
+// liste des tests disponibles
+test_run([],[],'list');
+
+// affichage des exemples d'utilisation de la commande
+test_run([],[],'help');
+
+// Exécution de tous les tests de non régression
+test_run([],[],'nonreg_test');
+
+// Exécution de tous les tests unitaires
+test_run([],[],'unit_test');
+
+// non vérification de la sortie d'erreur standard (std err)
+test_run('boolean','bug_2799','no_check_error_output');
+
+// Combinaisons d'options
+test_run([],[],['no_check_ref','mode_nw']);
+ ]]></programlisting>
+        
+        <programlisting role="example"><![CDATA[
+// lance les tests d'un module externe
+test_run('SCI/contrib/toolbox_skeleton')
+ ]]></programlisting>
+        
+        <programlisting role="example"><![CDATA[
+// Export XML Xunit
+test_run('boolean',[],[],TMPDIR+"/boolean_test_run.xml");
+test_run('time','datenum',[],TMPDIR+"/time_datenum_test_run.xml");
+ ]]></programlisting>
+    </refsection>
+    <refsection>
+        <title>Design interne</title>
+        <para>
+            Les tests sont exécutés dans un répertoire temporaire, non pas dans le repertoire les contenant.
+        </para>
+        <para>
+            Les scripts de tests ne sont pas exécutés tels qu'écrit, un en-tête et un pied de page spécifiques sont rajoutés à chaque test.
+            Le but est d'instrumenter le fichier de tests afin de rediriger les sorties dans un fichier de log spécique au test.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Historique</title>
+        <revhistory>
+            <revision>
+                <revnumber>5.4.0</revnumber>
+                <revdescription>test_run renvoie un statut:
+                    <itemizedlist><listitem>
+                            Renvoie %t si aucune erreur n'est détectée
+                        </listitem>
+                        <listitem>
+                            Renvoie %f si une erreur est détectée
+                        </listitem>
+                    </itemizedlist>
+                    <para>
+                        <literal>show_diff</literal> et <literal>show_error</literal> ajoutés comme nouvelles options
+                    </para>
+                    <para>
+                        tag <literal>CLI SHELL MODE</literal> ajouté. Remplace <literal>JVM NOT MANDATORY</literal> (toujours supporté)
+                    </para>
+                    <para>
+                        <literal>test_run</literal> peut fonctionner sur un module externe.
+                    </para>
+                    <para>
+                        Quatrième paramètre d'appel pour l'export vers un fichier XML XUnit
+                    </para>
+                </revdescription>
+            </revision>
+            <revision>
+                <revnumber>5.5.0</revnumber>
+                <revdescription>séparation 32/64bits disponible</revdescription>
+            </revision>
+            <revision>
+                <revnumber>6.0.0</revnumber>
+                <revdescription>mode profiling ajouté pour permettre l'analyse du profil d'exécution avec valgrind (Linux uniquement)</revdescription>
+            </revision>
+        </revhistory>
+    </refsection>
+</refentry>
index 42bde43..23def1d 100644 (file)
@@ -723,10 +723,14 @@ function status = test_single(_module, _testPath, _testName)
     "mode(3);" ;
     "lines(28,72);";
     "lines(0);" ;
+    "function []=bugmes(), printf(''error on test'');endfunction"
     "function %onprompt" ;
+    "   [msg, num] = lasterror();" ;
+    "   if (num <> 0) then" ;
+    "       bugmes()" ;
+    "   end" ;
     "   quit;" ;
     "endfunction" ;
-    "function []=bugmes(), printf(''error on test'');endfunction"
     "predef(''all'');";
     "tmpdirToPrint = msprintf(''TMPDIR1=''''%s'''';//\n'',TMPDIR);"
     ];