Developing

This document provides the information you need to know before developing code for a pull request.

Environment

Directory structure

This is the directory structure we use for the project:

  • docker/ : Contains the docker, docker-compose and configuration files for different environments.

  • docs/: Contains the documentation showed for readthedocs.io.

  • test/: Contains all the tests.

At the root of the project, you will find:

  • The README.

  • The changelog.

  • The LICENSE file.

Tests

Dependencies

Running tests have some dependencies as: gotestsum, etc.. Install them with make install_dependencies.

Linting

We use golangci-lint for linting our code. You can test it with make lint. The configuration file is in the default path (.golangci.yml). The file .vscode.settings.json.template is a template for your .vscode/settings.json that formats the code according to our configuration.

Tests

We use the standard test suite in combination with github.com/stretchr/testify to do our testing. Tests have a database. CQL is tested on multiple databases. By default, the database used will be postgresql:

make test

To run the tests on another database you can use: make test_postgresql, make test_cockroachdb, make test_mysql, make test_sqlite, make test_sqlserver. All of them will be verified by our continuous integration system.

Requirements

To be acceptable, contributions must:

  • Have a good quality of code, based on https://go.dev/doc/effective_go.

  • Have at least 80 percent new code coverage (although a higher percentage may be required depending on the importance of the feature). The tests that contribute to coverage are unit tests and integration tests.

  • The features defined in the PR base issue must be explicitly tested by tests.

Use of Third-party code

Third-party code must include licenses.