ensure_testing_scaffold.sh
Generator testnega ogrodja PMIVerse za dodatke in repozitorije Odoo.
Pregled
ensure_testing_scaffold.sh je idempotentno orodje za testno strukturo pytest po pravilih PMIVerse za en dodatek (--addon) ali celoten repozitorij dodatkov (--repo). Standardizira postavitev, doda upravljane predloge in zagotovi minimalno delujoče ogrodje.
Sodi med orodja PMISuite. Predloge izhajajo iz /srv/pmiverse/_pmiconfig/testkit/pytest/.
Zmožnosti
Idempotentno ustvarjanje ogrodja
Obstoječe datoteke se ohranijo, razen ob --force. Izbirni osnovni preizkus vklopite ali izklopite z --smoke y|n.
Datoteke dodatka
| Datoteka | Opis |
|---|---|
__init__.py |
Uvozi oznake pytest PMIVerse in inicializira testni paket. |
conftest.py |
Skupna testna konfiguracija iz predlog PMIVerse. |
test_smoke_installation.py |
Izbirni preizkus namestitve z dinamično vstavljenim imenom dodatka. |
Datoteke repozitorija
Pri --repo skripta poišče vse __manifest__.py, pripravi vsak dodatek in zagotovi korenski pytest.ini s kopiranjem /srv/pmiverse/_pmiconfig/testkit/pytest/pytest.base.ini.
Dnevniki
Vsa dejanja se beležijo v /srv/pmiverse/logs/test_scaffold_<timestamp>.log.
Zahteve in odvisnosti
Bash 4+, standardni dodatek Odoo z __manifest__.py in naslednji viri PMISuite:
/srv/pmiverse/_pmiconfig/testkit/pytest/
├── templates/tests_init.py
├── conftest.base.py
├── templates/test_smoke_installation.py.tmpl
└── pytest.base.ini
Uporaba
ensure_testing_scaffold.sh --addon <addon_dir> [--force] [--smoke y|n]
ensure_testing_scaffold.sh --repo <repo_root> [--force] [--smoke y|n]
Argumenti
| Možnost | Pomen |
|---|---|
--addon <path> |
Mapa enega dodatka. |
--repo <path> |
Repozitorij več dodatkov. |
--force |
Prepiše obstoječe datoteke ogrodja. |
--smoke y | n |
Ustvari osnovni preizkus, privzeto da. |
--dry-run |
Predogled načrtovanega dela. |
-h, --help |
Pomoč skripte. |
Omejitev suhega zagona
Skripta pred razvejitvijo suhega zagona že pripravi dnevnik in mape tests/; --dry-run zato ni povsem brez zapisov. Ne uporablja se kot preverjanje samo za branje.
Primeri
En dodatek
./ensure_testing_scaffold.sh --addon addons/my_module
Vsi dodatki repozitorija
./ensure_testing_scaffold.sh --repo /srv/odoo/custom/src
Prisilni prepis
./ensure_testing_scaffold.sh --addon my_addon --force
Brez osnovnih preizkusov
./ensure_testing_scaffold.sh --repo my_repo --smoke n
Suhi zagon
./ensure_testing_scaffold.sh --addon my_addon --dry-run
Delovanje
Odkrije dodatke prek find <repo> -name "__manifest__.py", ustvari manjkajoče <addon>/tests/, zapiše predloge ob upoštevanju --force, zamenja {{ADDON_NAME}} v predlogi preizkusa, zagotovi repozitorijski pytest.ini in beleži korake. Idempotentnost ohrani ponovljive rezultate.
Napake
Izhodne kode: 0 uspeh, 1 napačni argumenti ali manjkajoče predloge, >1 sistemske napake ob strogih nastavitvah Bash.
Integracija CI
Primerno za preverjanje pred potrditvijo oziroma cevovodom, avtomatizirano uveljavljanje testne politike ter minimalno pripravljenost pred pytest.
Vzdrževanje
Predloge posodabljajte centralno v _pmiconfig/testkit/pytest. Skripta se namenoma izogiba posebni logiki Odoo, da ostane uporabna v različnih repozitorijih. Pri novih elementih ohranite idempotentnost.
Licenca
Copyright (c) 2025 LUXIM d.o.o., Slovenia -- Matjaž Mozetič
Del PMISuite. Licenčna izjava repozitorija je v korenskem README.md.