olivier.massot c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
..
__pycache__ c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
initial c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
reference c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
results c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
work c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
compare.py c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
file.py c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
readme.md c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
run_tests.bat c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago
run_tests.py c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 years ago

readme.md

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