Skip to content

Latest commit

 

History

History
105 lines (71 loc) · 2.39 KB

CONTRIBUTING.md

File metadata and controls

105 lines (71 loc) · 2.39 KB

Contributing to graphql-php

Workflow

If your contribution requires significant or breaking changes, or if you plan to propose a major new feature, we recommend you to create an issue with a brief proposal and discuss it with us first.

For smaller contributions just use this workflow:

  • Fork the project.
  • Add your features and or bug fixes.
  • Add tests. Tests are important for us.
  • Check your changes using composer check.
  • Add an entry to the Changelog's Unreleased section.
  • Send a pull request.

Setup

git clone <your-fork-url>
cd graphql-php
composer install

Testing

We ensure the code works and continues to work as expected with PHPUnit.

Run unit tests:

composer test

Some tests have an annotation such as @see it('<description>'). It references a matching test in the graphql-js implementation.

When porting tests that utilize the dedent() test utility from graphql-js, we instead use the PHP native nowdoc syntax. If the string contents are in a specific grammar, use an appropriate tag such as GRAPHQL, PHP or JSON:

        self::assertSomePrintedOutputExactlyMatches(
            <<<'GRAPHQL'
            type Foo {
              bar: Baz
            }

            GRAPHQL,
            $output
        );

Coding Standard

We check and fix the coding standard with PHP_CodeSniffer.

Run the inspections:

composer lint

Apply automatic code style fixes:

composer fix

Static Analysis

We validate code correctness with PHPStan.

Run static analysis:

composer stan

Regenerate the PHPStan baseline:

composer baseline

Running Benchmarks

We benchmark performance critical code with PHPBench.

Check performance:

composer bench

Documentation

We document this library by rendering the Markdown files in docs with MkDocs.

Generate the class reference docs:

composer docs