Skip to content

Latest commit

 

History

History
169 lines (124 loc) · 4.08 KB

DEV.md

File metadata and controls

169 lines (124 loc) · 4.08 KB

Dev environment

Setup

This setup was last tested with the following tools:

$ node --version
v14.17.0
$ yarn --version
1.22.10
$ direnv --version
2.28.0
$ jq --version
jq-1.6
$ docker --version
Docker version 20.10.7, build f0df350
$ docker compose version
Docker Compose version 2.0.0

We use direnv to load environment variables needed for running the integration tests. Don't forget to add the direnv hook to your shell.rc file.

Clone the repo and install dependencies:

$ git clone git@github.com:GaloyMoney/galoy.git
$ cd galoy
$ direnv allow
direnv reload
direnv: direnv: loading ~/projects/GaloyMoney/galoy/.envrc
(...)
$ yarn install

Runtime dependencies

$ make start-deps

# or
$ make reset-deps

Everytime the dependencies are re-started the environment must be reloaded via direnv reload. When using the make command this will happen automatically.

Development

To start the GraphQL server and its dependencies:

$ make start

Alernatively, to start the GraphQL server in watch mode (with automatic restart on changes):

$ make watch

Using GraphiQL

You can load GraphiQL, a web GUI for GraphQL. Start the server and open the following url:

Testing

To run the test suite you can run:

$ make test

To execute the test suite runtime dependencies must be running.

Run unit tests

$ yarn test:unit
# or
$ make unit

Runtime dependencies are not required

Run integration tests

To execute the integration tests runtime dependencies must be running.

$ yarn test:integration
# or
$ make integration

The integration tests are not fully idempotent (yet) so currently to re-run the tests, run:

$ make reset-integration

Run specific test file

To execute a specific test file:

Unit

Example to run test/unit/config.spec.ts

$ TEST=utils yarn test:unit
# or
$ TEST=utils make unit

where utils is the name of the file utils.spec.ts

Integration

Example to run test/integration/01-setup/01-connection.spec.ts

$ TEST=01-connection yarn test:integration
# or
$ TEST=01-connection make integration

if within a specific test suite you want to run/debug only a describe or it(test) block please use:

  • describe.only: just for debug purposes
  • it.only: just for debug purposes
  • it.skip: use it when a test is temporarily broken. Please don't commit commented test cases

Known issues

  • Test suite timeouts: increase jest timeout value. Example:
    # 120 seconds
    $ JEST_TIMEOUT=120000 yarn test:integration
  • Integration tests running slow: we use docker to run dependencies (redis, mongodb, bitcoind and 4 lnds) so the entire test suite is disk-intensive.
    • Please make sure that you are running docker containers in a solid state drive (SSD)
    • Reduce lnd log disk usage: change debuglevel to critical
      # ./dev/lnd/lnd.conf
      debuglevel=critical
      

Running checks

It's recommended that you use plugins in your editor to run ESLint checks and perform Prettier formatting on-save.

To run all the checks required for the code to pass GitHub actions check:

$ make check-code
(...)
$ echo $?
0

If you need to run Prettier through the command line, you can use:

$ yarn prettier -w .

Contributing

When opening a PR please pay attention to having a clean git history with good commit messages. It is the responsibility of the PR author to resolve merge conflicts before a merge can happen. If the PR is open for a long time a rebase may be requested.