This is a fork of the 91carrage files for providing hhi coverage for phpunit. As Zynga has modified phpunit for strict compliance, some of the function interfaces changed also.
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
[email protected] 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
HHITest
and 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.