# Subcomponent Tests
Subcomponent is unit-tested on its compiler only. The compiler generates a
configuration database that is then used to for the nominal use of
subcomponent. Other than its compiler, which is fairly self-contained,
Subcomponent is too complex (because it relies on third-party programs,
manipulates the filesystem, ...) to be unitarily tested.
Tests are divided into two parts:
- `cargo` unit tests, to check the internals of the compiler
- system tests to check some nominal use cases of subcomponent as well as some
corner cases we thought of.
## A word about unit tests
Unit tests are done using `cargo`, which is necessary to build subcomponent.
So, you should already have cargo installed, and you can run the tests:
```bash
cargo test
```
Details about unit tests are available in the `README.md` files that reside
in the unit tests folders:
- `lexer/`
- `parser/`
## A word about system tests
System tests rely on RobotFramework (http://robotframework.org/). You need to
have the `robot` command available in your *PATH* to run the tests. You will
also need third-party tools that subcomponent itself uses:
- `git`.
## Running all the tests
From the `tests/` directory, run `make`.