This page lists all documentation markdown files for Google Test **(the
current git version)**
-- **if you use a former version of Google Test, please read the
documentation for that specific version instead (e.g. by checking out
the respective git branch/tag).**

  * [Primer](Primer.md) -- start here if you are new to Google Test.
  * [Samples](Samples.md) -- learn from examples.
  * [AdvancedGuide](AdvancedGuide.md) -- learn more about Google Test.
  * [XcodeGuide](XcodeGuide.md) -- how to use Google Test in Xcode on Mac.
  * [Frequently-Asked Questions](FAQ.md) -- check here before asking a question on the mailing list.

To contribute code to Google Test, read:

  * [CONTRIBUTING](../CONTRIBUTING.md) -- read this _before_ writing your first patch.
  * [PumpManual](PumpManual.md) -- how we generate some of Google Test's source files.
