From 1f429d89ef2d160e09c82ef65b58baf53fbb7ed3 Mon Sep 17 00:00:00 2001 From: Martin Date: Sat, 25 May 2024 21:05:43 +0200 Subject: [PATCH 1/2] [17.0][ADD] odoo_test_xmlrunner module --- odoo_test_xmlrunner/README.rst | 201 +++++++ odoo_test_xmlrunner/__init__.py | 1 + odoo_test_xmlrunner/__manifest__.py | 19 + odoo_test_xmlrunner/odoo_tests/__init__.py | 1 + odoo_test_xmlrunner/odoo_tests/loader.py | 33 ++ odoo_test_xmlrunner/pyproject.toml | 3 + odoo_test_xmlrunner/readme/CONFIGURATION.md | 2 + odoo_test_xmlrunner/readme/CREDITS.md | 2 + odoo_test_xmlrunner/readme/DESCRIPTION.md | 1 + odoo_test_xmlrunner/readme/INSTALL.md | 3 + odoo_test_xmlrunner/readme/USAGE.md | 108 ++++ odoo_test_xmlrunner/requirements.txt | 1 + .../static/description/index.html | 547 ++++++++++++++++++ requirements.txt | 1 + 14 files changed, 923 insertions(+) create mode 100644 odoo_test_xmlrunner/README.rst create mode 100644 odoo_test_xmlrunner/__init__.py create mode 100644 odoo_test_xmlrunner/__manifest__.py create mode 100644 odoo_test_xmlrunner/odoo_tests/__init__.py create mode 100644 odoo_test_xmlrunner/odoo_tests/loader.py create mode 100644 odoo_test_xmlrunner/pyproject.toml create mode 100644 odoo_test_xmlrunner/readme/CONFIGURATION.md create mode 100644 odoo_test_xmlrunner/readme/CREDITS.md create mode 100644 odoo_test_xmlrunner/readme/DESCRIPTION.md create mode 100644 odoo_test_xmlrunner/readme/INSTALL.md create mode 100644 odoo_test_xmlrunner/readme/USAGE.md create mode 100644 odoo_test_xmlrunner/requirements.txt create mode 100644 odoo_test_xmlrunner/static/description/index.html diff --git a/odoo_test_xmlrunner/README.rst b/odoo_test_xmlrunner/README.rst new file mode 100644 index 00000000000..c8d5c9881e5 --- /dev/null +++ b/odoo_test_xmlrunner/README.rst @@ -0,0 +1,201 @@ +====================== +Unittest xUnit reports +====================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:782b2ed22876a72d28e0e67c5ff949d6d104c2da4bd0cf36ca7dbf3597900604 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/17.0/odoo_test_xmlrunner + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-17-0/server-tools-17-0-odoo_test_xmlrunner + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module generate unittest reports using unittest-xml-reporting tool. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +Install python library https://pypi.org/project/unittest-xml-reporting/ + +The module is automatically installed on the Odoo instance. + +Usage +===== + +Run the native Odoo tests +------------------------- + +Run the native Odoo tests. See the `Odoo +documentation `__ +for more information. + +Gitlab CI usage example +~~~~~~~~~~~~~~~~~~~~~~~ + +Add the following job to your ``.gitlab-ci.yml`` file: + +.. code:: yaml + + + stages: + - test + + variables: + POSTGRES_DB: odoo + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + POSTGRES_HOST_AUTH_METHOD: trust + + test: + stage: test + image: + name: ghcr.io/oca/oca-ci/py3.10-odoo17.0:latest + services: + - name: postgres:15 + tags: + - gitlab-org-docker + script: + # install odoo and run tests + - oca_install_addons && oca_init_test_database && oca_run_tests + # generate coverage report + - coverage html -d htmlcov && coverage xml -o coverage.xml + # read line-rate from coverage.xml and print it as percentage + - total=$(grep -oP ']*line-rate="\K[0-9.]+' coverage.xml | head -n 1 | awk '{print $1 * 100}') && echo "total ${total}%" + coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/' + artifacts: + paths: + - htmlcov/* + when: always + reports: + junit: test_results/*.xml + coverage_report: + coverage_format: cobertura + path: coverage.xml + +Github Actions usage example +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Add the following job to your ``.github/workflows/main.yml`` file: + +.. code:: yaml + + name: tests + + permissions: + contents: read + checks: write + id-token: write + + on: + push: + branches: ["main"] + tags: ["*"] + pull_request: + + jobs: + test: + runs-on: ubuntu-22.04 + container: ${{ matrix.container }} + name: ${{ matrix.name }} + strategy: + fail-fast: false + matrix: + include: + - container: ghcr.io/oca/oca-ci/py3.10-odoo17.0:latest + name: test with Odoo + services: + postgres: + image: postgres:12.0 + env: + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + POSTGRES_DB: odoo + ports: + - 5432:5432 + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + - name: Install addons and dependencies + run: oca_install_addons + - name: Check licenses + run: manifestoo -d . check-licenses + - name: Check development status + run: manifestoo -d . check-dev-status --default-dev-status=Beta + - name: Initialize test db + run: oca_init_test_database + - name: Run tests + run: oca_run_tests + - uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + - name: Publish Test Report + uses: mikepenz/action-junit-report@v4 + if: success() || failure() # always run even if the previous step fails + with: + report_paths: 'test_results/*.xml' + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Smile + +Other credits +------------- + +- `Smile `__: + + - Martin Deconinck martin.deconinck@smile.fr + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/odoo_test_xmlrunner/__init__.py b/odoo_test_xmlrunner/__init__.py new file mode 100644 index 00000000000..48ff93bf29f --- /dev/null +++ b/odoo_test_xmlrunner/__init__.py @@ -0,0 +1 @@ +from . import odoo_tests # F401 imported but unused diff --git a/odoo_test_xmlrunner/__manifest__.py b/odoo_test_xmlrunner/__manifest__.py new file mode 100644 index 00000000000..21e67c9a0e7 --- /dev/null +++ b/odoo_test_xmlrunner/__manifest__.py @@ -0,0 +1,19 @@ +{ + "name": "Unittest xUnit reports", + "version": "17.0.1.0.0", + "depends": ["base"], + "author": "Smile, Odoo Community Association (OCA)", + "license": "AGPL-3", + "summary": """ + This module override Odoo testing method to run them with xmlrunner tool. + """, + "website": "https://github.com/OCA/server-tools", + "category": "Tools", + "sequence": 20, + "auto_install": True, + "installable": True, + "application": False, + "external_dependencies": { + "python": ["unittest-xml-reporting"], + }, +} diff --git a/odoo_test_xmlrunner/odoo_tests/__init__.py b/odoo_test_xmlrunner/odoo_tests/__init__.py new file mode 100644 index 00000000000..4ad46195b0f --- /dev/null +++ b/odoo_test_xmlrunner/odoo_tests/__init__.py @@ -0,0 +1 @@ +from . import loader # F401 imported but unused diff --git a/odoo_test_xmlrunner/odoo_tests/loader.py b/odoo_test_xmlrunner/odoo_tests/loader.py new file mode 100644 index 00000000000..1e8ab4590d4 --- /dev/null +++ b/odoo_test_xmlrunner/odoo_tests/loader.py @@ -0,0 +1,33 @@ +import os +import threading + +import xmlrunner + +from odoo.tests import loader as odoo_loader +from odoo.tests.result import OdooTestResult +from odoo.tools import config + + +def new_run_suite(suite, module_name=None): + # Override : Get and create a config dir + test_result_directory = config.get("test_result_directory", "test_results") + # create test result directory if not exists + if not os.path.exists(test_result_directory): + os.makedirs(test_result_directory) + + # avoid dependency hell + from odoo.modules import module + + module.current_test = module_name + threading.current_thread().testing = True + results = OdooTestResult() + + # Override : XMLTestRunner to run the tests and generate XML reports + xmlrunner.XMLTestRunner(output=test_result_directory, verbosity=2).run(suite) + + threading.current_thread().testing = False + module.current_test = None + return results + + +odoo_loader.run_suite = new_run_suite diff --git a/odoo_test_xmlrunner/pyproject.toml b/odoo_test_xmlrunner/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/odoo_test_xmlrunner/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/odoo_test_xmlrunner/readme/CONFIGURATION.md b/odoo_test_xmlrunner/readme/CONFIGURATION.md new file mode 100644 index 00000000000..aa2c51f2d0a --- /dev/null +++ b/odoo_test_xmlrunner/readme/CONFIGURATION.md @@ -0,0 +1,2 @@ +Add to your odoo Configuration file: +- **test_result_directory** (default: *test_results*) : The path (created if not exists) where the reports will be written to. \ No newline at end of file diff --git a/odoo_test_xmlrunner/readme/CREDITS.md b/odoo_test_xmlrunner/readme/CREDITS.md new file mode 100644 index 00000000000..41c88d09352 --- /dev/null +++ b/odoo_test_xmlrunner/readme/CREDITS.md @@ -0,0 +1,2 @@ +* [Smile](https://smile.eu/fr): + * Martin Deconinck \ No newline at end of file diff --git a/odoo_test_xmlrunner/readme/DESCRIPTION.md b/odoo_test_xmlrunner/readme/DESCRIPTION.md new file mode 100644 index 00000000000..16d28d3c5f9 --- /dev/null +++ b/odoo_test_xmlrunner/readme/DESCRIPTION.md @@ -0,0 +1 @@ +This module generate unittest reports using unittest-xml-reporting tool. \ No newline at end of file diff --git a/odoo_test_xmlrunner/readme/INSTALL.md b/odoo_test_xmlrunner/readme/INSTALL.md new file mode 100644 index 00000000000..8079d04b1d7 --- /dev/null +++ b/odoo_test_xmlrunner/readme/INSTALL.md @@ -0,0 +1,3 @@ +Install python library https://pypi.org/project/unittest-xml-reporting/ + +The module is automatically installed on the Odoo instance. \ No newline at end of file diff --git a/odoo_test_xmlrunner/readme/USAGE.md b/odoo_test_xmlrunner/readme/USAGE.md new file mode 100644 index 00000000000..647f60df8fd --- /dev/null +++ b/odoo_test_xmlrunner/readme/USAGE.md @@ -0,0 +1,108 @@ + +## Run the native Odoo tests + +Run the native Odoo tests. See the [Odoo documentation](https://www.odoo.com/documentation/17.0/fr/developer/reference/backend/testing.html) for more information. + +### Gitlab CI usage example + +Add the following job to your `.gitlab-ci.yml` file: + +```yaml + +stages: + - test + +variables: + POSTGRES_DB: odoo + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + POSTGRES_HOST_AUTH_METHOD: trust + +test: + stage: test + image: + name: ghcr.io/oca/oca-ci/py3.10-odoo17.0:latest + services: + - name: postgres:15 + tags: + - gitlab-org-docker + script: + # install odoo and run tests + - oca_install_addons && oca_init_test_database && oca_run_tests + # generate coverage report + - coverage html -d htmlcov && coverage xml -o coverage.xml + # read line-rate from coverage.xml and print it as percentage + - total=$(grep -oP ']*line-rate="\K[0-9.]+' coverage.xml | head -n 1 | awk '{print $1 * 100}') && echo "total ${total}%" + coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/' + artifacts: + paths: + - htmlcov/* + when: always + reports: + junit: test_results/*.xml + coverage_report: + coverage_format: cobertura + path: coverage.xml +``` +### Github Actions usage example + +Add the following job to your `.github/workflows/main.yml` file: + +```yaml +name: tests + +permissions: + contents: read + checks: write + id-token: write + +on: + push: + branches: ["main"] + tags: ["*"] + pull_request: + +jobs: + test: + runs-on: ubuntu-22.04 + container: ${{ matrix.container }} + name: ${{ matrix.name }} + strategy: + fail-fast: false + matrix: + include: + - container: ghcr.io/oca/oca-ci/py3.10-odoo17.0:latest + name: test with Odoo + services: + postgres: + image: postgres:12.0 + env: + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + POSTGRES_DB: odoo + ports: + - 5432:5432 + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + - name: Install addons and dependencies + run: oca_install_addons + - name: Check licenses + run: manifestoo -d . check-licenses + - name: Check development status + run: manifestoo -d . check-dev-status --default-dev-status=Beta + - name: Initialize test db + run: oca_init_test_database + - name: Run tests + run: oca_run_tests + - uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + - name: Publish Test Report + uses: mikepenz/action-junit-report@v4 + if: success() || failure() # always run even if the previous step fails + with: + report_paths: 'test_results/*.xml' + +``` \ No newline at end of file diff --git a/odoo_test_xmlrunner/requirements.txt b/odoo_test_xmlrunner/requirements.txt new file mode 100644 index 00000000000..718199204e9 --- /dev/null +++ b/odoo_test_xmlrunner/requirements.txt @@ -0,0 +1 @@ +unittest-xml-reporting diff --git a/odoo_test_xmlrunner/static/description/index.html b/odoo_test_xmlrunner/static/description/index.html new file mode 100644 index 00000000000..e545c902885 --- /dev/null +++ b/odoo_test_xmlrunner/static/description/index.html @@ -0,0 +1,547 @@ + + + + + +Unittest xUnit reports + + + +
+

Unittest xUnit reports

+ + +

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

This module generate unittest reports using unittest-xml-reporting tool.

+

Table of contents

+ +
+

Installation

+

Install python library https://pypi.org/project/unittest-xml-reporting/

+

The module is automatically installed on the Odoo instance.

+
+
+

Usage

+
+

Run the native Odoo tests

+

Run the native Odoo tests. See the Odoo +documentation +for more information.

+
+

Gitlab CI usage example

+

Add the following job to your .gitlab-ci.yml file:

+
+stages:
+  - test
+
+variables:
+  POSTGRES_DB: odoo
+  POSTGRES_USER: odoo
+  POSTGRES_PASSWORD: odoo
+  POSTGRES_HOST_AUTH_METHOD: trust
+
+test:
+  stage: test
+  image:
+    name: ghcr.io/oca/oca-ci/py3.10-odoo17.0:latest
+  services:
+    - name: postgres:15
+  tags:
+    - gitlab-org-docker
+  script:
+    # install odoo and run tests
+    - oca_install_addons && oca_init_test_database && oca_run_tests
+    # generate coverage report
+    - coverage html -d htmlcov && coverage xml -o coverage.xml
+    # read line-rate from coverage.xml and print it as percentage
+    - total=$(grep -oP '<coverage[^>]*line-rate="\K[0-9.]+' coverage.xml | head -n 1 | awk '{print $1 * 100}') && echo "total ${total}%"
+  coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
+  artifacts:
+    paths:
+      - htmlcov/*
+    when: always
+    reports:
+      junit: test_results/*.xml
+      coverage_report:
+          coverage_format: cobertura
+          path: coverage.xml
+
+
+
+

Github Actions usage example

+

Add the following job to your .github/workflows/main.yml file:

+
+name: tests
+
+permissions:
+    contents: read
+    checks: write
+    id-token: write
+
+on:
+  push:
+    branches: ["main"]
+    tags: ["*"]
+  pull_request:
+
+jobs:
+  test:
+    runs-on: ubuntu-22.04
+    container: ${{ matrix.container }}
+    name: ${{ matrix.name }}
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - container: ghcr.io/oca/oca-ci/py3.10-odoo17.0:latest
+            name: test with Odoo
+    services:
+      postgres:
+        image: postgres:12.0
+        env:
+          POSTGRES_USER: odoo
+          POSTGRES_PASSWORD: odoo
+          POSTGRES_DB: odoo
+        ports:
+          - 5432:5432
+    steps:
+      - uses: actions/checkout@v3
+        with:
+          persist-credentials: false
+      - name: Install addons and dependencies
+        run: oca_install_addons
+      - name: Check licenses
+        run: manifestoo -d . check-licenses
+      - name: Check development status
+        run: manifestoo -d . check-dev-status --default-dev-status=Beta
+      - name: Initialize test db
+        run: oca_init_test_database
+      - name: Run tests
+        run: oca_run_tests
+      - uses: codecov/codecov-action@v4
+        with:
+          token: ${{ secrets.CODECOV_TOKEN }}
+      - name: Publish Test Report
+        uses: mikepenz/action-junit-report@v4
+        if: success() || failure() # always run even if the previous step fails
+        with:
+          report_paths: 'test_results/*.xml'
+
+
+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Smile
  • +
+
+
+

Other credits

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/server-tools project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/requirements.txt b/requirements.txt index 1b8561a56a4..13de5cb36cb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,3 +13,4 @@ pygount pysftp sentry_sdk<=1.9.0 unidecode +unittest-xml-reporting From 390bd463541f7d57e3d97cfba2945c1689b16739 Mon Sep 17 00:00:00 2001 From: Florian Mounier Date: Thu, 21 Nov 2024 11:48:00 +0100 Subject: [PATCH 2/2] [BACKPORT] odoo_test_xmlrunner to 14.0 Also implement a better patch and merge test results. --- odoo_test_xmlrunner/README.rst | 20 ++++--- odoo_test_xmlrunner/__init__.py | 2 +- odoo_test_xmlrunner/__manifest__.py | 4 +- odoo_test_xmlrunner/odoo_tests/__init__.py | 2 +- odoo_test_xmlrunner/odoo_tests/loader.py | 54 +++++++++---------- odoo_test_xmlrunner/readme/CONFIGURATION.md | 2 +- odoo_test_xmlrunner/readme/CREDITS.md | 6 ++- odoo_test_xmlrunner/readme/DESCRIPTION.md | 2 +- odoo_test_xmlrunner/readme/INSTALL.md | 2 +- odoo_test_xmlrunner/readme/USAGE.md | 2 +- .../static/description/index.html | 23 +++++--- .../odoo/addons/odoo_test_xmlrunner | 1 + setup/odoo_test_xmlrunner/setup.py | 6 +++ 13 files changed, 72 insertions(+), 54 deletions(-) create mode 120000 setup/odoo_test_xmlrunner/odoo/addons/odoo_test_xmlrunner create mode 100644 setup/odoo_test_xmlrunner/setup.py diff --git a/odoo_test_xmlrunner/README.rst b/odoo_test_xmlrunner/README.rst index c8d5c9881e5..0880a8ade65 100644 --- a/odoo_test_xmlrunner/README.rst +++ b/odoo_test_xmlrunner/README.rst @@ -7,7 +7,7 @@ Unittest xUnit reports !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:782b2ed22876a72d28e0e67c5ff949d6d104c2da4bd0cf36ca7dbf3597900604 + !! source digest: sha256:a2dcc0c233ca8a24acab0b0015516839c0e3ab16c9bbdc3cdab3304b228ca176 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -17,13 +17,13 @@ Unittest xUnit reports :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github - :target: https://github.com/OCA/server-tools/tree/17.0/odoo_test_xmlrunner + :target: https://github.com/OCA/server-tools/tree/14.0/odoo_test_xmlrunner :alt: OCA/server-tools .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-tools-17-0/server-tools-17-0-odoo_test_xmlrunner + :target: https://translation.odoo-community.org/projects/server-tools-14-0/server-tools-14-0-odoo_test_xmlrunner :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=14.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -164,7 +164,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -179,9 +179,13 @@ Authors Other credits ------------- -- `Smile `__: +- `Smile `__: - - Martin Deconinck martin.deconinck@smile.fr + - Martin Deconinck martin.deconinck@smile.fr + +- `Akretion `__: + + - Florian Mounier florian.mounier@akretion.com Maintainers ----------- @@ -196,6 +200,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/server-tools `_ project on GitHub. +This module is part of the `OCA/server-tools `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/odoo_test_xmlrunner/__init__.py b/odoo_test_xmlrunner/__init__.py index 48ff93bf29f..382130c7586 100644 --- a/odoo_test_xmlrunner/__init__.py +++ b/odoo_test_xmlrunner/__init__.py @@ -1 +1 @@ -from . import odoo_tests # F401 imported but unused +from . import odoo_tests # F401 imported but unused diff --git a/odoo_test_xmlrunner/__manifest__.py b/odoo_test_xmlrunner/__manifest__.py index 21e67c9a0e7..c556dce967e 100644 --- a/odoo_test_xmlrunner/__manifest__.py +++ b/odoo_test_xmlrunner/__manifest__.py @@ -1,7 +1,7 @@ { "name": "Unittest xUnit reports", - "version": "17.0.1.0.0", - "depends": ["base"], + "version": "14.0.1.0.0", + "depends": [], "author": "Smile, Odoo Community Association (OCA)", "license": "AGPL-3", "summary": """ diff --git a/odoo_test_xmlrunner/odoo_tests/__init__.py b/odoo_test_xmlrunner/odoo_tests/__init__.py index 4ad46195b0f..571c37ecce6 100644 --- a/odoo_test_xmlrunner/odoo_tests/__init__.py +++ b/odoo_test_xmlrunner/odoo_tests/__init__.py @@ -1 +1 @@ -from . import loader # F401 imported but unused +from . import loader # F401 imported but unused diff --git a/odoo_test_xmlrunner/odoo_tests/loader.py b/odoo_test_xmlrunner/odoo_tests/loader.py index 1e8ab4590d4..49fd4bcbf03 100644 --- a/odoo_test_xmlrunner/odoo_tests/loader.py +++ b/odoo_test_xmlrunner/odoo_tests/loader.py @@ -1,33 +1,31 @@ import os -import threading +from unittest.mock import patch -import xmlrunner +from xmlrunner import XMLTestRunner -from odoo.tests import loader as odoo_loader -from odoo.tests.result import OdooTestResult +from odoo.tests.common import OdooSuite from odoo.tools import config - -def new_run_suite(suite, module_name=None): - # Override : Get and create a config dir - test_result_directory = config.get("test_result_directory", "test_results") - # create test result directory if not exists - if not os.path.exists(test_result_directory): - os.makedirs(test_result_directory) - - # avoid dependency hell - from odoo.modules import module - - module.current_test = module_name - threading.current_thread().testing = True - results = OdooTestResult() - - # Override : XMLTestRunner to run the tests and generate XML reports - xmlrunner.XMLTestRunner(output=test_result_directory, verbosity=2).run(suite) - - threading.current_thread().testing = False - module.current_test = None - return results - - -odoo_loader.run_suite = new_run_suite +if config["test_enable"]: + unpatched_run = OdooSuite.run + + def run(self, result): + # Override : Get and create a config dir + test_result_directory = config.get("test_result_directory", "test_results") + # create test result directory if not exists + if not os.path.exists(test_result_directory): + os.makedirs(test_result_directory) + + # Suite run method will be called by the XMLTestRunner, + # so we need to run the original run method + with patch.object(self, "run", lambda result: unpatched_run(self, result)): + # Override : XMLTestRunner to run the tests and generate XML reports + results = XMLTestRunner( + output=test_result_directory, + verbosity=2, + ).run(self) + + result.update(results) + return result + + patch("odoo.tests.common.OdooSuite.run", run).start() diff --git a/odoo_test_xmlrunner/readme/CONFIGURATION.md b/odoo_test_xmlrunner/readme/CONFIGURATION.md index aa2c51f2d0a..ebd8c0c3852 100644 --- a/odoo_test_xmlrunner/readme/CONFIGURATION.md +++ b/odoo_test_xmlrunner/readme/CONFIGURATION.md @@ -1,2 +1,2 @@ Add to your odoo Configuration file: -- **test_result_directory** (default: *test_results*) : The path (created if not exists) where the reports will be written to. \ No newline at end of file +- **test_result_directory** (default: *test_results*) : The path (created if not exists) where the reports will be written to. diff --git a/odoo_test_xmlrunner/readme/CREDITS.md b/odoo_test_xmlrunner/readme/CREDITS.md index 41c88d09352..25c6a27a7d8 100644 --- a/odoo_test_xmlrunner/readme/CREDITS.md +++ b/odoo_test_xmlrunner/readme/CREDITS.md @@ -1,2 +1,4 @@ -* [Smile](https://smile.eu/fr): - * Martin Deconinck \ No newline at end of file +- [Smile](https://smile.eu/fr): + - Martin Deconinck +- [Akretion](https://akretion.com): + - Florian Mounier diff --git a/odoo_test_xmlrunner/readme/DESCRIPTION.md b/odoo_test_xmlrunner/readme/DESCRIPTION.md index 16d28d3c5f9..a6e2fc9ef35 100644 --- a/odoo_test_xmlrunner/readme/DESCRIPTION.md +++ b/odoo_test_xmlrunner/readme/DESCRIPTION.md @@ -1 +1 @@ -This module generate unittest reports using unittest-xml-reporting tool. \ No newline at end of file +This module generate unittest reports using unittest-xml-reporting tool. diff --git a/odoo_test_xmlrunner/readme/INSTALL.md b/odoo_test_xmlrunner/readme/INSTALL.md index 8079d04b1d7..bd127a850b9 100644 --- a/odoo_test_xmlrunner/readme/INSTALL.md +++ b/odoo_test_xmlrunner/readme/INSTALL.md @@ -1,3 +1,3 @@ Install python library https://pypi.org/project/unittest-xml-reporting/ -The module is automatically installed on the Odoo instance. \ No newline at end of file +The module is automatically installed on the Odoo instance. diff --git a/odoo_test_xmlrunner/readme/USAGE.md b/odoo_test_xmlrunner/readme/USAGE.md index 647f60df8fd..6e22e01c08a 100644 --- a/odoo_test_xmlrunner/readme/USAGE.md +++ b/odoo_test_xmlrunner/readme/USAGE.md @@ -105,4 +105,4 @@ jobs: with: report_paths: 'test_results/*.xml' -``` \ No newline at end of file +``` diff --git a/odoo_test_xmlrunner/static/description/index.html b/odoo_test_xmlrunner/static/description/index.html index e545c902885..848e789732a 100644 --- a/odoo_test_xmlrunner/static/description/index.html +++ b/odoo_test_xmlrunner/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -366,9 +367,9 @@

Unittest xUnit reports

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:782b2ed22876a72d28e0e67c5ff949d6d104c2da4bd0cf36ca7dbf3597900604 +!! source digest: sha256:a2dcc0c233ca8a24acab0b0015516839c0e3ab16c9bbdc3cdab3304b228ca176 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

This module generate unittest reports using unittest-xml-reporting tool.

Table of contents

@@ -511,7 +512,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -529,16 +530,22 @@

Other credits

  • Martin Deconinck martin.deconinck@smile.fr
  • +
  • Akretion: +
  • Maintainers

    This module is maintained by the OCA.

    -Odoo Community Association + +Odoo Community Association +

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    -

    This module is part of the OCA/server-tools project on GitHub.

    +

    This module is part of the OCA/server-tools project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    diff --git a/setup/odoo_test_xmlrunner/odoo/addons/odoo_test_xmlrunner b/setup/odoo_test_xmlrunner/odoo/addons/odoo_test_xmlrunner new file mode 120000 index 00000000000..87c415812b6 --- /dev/null +++ b/setup/odoo_test_xmlrunner/odoo/addons/odoo_test_xmlrunner @@ -0,0 +1 @@ +../../../../odoo_test_xmlrunner \ No newline at end of file diff --git a/setup/odoo_test_xmlrunner/setup.py b/setup/odoo_test_xmlrunner/setup.py new file mode 100644 index 00000000000..28c57bb6403 --- /dev/null +++ b/setup/odoo_test_xmlrunner/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)