3.3 [Test report on Gitlab pages](#cpp_test_report)
4.[Package tests and automatic release](#test_release_packages)
<aname="gitlab_pol_test"/>
**1. Test policy on Gitlab**
[[_TOC_]]
### Test policy on Gitlab
A strongly strict policy is applied on Gitlab test jobs.
The goal is to ensure the non-regression of the project (which has a large base of
...
...
@@ -38,12 +25,10 @@ they won't/shouldn't reach the release stage.
results and push a git-tag to release new packages but in that case at least
the packages tests must pass or it will fail).
**2. Testing pyfaust/matfaust**
### Testing pyfaust/matfaust
**<aname="py_matfaust_tests">
2.1 Test scripts for pyfaust/matfaust
</a>**
#### Test scripts for pyfaust/matfaust
- Directory location: ``misc/test/src/Python`` for pyfaust and
``misc/test/src/Matlab``
...
...
@@ -60,9 +45,7 @@ recent FAµST API is needed).
``pyfaust.Faust`` class and all algorithms/functions),
*``FaustTest.m`` (31 unit tests for the ``matfaust.Faust`` class), ``FaustFactoryTest.m`` (39 unit tests for factorizations and other algorithms).
**<aname="py_mat_test_ci_jobs">
2.2 Gitlab continuous integration (ci) job
</a>**
#### Gitlab continuous integration (ci) job
- All ci jobs are defined in the ``.gitlab-ci.yml`` file.
- Gitlab ci jobs: ``ctest_python`` for pyfaust, ``ctest_matlab`` for matfaust.
...
...
@@ -72,9 +55,7 @@ recent FAµST API is needed).
executes (on a Linux/MacOS VM) the test and unit tests above and other test scripts.
The configuration of ctest for running the tests is located in ``misc/test/CMakeLists.txt``
**<aname="py_mat_test_reports">
2.3 Test reports on Gitlab pages
</a>**
#### Test reports on Gitlab pages
- On the end of ``ctest_python``/``ctest_matlab`` execution a test report in HTML
is automatically uploaded to the project Gitlab pages (as a hidden page).
...
...
@@ -84,9 +65,7 @@ recent FAµST API is needed).
(if this link doesn't work, the associated pipeline has been deleted on Gitlab,
please look [here](https://gitlab.inria.fr/faustgrp/faust/-/jobs) for a recent ``ctest_python``/``ctest_matlab`` output).
**<aname="doctest">
2.4 Doctest
</a>**
#### Doctest
The pyfaust/matfaust API comes with many examples integrated on the [documentation](https://faustgrp.gitlabpages.inria.fr/faust/last-doc/html/index.html).
They are all fully tested in the
...
...
@@ -97,9 +76,7 @@ to run every night.
If any of the tested pyfaust/matfaust submodules or functions fails (and they are all tested at the time of
writing), the erroneous tests will be displayed in the ci job output.
**<aname="test_cover">
2.5 Test Coverage
</a>**
#### Test Coverage
It really matters to keep a metric of how much code is covered by the tests in the project.
...
...
@@ -122,16 +99,14 @@ to pursue for a larger coverage.
- About GPU code: unfortunately no automatic testing is made for GPU code
because no NVIDIA GPU is available on VMs/Docker daemons that run the project gitlab-runners.
**<aname="cpp_tests">
3. FAµST C++ core tests
</a>**
### FAµST C++ core tests
#### 3.1 Tests
#### Tests
- Directory location: ``misc/test/src/C++`` and ``misc/test/src/C++/unit``
#### 3.2 Gitlab continuous integration (ci) jobs
<aname="cpp_test_ci_jobs"/>
#### Gitlab continuous integration (ci) jobs
- Gitlab ci job: ``ctest`` performs C++ tests.
- Note that for a matter of pipeline speed this ci job runs only if there are changes in ``src/**/*``or ``misc/test/src/C++/**/*``.
...
...
@@ -140,8 +115,8 @@ For the same reason another ci job named ``ctest_nightly`` is made to run the te
``ctest_nightly_win10``), for the moment the macos' is disabled mainly because the macos' runs in monothread (see ``.gitlab-ci.yml``).
- For more details about ctest, take a look at [2.2](#py_mat_test_ci_jobs).
#### 3.3 Test report on Gitlab pages
<aname="cpp_test_report"/>
#### Test report on Gitlab pages
- On the end of ``ctest`` ci job execution a test report in HTML
is automatically uploaded to the project Gitlab pages (as a hidden page).
...
...
@@ -153,8 +128,6 @@ For the same reason another ci job named ``ctest_nightly`` is made to run the te
- At the time of writing it exist 167 C++ tests ran by the ctest ci job. It includes many unit tests and all these tests passed the latest pipeline.


- cuda (preferably cuda 12 latest version but 9 and 11 are also supported).
There is a known bug on cuda 11.4 (issue #305). CUDA is optional, only used if cmake option ``USE_GPU_MOD`` is ON.
...
...
@@ -53,9 +42,8 @@ the CMake script indicate if the match is not appropriate).
---
<aname="build_unix"/>
3. Build on UNIX
=====================
### Build on UNIX
Unpack the directory.
mkdir ./build
...
...
@@ -73,9 +61,8 @@ For more information, please refer to the [Mathworks website](http://fr.mathwork
Many CMake build options are available (cf. [CMakeLists.txt](./CMakeLists.txt)). It might be quite complicated to deal with them at start (refer to gitlab ci building scripts in [./misc/continuous\_integration/jobs/](./misc/continuous_integration/jobs/) or the [.gitlab-ci.yml](.gitlab-ci.yml) root script to get some insight).
---
<aname="quick_build_pyfaust"/>
4. Quick Build of the python wrappers (pyfaust) on UNIX (without MATLAB and MATIO)
### Using Docker for a quick build of the python wrappers (pyfaust) on Linux without any dependency burden
First you need to install [docker](https://docs.docker.com/engine/install/) or ``podman-docker``.
Then follow the next commands:
...
...
@@ -125,9 +111,8 @@ Thanks to the docker directory mapping you can do it outside of the docker conta
---
<aname="prebuilt_pkgs"/>
Quickest Install on Linux, Windows and macOS (pre-built pakages)
============================================
### Quickest Install on Linux, Windows and macOS (pre-built pakages)
Please refer to the document [Installation guides](https://faustgrp.gitlabpages.inria.fr/faust/last-doc/html/md_README.html)
to install the FAUST toolbox.
...
...
@@ -144,30 +129,30 @@ Pre-compiled packages from Gitlab Continuous Integration are also available. Exc
- Python PIP (pre-compiled) packages: for [Linux](https://gitlab.inria.fr/faustgrp/faust/-/jobs/artifacts/master/download?job=package_linux_purepy_release), [macOS](https://gitlab.inria.fr/faustgrp/faust/-/jobs/artifacts/master/download?job=package_macos_purepy_release) and [Windows 10](https://gitlab.inria.fr/faustgrp/faust/-/jobs/artifacts/master/download?job=package_win_purepy_release). Or preferably, refer to [pypi pyfaust](https://pypi.org/project/pyfaust) or [anaconda pyfaust](https://anaconda.org/pyfaust/pyfaust).
---
<a name="contributing"/>
7. Contributing to FAµST
========================
### Contributing to FAµST
Please consult the guide [here](CONTRIBUTING.md) and the [README for developers](README.developer.md).
---
<aname="refs"/>
License
========
### License -- Credits -- Contacts -- References
#### License
Cf. license.txt
---
Contacts
========
#### Contacts
Rémi Gribonval: remi.gribonval@inria.fr
Hakim: hakim.hadj-djilani@inria.fr
Pascal Carrivain: pascal.carrivain@inria.fr
Credits
========
#### Credits
Researchers:
Luc Le Magoarou
...
...
@@ -179,8 +164,7 @@ Adrien Leman (2016), Nicolas Bellot(2015-2016), Thomas Gautrais (2015), Hakim Ha
---
References
==========
#### References
[1] [Le Magoarou L. and Gribonval R., "Flexible multi-layer sparse
approximations of matrices and applications", Journal of Selected