# TESTS OPENACCESS ## 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é > `del /f /s /q .\work` * Le dossier `.\results` est vidé > `del /f /s /q .\results` * `.\initial\projet0.zip` est extrait vers `.\work\projet0.accdb` > `unzip .\initial\project0.zip -d .\work` * `.\initial\db.zip` est extrait vers `.\work\db.accdb` > `unzip .\initial\db.zip -d .\work` * `.\initial\empty_project.zip` est extrait vers `.\work\empty_project.accdb` > `unzip .\initial\empty_project.zip -d .\work` #### 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`) > `"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\project0.accdb" /X test_export` Le répertoire `.\work\source` est créé * L'existence du fichier `.\work\project0.zip` créé par l'export est contrôlée > `python assert_exists.py .\work\project0.zip` * 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) > `del .\work\source\modules\test_methods.bas` > `del .\work\source\macros\test_export.bas` > `del .\work\source\macros\test_import.bas` **ATTENTION à s'assurer que ces fichiers ont aussi été supprimés de .\reference\source!** * Le dossier `.\work\source` est copié vers `.\results\source_1` > `xcopy .\works\source .\results\source1` #### 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` > `python compare.py .\work\source .\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`) > `"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\empty_project.accdb" /X test_import` * `.\work\empty_project.accdb` est copié vers `.\results\result1.accdb` > `copy .\work\empty_project.accdb .\results\result1.accdb` * L'existence du fichier `.\work\empty_project.accdb.old` créé par l'export est contrôlée > `python assert_exists.py .\work\empty_project.accdb.old` #### 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 /X test_import` * `.\work\project0.accdb` est copié vers `.\results\result2.accdb` > `copy .\work\project0.accdb .\results\result2.accdb` * L'existence du fichier `.\work\project0.accdb.old` créé par l'export est contrôlée > `python assert_exists.py .\work\project0.accdb.old` #### Contrôle des résultats * Exporter les sources de .\results\result1.accdb > `.\results\result1.accdb /X test_export` * Renommer .\results\source en .\results\source2 > `move .\results\source .\results\source2` * Controle des résultats > `python compare.py .\results\source2 .\reference\source` * Exporter les sources de .\results\result2.accdb > `.\results\result2.accdb /X test_export` * Renommer .\results\source en .\results\source3 > `move .\results\source .\results\source3` * Controle des résultats > `python compare.py .\results\source3 .\reference\source` ## 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 * result1.accdb contient le résultat d'u import de ces sources dans une base vide * result2.accdb contient le résultat de l'improt des sources dans project0.accdb ## Commande batch Voir [http://codebox/dev/OpenAccess/blob/master/tests/run_tests.bat](run_tests.bat)