This package provides HHI files for the main PHPUnit package. It does not provide any runtime functionality.
HHI files are files which tell the Hack tools about non-Hack code, providing the necessary names and types to allow Hack to make sure you're using the non-Hack code correctly.
The easiest way to install this package is with Composer.
To do so, add "91carriage/phpunit-hhi": "~5.7.0" to the require-dev section
of your composer.json or run
composer require --dev '91carriage/phpunit-hhi:~5.7.0'.
It is not recommended to install this as part of your requires section as it
should only be used during development.
Manual installation simply involves downloading the provided source code and copying it into your repository.
Issues can be submitted to the issue tacker.
If you are unable to create an issue through this, or think that it should not
be publicly disclosed, they can also be emailed directly to
issues@91carriage.com or brought to my attention on IRC, where I
go by the handles simon_w and simon_w|air in the offical #hhvm
channel on FreeNode.
Contributions are very welcome. Please make sure that you run hh_client in the
source directory with assume_php=false in your .hhconfig and no errors are
reported.
For Hack files, the coding style is enforced by the hh_format command, which
is included with the Hack tools alongside hh_client. As the HHI files are decl
files, you need to run hh_format with the --yolo option for these files.
For other files, the basic requirements are:
- Lines are no more than 80 characters wherever possible.
- Indentation is 2 spaces.
- Unix-style (
\n) line endings.
- The HHI files should all be in decl mode.
- The test files should extend
HHITestand be in strict mode. - The HHIT files should be in strict mode.
If an object type is required and that object is in a different package or is built into HHVM and doesn't yet have a HHI file, add the expected type as a comment.
For example, if the function foo returns a SplObject and there's no inbuilt
HHI file for SplObject, the definition of foo would be:
function foo() /*: SplObject*/;
This code is provided under the MIT (X11 variant) license. The full text of which can be found in the LICENSE.md file.