diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..2e47a9a4 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,189 @@ +name: migration run + +on: + pull_request: + push: + branches: + - "master" + +jobs: + migration: + name: Run migrations + env: + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + POSTGRES_DB: odoo + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check out openupgrade 14.0 + uses: actions/checkout@v6 + with: + repository: oca/openupgrade + ref: "14.0" + path: openupgrade-14.0 + - name: Check out openupgrade 15.0 + uses: actions/checkout@v6 + with: + repository: oca/openupgrade + ref: "15.0" + path: openupgrade-15.0 + - name: Check out openupgrade 16.0 + uses: actions/checkout@v6 + with: + repository: oca/openupgrade + ref: "16.0" + path: openupgrade-16.0 + - name: Check out openupgrade 17.0 + uses: actions/checkout@v6 + with: + repository: oca/openupgrade + ref: "17.0" + path: openupgrade-17.0 + - name: Check out openupgrade 18.0 + uses: actions/checkout@v6 + with: + repository: oca/openupgrade + ref: "18.0" + path: openupgrade-18.0 + - name: Run migrations + run: | + echo Init testdb + + docker run -d\ + --quiet\ + -e POSTGRES_USER=$POSTGRES_USER\ + -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\ + -e POSTGRES_DB=$POSTGRES_DB\ + --name db\ + postgres:9.6 + + docker run\ + --quiet\ + --link db:db -v $(realpath tests/addons/v13):/mnt/extra-addons\ + odoo:13.0\ + odoo -d $POSTGRES_DB -i openupgradelib_tests --stop-after-init + + echo "[run] + branch = True + [paths] + openupgradelib = + ${{ github.workspace }} + /mnt/openupgradelib + " > .coveragerc + cat .coveragerc + + echo Run v14 migration + docker run\ + --quiet\ + --link db:postgres\ + -e POSTGRES_USER=$POSTGRES_USER\ + -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\ + -e POSTGRES_DB=$POSTGRES_DB\ + -v $(realpath tests/addons/v14):/mnt/test-addons\ + -v $(realpath openupgrade-14.0):/mnt/openupgrade\ + -v $(realpath .):/mnt/openupgradelib\ + ghcr.io/oca/oca-ci/py3.8-ocb14.0\ + sh -c " + pip install -e /mnt/openupgradelib + cp -r /mnt/test-addons/* /opt/odoo/addons + cp -r /mnt/openupgrade/* /opt/odoo/addons + coverage run --data-file=/mnt/openupgradelib/.coverage.14 --rcfile=/mnt/openupgradelib/.coveragerc -- \$(which odoo) -d $POSTGRES_DB --load=openupgrade_framework -u all --stop-after-init + " + + echo Run v15 migration + docker run\ + --quiet\ + --link db:postgres\ + -e POSTGRES_USER=$POSTGRES_USER\ + -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\ + -e POSTGRES_DB=$POSTGRES_DB\ + -v $(realpath tests/addons/v15):/mnt/test-addons\ + -v $(realpath openupgrade-15.0):/mnt/openupgrade\ + -v $(realpath .):/mnt/openupgradelib\ + ghcr.io/oca/oca-ci/py3.8-ocb15.0\ + sh -c " + pip install -e /mnt/openupgradelib + cp -r /mnt/test-addons/* /opt/odoo/addons + cp -r /mnt/openupgrade/* /opt/odoo/addons + coverage run --data-file=/mnt/openupgradelib/.coverage.15 --rcfile=/mnt/openupgradelib/.coveragerc -- \$(which odoo) -d $POSTGRES_DB --load=openupgrade_framework -u all --stop-after-init + " + + echo migrate postgres 9.6 to 12.0 + docker run -d\ + --quiet\ + -e POSTGRES_USER=$POSTGRES_USER\ + -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\ + -e POSTGRES_DB=$POSTGRES_DB\ + --name db12\ + postgres:12.0 + + docker exec -tu postgres db pg_dump -Fc -U $POSTGRES_USER --file /tmp/dump $POSTGRES_DB + docker cp db:/tmp/dump . + docker cp dump db12:/tmp + while ! docker exec -tu postgres db12 pg_isready -U $POSTGRES_USER; do + echo waiting for postgres + sleep 1 + done + docker exec -tu postgres db12 pg_restore -U $POSTGRES_USER -d $POSTGRES_DB --clean --if-exists /tmp/dump + + echo Run v16 migration + docker run\ + --quiet\ + --link db12:postgres\ + -e POSTGRES_USER=$POSTGRES_USER\ + -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\ + -e POSTGRES_DB=$POSTGRES_DB\ + -v $(realpath tests/addons/v16):/mnt/test-addons\ + -v $(realpath openupgrade-16.0):/mnt/openupgrade\ + -v $(realpath .):/mnt/openupgradelib\ + ghcr.io/oca/oca-ci/py3.10-ocb16.0\ + sh -c " + pip install -e /mnt/openupgradelib + cp -r /mnt/test-addons/* /opt/odoo/addons + cp -r /mnt/openupgrade/* /opt/odoo/addons + coverage run --data-file=/mnt/openupgradelib/.coverage.16 --rcfile=/mnt/openupgradelib/.coveragerc -- \$(which odoo) -d $POSTGRES_DB --load=openupgrade_framework -u all --stop-after-init + " + + echo Run v17 migration + docker run\ + --quiet\ + --link db12:postgres\ + -e POSTGRES_USER=$POSTGRES_USER\ + -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\ + -e POSTGRES_DB=$POSTGRES_DB\ + -v $(realpath tests/addons/v17):/mnt/test-addons\ + -v $(realpath openupgrade-17.0):/mnt/openupgrade\ + -v $(realpath .):/mnt/openupgradelib\ + ghcr.io/oca/oca-ci/py3.10-ocb17.0\ + sh -c " + pip install -e /mnt/openupgradelib + cp -r /mnt/test-addons/* /opt/odoo/addons + cp -r /mnt/openupgrade/* /opt/odoo/addons + coverage run --data-file=/mnt/openupgradelib/.coverage.17 --rcfile=/mnt/openupgradelib/.coveragerc -- \$(which odoo) -d $POSTGRES_DB --load=openupgrade_framework -u all --stop-after-init + " + + echo Run v18 migration + docker run\ + --quiet\ + --link db12:postgres\ + -e POSTGRES_USER=$POSTGRES_USER\ + -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\ + -e POSTGRES_DB=$POSTGRES_DB\ + -v $(realpath tests/addons/v18):/mnt/test-addons\ + -v $(realpath openupgrade-18.0):/mnt/openupgrade\ + -v $(realpath .):/mnt/openupgradelib\ + ghcr.io/oca/oca-ci/py3.10-ocb18.0\ + sh -c " + pip install -e /mnt/openupgradelib + cp -r /mnt/test-addons/* /opt/odoo/addons + cp -r /mnt/openupgrade/* /opt/odoo/addons + coverage run --data-file=/mnt/openupgradelib/.coverage.18 --rcfile=/mnt/openupgradelib/.coveragerc -- \$(which odoo) -d $POSTGRES_DB --load=openupgrade_framework -u all --stop-after-init + " + + pip install coverage + coverage combine --debug COVERAGE_DEBUG + + - uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/tests/addons/openupgradelib_tests/migrations/6.1.1.0.0/post-migrate.py b/tests/addons/openupgradelib_tests/migrations/6.1.1.0.0/post-migrate.py deleted file mode 100644 index 809359a3..00000000 --- a/tests/addons/openupgradelib_tests/migrations/6.1.1.0.0/post-migrate.py +++ /dev/null @@ -1,15 +0,0 @@ -from openerp import pooler - -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(cr, version): - pool = pooler.get_pool(cr.dbname) - # Set the default for res.partner 'active' column to True instead of 1 - # which breaks the SQL method of set_defaults - pool["res.partner"]._defaults["active"] = lambda *args: True - openupgrade.set_defaults(cr, pool, {"res.partner": [("active", None)]}, force=True) - openupgrade.set_defaults( - cr, pool, {"res.partner": [("active", None)]}, force=True, use_orm=True - ) diff --git a/tests/addons/openupgradelib_tests/migrations/7.0.1.0.0/post-migrate.py b/tests/addons/openupgradelib_tests/migrations/7.0.1.0.0/post-migrate.py deleted file mode 100644 index 2fb0b530..00000000 --- a/tests/addons/openupgradelib_tests/migrations/7.0.1.0.0/post-migrate.py +++ /dev/null @@ -1,12 +0,0 @@ -from openerp import pooler - -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(cr, version): - pool = pooler.get_pool(cr.dbname) - openupgrade.set_defaults(cr, pool, {"res.partner": [("active", None)]}, force=True) - openupgrade.set_defaults( - cr, pool, {"res.partner": [("active", None)]}, force=True, use_orm=True - ) diff --git a/tests/addons/openupgradelib_tests/migrations/8.0.1.0.0/post-migrate.py b/tests/addons/openupgradelib_tests/migrations/8.0.1.0.0/post-migrate.py deleted file mode 100644 index cba0dc20..00000000 --- a/tests/addons/openupgradelib_tests/migrations/8.0.1.0.0/post-migrate.py +++ /dev/null @@ -1,17 +0,0 @@ -from openerp import SUPERUSER_ID, api, pooler - -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(cr, version): - pool = pooler.get_pool(cr.dbname) - openupgrade.set_defaults(cr, pool, {"res.partner": [("active", None)]}, force=True) - openupgrade.set_defaults( - cr, pool, {"res.partner": [("active", None)]}, force=True, use_orm=True - ) - env = api.Environment(cr, SUPERUSER_ID, {}) - openupgrade.set_defaults(cr, env, {"res.partner": [("active", None)]}, force=True) - openupgrade.set_defaults( - cr, env, {"res.partner": [("active", None)]}, force=True, use_orm=True - ) diff --git a/tests/addons/openupgradelib_tests/migrations/9.0.1.0.0/post-migrate.py b/tests/addons/openupgradelib_tests/migrations/9.0.1.0.0/post-migrate.py deleted file mode 100644 index cba0dc20..00000000 --- a/tests/addons/openupgradelib_tests/migrations/9.0.1.0.0/post-migrate.py +++ /dev/null @@ -1,17 +0,0 @@ -from openerp import SUPERUSER_ID, api, pooler - -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(cr, version): - pool = pooler.get_pool(cr.dbname) - openupgrade.set_defaults(cr, pool, {"res.partner": [("active", None)]}, force=True) - openupgrade.set_defaults( - cr, pool, {"res.partner": [("active", None)]}, force=True, use_orm=True - ) - env = api.Environment(cr, SUPERUSER_ID, {}) - openupgrade.set_defaults(cr, env, {"res.partner": [("active", None)]}, force=True) - openupgrade.set_defaults( - cr, env, {"res.partner": [("active", None)]}, force=True, use_orm=True - ) diff --git a/tests/addons/openupgradelib_tests/README.rst b/tests/addons/v13/openupgradelib_tests/README.rst similarity index 100% rename from tests/addons/openupgradelib_tests/README.rst rename to tests/addons/v13/openupgradelib_tests/README.rst diff --git a/tests/addons/openupgradelib_tests/__init__.py b/tests/addons/v13/openupgradelib_tests/__init__.py similarity index 100% rename from tests/addons/openupgradelib_tests/__init__.py rename to tests/addons/v13/openupgradelib_tests/__init__.py diff --git a/tests/addons/openupgradelib_tests/__manifest__.py b/tests/addons/v13/openupgradelib_tests/__manifest__.py similarity index 100% rename from tests/addons/openupgradelib_tests/__manifest__.py rename to tests/addons/v13/openupgradelib_tests/__manifest__.py diff --git a/tests/addons/openupgradelib_tests/migrations/10.0.1.0.0/post-migrate.py b/tests/addons/v13/openupgradelib_tests/migrations/14.0.1.0.0/post-migrate.py similarity index 100% rename from tests/addons/openupgradelib_tests/migrations/10.0.1.0.0/post-migrate.py rename to tests/addons/v13/openupgradelib_tests/migrations/14.0.1.0.0/post-migrate.py diff --git a/tests/addons/v14/openupgradelib_tests/README.rst b/tests/addons/v14/openupgradelib_tests/README.rst new file mode 100644 index 00000000..db6eb769 --- /dev/null +++ b/tests/addons/v14/openupgradelib_tests/README.rst @@ -0,0 +1 @@ +Openupgradelib Test Addon diff --git a/tests/addons/v14/openupgradelib_tests/__init__.py b/tests/addons/v14/openupgradelib_tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/addons/openupgradelib_tests/__openerp__.py b/tests/addons/v14/openupgradelib_tests/__manifest__.py similarity index 100% rename from tests/addons/openupgradelib_tests/__openerp__.py rename to tests/addons/v14/openupgradelib_tests/__manifest__.py diff --git a/tests/addons/openupgradelib_tests/migrations/11.0.1.0.0/post-migrate.py b/tests/addons/v14/openupgradelib_tests/migrations/14.0.1.0.0/post-migrate.py similarity index 100% rename from tests/addons/openupgradelib_tests/migrations/11.0.1.0.0/post-migrate.py rename to tests/addons/v14/openupgradelib_tests/migrations/14.0.1.0.0/post-migrate.py diff --git a/tests/addons/v15/openupgradelib_tests/README.rst b/tests/addons/v15/openupgradelib_tests/README.rst new file mode 100644 index 00000000..db6eb769 --- /dev/null +++ b/tests/addons/v15/openupgradelib_tests/README.rst @@ -0,0 +1 @@ +Openupgradelib Test Addon diff --git a/tests/addons/v15/openupgradelib_tests/__init__.py b/tests/addons/v15/openupgradelib_tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/addons/v15/openupgradelib_tests/__manifest__.py b/tests/addons/v15/openupgradelib_tests/__manifest__.py new file mode 100644 index 00000000..1a056f00 --- /dev/null +++ b/tests/addons/v15/openupgradelib_tests/__manifest__.py @@ -0,0 +1,11 @@ +# Copyright 2018 Opener B.V. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Openupgradelib Test Addon", + "version": "1.0.0", # No version prefix on purpose + "category": "Migration", + "author": "Opener B.V., Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/oca/openupgradelib", + "installable": True, +} diff --git a/tests/addons/v15/openupgradelib_tests/migrations/15.0.1.0.0/post-migrate.py b/tests/addons/v15/openupgradelib_tests/migrations/15.0.1.0.0/post-migrate.py new file mode 100644 index 00000000..b5d758d0 --- /dev/null +++ b/tests/addons/v15/openupgradelib_tests/migrations/15.0.1.0.0/post-migrate.py @@ -0,0 +1,11 @@ +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.set_defaults( + env.cr, env, {"res.partner": [("active", None)]}, force=True + ) + openupgrade.set_defaults( + env.cr, env, {"res.partner": [("active", None)]}, force=True, use_orm=True + ) diff --git a/tests/addons/v16/openupgradelib_tests/README.rst b/tests/addons/v16/openupgradelib_tests/README.rst new file mode 100644 index 00000000..db6eb769 --- /dev/null +++ b/tests/addons/v16/openupgradelib_tests/README.rst @@ -0,0 +1 @@ +Openupgradelib Test Addon diff --git a/tests/addons/v16/openupgradelib_tests/__init__.py b/tests/addons/v16/openupgradelib_tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/addons/v16/openupgradelib_tests/__manifest__.py b/tests/addons/v16/openupgradelib_tests/__manifest__.py new file mode 100644 index 00000000..1a056f00 --- /dev/null +++ b/tests/addons/v16/openupgradelib_tests/__manifest__.py @@ -0,0 +1,11 @@ +# Copyright 2018 Opener B.V. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Openupgradelib Test Addon", + "version": "1.0.0", # No version prefix on purpose + "category": "Migration", + "author": "Opener B.V., Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/oca/openupgradelib", + "installable": True, +} diff --git a/tests/addons/v16/openupgradelib_tests/migrations/16.0.1.0.0/post-migrate.py b/tests/addons/v16/openupgradelib_tests/migrations/16.0.1.0.0/post-migrate.py new file mode 100644 index 00000000..b5d758d0 --- /dev/null +++ b/tests/addons/v16/openupgradelib_tests/migrations/16.0.1.0.0/post-migrate.py @@ -0,0 +1,11 @@ +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.set_defaults( + env.cr, env, {"res.partner": [("active", None)]}, force=True + ) + openupgrade.set_defaults( + env.cr, env, {"res.partner": [("active", None)]}, force=True, use_orm=True + ) diff --git a/tests/addons/v17/openupgradelib_tests/README.rst b/tests/addons/v17/openupgradelib_tests/README.rst new file mode 100644 index 00000000..db6eb769 --- /dev/null +++ b/tests/addons/v17/openupgradelib_tests/README.rst @@ -0,0 +1 @@ +Openupgradelib Test Addon diff --git a/tests/addons/v17/openupgradelib_tests/__init__.py b/tests/addons/v17/openupgradelib_tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/addons/v17/openupgradelib_tests/__manifest__.py b/tests/addons/v17/openupgradelib_tests/__manifest__.py new file mode 100644 index 00000000..1a056f00 --- /dev/null +++ b/tests/addons/v17/openupgradelib_tests/__manifest__.py @@ -0,0 +1,11 @@ +# Copyright 2018 Opener B.V. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Openupgradelib Test Addon", + "version": "1.0.0", # No version prefix on purpose + "category": "Migration", + "author": "Opener B.V., Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/oca/openupgradelib", + "installable": True, +} diff --git a/tests/addons/v17/openupgradelib_tests/migrations/17.0.1.0.0/post-migrate.py b/tests/addons/v17/openupgradelib_tests/migrations/17.0.1.0.0/post-migrate.py new file mode 100644 index 00000000..b5d758d0 --- /dev/null +++ b/tests/addons/v17/openupgradelib_tests/migrations/17.0.1.0.0/post-migrate.py @@ -0,0 +1,11 @@ +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.set_defaults( + env.cr, env, {"res.partner": [("active", None)]}, force=True + ) + openupgrade.set_defaults( + env.cr, env, {"res.partner": [("active", None)]}, force=True, use_orm=True + ) diff --git a/tests/addons/v18/openupgradelib_tests/README.rst b/tests/addons/v18/openupgradelib_tests/README.rst new file mode 100644 index 00000000..db6eb769 --- /dev/null +++ b/tests/addons/v18/openupgradelib_tests/README.rst @@ -0,0 +1 @@ +Openupgradelib Test Addon diff --git a/tests/addons/v18/openupgradelib_tests/__init__.py b/tests/addons/v18/openupgradelib_tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/addons/v18/openupgradelib_tests/__manifest__.py b/tests/addons/v18/openupgradelib_tests/__manifest__.py new file mode 100644 index 00000000..1a056f00 --- /dev/null +++ b/tests/addons/v18/openupgradelib_tests/__manifest__.py @@ -0,0 +1,11 @@ +# Copyright 2018 Opener B.V. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Openupgradelib Test Addon", + "version": "1.0.0", # No version prefix on purpose + "category": "Migration", + "author": "Opener B.V., Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/oca/openupgradelib", + "installable": True, +} diff --git a/tests/addons/v18/openupgradelib_tests/migrations/18.0.1.0.0/post-migrate.py b/tests/addons/v18/openupgradelib_tests/migrations/18.0.1.0.0/post-migrate.py new file mode 100644 index 00000000..b5d758d0 --- /dev/null +++ b/tests/addons/v18/openupgradelib_tests/migrations/18.0.1.0.0/post-migrate.py @@ -0,0 +1,11 @@ +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.set_defaults( + env.cr, env, {"res.partner": [("active", None)]}, force=True + ) + openupgrade.set_defaults( + env.cr, env, {"res.partner": [("active", None)]}, force=True, use_orm=True + )