diff --git a/bin/oca_init_test_database b/bin/oca_init_test_database index 48d3e8a..14ca0e6 100755 --- a/bin/oca_init_test_database +++ b/bin/oca_init_test_database @@ -9,14 +9,32 @@ set -exo pipefail oca_wait_for_postgres +# Identify ODOO_MAJOR version +if [[ "$ODOO_VERSION" =~ ^([0-9]+)\.([0-9]+)$ ]]; then + ODOO_MAJOR="${BASH_REMATCH[1]}" +else + printf 'Invalid ODOO_VERSION format: %s\n' "$ODOO_VERSION" >&2 + exit 1 +fi + +# Select addons to install if [ -n "${INCLUDE}" ]; then ADDONS=$(manifestoo --select-include "${INCLUDE}" --select-exclude "${EXCLUDE}" list-depends --separator=,) else ADDONS=$(manifestoo --select-addons-dir ${ADDONS_DIR} --select-exclude "${EXCLUDE}" list-depends --separator=,) fi -unbuffer $(which odoo) \ - -d ${PGDATABASE} \ - -i ${ADDONS:-base} \ - --http-interface=127.0.0.1 \ - --stop-after-init | oca_checklog_odoo +# Build odoo run parameters +params=( + -d "$PGDATABASE" + -i "$ADDONS" + --http-interface=127.0.0.1 + --stop-after-init +) + +# Add --skip-auto-install for Odoo 19.0 and later +if (( ODOO_MAJOR >= 19 )); then + params+=(--skip-auto-install) +fi + +unbuffer $(which odoo) ${params[@]} | oca_checklog_odoo diff --git a/tests/data/addons/addon_auto_install/__init__.py b/tests/data/addons/addon_auto_install/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/addons/addon_auto_install/__manifest__.py b/tests/data/addons/addon_auto_install/__manifest__.py new file mode 100644 index 0000000..5438ea5 --- /dev/null +++ b/tests/data/addons/addon_auto_install/__manifest__.py @@ -0,0 +1,8 @@ +{ + "name": "addon with successful test", + "version": "1.0.0", + "depends": [ + "base", + ], + "auto_install": True, +} diff --git a/tests/data/addons/addon_auto_install/tests/__init__.py b/tests/data/addons/addon_auto_install/tests/__init__.py new file mode 100644 index 0000000..3fec230 --- /dev/null +++ b/tests/data/addons/addon_auto_install/tests/__init__.py @@ -0,0 +1 @@ +from . import test_success diff --git a/tests/data/addons/addon_auto_install/tests/test_success.py b/tests/data/addons/addon_auto_install/tests/test_success.py new file mode 100644 index 0000000..11c05e8 --- /dev/null +++ b/tests/data/addons/addon_auto_install/tests/test_success.py @@ -0,0 +1,6 @@ +from odoo.tests.common import TransactionCase + + +class Test(TransactionCase): + def test_success(self): + pass diff --git a/tests/test_success.py b/tests/test_success.py index d662812..069c623 100644 --- a/tests/test_success.py +++ b/tests/test_success.py @@ -11,3 +11,14 @@ def test_success(): ["oca_run_tests"], cwd=addons_dir, text=True ) assert did_run_test_module(result, "addon_success.tests.test_success") + + +def test_success_auto_install(): + """Test successful test with auto-install.""" + with install_test_addons(["addon_auto_install"]) as addons_dir: + dropdb() + subprocess.check_call(["oca_init_test_database"], cwd=addons_dir) + result = subprocess.check_output( + ["oca_run_tests"], cwd=addons_dir, text=True + ) + assert did_run_test_module(result, "addon_auto_install.tests.test_success")