Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - Français


test_run

Lance les tests unitaires et de non régression présents dans un module ou dans un répertoire

Syntaxe

status = test_run()
status = test_run(module)
status = test_run(module, test_name)
status = test_run(module, test_name, options, exportToFile)

Arguments

module

Un tableau de chaînes de caractères : références des modules dont les tests doivent être lancés :

  • nom d'un module interne de Scilab ("core", "time", ...) ou d'un sous-module ("optimization|neldermead").

  • nom d'un module ATOMS ("module_lycee", "nisp", ...). Le module doit être chargé dans la session Scilab avant de lancer test_run(). Voir atomsGetLoaded()(:,1) et atomsLoad(…).

  • chemin absolu ou relatif du dossier principal d'un module externe ayant une structure standard. Les fichiers de tests .tst sont attendus dans les sous-dossiers ./test/unit_tests et/ou ./test/nonreg_tests.

  • [] ou "[]" : tous les tests des modules internes de Scilab sont lancés.

test_name

Noms des tests à effectuer (tableau de texte), ou [] ou "[]" pour tous les tests disponibles pour le module considéré.

Le joker * peut être utilisé, tel que dans *sin, *sin, ou *sin*.

options

Un tableau de chaînes de caractères : étiquettes des options à utiliser pour le lot de tests (liste ci-après). Indiquer [] ou "[]" pour utiliser les options par défaut.

"no_check_ref"

n'effectue pas la comparaison entre les fichiers .dia et .dia.ref

"no_check_error_output"

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.

"create_ref"

génère un fichier .dia.ref (pour les tests sans l'indicateur <-- NO CHECK REF -->), et ignore la comparaison avec tout précédent fichier .dia.ref

"show_error"

affiche les 10 dernières lignes d'exécution du script si un test échoue.

"show_diff"

si une différence avec le fichier .dia.ref est trouvée, affiche la différence avec une commande diff -u

"list"

liste les tests disponibles (aucun test n'est exécuté)

"help"

affiche des exemples d'utilisation de cette commande

"mode_nw"

ajoute l'option "-nw" au lancement de chaque test

"mode_nwni"

ajoute l'option "-nwni" au lancement de chaque test

"mode_nwni_profiling"

ajoute les options "-nwni -profiling" pour permettre le profiling (seulement disponible sous linux)

"nonreg_tests"

lance uniquement les tests de non régression

"unit_tests"

lance uniquement les tests unitaires

"skip_tests"

ignore les tests spécifiés dans test_name

"enable_lt"

active les tests taggés à long temps d'exécution

"short_summary"

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é)

exportToFile

une chaîne de caractères. Chemin d'accès à un fichier d'export.

Exporte le resultat de la passe de test dans le fichier XML exportToFile. Ce fichier suit le format XUnit. L'utilisation de cet argument d'entrée active automatiquement les options "show_diff" et "show_error".

Si le fichier spécifié par exportToFile existe préalablement, les résultats de tests sont ajoutés en fin de fichier.

status

Une valeur booléenne. Renvoie %t dans le cas où aucune erreur n'est détectée pour cette passe. Renvoie %f sinon.

Description

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".

Tout d'abord, test_run vérifie que le test ne produit aucune erreur. Si le test produit une erreur, le test est considéré en échec.

Ensuite, test_run 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 .dia qui est comparé à une fichier .dia.ref. Le fichier .dia.ref doit se trouver dans le même répertoire que le fichier .tst correspondant. Si les deux fichiers sont différents le test est considéré en échec.

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.

liste des tags disponbiles :

  • <-- INTERACTIVE TEST --> Le test est taggé Interactif. Les tests interactifs sont ignorés.

  • <-- LONG TIME EXECUTION --> Le test est taggé comme étant long à exécuter. Ces test sont ignorés sauf si l'option "enable-lt" est spécifiée.

  • <-- NOT FIXED --> Le test est taggé comme non corrigé. Les tests non corrigés sont ignorés.

  • <-- TEST WITH GRAPHIC --> 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).

  • <-- NO TRY CATCH -->

  • <-- NO CHECK ERROR OUTPUT --> La sortie d'erreur standard de scilab n'est pas vérifiée.

  • <-- NO CHECK REF --> Les fichiers .dia et .dia.ref ne sont pas vérifiés.

  • <-- ENGLISH IMPOSED --> Le test est lancé avec l'option -l en_US

  • <-- FRENCH IMPOSED --> Le test est lancé avec l'option -l fr_FR

  • <-- CLI SHELL MODE --> Le test est exécuté avec l'option de lancement -nwni.

  • <-- WINDOWS ONLY --> Ignore le test sur tout autre système d'exploitation que Windows.

  • <-- UNIX ONLY --> Ignore le test sur tout autre système d'exploitation que Unix.

  • <-- LINUX ONLY --> Ignore le test sur tout autre système d'exploitation que GNU/Linux.

  • <-- MACOSX ONLY --> Ignore le test sur tout autre système d'exploitations que Mac OS X.

  • <-- XCOS TEST --> Charge préalablement les librairies d'Xcos pour exécuter le test.

Chaque test est éxécuté dans un processus séparé, créé avec la commande host. 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.

Tests spécifiques à une platforme

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 .ref peut dépendre d'une plateforme et le test peut échouer sur les autres plateformes. Des fichiers .ref additionnels peuvent être créés avec des extensions spéciques à la plateforme :

  • .unix.dia.ref pour la plateforme Unix,

  • .linux.dia.ref pour la plateforme GNU/Linux,

  • .linux32.dia.ref pour la plateforme GNU/Linux 32bits,

  • .win.dia.ref pour la platforme Windows,

  • .win32.dia.ref pour la plateforme Windows 32bits,

  • .macosx.dia.ref pour la plateforme Max OS X.

L'algorithme est le suivant : D'abord les fichiers .ref sont sélectionnés pour le test. Si ces fichiers n'existent pas le fichier platform.ref est examiné pour la platforme sur lequel le test est lancé.

  • Sur les plateformes Windows : .win.dia.ref, .win32.dia.ref

  • sur les plateformes Mac OS : .unix.dia.ref, .macosx.dia.ref,

  • sur les plateformes GNU/Linux : .unix.dia.ref, .linux.dia.ref, .linux32.dia.ref.

Examples

// Lance tous les tests
// Cela peut prendre du temps...
// =============================================

// test_run();
// test_run([]);
// 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');

// Test défini 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']);

// Console mode
test_run time [] no_check_ref //tests time module with no_check_ref option
// lance les tests d'un module externe
test_run('SCI/contrib/toolbox_skeleton')
// Export XML Xunit
test_run('boolean',[],[],TMPDIR+"/boolean_test_run.xml");
test_run('time','datenum',[],TMPDIR+"/time_datenum_test_run.xml");

Sélections avec joker * :

test_run elementary_functions *space
test_run elementary_functions dec2*
test_run string *ascii*
--> test_run elementary_functions *space
   TMPDIR = C:\MyPath\AppData\Local\Temp\SCI_TMP_3668_1147

   001/002 - [elementary_functions] logspace....................passed
   002/002 - [elementary_functions] linspace....................passed
   --------------------------------------------------------------------------
   Summary
../..

--> test_run elementary_functions dec2*
   TMPDIR = C:\MyPath\AppData\Local\Temp\SCI_TMP_3668_1147

   001/004 - [elementary_functions] dec2oct.....................passed
   002/004 - [elementary_functions] dec2hex.....................passed
   003/004 - [elementary_functions] dec2bin.....................passed
   004/004 - [elementary_functions] dec2base....................passed
   --------------------------------------------------------------------------
   Summary
../..

--> test_run string *ascii*
   TMPDIR = C:\MyPath\AppData\Local\Temp\SCI_TMP_3668_1147

   001/003 - [string] isascii...................................passed
   002/003 - [string] asciimat..................................passed
   003/003 - [string] ascii.....................................passed
   --------------------------------------------------------------------------
   Summary
../..

Fonctionnement

Les scripts de tests .tst originaux sont copiés et exécutés dans un répertoire temporaire contenant également les résultats d'exécution.

Avant exécution, un en-tête et un pied de page spécifiques sont rajoutés à chaque script .tst copié. Ces ajouts permettent de rediriger les sorties d'exécution dans un journal spécifique au test créé dans le même répertoire.

La durée d'exécution pour chaque test est fixée à 5 minutes. Pour désactiver la terminaison du test après ce délai, utilisez le tag LONG TIME EXECUTION.

Voir aussi

Historique

VersionDescription
5.4.0 test_run renvoie un statut:
  • Renvoie %t si aucune erreur n'est détectée
  • Renvoie %f si une erreur est détectée

show_diff et show_error ajoutés comme nouvelles options

tag CLI SHELL MODE ajouté. Remplace JVM NOT MANDATORY (toujours supporté)

test_run peut fonctionner sur un module externe.

Quatrième paramètre d'appel pour l'export vers un fichier XML XUnit

5.5.0 séparation 32/64bits disponible
6.0.0

mode profiling ajouté pour permettre l'analyse du profil d'exécution avec valgrind (Linux uniquement)

durée d'exécution maximale d'un test sans LONG TIME EXECUTION configurée à 5 minutes.

6.0.2

Les noms de tests avec joker * sont désormais utilisables, tels que sin*, *sin, ou *sin*

2023.0.0

Tag JVM NOT MANDATORY supprimé.

Report an issue
<< example_run Tests - Bancs d'essais Outils pour les démonstrations >>

Copyright (c) 2022-2023 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Oct 24 14:34:20 CEST 2023