# Building and Running Unit Tests¶

Contributions will need to pass our continuous integration unit tests before merging. To test your contributions against these tests, you'll first need to install Eigen and gtest:

sudo apt install libgtest-dev libeigen3-dev cmake


## Compile gtest¶

You just downloaded a bunch of source files, which you now have to go build

sudo apt install cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make


Copy the archive files you just built to the /usr/lib directory so CMake can find them later:

sudo cp *.a /usr/lib


## Run the Test Script¶

The simplest way to run the unit tests is to use the testing script. This script first checks that the firmware compiles, then runs the unit tests. This is the same script used on the continuous integration server, so this is a great way to check that your code will pass the tests before opening a pull request. Run the test script with

cd <firmware_directory>
./scripts/run_tests.sh


## Manually Build and Run the Unit Tests¶

If you want to manually build and run the unit tests, first build them with the following commands:

cd <firmware_directory>/test
mkdir build
cd build
cmake ..
make


Then run them with:

./unit_tests