diff options
author | Angelos Evripiotis <jevripiotis@bloomberg.net> | 2018-11-08 14:29:34 +0000 |
---|---|---|
committer | Angelos Evripiotis <jevripiotis@bloomberg.net> | 2018-11-08 17:37:21 +0000 |
commit | dcecd0576278453efb0d1c8506a92e2a3113477e (patch) | |
tree | 250e9ffbf8392202d0ad4da351653f62797f5d4d | |
parent | 1f7acf748babea91909489d696ce1dcce2232f60 (diff) | |
download | buildstream-dcecd0576278453efb0d1c8506a92e2a3113477e.tar.gz |
contributing: add guidance on unit testsaevri/unit_tests
Decrease uncertainty around whether unit tests are welcome in the
project or not.
-rw-r--r-- | CONTRIBUTING.rst | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 0f872e9e1..fc92ad85e 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -1525,6 +1525,24 @@ Tests that run a sandbox should be decorated with:: and use the integration cli helper. +You should first aim to write tests that exercise your changes from the cli. +This is so that the testing is end-to-end, and the changes are guaranteed to +work for the end-user. The cli is considered stable, and so tests written in +terms of it are unlikely to require updating as the internals of the software +change over time. + +It may be impractical to sufficiently examine some changes this way. For +example, the number of cases to test and the running time of each test may be +too high. It may also be difficult to contrive circumstances to cover every +line of the change. If this is the case, next you can consider also writing +unit tests that work more directly on the changes. + +It is important to write unit tests in such a way that they do not break due to +changes unrelated to what they are meant to test. For example, if the test +relies on a lot of BuildStream internals, a large refactoring will likely +require the test to be rewritten. Pure functions that only rely on the Python +Standard Library are excellent candidates for unit testing. + Measuring performance --------------------- |