To run tests, you'll first need to enable the test flag in cmake. You can do this by adding the `-DBUILD_TESTS=On` flag to your cmake setup call. (e.g. `mkdir build && cd build && cmake -DBUILD_TESTS=On ..`)

After you've built Chatterino, you can now run the tests with `ctest` or by manually running the newly created `chatterino-test` executable

# Pre-requisites to running tests

- Download & run [httpbox](https://github.com/Chatterino/httpbox/releases/latest)  
  We expect this to be listening to port 9051, you can launch it like this:  
  `httpbox --port 9051`

- Download & run [twitch-pubsub-server-test](https://github.com/Chatterino/twitch-pubsub-server-test/releases/latest)  
  We expect this to be listening to port 9050, you can launch it like this:
  `twitch-pubsub-server-test 127.0.0.1:9050`

Alternatively, you can run the docker-compose defined in this file: `docker compose up` before you run the tests.

# Modifying message building

If you make a change that has to do with message building, there's a big chance that some of the snapshot tests will fail.
If this happens, you might want to:

1. Set the `UPDATE_SNAPSHOTS` boolean at the top of the [IrcMessageHandler.cpp](./src/IrcMessageHandler.cpp) test file to `true`
1. Re-run the tests (this will update the snapshots to match your new reality)
1. Reset `UPDATE_SNAPSHOTS` to `false` again
1. Then run the tests a final time.

Once this is done, you should take a look at the changes made to the snapshot json files to ensure that it looks correct.
