From 14629151f395e69bf16daa8969415d2d8b9941b3 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Fri, 12 Jan 2018 16:23:43 -0600 Subject: [PATCH 01/19] move method docblock to interface --- src/Type.php | 5 +++++ src/Types/Object_.php | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Type.php b/src/Type.php index 68225d7..1a8291c 100644 --- a/src/Type.php +++ b/src/Type.php @@ -14,5 +14,10 @@ interface Type { + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ public function __toString(); } diff --git a/src/Types/Object_.php b/src/Types/Object_.php index 99da8f5..6c8c1ce 100644 --- a/src/Types/Object_.php +++ b/src/Types/Object_.php @@ -55,11 +55,6 @@ public function getFqsen() return $this->fqsen; } - /** - * Returns a rendered output of the Type as it would be used in a DocBlock. - * - * @return string - */ public function __toString() { if ($this->fqsen) { From ec9257108304876fb1ac5998bfc40acb3bd8db12 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Fri, 12 Jan 2018 16:25:27 -0600 Subject: [PATCH 02/19] move some logic into private methods in order to do closer type checking --- src/TypeResolver.php | 22 +++++++++++++++++----- src/Types/Collection.php | 7 ++++--- src/Types/Context.php | 2 +- src/Types/ContextFactory.php | 30 +++++++++++++++++++++++++----- 4 files changed, 47 insertions(+), 14 deletions(-) diff --git a/src/TypeResolver.php b/src/TypeResolver.php index 8f407f4..ea2d008 100644 --- a/src/TypeResolver.php +++ b/src/TypeResolver.php @@ -398,10 +398,10 @@ private function resolveTypedObject($type, Context $context = null) * * @param \ArrayIterator $tokens * @param Type $classType - * @param Context|null $context + * @param Context $context * @return Array_|Collection */ - private function resolveCollection(\ArrayIterator $tokens, Type $classType, Context $context = null) { + private function resolveCollection(\ArrayIterator $tokens, Type $classType, Context $context) { $isArray = ('array' == (string) $classType); @@ -419,7 +419,7 @@ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Cont $keyType = null; if ($tokens->current() == ',') { - // if we have a coma, then we just parsed the key type, not the value type + // if we have a comma, then we just parsed the key type, not the value type $keyType = $valueType; if ($isArray) { // check the key type for an "array" collection. We allow only @@ -463,8 +463,20 @@ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Cont if ($isArray) { return new Array_($valueType, $keyType); } - else { - return new Collection($classType->getFqsen(), $valueType, $keyType); + + if ($classType instanceof Object_) { + return $this->makeCollectionFromObject($classType, $valueType, $keyType); } } + + /** + * @param Object_ $object + * @param Type $valueType + * @param Type|null $keyType + * @return Collection + */ + private function makeCollectionFromObject(Object_ $object, Type $valueType, Type $keyType = null) + { + return new Collection($object->getFqsen(), $valueType, $keyType); + } } diff --git a/src/Types/Collection.php b/src/Types/Collection.php index 4c38bad..c33d704 100644 --- a/src/Types/Collection.php +++ b/src/Types/Collection.php @@ -29,16 +29,17 @@ final class Collection extends AbstractList { - /** @var Fqsen */ + /** @var Fqsen|null */ private $fqsen; /** * Initializes this representation of an array with the given Type or Fqsen. * + * @param \phpDocumentor\Reflection\Fqsen|null $fqsen * @param Type $valueType * @param Type $keyType */ - public function __construct(Fqsen $fqsen, Type $valueType, Type $keyType = null) + public function __construct(Fqsen $fqsen = null, Type $valueType, Type $keyType = null) { parent::__construct($valueType, $keyType); @@ -48,7 +49,7 @@ public function __construct(Fqsen $fqsen, Type $valueType, Type $keyType = null) /** * Returns the FQSEN associated with this object. * - * @return Fqsen + * @return Fqsen|null */ public function getFqsen() { diff --git a/src/Types/Context.php b/src/Types/Context.php index 6f66dd2..275b8b4 100644 --- a/src/Types/Context.php +++ b/src/Types/Context.php @@ -44,7 +44,7 @@ final class Context public function __construct($namespace, array $namespaceAliases = []) { $this->namespace = ('global' !== $namespace && 'default' !== $namespace) - ? trim((string)$namespace, '\\') + ? trim($namespace, '\\') : ''; foreach ($namespaceAliases as $alias => $fqnn) { diff --git a/src/Types/ContextFactory.php b/src/Types/ContextFactory.php index f6abfcf..48e991a 100644 --- a/src/Types/ContextFactory.php +++ b/src/Types/ContextFactory.php @@ -40,12 +40,32 @@ final class ContextFactory */ public function createFromReflector(\Reflector $reflector) { - if (method_exists($reflector, 'getDeclaringClass')) { - $reflector = $reflector->getDeclaringClass(); + if ($reflector instanceof \ReflectionMethod) { + return $this->createFromReflectionMethod($reflector); } - $fileName = $reflector->getFileName(); - $namespace = $reflector->getNamespaceName(); + if ($reflector instanceof \ReflectionClass) { + return $this->createFromReflectionClass($reflector); + } + } + + /** + * @param \ReflectionMethod $method + * @return Context + */ + private function createFromReflectionMethod(\ReflectionMethod $method) + { + return $this->createFromReflectionClass($method->getDeclaringClass()); + } + + /** + * @param \ReflectionClass $class + * @return Context + */ + private function createFromReflectionClass(\ReflectionClass $class) + { + $fileName = $class->getFileName(); + $namespace = $class->getNamespaceName(); if (is_string($fileName) && file_exists($fileName)) { return $this->createForNamespace($namespace, file_get_contents($fileName)); @@ -177,7 +197,7 @@ private function skipToNextStringOrNamespaceSeparator(\ArrayIterator $tokens) * * @param \ArrayIterator $tokens * - * @return string + * @return array */ private function extractUseStatement(\ArrayIterator $tokens) { From d65e7b537d4533a1ce4f3cc98f3b36f76261c6b3 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Fri, 12 Jan 2018 16:26:15 -0600 Subject: [PATCH 03/19] ignore esc --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8db5775..447c8e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ bin/phpcs* bin/phpunit* bin/jsonlint* bin/validate-json* +temp/ecs/* # Build folder and vendor folder are generated code; no need to version this build/* From 8967807cedd79c27d75b9c3f9109bca41e350a79 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Fri, 12 Jan 2018 16:31:31 -0600 Subject: [PATCH 04/19] auto fixes from ecs --- src/FqsenResolver.php | 4 +- src/TypeResolver.php | 108 +++++++++++------------- src/Types/AbstractList.php | 10 +-- src/Types/Collection.php | 11 +-- src/Types/Context.php | 1 + src/Types/ContextFactory.php | 26 ++---- src/Types/Nullable.php | 2 - src/Types/Object_.php | 9 +- tests/unit/CollectionResolverTest.php | 36 ++++---- tests/unit/TypeResolverTest.php | 41 ++++----- tests/unit/Types/CompoundTest.php | 2 +- tests/unit/Types/ContextFactoryTest.php | 12 +-- tests/unit/Types/NullableTest.php | 2 +- 13 files changed, 114 insertions(+), 150 deletions(-) diff --git a/src/FqsenResolver.php b/src/FqsenResolver.php index bc9bbe5..d8bb52a 100644 --- a/src/FqsenResolver.php +++ b/src/FqsenResolver.php @@ -49,10 +49,8 @@ private function isFqsen($type) * (i.e. `\phpDocumentor\Reflection\DocBlock`) based on the Namespace and aliases mentioned in the Context. * * @param string $type - * @param Context $context - * * @return Fqsen - * @throws \InvalidArgumentException when type is not a valid FQSEN. + * @throws InvalidArgumentException when type is not a valid FQSEN. */ private function resolvePartialStructuralElementName($type, Context $context) { diff --git a/src/TypeResolver.php b/src/TypeResolver.php index ea2d008..4c8d996 100644 --- a/src/TypeResolver.php +++ b/src/TypeResolver.php @@ -13,14 +13,14 @@ namespace phpDocumentor\Reflection; use phpDocumentor\Reflection\Types\Array_; +use phpDocumentor\Reflection\Types\Collection; use phpDocumentor\Reflection\Types\Compound; use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\Integer; use phpDocumentor\Reflection\Types\Iterable_; use phpDocumentor\Reflection\Types\Nullable; use phpDocumentor\Reflection\Types\Object_; -use phpDocumentor\Reflection\Types\Collection; use phpDocumentor\Reflection\Types\String_; -use phpDocumentor\Reflection\Types\Integer; final class TypeResolver { @@ -42,9 +42,8 @@ final class TypeResolver /** @var integer the iterator parser is inside a collection expression context */ const PARSER_IN_COLLECTION_EXPRESSION = 3; - /** @var string[] List of recognized keywords and unto which Value Object they map */ - private $keywords = array( + private $keywords = [ 'string' => Types\String_::class, 'int' => Types\Integer::class, 'integer' => Types\Integer::class, @@ -69,15 +68,13 @@ final class TypeResolver 'static' => Types\Static_::class, 'parent' => Types\Parent_::class, 'iterable' => Iterable_::class, - ); + ]; /** @var FqsenResolver */ private $fqsenResolver; /** * Initializes this TypeResolver with the means to create and resolve Fqsen objects. - * - * @param FqsenResolver $fqsenResolver */ public function __construct(FqsenResolver $fqsenResolver = null) { @@ -94,13 +91,10 @@ public function __construct(FqsenResolver $fqsenResolver = null) * This method only works as expected if the namespace and aliases are set; * no dynamic reflection is being performed here. * - * @param string $type The relative or absolute type. - * @param Context $context - * + * @param string $type The relative or absolute type. * @uses Context::getNamespace() to determine with what to prefix the type name. * @uses Context::getNamespaceAliases() to check whether the first part of the relative type name should not be - * replaced with another namespace. - * + * replaced with another namespace. * @return Type */ public function resolve($type, Context $context = null) @@ -130,26 +124,25 @@ public function resolve($type, Context $context = null) /** * Analyse each tokens and creates types * - * @param \ArrayIterator $tokens the iterator on tokens - * @param Context $context - * @param integer $parserContext on of self::PARSER_* constants, indicating - * the context where we are in the parsing - * + * @param ArrayIterator $tokens the iterator on tokens + * @param int $parserContext on of self::PARSER_* constants, indicating + * the context where we are in the parsing * @return Type */ private function parseTypes(\ArrayIterator $tokens, Context $context, $parserContext) { - $types = array(); + $types = []; $token = ''; while ($tokens->valid()) { $token = $tokens->current(); - if ($token == '|') { - if (count($types) == 0) { + if ($token === '|') { + if (count($types) === 0) { throw new \RuntimeException( 'A type is missing before a type separator' ); } + if ($parserContext !== self::PARSER_IN_COMPOUND && $parserContext !== self::PARSER_IN_ARRAY_EXPRESSION && $parserContext !== self::PARSER_IN_COLLECTION_EXPRESSION @@ -158,9 +151,9 @@ private function parseTypes(\ArrayIterator $tokens, Context $context, $parserCon 'Unexpected type separator' ); } - $tokens->next(); - } else if ($token == '?') { + $tokens->next(); + } elseif ($token === '?') { if ($parserContext !== self::PARSER_IN_COMPOUND && $parserContext !== self::PARSER_IN_ARRAY_EXPRESSION && $parserContext !== self::PARSER_IN_COLLECTION_EXPRESSION @@ -173,8 +166,7 @@ private function parseTypes(\ArrayIterator $tokens, Context $context, $parserCon $tokens->next(); $type = $this->parseTypes($tokens, $context, self::PARSER_IN_NULLABLE); $types[] = new Nullable($type); - - } else if ($token === '(') { + } elseif ($token === '(') { $tokens->next(); $type = $this->parseTypes($tokens, $context, self::PARSER_IN_ARRAY_EXPRESSION); @@ -182,31 +174,30 @@ private function parseTypes(\ArrayIterator $tokens, Context $context, $parserCon // we generates arrays corresponding to the number of '[]' // after the ')' - $numberOfArrays = (strlen($tokens->current()) -1) / 2; - for ($i = 0; $i < $numberOfArrays - 1; $i++) { + $numberOfArrays = (strlen($tokens->current()) - 1) / 2; + for ($i = 0; $i < $numberOfArrays - 1; ++$i) { $resolvedType = new Array_($resolvedType); } + $types[] = $resolvedType; $tokens->next(); - - } else if ($parserContext === self::PARSER_IN_ARRAY_EXPRESSION + } elseif ($parserContext === self::PARSER_IN_ARRAY_EXPRESSION && $token[0] === ')' ) { break; - - } else if ($token === '<') { + } elseif ($token === '<') { if (count($types) === 0) { throw new \RuntimeException( 'Unexpected collection operator "<", class name is missing' ); } + $classType = array_pop($types); $types[] = $this->resolveCollection($tokens, $classType, $context); $tokens->next(); - - } else if ($parserContext === self::PARSER_IN_COLLECTION_EXPRESSION + } elseif ($parserContext === self::PARSER_IN_COLLECTION_EXPRESSION && ($token === '>' || $token === ',') ) { break; @@ -216,47 +207,51 @@ private function parseTypes(\ArrayIterator $tokens, Context $context, $parserCon if ($parserContext === self::PARSER_IN_NULLABLE) { return $type; } + $types[] = $type; } } - if ($token == '|') { + if ($token === '|') { throw new \RuntimeException( 'A type is missing after a type separator' ); } - if (count($types) == 0) { - if ($parserContext == self::PARSER_IN_NULLABLE) { + if (count($types) === 0) { + if ($parserContext === self::PARSER_IN_NULLABLE) { throw new \RuntimeException( 'A type is missing after a nullable character' ); } - if ($parserContext == self::PARSER_IN_ARRAY_EXPRESSION) { + + if ($parserContext === self::PARSER_IN_ARRAY_EXPRESSION) { throw new \RuntimeException( 'A type is missing in an array expression' ); } - if ($parserContext == self::PARSER_IN_COLLECTION_EXPRESSION) { + + if ($parserContext === self::PARSER_IN_COLLECTION_EXPRESSION) { throw new \RuntimeException( 'A type is missing in a collection expression' ); } + throw new \RuntimeException( 'No types in a compound list' ); - } else if (count($types) == 1) { + } elseif (count($types) === 1) { return $types[0]; } + return new Compound($types); } /** * resolve the given type into a type object * - * @param string $type the type string, representing a single type - * @param Context $context - * @return Type|Array_|Object_ + * @param string $type the type string, representing a single type + * @return Type|\Array_|\Object_ */ private function resolveSingleType($type, Context $context) { @@ -276,6 +271,7 @@ private function resolveSingleType($type, Context $context) 'Unable to resolve type "' . $type . '", there is no known method to resolve it' ); } + // @codeCoverageIgnoreEnd } @@ -284,8 +280,6 @@ private function resolveSingleType($type, Context $context) * * @param string $keyword * @param string $typeClassName - * - * @return void */ public function addKeyword($keyword, $typeClassName) { @@ -357,8 +351,6 @@ private function isFqsen($type) * Resolves the given typed array string (i.e. `string[]`) into an Array object with the right types set. * * @param string $type - * @param Context $context - * * @return Array_ */ private function resolveTypedArray($type, Context $context) @@ -396,20 +388,17 @@ private function resolveTypedObject($type, Context $context = null) /** * Resolves the collection values and keys * - * @param \ArrayIterator $tokens - * @param Type $classType - * @param Context $context - * @return Array_|Collection + * @return Array_|\Collection */ - private function resolveCollection(\ArrayIterator $tokens, Type $classType, Context $context) { - - $isArray = ('array' == (string) $classType); + private function resolveCollection(\ArrayIterator $tokens, Type $classType, Context $context) + { + $isArray = ('array' === (string) $classType); // allow only "array" or class name before "<" if (!$isArray && (! $classType instanceof Object_ || $classType->getFqsen() === null)) { throw new \RuntimeException( - $classType.' is not a collection' + $classType . ' is not a collection' ); } @@ -418,7 +407,7 @@ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Cont $valueType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION); $keyType = null; - if ($tokens->current() == ',') { + if ($tokens->current() === ',') { // if we have a comma, then we just parsed the key type, not the value type $keyType = $valueType; if ($isArray) { @@ -432,8 +421,9 @@ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Cont 'An array can have only integers or strings as keys' ); } + if ($keyType instanceof Compound) { - foreach($keyType->getIterator() as $item) { + foreach ($keyType->getIterator() as $item) { if (! $item instanceof String_ && ! $item instanceof Integer ) { @@ -444,22 +434,24 @@ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Cont } } } + $tokens->next(); // now let's parse the value type $valueType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION); } if ($tokens->current() !== '>') { - if ($tokens->current() == '') { + if ($tokens->current() === '') { throw new \RuntimeException( 'Collection: ">" is missing' ); } throw new \RuntimeException( - 'Unexpected character "'.$tokens->current().'", ">" is missing' + 'Unexpected character "' . $tokens->current() . '", ">" is missing' ); } + if ($isArray) { return new Array_($valueType, $keyType); } @@ -470,8 +462,6 @@ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Cont } /** - * @param Object_ $object - * @param Type $valueType * @param Type|null $keyType * @return Collection */ diff --git a/src/Types/AbstractList.php b/src/Types/AbstractList.php index dd74fc1..3b185cd 100644 --- a/src/Types/AbstractList.php +++ b/src/Types/AbstractList.php @@ -16,7 +16,6 @@ /** * Represents a list of values. This is an abstract class for Array_ and Collection. - * */ abstract class AbstractList implements Type { @@ -31,9 +30,6 @@ abstract class AbstractList implements Type /** * Initializes this representation of an array with the given Type. - * - * @param Type $valueType - * @param Type $keyType */ public function __construct(Type $valueType = null, Type $keyType = null) { @@ -42,9 +38,8 @@ public function __construct(Type $valueType = null, Type $keyType = null) } $this->valueType = $valueType; - $this->defaultKeyType = new Compound([ new String_(), new Integer() ]); + $this->defaultKeyType = new Compound([new String_(), new Integer()]); $this->keyType = $keyType; - } /** @@ -57,6 +52,7 @@ public function getKeyType() if ($this->keyType === null) { return $this->defaultKeyType; } + return $this->keyType; } @@ -78,7 +74,7 @@ public function getValueType() public function __toString() { if ($this->keyType) { - return 'array<'.$this->keyType.','.$this->valueType.'>'; + return 'array<' . $this->keyType . ',' . $this->valueType . '>'; } if ($this->valueType instanceof Mixed_) { diff --git a/src/Types/Collection.php b/src/Types/Collection.php index c33d704..47f2efd 100644 --- a/src/Types/Collection.php +++ b/src/Types/Collection.php @@ -12,8 +12,8 @@ namespace phpDocumentor\Reflection\Types; -use phpDocumentor\Reflection\Type; use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\Type; /** * Represents a collection type as described in the PSR-5, the PHPDoc Standard. @@ -28,16 +28,13 @@ */ final class Collection extends AbstractList { - /** @var Fqsen|null */ private $fqsen; /** * Initializes this representation of an array with the given Type or Fqsen. * - * @param \phpDocumentor\Reflection\Fqsen|null $fqsen - * @param Type $valueType - * @param Type $keyType + * @param phpDocumentor\Reflection\Fqsen|null $fqsen */ public function __construct(Fqsen $fqsen = null, Type $valueType, Type $keyType = null) { @@ -64,9 +61,9 @@ public function getFqsen() public function __toString() { if ($this->keyType === null) { - return $this->fqsen.'<'.$this->valueType . '>'; + return $this->fqsen . '<' . $this->valueType . '>'; } - return $this->fqsen.'<'.$this->keyType . ',' . $this->valueType . '>'; + return $this->fqsen . '<' . $this->keyType . ',' . $this->valueType . '>'; } } diff --git a/src/Types/Context.php b/src/Types/Context.php index 275b8b4..6052d9a 100644 --- a/src/Types/Context.php +++ b/src/Types/Context.php @@ -51,6 +51,7 @@ public function __construct($namespace, array $namespaceAliases = []) if ($fqnn[0] === '\\') { $fqnn = substr($fqnn, 1); } + if ($fqnn[strlen($fqnn) - 1] === '\\') { $fqnn = substr($fqnn, 0, -1); } diff --git a/src/Types/ContextFactory.php b/src/Types/ContextFactory.php index 48e991a..13bb8fd 100644 --- a/src/Types/ContextFactory.php +++ b/src/Types/ContextFactory.php @@ -32,10 +32,7 @@ final class ContextFactory /** * Build a Context given a Class Reflection. * - * @param \Reflector $reflector - * * @see Context for more information on Contexts. - * * @return Context */ public function createFromReflector(\Reflector $reflector) @@ -50,7 +47,6 @@ public function createFromReflector(\Reflector $reflector) } /** - * @param \ReflectionMethod $method * @return Context */ private function createFromReflectionMethod(\ReflectionMethod $method) @@ -59,7 +55,6 @@ private function createFromReflectionMethod(\ReflectionMethod $method) } /** - * @param \ReflectionClass $class * @return Context */ private function createFromReflectionClass(\ReflectionClass $class) @@ -109,12 +104,14 @@ public function createForNamespace($namespace, $fileContents) if (!$firstBraceFound) { $firstBraceFound = true; } - $braceLevel++; + + ++$braceLevel; } if ($tokens->current() === '}') { - $braceLevel--; + --$braceLevel; } + $tokens->next(); } break; @@ -124,6 +121,7 @@ public function createForNamespace($namespace, $fileContents) } break; } + $tokens->next(); } @@ -133,8 +131,6 @@ public function createForNamespace($namespace, $fileContents) /** * Deduce the name from tokens when we are at the T_NAMESPACE token. * - * @param \ArrayIterator $tokens - * * @return string */ private function parseNamespace(\ArrayIterator $tokens) @@ -155,8 +151,6 @@ private function parseNamespace(\ArrayIterator $tokens) /** * Deduce the names of all imports when we are at the T_USE token. * - * @param \ArrayIterator $tokens - * * @return string[] */ private function parseUseStatement(\ArrayIterator $tokens) @@ -179,10 +173,6 @@ private function parseUseStatement(\ArrayIterator $tokens) /** * Fast-forwards the iterator as longs as we don't encounter a T_STRING or T_NS_SEPARATOR token. - * - * @param \ArrayIterator $tokens - * - * @return void */ private function skipToNextStringOrNamespaceSeparator(\ArrayIterator $tokens) { @@ -195,8 +185,6 @@ private function skipToNextStringOrNamespaceSeparator(\ArrayIterator $tokens) * Deduce the namespace name and alias of an import when we are at the T_USE token or have not reached the end of * a USE statement yet. * - * @param \ArrayIterator $tokens - * * @return array */ private function extractUseStatement(\ArrayIterator $tokens) @@ -209,13 +197,15 @@ private function extractUseStatement(\ArrayIterator $tokens) if ($tokens->current()[0] === T_AS) { $result[] = ''; } + if ($tokens->current()[0] === T_STRING || $tokens->current()[0] === T_NS_SEPARATOR) { $result[count($result) - 1] .= $tokens->current()[1]; } + $tokens->next(); } - if (count($result) == 1) { + if (count($result) === 1) { $backslashPos = strrpos($result[0], '\\'); if (false !== $backslashPos) { diff --git a/src/Types/Nullable.php b/src/Types/Nullable.php index db96c88..7a6b2fc 100644 --- a/src/Types/Nullable.php +++ b/src/Types/Nullable.php @@ -26,8 +26,6 @@ final class Nullable implements Type /** * Initialises this nullable type using the real type embedded - * - * @param Type $realType */ public function __construct(Type $realType) { diff --git a/src/Types/Object_.php b/src/Types/Object_.php index 6c8c1ce..8755b40 100644 --- a/src/Types/Object_.php +++ b/src/Types/Object_.php @@ -30,15 +30,14 @@ final class Object_ implements Type /** * Initializes this object with an optional FQSEN, if not provided this object is considered 'untyped'. * - * @param Fqsen $fqsen - * @throws \InvalidArgumentException when provided $fqsen is not a valid type. + * @throws InvalidArgumentException when provided $fqsen is not a valid type. */ public function __construct(Fqsen $fqsen = null) { - if (strpos((string)$fqsen, '::') !== false || strpos((string)$fqsen, '()') !== false) { + if (strpos((string) $fqsen, '::') !== false || strpos((string) $fqsen, '()') !== false) { throw new \InvalidArgumentException( 'Object types can only refer to a class, interface or trait but a method, function, constant or ' - . 'property was received: ' . (string)$fqsen + . 'property was received: ' . (string) $fqsen ); } @@ -58,7 +57,7 @@ public function getFqsen() public function __toString() { if ($this->fqsen) { - return (string)$this->fqsen; + return (string) $this->fqsen; } return 'object'; diff --git a/tests/unit/CollectionResolverTest.php b/tests/unit/CollectionResolverTest.php index cd9656d..d4c4a75 100644 --- a/tests/unit/CollectionResolverTest.php +++ b/tests/unit/CollectionResolverTest.php @@ -26,7 +26,6 @@ class CollectionResolverTest extends TestCase { /** - * * @covers ::__construct * @covers ::resolve * @@ -35,14 +34,15 @@ class CollectionResolverTest extends TestCase * @uses \phpDocumentor\Reflection\Types\Collection * @uses \phpDocumentor\Reflection\Types\String_ */ - public function testResolvingCollection() { + public function testResolvingCollection() + { $fixture = new TypeResolver(); /** @var Collection $resolvedType */ $resolvedType = $fixture->resolve('ArrayObject', new Context('')); $this->assertInstanceOf(Collection::class, $resolvedType); - $this->assertSame('\\ArrayObject', (string)$resolvedType); + $this->assertSame('\\ArrayObject', (string) $resolvedType); $this->assertEquals('\\ArrayObject', (string) $resolvedType->getFqsen()); @@ -57,7 +57,6 @@ public function testResolvingCollection() { } /** - * * @covers ::__construct * @covers ::resolve * @@ -66,14 +65,15 @@ public function testResolvingCollection() { * @uses \phpDocumentor\Reflection\Types\Collection * @uses \phpDocumentor\Reflection\Types\String_ */ - public function testResolvingCollectionWithKeyType() { + public function testResolvingCollectionWithKeyType() + { $fixture = new TypeResolver(); /** @var Collection $resolvedType */ $resolvedType = $fixture->resolve('ArrayObject', new Context('')); $this->assertInstanceOf(Collection::class, $resolvedType); - $this->assertSame('\\ArrayObject', (string)$resolvedType); + $this->assertSame('\\ArrayObject', (string) $resolvedType); $this->assertEquals('\\ArrayObject', (string) $resolvedType->getFqsen()); @@ -90,7 +90,6 @@ public function testResolvingCollectionWithKeyType() { } /** - * * @covers ::__construct * @covers ::resolve * @@ -99,14 +98,15 @@ public function testResolvingCollectionWithKeyType() { * @uses \phpDocumentor\Reflection\Types\Collection * @uses \phpDocumentor\Reflection\Types\String_ */ - public function testResolvingArrayCollection() { + public function testResolvingArrayCollection() + { $fixture = new TypeResolver(); /** @var Collection $resolvedType */ $resolvedType = $fixture->resolve('array', new Context('')); $this->assertInstanceOf(Array_::class, $resolvedType); - $this->assertSame('string[]', (string)$resolvedType); + $this->assertSame('string[]', (string) $resolvedType); /** @var Array_ $valueType */ $valueType = $resolvedType->getValueType(); @@ -119,7 +119,6 @@ public function testResolvingArrayCollection() { } /** - * * @covers ::__construct * @covers ::resolve * @@ -128,14 +127,15 @@ public function testResolvingArrayCollection() { * @uses \phpDocumentor\Reflection\Types\Collection * @uses \phpDocumentor\Reflection\Types\String_ */ - public function testResolvingArrayCollectionWithKey() { + public function testResolvingArrayCollectionWithKey() + { $fixture = new TypeResolver(); /** @var Collection $resolvedType */ $resolvedType = $fixture->resolve('array', new Context('')); $this->assertInstanceOf(Array_::class, $resolvedType); - $this->assertSame('array', (string)$resolvedType); + $this->assertSame('array', (string) $resolvedType); /** @var Array_ $valueType */ $valueType = $resolvedType->getValueType(); @@ -148,7 +148,6 @@ public function testResolvingArrayCollectionWithKey() { } /** - * * @covers ::__construct * @covers ::resolve * @@ -157,14 +156,15 @@ public function testResolvingArrayCollectionWithKey() { * @uses \phpDocumentor\Reflection\Types\Collection * @uses \phpDocumentor\Reflection\Types\String_ */ - public function testResolvingCollectionOfCollection() { + public function testResolvingCollectionOfCollection() + { $fixture = new TypeResolver(); /** @var Collection $resolvedType */ $resolvedType = $fixture->resolve('ArrayObject>', new Context('')); $this->assertInstanceOf(Collection::class, $resolvedType); - $this->assertSame('\\ArrayObject>', (string)$resolvedType); + $this->assertSame('\\ArrayObject>', (string) $resolvedType); $this->assertEquals('\\ArrayObject', (string) $resolvedType->getFqsen()); @@ -232,7 +232,6 @@ public function testBadCollectionClass() } /** - * * @covers ::__construct * @covers ::resolve * @@ -241,14 +240,15 @@ public function testBadCollectionClass() * @uses \phpDocumentor\Reflection\Types\Collection * @uses \phpDocumentor\Reflection\Types\String_ */ - public function testResolvingCollectionAsArray() { + public function testResolvingCollectionAsArray() + { $fixture = new TypeResolver(); /** @var Collection $resolvedType */ $resolvedType = $fixture->resolve('array', new Context('')); $this->assertInstanceOf(Array_::class, $resolvedType); - $this->assertSame('array', (string)$resolvedType); + $this->assertSame('array', (string) $resolvedType); /** @var Array_ $valueType */ $valueType = $resolvedType->getValueType(); diff --git a/tests/unit/TypeResolverTest.php b/tests/unit/TypeResolverTest.php index ce42521..ac2a219 100644 --- a/tests/unit/TypeResolverTest.php +++ b/tests/unit/TypeResolverTest.php @@ -14,13 +14,12 @@ use Mockery as m; use phpDocumentor\Reflection\Types\Array_; +use phpDocumentor\Reflection\Types\Boolean; use phpDocumentor\Reflection\Types\Compound; use phpDocumentor\Reflection\Types\Context; use phpDocumentor\Reflection\Types\Iterable_; use phpDocumentor\Reflection\Types\Nullable; use phpDocumentor\Reflection\Types\Object_; -use phpDocumentor\Reflection\Types\Boolean; -use Mockery\MockInterface; use phpDocumentor\Reflection\Types\String_; use PHPUnit\Framework\TestCase; @@ -29,7 +28,6 @@ */ class TypeResolverTest extends TestCase { - /** * Call Mockery::close after each test. */ @@ -84,7 +82,7 @@ public function testResolvingFQSENs($fqsen) $this->assertInstanceOf(Object_::class, $resolvedType); $this->assertInstanceOf(Fqsen::class, $resolvedType->getFqsen()); - $this->assertSame($fqsen, (string)$resolvedType); + $this->assertSame($fqsen, (string) $resolvedType); } /** @@ -106,7 +104,7 @@ public function testResolvingRelativeQSENsBasedOnNamespace() $this->assertInstanceOf(Object_::class, $resolvedType); $this->assertInstanceOf(Fqsen::class, $resolvedType->getFqsen()); - $this->assertSame('\phpDocumentor\Reflection\DocBlock', (string)$resolvedType); + $this->assertSame('\phpDocumentor\Reflection\DocBlock', (string) $resolvedType); } /** @@ -131,7 +129,7 @@ public function testResolvingRelativeQSENsBasedOnNamespaceAlias() $this->assertInstanceOf(Object_::class, $resolvedType); $this->assertInstanceOf(Fqsen::class, $resolvedType->getFqsen()); - $this->assertSame('\Mockery\MockInterface', (string)$resolvedType); + $this->assertSame('\Mockery\MockInterface', (string) $resolvedType); } /** @@ -151,7 +149,7 @@ public function testResolvingTypedArrays() $resolvedType = $fixture->resolve('string[]', new Context('')); $this->assertInstanceOf(Array_::class, $resolvedType); - $this->assertSame('string[]', (string)$resolvedType); + $this->assertSame('string[]', (string) $resolvedType); $this->assertInstanceOf(Compound::class, $resolvedType->getKeyType()); $this->assertInstanceOf(Types\String_::class, $resolvedType->getValueType()); } @@ -174,7 +172,7 @@ public function testResolvingNullableTypes() $this->assertInstanceOf(Nullable::class, $resolvedType); $this->assertInstanceOf(String_::class, $resolvedType->getActualType()); - $this->assertSame('?string', (string)$resolvedType); + $this->assertSame('?string', (string) $resolvedType); } /** @@ -198,11 +196,11 @@ public function testResolvingNestedTypedArrays() $this->assertInstanceOf(Array_::class, $resolvedType); - $this->assertSame('string[][]', (string)$resolvedType); + $this->assertSame('string[][]', (string) $resolvedType); $this->assertInstanceOf(Compound::class, $resolvedType->getKeyType()); $this->assertInstanceOf(Array_::class, $childValueType); - $this->assertSame('string[]', (string)$childValueType); + $this->assertSame('string[]', (string) $childValueType); $this->assertInstanceOf(Compound::class, $childValueType->getKeyType()); $this->assertInstanceOf(Types\String_::class, $childValueType->getValueType()); } @@ -227,9 +225,9 @@ public function testResolvingCompoundTypes() $resolvedType = $fixture->resolve('string|Reflection\DocBlock', new Context('phpDocumentor')); $this->assertInstanceOf(Compound::class, $resolvedType); - $this->assertSame('string|\phpDocumentor\Reflection\DocBlock', (string)$resolvedType); + $this->assertSame('string|\phpDocumentor\Reflection\DocBlock', (string) $resolvedType); - /** @var String $secondType */ + /** @var string $secondType */ $firstType = $resolvedType->get(0); /** @var Object_ $secondType */ @@ -260,7 +258,7 @@ public function testResolvingCompoundTypedArrayTypes() $resolvedType = $fixture->resolve('\stdClass[]|Reflection\DocBlock[]', new Context('phpDocumentor')); $this->assertInstanceOf(Compound::class, $resolvedType); - $this->assertSame('\stdClass[]|\phpDocumentor\Reflection\DocBlock[]', (string)$resolvedType); + $this->assertSame('\stdClass[]|\phpDocumentor\Reflection\DocBlock[]', (string) $resolvedType); /** @var Array_ $firstType */ $firstType = $resolvedType->get(0); @@ -274,7 +272,6 @@ public function testResolvingCompoundTypedArrayTypes() $this->assertInstanceOf(Object_::class, $secondType->getValueType()); } - /** * @covers ::__construct * @covers ::resolve @@ -295,7 +292,7 @@ public function testResolvingArrayExpressionObjectsTypes() $resolvedType = $fixture->resolve('(\stdClass|Reflection\DocBlock)[]', new Context('phpDocumentor')); $this->assertInstanceOf(Array_::class, $resolvedType); - $this->assertSame('(\stdClass|\phpDocumentor\Reflection\DocBlock)[]', (string)$resolvedType); + $this->assertSame('(\stdClass|\phpDocumentor\Reflection\DocBlock)[]', (string) $resolvedType); /** @var Compound $valueType */ $valueType = $resolvedType->getValueType(); @@ -332,7 +329,7 @@ public function testResolvingArrayExpressionSimpleTypes() $resolvedType = $fixture->resolve('(string|\stdClass|boolean)[]', new Context('')); $this->assertInstanceOf(Array_::class, $resolvedType); - $this->assertSame('(string|\stdClass|bool)[]', (string)$resolvedType); + $this->assertSame('(string|\stdClass|bool)[]', (string) $resolvedType); /** @var Compound $valueType */ $valueType = $resolvedType->getValueType(); @@ -345,7 +342,7 @@ public function testResolvingArrayExpressionSimpleTypes() /** @var Object_ $secondType */ $secondType = $valueType->get(1); - /** @var Boolean $thirdType */ + /** @var boolean $thirdType */ $thirdType = $valueType->get(2); $this->assertInstanceOf(String_::class, $firstType); @@ -373,7 +370,7 @@ public function testResolvingArrayOfArrayExpressionTypes() $resolvedType = $fixture->resolve('(string|\stdClass)[][]', new Context('')); $this->assertInstanceOf(Array_::class, $resolvedType); - $this->assertSame('(string|\stdClass)[][]', (string)$resolvedType); + $this->assertSame('(string|\stdClass)[][]', (string) $resolvedType); /** @var Array_ $parentArrayType */ $parentArrayType = $resolvedType->getValueType(); @@ -393,7 +390,6 @@ public function testResolvingArrayOfArrayExpressionTypes() $this->assertInstanceOf(Object_::class, $secondType); } - /** * @covers ::__construct * @covers ::resolve @@ -414,7 +410,7 @@ public function testResolvingArrayExpressionOrCompoundTypes() $resolvedType = $fixture->resolve('\stdClass|(string|\stdClass)[]|bool', new Context('')); $this->assertInstanceOf(Compound::class, $resolvedType); - $this->assertSame('\stdClass|(string|\stdClass)[]|bool', (string)$resolvedType); + $this->assertSame('\stdClass|(string|\stdClass)[]|bool', (string) $resolvedType); /** @var Object_ $firstType */ $firstType = $resolvedType->get(0); @@ -468,7 +464,7 @@ public function testResolvingCompoundTypesWithTwoArrays() $resolvedType = $fixture->resolve('integer[]|string[]', new Context('')); $this->assertInstanceOf(Compound::class, $resolvedType); - $this->assertSame('int[]|string[]', (string)$resolvedType); + $this->assertSame('int[]|string[]', (string) $resolvedType); /** @var Array_ $firstType */ $firstType = $resolvedType->get(0); @@ -595,8 +591,7 @@ public function provideFqcn() { return [ 'namespace' => ['\phpDocumentor\Reflection'], - 'class' => ['\phpDocumentor\Reflection\DocBlock'], + 'class' => ['\phpDocumentor\Reflection\DocBlock'], ]; } - } diff --git a/tests/unit/Types/CompoundTest.php b/tests/unit/Types/CompoundTest.php index fc15db0..892b1e5 100644 --- a/tests/unit/Types/CompoundTest.php +++ b/tests/unit/Types/CompoundTest.php @@ -85,7 +85,7 @@ public function testCompoundHasNotExistingType() */ public function testCompoundCanBeConstructedAndStringifiedCorrectly() { - $this->assertSame('int|bool', (string)(new Compound([new Integer(), new Boolean()]))); + $this->assertSame('int|bool', (string) (new Compound([new Integer(), new Boolean()]))); } /** diff --git a/tests/unit/Types/ContextFactoryTest.php b/tests/unit/Types/ContextFactoryTest.php index 230a75c..0447a60 100644 --- a/tests/unit/Types/ContextFactoryTest.php +++ b/tests/unit/Types/ContextFactoryTest.php @@ -13,12 +13,12 @@ namespace phpDocumentor\Reflection\Types { // Added imports on purpose as mock for the unit tests, please do not remove. + use \ReflectionClass; use Mockery as m; - use phpDocumentor\Reflection\DocBlock, - phpDocumentor\Reflection\DocBlock\Tag; use phpDocumentor; - use PHPUnit\Framework\TestCase; - use \ReflectionClass; // yes, the slash is part of the test + use phpDocumentor\Reflection\DocBlock; + use phpDocumentor\Reflection\DocBlock\Tag; + use PHPUnit\Framework\TestCase; // yes, the slash is part of the test /** * @coversDefaultClass \phpDocumentor\Reflection\Types\ContextFactory @@ -192,5 +192,5 @@ public function tearDown() namespace phpDocumentor\Reflection\Types\Mock { // the following import should not show in the tests above - use phpDocumentor\Reflection\DocBlock\Description; -} + + } diff --git a/tests/unit/Types/NullableTest.php b/tests/unit/Types/NullableTest.php index bc600e7..ee3fb20 100644 --- a/tests/unit/Types/NullableTest.php +++ b/tests/unit/Types/NullableTest.php @@ -37,6 +37,6 @@ public function testNullableTypeWrapsCorrectly() */ public function testNullableStringifyCorrectly() { - $this->assertSame('?string', (string)(new Nullable(new String_()))); + $this->assertSame('?string', (string) (new Nullable(new String_()))); } } From c7db5f599d18557070e6ee0848ea7a60091b60a5 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Fri, 12 Jan 2018 16:32:03 -0600 Subject: [PATCH 05/19] ignore camel case classname sniff for now, to avoid refactoring class names of Foo_; --- easy-coding-standard.neon | 2 ++ 1 file changed, 2 insertions(+) diff --git a/easy-coding-standard.neon b/easy-coding-standard.neon index c3a98ed..33d2014 100644 --- a/easy-coding-standard.neon +++ b/easy-coding-standard.neon @@ -19,3 +19,5 @@ parameters: skip: PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\CamelCapsFunctionNameSniff: - */tests/** + PHP_CodeSniffer\Standards\Squiz\Sniffs\Classes\ValidClassNameSniff: + - */src/** From f2e13c5a0aa4e6c14d44d7042026d613daa67a80 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Sat, 13 Jan 2018 07:31:13 -0600 Subject: [PATCH 06/19] fix tags --- src/TypeResolver.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/TypeResolver.php b/src/TypeResolver.php index 4c8d996..4ab9fe8 100644 --- a/src/TypeResolver.php +++ b/src/TypeResolver.php @@ -388,7 +388,7 @@ private function resolveTypedObject($type, Context $context = null) /** * Resolves the collection values and keys * - * @return Array_|\Collection + * @return Array_|Collection */ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Context $context) { @@ -462,6 +462,8 @@ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Cont } /** + * @param Object_ $object + * @param Type $valueType * @param Type|null $keyType * @return Collection */ From 0cdd49389a8ada8352bf0a73db1b30baafa6d5d2 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Sat, 13 Jan 2018 07:31:48 -0600 Subject: [PATCH 07/19] sort arrays so that order differences don't break the tests --- tests/unit/Types/ContextFactoryTest.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/unit/Types/ContextFactoryTest.php b/tests/unit/Types/ContextFactoryTest.php index 0447a60..f313323 100644 --- a/tests/unit/Types/ContextFactoryTest.php +++ b/tests/unit/Types/ContextFactoryTest.php @@ -57,7 +57,10 @@ public function testReadsAliasesFromClassReflection() ]; $context = $fixture->createFromReflector(new ReflectionClass($this)); - $this->assertSame($expected, $context->getNamespaceAliases()); + $actual = $context->getNamespaceAliases(); + + // sort so that order differences don't break it + $this->assertSame(sort($expected), sort($actual)); } /** @@ -89,7 +92,10 @@ public function testReadsAliasesFromProvidedNamespaceAndContent() ]; $context = $fixture->createForNamespace(__NAMESPACE__, file_get_contents(__FILE__)); - $this->assertSame($expected, $context->getNamespaceAliases()); + $actual = $context->getNamespaceAliases(); + + // sort so that order differences don't break it + $this->assertSame(sort($expected), sort($actual)); } /** From 08e8b8fb0124f811a1548878e6440a2169f7821e Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Sat, 13 Jan 2018 09:04:21 -0600 Subject: [PATCH 08/19] fix tags --- src/TypeResolver.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/TypeResolver.php b/src/TypeResolver.php index 4ab9fe8..e0b6f8b 100644 --- a/src/TypeResolver.php +++ b/src/TypeResolver.php @@ -124,7 +124,7 @@ public function resolve($type, Context $context = null) /** * Analyse each tokens and creates types * - * @param ArrayIterator $tokens the iterator on tokens + * @param \ArrayIterator $tokens the iterator on tokens * @param int $parserContext on of self::PARSER_* constants, indicating * the context where we are in the parsing * @return Type @@ -251,7 +251,7 @@ private function parseTypes(\ArrayIterator $tokens, Context $context, $parserCon * resolve the given type into a type object * * @param string $type the type string, representing a single type - * @return Type|\Array_|\Object_ + * @return Type|Array_|Object_ */ private function resolveSingleType($type, Context $context) { From 9d9b0883ae8727ba5a200d1c1227e9f4bfd7830b Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Sat, 13 Jan 2018 09:04:41 -0600 Subject: [PATCH 09/19] need to handle null in addition to ''; --- src/TypeResolver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TypeResolver.php b/src/TypeResolver.php index e0b6f8b..5e006c4 100644 --- a/src/TypeResolver.php +++ b/src/TypeResolver.php @@ -441,7 +441,7 @@ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Cont } if ($tokens->current() !== '>') { - if ($tokens->current() === '') { + if (empty($tokens->current())) { throw new \RuntimeException( 'Collection: ">" is missing' ); From 27a8a14fef52c9be4eae4f67d8cd31bd1e24ee29 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Sat, 13 Jan 2018 09:14:25 -0600 Subject: [PATCH 10/19] fix tags --- src/TypeResolver.php | 2 -- src/Types/Collection.php | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/TypeResolver.php b/src/TypeResolver.php index 5e006c4..0c4399a 100644 --- a/src/TypeResolver.php +++ b/src/TypeResolver.php @@ -462,8 +462,6 @@ private function resolveCollection(\ArrayIterator $tokens, Type $classType, Cont } /** - * @param Object_ $object - * @param Type $valueType * @param Type|null $keyType * @return Collection */ diff --git a/src/Types/Collection.php b/src/Types/Collection.php index 47f2efd..c2e821c 100644 --- a/src/Types/Collection.php +++ b/src/Types/Collection.php @@ -34,7 +34,7 @@ final class Collection extends AbstractList /** * Initializes this representation of an array with the given Type or Fqsen. * - * @param phpDocumentor\Reflection\Fqsen|null $fqsen + * @param Fqsen|null $fqsen */ public function __construct(Fqsen $fqsen = null, Type $valueType, Type $keyType = null) { From d4252e20dba38d97d870213b10ca264d1541d3d3 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Sat, 13 Jan 2018 17:28:15 -0600 Subject: [PATCH 11/19] explicitly list classes that need to be ignored --- easy-coding-standard.neon | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/easy-coding-standard.neon b/easy-coding-standard.neon index 33d2014..78a7dc6 100644 --- a/easy-coding-standard.neon +++ b/easy-coding-standard.neon @@ -20,4 +20,16 @@ parameters: PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\CamelCapsFunctionNameSniff: - */tests/** PHP_CodeSniffer\Standards\Squiz\Sniffs\Classes\ValidClassNameSniff: - - */src/** + - src/Types/Array_.php + - src/Types/Callable_.php + - src/Types/Float_.php + - src/Types/Iterable_.php + - src/Types/Mixed_.php + - src/Types/Null_.php + - src/Types/Object_.php + - src/Types/Parent_.php + - src/Types/Resource_.php + - src/Types/Self_.php + - src/Types/Static_.php + - src/Types/String_.php + - src/Types/Void_.php From 09ed872ae2ec761c70f23a47833821820f5a7802 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Sat, 13 Jan 2018 17:28:37 -0600 Subject: [PATCH 12/19] add a dummy class so that the imported namespace is utilized --- tests/unit/Types/ContextFactoryTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/unit/Types/ContextFactoryTest.php b/tests/unit/Types/ContextFactoryTest.php index f313323..55f0d52 100644 --- a/tests/unit/Types/ContextFactoryTest.php +++ b/tests/unit/Types/ContextFactoryTest.php @@ -197,6 +197,12 @@ public function tearDown() } namespace phpDocumentor\Reflection\Types\Mock { + // the following import should not show in the tests above + use phpDocumentor\Reflection\DocBlock\Description; + class Foo extends Description + { + // dummy class } +} From 23f3a7d934b1b4df26dfc287793bc3425e643d1f Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Sat, 13 Jan 2018 17:37:05 -0600 Subject: [PATCH 13/19] remove duplicated checker --- easy-coding-standard.neon | 4 ---- 1 file changed, 4 deletions(-) diff --git a/easy-coding-standard.neon b/easy-coding-standard.neon index 78a7dc6..3f18bba 100644 --- a/easy-coding-standard.neon +++ b/easy-coding-standard.neon @@ -3,10 +3,6 @@ includes: - temp/ecs/config/psr2.neon - temp/ecs/config/common.neon -checkers: - PhpCsFixer\Fixer\Operator\ConcatSpaceFixer: - spacing: one - parameters: exclude_checkers: # from temp/ecs/config/common.neon From 2053665dad43587a83878b85907afbd222045672 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Sat, 13 Jan 2018 17:43:14 -0600 Subject: [PATCH 14/19] another ecs fix --- src/TypeResolver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TypeResolver.php b/src/TypeResolver.php index 0c4399a..caa734c 100644 --- a/src/TypeResolver.php +++ b/src/TypeResolver.php @@ -290,7 +290,7 @@ public function addKeyword($keyword, $typeClassName) ); } - if (!in_array(Type::class, class_implements($typeClassName))) { + if (!in_array(Type::class, class_implements($typeClassName), true)) { throw new \InvalidArgumentException( 'The class "' . $typeClassName . '" must implement the interface "phpDocumentor\Reflection\Type"' ); From 9b55160b712d219644c8382ef076ca84af3068fc Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Mon, 15 Jan 2018 11:15:45 -0600 Subject: [PATCH 15/19] use phive and phars for tools; use travis_retry for occasional failure points; --- .gitignore | 7 +- .travis.yml | 32 +- appveyor.yml | 4 +- composer.json | 4 +- composer.lock | 2186 +------------------------------------------------ phive.xml | 5 + 6 files changed, 31 insertions(+), 2207 deletions(-) create mode 100644 phive.xml diff --git a/.gitignore b/.gitignore index 447c8e2..d35b331 100644 --- a/.gitignore +++ b/.gitignore @@ -15,9 +15,10 @@ bin/validate-json* temp/ecs/* # Build folder and vendor folder are generated code; no need to version this -build/* -vendor/* -composer.phar +build/ +tools/ +vendor/ +*.phar # By default the phpunit.xml.dist is provided; you can override this using a local config file phpunit.xml diff --git a/.travis.yml b/.travis.yml index 269ffd0..a39dc1a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,5 @@ language: php -php: - - 7.1 - - 7.2 - - nightly +php: [ 7.1, 7.2, nightly ] sudo: false env: @@ -13,33 +10,38 @@ matrix: - php: nightly install: - - composer install --no-interaction --prefer-dist --optimize-autoloader + - travis_retry composer install --no-interaction --prefer-dist --optimize-autoloader + - travis_retry wget https://phar.io/releases/phive.phar + - travis_retry php phive.phar --no-progress install --trust-gpg-keys 4AA394086372C20A phpunit + +script: + - ./tools/phpunit --no-coverage jobs: include: - - stage: test - script: - - vendor/bin/phpunit --no-coverage - - stage: coverage php: 7.1 + before_script: + - echo "code coverage won't work from phpunit.phar, because some of this package's deps are in that phar..." + - travis_retry composer require --dev phpunit/phpunit script: - - vendor/bin/phpunit + - ./vendor/bin/phpunit after_script: - - wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml - - wget https://github.com/satooshi/php-coveralls/releases/download/v1.0.1/coveralls.phar && php coveralls.phar --verbose + - travis_retry php phive.phar --no-progress install --trust-gpg-keys E82B2FB314E9906E php-coveralls/php-coveralls && ./tools/php-coveralls --verbose + - travis_retry wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml - stage: lint php: 7.1 before_script: - - composer create-project symplify/easy-coding-standard temp/ecs + - travis_retry php phive.phar --no-progress install --trust-gpg-keys 8E730BA25823D8B5 phpstan script: - - temp/ecs/bin/ecs check src tests - - vendor/bin/phpstan analyse src --level max --configuration phpstan.neon + - ./tools/phpstan analyse src --level max --configuration phpstan.neon + - composer create-project symplify/easy-coding-standard temp/ecs && temp/ecs/bin/ecs check src tests cache: directories: - $HOME/.composer/cache/files + - $HOME/.phive notifications: irc: "irc.freenode.org#phpdocumentor" diff --git a/appveyor.yml b/appveyor.yml index 961d74a..85c25ba 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -45,10 +45,12 @@ install: - IF NOT EXIST php-installed.txt echo assert.exception=On >> php.ini - IF NOT EXIST php-installed.txt appveyor DownloadFile https://getcomposer.org/composer.phar - IF NOT EXIST php-installed.txt echo @php %%~dp0composer.phar %%* > composer.bat + - IF NOT EXIST php-installed.txt appveyor DownloadFile https://phar.phpunit.de/phpunit.phar + - IF NOT EXIST php-installed.txt echo @php %%~dp0phpunit.phar %%* > phpunit.bat - IF NOT EXIST php-installed.txt type nul >> php-installed.txt - cd c:\typeresolver - composer install --no-interaction --prefer-dist --no-progress test_script: - cd c:\typeresolver - - vendor/bin/phpunit --no-coverage + - phpunit --no-coverage diff --git a/composer.json b/composer.json index 7a710cd..a0602ae 100644 --- a/composer.json +++ b/composer.json @@ -13,9 +13,7 @@ "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^6.5", - "mockery/mockery": "^1.0", - "phpstan/phpstan": "^0.9.0" + "mockery/mockery": "^1.0" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index fce8ee8..de9d8e9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "8acd51b5e781e2282650d133334bf43b", + "content-hash": "7c0ff0771fe46a2e1c1a4079960d0029", "packages": [ { "name": "phpdocumentor/reflection-common", @@ -62,60 +62,6 @@ } ], "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2017-07-22T11:58:36+00:00" - }, { "name": "hamcrest/hamcrest-php", "version": "v2.0.0", @@ -164,49 +110,6 @@ ], "time": "2016-01-20T08:20:44+00:00" }, - { - "name": "jean85/pretty-package-versions", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "3c8487fdd6c750ff3f10c32ddfdd2a7803c1d461" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/3c8487fdd6c750ff3f10c32ddfdd2a7803c1d461", - "reference": "3c8487fdd6c750ff3f10c32ddfdd2a7803c1d461", - "shasum": "" - }, - "require": { - "ocramius/package-versions": "^1.2.0", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Jean85\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" - } - ], - "description": "A wrapper for ocramius/pretty-package-versions to get pretty versions strings", - "keywords": [ - "package versions" - ], - "time": "2017-11-30T22:02:29+00:00" - }, { "name": "mockery/mockery", "version": "1.0", @@ -271,2093 +174,6 @@ "testing" ], "time": "2017-10-06T16:20:43+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2017-10-19T19:58:43+00:00" - }, - { - "name": "nette/bootstrap", - "version": "v2.4.5", - "source": { - "type": "git", - "url": "https://github.com/nette/bootstrap.git", - "reference": "804925787764d708a7782ea0d9382a310bb21968" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/bootstrap/zipball/804925787764d708a7782ea0d9382a310bb21968", - "reference": "804925787764d708a7782ea0d9382a310bb21968", - "shasum": "" - }, - "require": { - "nette/di": "~2.4.7", - "nette/utils": "~2.4", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "latte/latte": "~2.2", - "nette/application": "~2.3", - "nette/caching": "~2.3", - "nette/database": "~2.3", - "nette/forms": "~2.3", - "nette/http": "~2.4.0", - "nette/mail": "~2.3", - "nette/robot-loader": "^2.4.2 || ^3.0", - "nette/safe-stream": "~2.2", - "nette/security": "~2.3", - "nette/tester": "~2.0", - "tracy/tracy": "^2.4.1" - }, - "suggest": { - "nette/robot-loader": "to use Configurator::createRobotLoader()", - "tracy/tracy": "to use Configurator::enableTracy()" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", - "homepage": "https://nette.org", - "keywords": [ - "bootstrapping", - "configurator", - "nette" - ], - "time": "2017-08-20T17:36:59+00:00" - }, - { - "name": "nette/di", - "version": "v2.4.10", - "source": { - "type": "git", - "url": "https://github.com/nette/di.git", - "reference": "a4b3be935b755f23aebea1ce33d7e3c832cdff98" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/di/zipball/a4b3be935b755f23aebea1ce33d7e3c832cdff98", - "reference": "a4b3be935b755f23aebea1ce33d7e3c832cdff98", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "nette/neon": "^2.3.3 || ~3.0.0", - "nette/php-generator": "^2.6.1 || ~3.0.0", - "nette/utils": "^2.4.3 || ~3.0.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/bootstrap": "<2.4", - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", - "homepage": "https://nette.org", - "keywords": [ - "compiled", - "di", - "dic", - "factory", - "ioc", - "nette", - "static" - ], - "time": "2017-08-31T22:42:00+00:00" - }, - { - "name": "nette/finder", - "version": "v2.4.1", - "source": { - "type": "git", - "url": "https://github.com/nette/finder.git", - "reference": "4d43a66d072c57d585bf08a3ef68d3587f7e9547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/4d43a66d072c57d585bf08a3ef68d3587f7e9547", - "reference": "4d43a66d072c57d585bf08a3ef68d3587f7e9547", - "shasum": "" - }, - "require": { - "nette/utils": "^2.4 || ~3.0.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "Nette Finder: Files Searching", - "homepage": "https://nette.org", - "time": "2017-07-10T23:47:08+00:00" - }, - { - "name": "nette/neon", - "version": "v2.4.2", - "source": { - "type": "git", - "url": "https://github.com/nette/neon.git", - "reference": "9eacd50553b26b53a3977bfb2fea2166d4331622" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/neon/zipball/9eacd50553b26b53a3977bfb2fea2166d4331622", - "reference": "9eacd50553b26b53a3977bfb2fea2166d4331622", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "ext-json": "*", - "php": ">=5.6.0" - }, - "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "Nette NEON: parser & generator for Nette Object Notation", - "homepage": "http://ne-on.org", - "time": "2017-07-11T18:29:08+00:00" - }, - { - "name": "nette/php-generator", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/nette/php-generator.git", - "reference": "eb2dbc9c3409e9db40568109ca4994d51373b60c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/eb2dbc9c3409e9db40568109ca4994d51373b60c", - "reference": "eb2dbc9c3409e9db40568109ca4994d51373b60c", - "shasum": "" - }, - "require": { - "nette/utils": "^2.4.2 || ~3.0.0", - "php": ">=7.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.1 features.", - "homepage": "https://nette.org", - "keywords": [ - "code", - "nette", - "php", - "scaffolding" - ], - "time": "2017-07-11T19:07:13+00:00" - }, - { - "name": "nette/robot-loader", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/nette/robot-loader.git", - "reference": "b703b4f5955831b0bcaacbd2f6af76021b056826" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/robot-loader/zipball/b703b4f5955831b0bcaacbd2f6af76021b056826", - "reference": "b703b4f5955831b0bcaacbd2f6af76021b056826", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "nette/finder": "^2.3 || ^3.0", - "nette/utils": "^2.4 || ^3.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", - "homepage": "https://nette.org", - "keywords": [ - "autoload", - "class", - "interface", - "nette", - "trait" - ], - "time": "2017-07-18T00:09:56+00:00" - }, - { - "name": "nette/utils", - "version": "v2.4.8", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "f1584033b5af945b470533b466b81a789d532034" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/f1584033b5af945b470533b466b81a789d532034", - "reference": "f1584033b5af945b470533b466b81a789d532034", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize() and toAscii()", - "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "time": "2017-08-20T17:32:29+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v3.1.3", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "579f4ce846734a1cf55d6a531d00ca07a43e3cda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/579f4ce846734a1cf55d6a531d00ca07a43e3cda", - "reference": "579f4ce846734a1cf55d6a531d00ca07a43e3cda", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2017-12-26T14:43:21+00:00" - }, - { - "name": "ocramius/package-versions", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "ad8a245decad4897cc6b432743913dad0d69753c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/ad8a245decad4897cc6b432743913dad0d69753c", - "reference": "ad8a245decad4897cc6b432743913dad0d69753c", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0", - "php": "~7.0" - }, - "require-dev": { - "composer/composer": "^1.3", - "ext-zip": "*", - "humbug/humbug": "dev-master", - "phpunit/phpunit": "^6.4" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2017-11-24T11:07:03+00:00" - }, - { - "name": "phar-io/manifest", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^1.0.1", - "php": "^5.6 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" - }, - { - "name": "phar-io/version", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.5", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b", - "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "time": "2016-01-25T08:17:30+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.7.3", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", - "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2017-11-24T13:59:53+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "0.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "08d714b2f0bc0a2bf9407255d5bb634669b7065c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/08d714b2f0bc0a2bf9407255d5bb634669b7065c", - "reference": "08d714b2f0bc0a2bf9407255d5bb634669b7065c", - "shasum": "" - }, - "require": { - "php": "~7.0" - }, - "require-dev": { - "consistence/coding-standard": "^2.0.0", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "phing/phing": "^2.16.0", - "phpstan/phpstan": "^0.9", - "phpunit/phpunit": "^6.3", - "slevomat/coding-standard": "^3.3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "time": "2017-11-22T10:46:07+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "0.9.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "ef60e5cc0a32ddb2637523dafef966e0aac1e16f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ef60e5cc0a32ddb2637523dafef966e0aac1e16f", - "reference": "ef60e5cc0a32ddb2637523dafef966e0aac1e16f", - "shasum": "" - }, - "require": { - "jean85/pretty-package-versions": "^1.0.3", - "nette/bootstrap": "^2.4 || ^3.0", - "nette/di": "^2.4.7 || ^3.0", - "nette/robot-loader": "^3.0.1", - "nette/utils": "^2.4.5 || ^3.0", - "nikic/php-parser": "^3.1", - "php": "~7.0", - "phpstan/phpdoc-parser": "^0.1", - "symfony/console": "~3.2 || ~4.0", - "symfony/finder": "~3.2 || ~4.0" - }, - "require-dev": { - "consistence/coding-standard": "2.2.1", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "phing/phing": "^2.16.0", - "phpstan/phpstan-php-parser": "^0.9", - "phpstan/phpstan-phpunit": "^0.9", - "phpstan/phpstan-strict-rules": "^0.9", - "phpunit/phpunit": "^6.5.2", - "slevomat/coding-standard": "4.0.0" - }, - "bin": [ - "bin/phpstan" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.9-dev" - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": [ - "src/", - "build/PHPStan" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "time": "2017-12-02T19:34:06+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1", - "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-xdebug": "^2.5.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2017-12-06T09:29:45+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2017-11-27T13:52:08+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-11-27T05:48:46+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "6.5.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "83d27937a310f2984fd575686138597147bdc7df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/83d27937a310f2984fd575686138597147bdc7df", - "reference": "83d27937a310f2984fd575686138597147bdc7df", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.5", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2017-12-17T06:31:19+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "5.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", - "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2018-01-06T05:45:45+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "b11c729f95109b56a0fe9650c6a63a0fcd8c439f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/b11c729f95109b56a0fe9650c6a63a0fcd8c439f", - "reference": "b11c729f95109b56a0fe9650c6a63a0fcd8c439f", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/diff": "^2.0", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-12-22T14:50:35+00:00" - }, - { - "name": "sebastian/diff", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-08-03T08:09:46+00:00" - }, - { - "name": "sebastian/environment", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2017-07-01T08:51:00+00:00" - }, - { - "name": "sebastian/exporter", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2017-04-03T13:19:02+00:00" - }, - { - "name": "sebastian/global-state", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2017-04-27T15:39:26+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "symfony/console", - "version": "v4.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "fe0e69d7162cba0885791cf7eea5f0d7bc0f897e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fe0e69d7162cba0885791cf7eea5f0d7bc0f897e", - "reference": "fe0e69d7162cba0885791cf7eea5f0d7bc0f897e", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:38:00+00:00" - }, - { - "name": "symfony/finder", - "version": "v4.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8b08180f2b7ccb41062366b9ad91fbc4f1af8601", - "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:38:00+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2017-10-11T12:05:26+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" } ], "aliases": [], diff --git a/phive.xml b/phive.xml new file mode 100644 index 0000000..5630fde --- /dev/null +++ b/phive.xml @@ -0,0 +1,5 @@ + + + + + From abe309679adb18980e25cff5233a97d3bf547fe9 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Mon, 15 Jan 2018 11:21:23 -0600 Subject: [PATCH 16/19] I think phpunit's reflection-docblock is interfering with our tests --- .travis.yml | 4 +++- appveyor.yml | 5 ++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index a39dc1a..7033d30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,9 +13,11 @@ install: - travis_retry composer install --no-interaction --prefer-dist --optimize-autoloader - travis_retry wget https://phar.io/releases/phive.phar - travis_retry php phive.phar --no-progress install --trust-gpg-keys 4AA394086372C20A phpunit + - echo "tests won't work from phpunit.phar, because some of this package's deps are in that phar..." + - travis_retry composer require --dev phpunit/phpunit script: - - ./tools/phpunit --no-coverage + - ./vendor/bin/phpunit --no-coverage jobs: include: diff --git a/appveyor.yml b/appveyor.yml index 85c25ba..1f344a5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -45,12 +45,11 @@ install: - IF NOT EXIST php-installed.txt echo assert.exception=On >> php.ini - IF NOT EXIST php-installed.txt appveyor DownloadFile https://getcomposer.org/composer.phar - IF NOT EXIST php-installed.txt echo @php %%~dp0composer.phar %%* > composer.bat - - IF NOT EXIST php-installed.txt appveyor DownloadFile https://phar.phpunit.de/phpunit.phar - - IF NOT EXIST php-installed.txt echo @php %%~dp0phpunit.phar %%* > phpunit.bat - IF NOT EXIST php-installed.txt type nul >> php-installed.txt - cd c:\typeresolver - composer install --no-interaction --prefer-dist --no-progress + - composer require --dev phpunit/phpunit test_script: - cd c:\typeresolver - - phpunit --no-coverage + - ./vendor/bin/phpunit --no-coverage From f1abee45499c82f9e458cfcc1080308a4bff340e Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Mon, 15 Jan 2018 13:17:40 -0600 Subject: [PATCH 17/19] do not use phpunit.phar against a package whose deps are in that phar --- .travis.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7033d30..f1ca5cc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,9 +12,7 @@ matrix: install: - travis_retry composer install --no-interaction --prefer-dist --optimize-autoloader - travis_retry wget https://phar.io/releases/phive.phar - - travis_retry php phive.phar --no-progress install --trust-gpg-keys 4AA394086372C20A phpunit - - echo "tests won't work from phpunit.phar, because some of this package's deps are in that phar..." - - travis_retry composer require --dev phpunit/phpunit + - travis_retry composer require --dev phpunit/phpunit # cannot trust phpunit.phar, because of reflection-docblock in that phar..." script: - ./vendor/bin/phpunit --no-coverage @@ -23,9 +21,6 @@ jobs: include: - stage: coverage php: 7.1 - before_script: - - echo "code coverage won't work from phpunit.phar, because some of this package's deps are in that phar..." - - travis_retry composer require --dev phpunit/phpunit script: - ./vendor/bin/phpunit after_script: From 714e94c5bac55cac09b4b41fe79e38481e933e92 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Mon, 15 Jan 2018 21:27:05 -0600 Subject: [PATCH 18/19] stick with phpunit in require-dev, for IDE use and to lessen complications with reflection-* deps --- .travis.yml | 1 - composer.json | 3 +- composer.lock | 1306 ++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 1307 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index f1ca5cc..60bc9ef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,6 @@ matrix: install: - travis_retry composer install --no-interaction --prefer-dist --optimize-autoloader - travis_retry wget https://phar.io/releases/phive.phar - - travis_retry composer require --dev phpunit/phpunit # cannot trust phpunit.phar, because of reflection-docblock in that phar..." script: - ./vendor/bin/phpunit --no-coverage diff --git a/composer.json b/composer.json index a0602ae..9bbb8d6 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,8 @@ "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { - "mockery/mockery": "^1.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.5" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index de9d8e9..25a60f7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "7c0ff0771fe46a2e1c1a4079960d0029", + "content-hash": "3006d0b1daceebbc703572192ff6a311", "packages": [ { "name": "phpdocumentor/reflection-common", @@ -62,6 +62,60 @@ } ], "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, { "name": "hamcrest/hamcrest-php", "version": "v2.0.0", @@ -174,6 +228,1256 @@ "testing" ], "time": "2017-10-06T16:20:43+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-10-19T19:58:43+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b", + "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2016-01-25T08:17:30+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.7.3", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", + "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2017-11-24T13:59:53+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1", + "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-xdebug": "^2.5.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-12-06T09:29:45+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "791198a2c6254db10131eecfe8c06670700904db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-11-27T05:48:46+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "6.5.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "83d27937a310f2984fd575686138597147bdc7df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/83d27937a310f2984fd575686138597147bdc7df", + "reference": "83d27937a310f2984fd575686138597147bdc7df", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.5", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "^1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-12-17T06:31:19+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "5.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "conflict": { + "phpunit/phpunit": "<6.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2018-01-06T05:45:45+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "11c07feade1d65453e06df3b3b90171d6d982087" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/11c07feade1d65453e06df3b3b90171d6d982087", + "reference": "11c07feade1d65453e06df3b3b90171d6d982087", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/diff": "^2.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-01-12T06:34:42+00:00" + }, + { + "name": "sebastian/diff", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-08-03T08:09:46+00:00" + }, + { + "name": "sebastian/environment", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2017-07-01T08:51:00+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2017-04-03T13:19:02+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" } ], "aliases": [], From d9b62e15002ad028f00618de22433fdeb28a1940 Mon Sep 17 00:00:00 2001 From: Chuck Burgess Date: Tue, 16 Jan 2018 06:52:06 -0600 Subject: [PATCH 19/19] use --dev phpunit --- appveyor.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 1f344a5..8b952ed 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -48,8 +48,7 @@ install: - IF NOT EXIST php-installed.txt type nul >> php-installed.txt - cd c:\typeresolver - composer install --no-interaction --prefer-dist --no-progress - - composer require --dev phpunit/phpunit test_script: - cd c:\typeresolver - - ./vendor/bin/phpunit --no-coverage + - vendor\bin\phpunit --no-coverage