Preskoči na vsebino

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.