mirror of https://github.com/YosysHQ/yosys.git
102 lines
3.2 KiB
ReStructuredText
102 lines
3.2 KiB
ReStructuredText
Testing Yosys
|
|
=============
|
|
|
|
.. TODO:: more about the included test suite and how to add tests
|
|
|
|
Automatic testing
|
|
-----------------
|
|
|
|
.. only:: html
|
|
|
|
The `Yosys Git repo`_ has automatic testing of builds and running of the
|
|
included test suite on the following platforms:
|
|
|
|
- Ubuntu |test-linux|
|
|
- macOS |test-macos|
|
|
|
|
.. _Yosys Git repo: https://github.com/YosysHQ/yosys
|
|
|
|
.. |test-linux| image:: https://github.com/YosysHQ/yosys/actions/workflows/test-linux.yml/badge.svg?branch=main
|
|
.. |test-macos| image:: https://github.com/YosysHQ/yosys/actions/workflows/test-macos.yml/badge.svg?branch=main
|
|
|
|
For up to date information, including OS versions, refer to `the git actions
|
|
page`_.
|
|
|
|
.. _the git actions page: https://github.com/YosysHQ/yosys/actions
|
|
|
|
.. todo:: are unit tests currently working
|
|
|
|
..
|
|
How to add a unit test
|
|
----------------------
|
|
|
|
Unit test brings some advantages, briefly, we can list some of them (reference
|
|
[1](https://en.wikipedia.org/wiki/Unit_testing)):
|
|
|
|
* Tests reduce bugs in new features;
|
|
* Tests reduce bugs in existing features;
|
|
* Tests are good documentation;
|
|
* Tests reduce the cost of change;
|
|
* Tests allow refactoring;
|
|
|
|
With those advantages in mind, it was required to choose a framework which fits
|
|
well with C/C++ code. Hence, `google test`_ was chosen, because it is widely
|
|
used and it is relatively easy learn.
|
|
|
|
.. _google test: https://github.com/google/googletest
|
|
|
|
Install and configure google test (manually)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
In this section, you will see a brief description of how to install google test.
|
|
However, it is strongly recommended that you take a look to the official
|
|
repository (https://github.com/google/googletest) and refers to that if you have
|
|
any problem to install it. Follow the steps below:
|
|
|
|
* Install: cmake and pthread
|
|
* Clone google test project from: https://github.com/google/googletest and enter
|
|
in the project directory
|
|
* Inside project directory, type:
|
|
|
|
.. code-block:: console
|
|
|
|
cmake -DBUILD_SHARED_LIBS=ON .
|
|
make
|
|
|
|
* After compilation, copy all ``*.so`` inside directory ``googlemock`` and
|
|
``googlemock/gtest`` to ``/usr/lib/``
|
|
* Done! Now you can compile your tests.
|
|
|
|
If you have any problem, go to the official repository to find help.
|
|
|
|
Ps.: Some distros already have googletest packed. If your distro supports it,
|
|
you can use it instead of compile.
|
|
|
|
Create a new unit test
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
If you want to add new unit tests for Yosys, just follow the steps below:
|
|
|
|
* Go to directory :file:`test/unit/`
|
|
* In this directory you can find something similar Yosys's directory structure.
|
|
To create your unit test file you have to follow this pattern:
|
|
fileNameToImplementUnitTest + Test.cc. E.g.: if you want to implement the unit
|
|
test for ``kernel/celledges.cc``, you will need to create a file like this:
|
|
``tests/unit/kernel/celledgesTest.cc``;
|
|
* Implement your unit test
|
|
|
|
Run unit tests
|
|
~~~~~~~~~~~~~~
|
|
|
|
To compile and run all unit tests, just go to yosys root directory and type:
|
|
|
|
.. code-block:: console
|
|
|
|
make unit-test
|
|
|
|
If you want to remove all unit test files, type:
|
|
|
|
.. code-block:: console
|
|
|
|
make clean-unit-test
|