======================
Unittest xUnit reports
======================

.. 
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! This file is generated by oca-gen-addon-readme !!
   !! changes will be overwritten.                   !!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! source digest: sha256:dc5901a41067fac6a375c2ba99ceaf485afc9273c2248b73255cc1b99e6fddcf
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/16.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-16-0/server-tools-16-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=16.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 <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:

.. 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 '<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:

.. 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 <https://github.com/OCA/server-tools/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 <https://github.com/OCA/server-tools/issues/new?body=module:%20odoo_test_xmlrunner%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Credits
=======

Authors
-------

* Smile

Other credits
-------------

- `Smile <https://smile.eu/fr>`__:

  - Martin Deconinck martin.deconinck@smile.fr

- `Akretion <https://akretion.com>`__:

  - Florian Mounier florian.mounier@akretion.com

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 <https://github.com/OCA/server-tools/tree/16.0/odoo_test_xmlrunner>`_ project on GitHub.

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