# TESTS OPENACCESS ## Notes sur l'utilisation des tests #### Si le projet de test project0.accdb est modifié Il faut penser: * à mettre à jour les sources dans .\reference\source * à supprimer de ces sources \macros\test_import.bas, \macros\test_export.bas, \modules\test_methods.bas #### Utiliser avec Jenkins * Lancer Jenkins * Créer un projet 'freestyle' * Configurer le projet (nom, description, repo git...) * Ajouter une étape au build: lancer une commande batch * Y ajouter: `python run_tests.py` POUR LE PREMIER LANCEMENT ou EN CAS DE PROBLEME lors de l'éxecution des macros access (timeout, stuck): * accéder à la liste des services Windows de la machine depuis laquelle Jenkins est lancé * Accéder aux propriétés du service Jenkins, onglet Logon * Cocher: "interagir avec le bureau" Au premier lancement, il faudra modifier les paramètres de sécurité de Office sur la session System de cette machine (Access, Options, Confidentialité, toujours autoriser les macros, activex, écxecution des données) ATTENTION: vérifier que les paramètres windows "région et langue" sont les même coté Jenkins, sinon il y aura des problèmes dans les comparaisons des fichiers: '1,0' != '1.0' ## Fonctionnement des tests ### Répertoires Le fichier Access `.\initial\projet0.zip` contient l'application de test. Les tests ont lieu dans le répertoire `.\work` Les résultats sont contrôlés au moyen du contenu du répertoire `.\reference` ### Le projet de départ L'application `project0.accdb` sert de support de test. Le fichier `db.accdb` contient les éventuelles tables liées. **ATTENTION: la chaine de connexion des tables liées à db.accdb doit pointer vers .\work\db.accdb et non pas .\initial\db.accdb** ### Déroulement #### Préparation des fichiers * Le dossier `.\work` est vidé * Le dossier `.\results` est vidé * `.\initial\projet0.zip` est extrait vers `.\work\projet0.accdb` * `.\initial\db.zip` est extrait vers `.\work\db.accdb` * `.\initial\empty_project.zip` est extrait vers `.\work\empty_project.accdb` #### Création des sources * La fonction `silent_export` de OpenAccess est executée depuis le fichier `.\work\project0.accdb` (via la macro `test_export` de `project0.accdb`) Le répertoire `.\work\source` est créé * L'existence du fichier `.\work\project0.zip` créé par l'export est contrôlée * Les fichiers `.\work\source\modules\test_methods.bas`, `.\work\source\macros\test_export.bas` et `.\work\source\macros\test_import.bas` sont supprimés (ils ne font pas partie du périmètre des tests et leur présence provoquera des erreurs à l'import) **ATTENTION à s'assurer que ces fichiers ont aussi été supprimés de .\reference\source!** * Le dossier `.\work\source` est copié vers `.\results\source_1` #### Contrôle des résultats * La fonction compare.py est utilisée pour comparer le contenu des sous-répertoires et des fichiers sources ainsi créés à ceux contenus dans le répertoire `.\reference\source` #### Import des sources dans une base vide * La fonction `silent_import` de OpenAccess est executée depuis le fichier `.\work\empty_project.accdb` (via la macro `test_import` de `empty_project.accdb`) * `.\work\empty_project.accdb` est copié vers `.\results\result1.accdb` * L'existence du fichier `.\work\empty_project.accdb.old` créé par l'export est contrôlée #### Import des sources dans un projet existant * La fonction `silent_import` de OpenAccess est executée depuis le fichier `.\work\project0.accdb` (via la macro `test_import` de `project0.accdb`) * `.\work\project0.accdb` est copié vers `.\results\result2.accdb` * L'existence du fichier `.\work\project0.accdb.old` créé par l'export est contrôlée #### Contrôle des résultats * Exporter les sources de .\results\result1.accdb * Renommer .\results\source en .\results\source2 * Controle des résultats * Exporter les sources de .\results\result2.accdb * Renommer .\results\source en .\results\source3 * Controle des résultats ## Interpréter les résultats La build sera réussie si: * Elle se déroule jusqu'au bout sans erreur * La fonction `compare.py` retourne un code exit 0 à chaque fois qu'elle est appellée De plus, on peut vérifier les résultats dans le répertoire .\results: * initial.accdb contient le projet de départ * source1 contient le résultat de l'export des sources de project0.accdb * result2.accdb contient le résultat de l'import de ces sources dans la base empty_project.accdb * result3.accdb contient le résultat de l'improt des sources dans project0.accdb * source2 contient le résultat de l'export des sources de result2.accdb * source3 contient le résultat de l'export des sources de result3.accdb * ## Commande batch Voir [run_tests.py](http://codebox/dev/OpenAccess/blob/master/tests/run_tests.py)