summaryrefslogtreecommitdiff
path: root/docs/contributing.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/contributing.md')
-rw-r--r--docs/contributing.md173
1 files changed, 0 insertions, 173 deletions
diff --git a/docs/contributing.md b/docs/contributing.md
deleted file mode 100644
index 5429bf9d..00000000
--- a/docs/contributing.md
+++ /dev/null
@@ -1,173 +0,0 @@
-<a id="top"></a>
-# Contributing to Catch
-
-**Contents**<br>
-[Branches](#branches)<br>
-[Directory structure](#directory-structure)<br>
-[Testing your changes](#testing-your-changes)<br>
-[Documenting your code](#documenting-your-code)<br>
-[Code constructs to watch out for](#code-constructs-to-watch-out-for)<br>
-
-So you want to contribute something to Catch? That's great! Whether it's a bug fix, a new feature, support for
-additional compilers - or just a fix to the documentation - all contributions are very welcome and very much appreciated.
-Of course so are bug reports and other comments and questions.
-
-If you are contributing to the code base there are a few simple guidelines to keep in mind. This also includes notes to
-help you find your way around. As this is liable to drift out of date please raise an issue or, better still, a pull
-request for this file, if you notice that.
-
-## Branches
-
-Ongoing development is currently on _master_. At some point an integration branch will be set-up and PRs should target
- that - but for now it's all against master. You may see feature branches come and go from time to time, too.
-
-## Directory structure
-
-_Users_ of Catch primarily use the single header version. _Maintainers_ should work with the full source (which is still,
-primarily, in headers). This can be found in the `include` folder. There are a set of test files, currently under
-`projects/SelfTest`. The test app can be built via CMake from the `CMakeLists.txt` file in the root, or you can generate
-project files for Visual Studio, XCode, and others (instructions in the `projects` folder). If you have access to CLion,
-it can work with the CMake file directly.
-
-As well as the runtime test files you'll also see a `SurrogateCpps` directory under `projects/SelfTest`.
-This contains a set of .cpp files that each `#include` a single header.
-While these files are not essential to compilation they help to keep the implementation headers self-contained.
-At time of writing this set is not complete but has reasonable coverage.
-If you add additional headers please try to remember to add a surrogate cpp for it.
-
-The other directories are `scripts` which contains a set of python scripts to help in testing Catch as well as
-generating the single include, and `docs`, which contains the documentation as a set of markdown files.
-
-__When submitting a pull request please do not include changes to the single include, or to the version number file
-as these are managed by the scripts!__
-
-
-## Testing your changes
-
-Obviously all changes to Catch's code should be tested. If you added new
-functionality, you should add tests covering and showcasing it. Even if you have
-only made changes to Catch internals (i.e. you implemented some performance
-improvements), you should still test your changes.
-
-This means 2 things
-
-* Compiling Catch's SelfTest project:
-```
-$ cd Catch2
-$ cmake -Bdebug-build -H. -DCMAKE_BUILD_TYPE=Debug
-$ cmake --build debug-build
-```
-because code that does not compile is evidently incorrect. Obviously,
-you are not expected to have access to all the compilers and platforms
-supported by Catch2, but you should at least smoke test your changes
-on your platform. Our CI pipeline will check your PR against most of
-the supported platforms, but it takes an hour to finish -- compiling
-locally takes just a few minutes.
-
-
-* Running the tests via CTest:
-```
-$ cd debug-build
-$ ctest -j 2 --output-on-failure
-```
-__Note:__ When running your tests with multi-configuration generators like
-Visual Studio, you might get errors "Test not available without configuration."
-You then have to pick one configuration (e.g. ` -C Debug`) in the `ctest` call.
-
-If you added new tests, approval tests are very likely to fail. If they
-do not, it means that your changes weren't run as part of them. This
-_might_ be intentional, but usually is not.
-
-The approval tests compare current output of the SelfTest binary in various
-configurations against known good outputs. The reason it fails is,
-_usually_, that you've added new tests but have not yet approved the changes
-they introduce. This is done with the `scripts/approve.py` script, but
-before you do so, you need to check that the introduced changes are indeed
-intentional.
-
-
-## Documenting your code
-
-If you have added new feature to Catch2, it needs documentation, so that
-other people can use it as well. This section collects some technical
-information that you will need for updating Catch2's documentation, and
-possibly some generic advise as well.
-
-First, the technicalities:
-
-* We introduced version tags to the documentation, which show users in
-which version a specific feature was introduced. This means that newly
-written documentation should be tagged with a placeholder, that will
-be replaced with the actual version upon release. There are 2 styles
-of placeholders used through the documentation, you should pick one that
-fits your text better (if in doubt, take a look at the existing version
-tags for other features).
- * `> [Introduced](link-to-issue-or-PR) in Catch X.Y.Z` - this
- placeholder is usually used after a section heading
- * `> X (Y and Z) was [introduced](link-to-issue-or-PR) in Catch X.Y.Z`
- - this placeholder is used when you need to tag a subpart of something,
- e.g. list
-* Crosslinks to different pages should target the `top` anchor, like this
-`[link to contributing](contributing.md#top)`.
-* If you have introduced a new document, there is a simple template you
-should use. It provides you with the top anchor mentioned above, and also
-with a backlink to the top of the documentation:
-```markdown
-<a id="top"></a>
-# Cool feature
-
-Text that explains how to use the cool feature.
-
-
----
-
-[Home](Readme.md#top)
-```
-* For pages with more than 4 subheadings, we provide a table of contents
-(ToC) at the top of the page. Because GitHub markdown does not support
-automatic generation of ToC, it has to be handled semi-manually. Thus,
-if you've added a new subheading to some page, you should add it to the
-ToC. This can be done either manually, or by running the
-`updateDocumentToC.py` script in the `scripts/` folder.
-
-
-Now, for the generic tips:
- * Usage examples are good
- * Don't be afraid to introduce new pages
- * Try to be reasonably consistent with the surrounding documentation
-
-
-
-
-## Code constructs to watch out for
-
-This section is a (sadly incomplete) listing of various constructs that
-are problematic and are not always caught by our CI infrastructure.
-
-### Naked exceptions and exceptions-related function
-
-If you are throwing an exception, it should be done via `CATCH_ERROR`
-or `CATCH_RUNTIME_ERROR` in `catch_enforce.h`. These macros will handle
-the differences between compilation with or without exceptions for you.
-However, some platforms (IAR) also have problems with exceptions-related
-functions, such as `std::current_exceptions`. We do not have IAR in our
-CI, but luckily there should not be too many reasons to use these.
-However, if you do, they should be kept behind a
-`CATCH_CONFIG_DISABLE_EXCEPTIONS` macro.
-
-### Unqualified usage of functions from C's stdlib
-
-If you are using a function from C's stdlib, please include the header
-as `<cfoo>` and call the function qualified. The common knowledge that
-there is no difference is wrong, QNX and VxWorks won't compile if you
-include the header as `<cfoo>` and call the function unqualified.
-
-
-----
-
-_This documentation will always be in-progress as new information comes
-up, but we are trying to keep it as up to date as possible._
-
----
-
-[Home](Readme.md#top)