readme.md 6.7 KB

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

copy .\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

@echo off

echo clean the directories (if they exist)
if exist .\work del /f /s /q .\work
if exist .\results del /f /s /q .\results

echo make the directories (if they do not)
if not exist .\work md .\work
if exist .\results md .\results

echo unpack openaccess.accda if it does not exist in ..\
if not exist ..\OpenAccess.accda unzip ..\initial\OpenAccess.zip

echo prepare files
unzip .\initial\project0.zip -d .\work
unzip .\initial\db.zip -d .\work
unzip .\initial\empty_project.zip -d .\work

echo ** tests: step 1 **

echo run the test_export macro
.\work\project0.accdb" /X test_export

echo control existence of zipped app
python assert_exists.py .\work\project0.zip

echo clean sources
del .\work\source\modules\test_methods.bas
del .\work\source\macros\test_export.bas
del .\work\source\macros\test_import.bas

echo copy source to results
copy .\works\source .\results\source1

echo control the result
python compare.py .\results\source1 .\reference\source

echo ** tests: step 2 **

echo run import in empty_project.accdb
"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\empty_project.accdb" /X test_import

echo copy to results
copy .\work\empty_project.accdb .\results\result1.accdb

echo control existence of backup
python assert_exists.py .\work\empty_project.accdb.old

echo run import in project0.accdb
"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\project0.accdb" /X test_import

echo copy to results
copy .\work\project0.accdb .\results\result2.accdb

echo control existence of backup
python assert_exists.py .\work\project0.accdb.old

echo ** tests : step 3 **

echo make sources from result1.accdb
.\results\result1.accdb /X test_export
move .\results\source .\results\source2
echo control result
python compare.py .\results\source2 .\reference\source

echo make sources from result3.accdb
.\results\result2.accdb /X test_export
move .\results\source .\results\source3
echo control result
python compare.py .\results\source3 .\reference\source  

echo ** end **

pause