Repository skeleton
This commit is contained in:
commit
ab814f7f08
18 changed files with 6471 additions and 0 deletions
7
.gitattributes
vendored
Normal file
7
.gitattributes
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
* text=auto encoding=utf-8
|
||||
|
||||
*.html diff=html
|
||||
*.php diff=php
|
||||
*.bat eol=crlf
|
||||
*.cmd eol=crlf
|
||||
.gitignore -eol
|
44
.gitignore
vendored
Normal file
44
.gitignore
vendored
Normal file
|
@ -0,0 +1,44 @@
|
|||
# Temporary files
|
||||
|
||||
/tests/coverage/
|
||||
/.php_cs.cache
|
||||
/.php-cs-fixer.cache
|
||||
/tests/.phpunit.result.cache
|
||||
|
||||
# Dependencies
|
||||
|
||||
/vendor/
|
||||
/vendor-bin/*/vendor
|
||||
|
||||
# Windows files
|
||||
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
Desktop.ini
|
||||
$RECYCLE.BIN/
|
||||
|
||||
|
||||
# macOS files
|
||||
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
|
||||
|
||||
# archives
|
||||
|
||||
*.zip
|
||||
*.7z
|
||||
*.tar.gz
|
||||
*.tar.xz
|
||||
*.tgz
|
||||
*.deb
|
||||
*.rpm
|
||||
*.dmg
|
||||
*.cab
|
||||
*.msi
|
||||
*.msm
|
||||
*.msp
|
73
.php-cs-fixer.dist.php
Normal file
73
.php-cs-fixer.dist.php
Normal file
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
/** @license MIT
|
||||
* Copyright 2023 J. King
|
||||
* See LICENSE and AUTHORS files for details */
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MensBeam\Microformats;
|
||||
|
||||
const BASE = __DIR__.DIRECTORY_SEPARATOR;
|
||||
|
||||
$paths = [
|
||||
__FILE__,
|
||||
BASE."RoboFile.php",
|
||||
BASE."lib",
|
||||
BASE."tests/cases",
|
||||
BASE."tests/lib",
|
||||
BASE."tests/bootstrap.php",
|
||||
];
|
||||
$rules = [
|
||||
// house rules where PSR series is silent
|
||||
'align_multiline_comment' => ['comment_type' => "phpdocs_only"],
|
||||
'array_syntax' => ['syntax' => "short"],
|
||||
'binary_operator_spaces' => [
|
||||
'default' => "single_space",
|
||||
'operators' => ['=>' => "align_single_space"],
|
||||
],
|
||||
'cast_spaces' => ['space' => "single"],
|
||||
'concat_space' => ['spacing' => "none"],
|
||||
'list_syntax' => ['syntax' => "short"],
|
||||
'magic_constant_casing' => true,
|
||||
'magic_method_casing' => true,
|
||||
'modernize_types_casting' => true,
|
||||
'native_function_casing' => true,
|
||||
'native_function_type_declaration_casing' => true,
|
||||
'no_binary_string' => true,
|
||||
'no_blank_lines_after_phpdoc' => true,
|
||||
'no_empty_comment' => true,
|
||||
'no_empty_phpdoc' => true,
|
||||
'no_empty_statement' => true,
|
||||
'no_extra_blank_lines' => true, // this could probably use more configuration
|
||||
'no_mixed_echo_print' => ['use' => "echo"],
|
||||
'no_short_bool_cast' => true,
|
||||
'no_trailing_comma_in_singleline_array' => true,
|
||||
'no_unneeded_control_parentheses' => true,
|
||||
'no_unneeded_curly_braces' => true,
|
||||
'no_unused_imports' => true,
|
||||
'no_whitespace_before_comma_in_array' => true,
|
||||
'normalize_index_brace' => true,
|
||||
'object_operator_without_whitespace' => true,
|
||||
'pow_to_exponentiation' => true,
|
||||
'set_type_to_cast' => true,
|
||||
'standardize_not_equals' => true,
|
||||
'trailing_comma_in_multiline' => ['elements' => ["arrays"]],
|
||||
'unary_operator_spaces' => true,
|
||||
'yoda_style' => false,
|
||||
// PSR standard to apply
|
||||
'@PSR12' => true,
|
||||
// house exceptions to PSR rules
|
||||
'braces' => ['position_after_functions_and_oop_constructs' => "same"],
|
||||
'function_declaration' => ['closure_function_spacing' => "none"],
|
||||
'new_with_braces' => false, // no option to specify absence of braces
|
||||
];
|
||||
|
||||
$finder = \PhpCsFixer\Finder::create();
|
||||
foreach ($paths as $path) {
|
||||
if (is_file($path)) {
|
||||
$finder = $finder->append([$path]);
|
||||
} else {
|
||||
$finder = $finder->in($path);
|
||||
}
|
||||
}
|
||||
return (new \PhpCsFixer\Config)->setRiskyAllowed(true)->setRules($rules)->setFinder($finder);
|
3
AUTHORS
Normal file
3
AUTHORS
Normal file
|
@ -0,0 +1,3 @@
|
|||
Prohect leads
|
||||
-------------
|
||||
J. King https://jkingweb.ca/
|
22
LICENSE
Normal file
22
LICENSE
Normal file
|
@ -0,0 +1,22 @@
|
|||
Copyright (c) 2023 J. King
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
151
RoboFile.php
Normal file
151
RoboFile.php
Normal file
|
@ -0,0 +1,151 @@
|
|||
<?php
|
||||
|
||||
use Robo\Result;
|
||||
|
||||
const BASE = __DIR__.\DIRECTORY_SEPARATOR;
|
||||
const BASE_TEST = BASE."tests".\DIRECTORY_SEPARATOR;
|
||||
define("IS_WIN", defined("PHP_WINDOWS_VERSION_MAJOR"));
|
||||
define("IS_MAC", php_uname("s") === "Darwin");
|
||||
define("IS_LINUX", !IS_WIN && !IS_MAC);
|
||||
error_reporting(0);
|
||||
|
||||
function norm(string $path): string {
|
||||
$out = realpath($path);
|
||||
if (!$out) {
|
||||
$out = str_replace(["/", "\\"], \DIRECTORY_SEPARATOR, $path);
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
class RoboFile extends \Robo\Tasks {
|
||||
/** Runs the typical test suite
|
||||
*
|
||||
* Arguments passed to the task are passed on to PHPUnit. Thus one may, for
|
||||
* example, run the following command and get the expected results:
|
||||
*
|
||||
* ./robo test --testsuite TTRSS --exclude-group slow --testdox
|
||||
*
|
||||
* Please see the PHPUnit documentation for available options.
|
||||
*/
|
||||
public function test(array $args): Result {
|
||||
return $this->runTests(escapeshellarg(\PHP_BINARY), "typical", $args);
|
||||
}
|
||||
|
||||
/** Runs the full test suite
|
||||
*
|
||||
* This includes pedantic tests which may help to identify problems.
|
||||
* See help for the "test" task for more details.
|
||||
*/
|
||||
public function testFull(array $args): Result {
|
||||
return $this->runTests(escapeshellarg(\PHP_BINARY), "full", $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs a quick subset of the test suite
|
||||
*
|
||||
* See help for the "test" task for more details.
|
||||
*/
|
||||
public function testQuick(array $args): Result {
|
||||
return $this->runTests(escapeshellarg(\PHP_BINARY), "quick", $args);
|
||||
}
|
||||
|
||||
/** Produces a code coverage report
|
||||
*
|
||||
* By default this task produces an HTML-format coverage report in
|
||||
* tests/coverage/. Additional reports may be produced by passing
|
||||
* arguments to this task as one would to PHPUnit.
|
||||
*
|
||||
* Robo first tries to use pcov and will fall back to xdebug.
|
||||
* Neither pcov nor xdebug need to be enabled to be used; they
|
||||
* only need to be present in the extension load path to be used.
|
||||
*/
|
||||
public function coverage(array $args): Result {
|
||||
// run tests with code coverage reporting enabled
|
||||
$exec = $this->findCoverageEngine();
|
||||
return $this->runTests($exec, "coverage", array_merge(["--coverage-html", BASE_TEST."coverage"], $args));
|
||||
}
|
||||
|
||||
/** Produces a code coverage report, with redundant tests
|
||||
*
|
||||
* Depending on the environment, some tests that normally provide
|
||||
* coverage may be skipped, while working alternatives are normally
|
||||
* suppressed for reasons of time. This coverage report will try to
|
||||
* run all tests which may cover code.
|
||||
*
|
||||
* See also help for the "coverage" task for more details.
|
||||
*/
|
||||
public function coverageFull(array $args): Result {
|
||||
// run tests with code coverage reporting enabled
|
||||
$exec = $this->findCoverageEngine();
|
||||
return $this->runTests($exec, "typical", array_merge(["--coverage-html", BASE_TEST."coverage"], $args));
|
||||
}
|
||||
|
||||
/** Runs the coding-style fixer */
|
||||
public function clean($opts = ['demo|d' => false]): Result {
|
||||
$t = $this->taskExec(norm(BASE."vendor-bin/csfixer/vendor/bin/php-cs-fixer"));
|
||||
$t->arg("fix");
|
||||
if ($opts['demo']) {
|
||||
$t->args("--dry-run", "--diff")->option("--diff-format", "udiff");
|
||||
}
|
||||
return $t->run();
|
||||
}
|
||||
|
||||
/** Finds the first suitable means of computing code coverage, either pcov or xdebug. */
|
||||
protected function findCoverageEngine(): string {
|
||||
$dir = rtrim(ini_get("extension_dir"), "/").\DIRECTORY_SEPARATOR;
|
||||
$ext = IS_WIN ? "dll" : "so";
|
||||
$php = escapeshellarg(\PHP_BINARY);
|
||||
$code = escapeshellarg(BASE."lib");
|
||||
if (extension_loaded("pcov")) {
|
||||
return "$php -d pcov.enabled=1 -d pcov.directory=$code";
|
||||
} elseif (extension_loaded("xdebug")) {
|
||||
return "$php -d xdebug.mode=coverage";
|
||||
} elseif (file_exists($dir."pcov.$ext")) {
|
||||
return "$php -d extension=pcov.$ext -d pcov.enabled=1 -d pcov.directory=$code";
|
||||
} elseif (file_exists($dir."xdebug.$ext")) {
|
||||
return "$php -d zend_extension=xdebug.$ext -d xdebug.mode=coverage";
|
||||
} else {
|
||||
return $php;
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the necessary shell arguments to print error output or all output to the bitbucket
|
||||
*
|
||||
* @param bool $all Whether all output (true) or only error output (false) should be suppressed
|
||||
*/
|
||||
protected function blackhole(bool $all = false): string {
|
||||
$hole = IS_WIN ? "nul" : "/dev/null";
|
||||
return $all ? ">$hole 2>&1" : "2>$hole";
|
||||
}
|
||||
|
||||
/** Executes PHPUnit, used by the test and coverage tasks.
|
||||
*
|
||||
* This also executes the built-in PHP Web server, which is required to fetch some newsfeeds during tests
|
||||
*
|
||||
* @param string $executor The path to the PHP binary to execute with any required extra arguments. Normally this is either "php" or the result of findCoverageEngine()
|
||||
* @param string $set The set of tests to run, either "typical" (excludes redundant tests), "quick" (excludes redundant and slow tests), "coverage" (excludes tests not needed for coverage), or "full" (all tests)
|
||||
* @param array $args Extra arguments passed by Robo from the command line
|
||||
*/
|
||||
protected function runTests(string $executor, string $set, array $args): Result {
|
||||
switch ($set) {
|
||||
case "typical":
|
||||
$set = ["--exclude-group", "optional"];
|
||||
break;
|
||||
case "quick":
|
||||
$set = ["--exclude-group", "optional,slow"];
|
||||
break;
|
||||
case "coverage":
|
||||
$set = ["--exclude-group", "optional,coverageOptional"];
|
||||
break;
|
||||
case "full":
|
||||
$set = [];
|
||||
break;
|
||||
default:
|
||||
throw new \Exception;
|
||||
}
|
||||
$execpath = norm(BASE."vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit");
|
||||
$confpath = realpath(BASE_TEST."phpunit.dist.xml") ?: norm(BASE_TEST."phpunit.xml");
|
||||
$this->taskServer(8000)->host("localhost")->dir(BASE_TEST."docroot")->rawArg("-n")->arg(BASE_TEST."server.php")->rawArg($this->blackhole())->background()->run();
|
||||
return $this->taskExec($executor)->option("-d", "zend.assertions=1")->arg($execpath)->option("-c", $confpath)->args(array_merge($set, $args))->run();
|
||||
}
|
||||
}
|
48
composer.json
Normal file
48
composer.json
Normal file
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"name": "mensbeam/microformats",
|
||||
"type": "library",
|
||||
"description": "A microformats parser",
|
||||
"keywords": ["microformats", "mf2"],
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "J. King",
|
||||
"email": "jking@jkingweb.ca",
|
||||
"homepage": "https://jkingweb.ca/"
|
||||
}
|
||||
|
||||
],
|
||||
"require": {
|
||||
"php": ">=7.1",
|
||||
"ext-json": "*",
|
||||
"ext-dom": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "*"
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "7.3.33"
|
||||
},
|
||||
"allow-plugins": {
|
||||
"bamarni/composer-bin-plugin": true
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"bin-links": false,
|
||||
"forward-command": true
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"MensBeam\\Microformats\\": "lib/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"MensBeam\\Microformats\\Test\\": "tests/lib/",
|
||||
"MensBeam\\Microformats\\TestCase\\": "tests/cases/"
|
||||
}
|
||||
}
|
||||
}
|
83
composer.lock
generated
Normal file
83
composer.lock
generated
Normal file
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "b0a58ccd5873863e4784641715d18209",
|
||||
"packages": [],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "bamarni/composer-bin-plugin",
|
||||
"version": "1.8.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/bamarni/composer-bin-plugin.git",
|
||||
"reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880",
|
||||
"reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-plugin-api": "^2.0",
|
||||
"php": "^7.2.5 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"composer/composer": "^2.0",
|
||||
"ext-json": "*",
|
||||
"phpstan/extension-installer": "^1.1",
|
||||
"phpstan/phpstan": "^1.8",
|
||||
"phpstan/phpstan-phpunit": "^1.1",
|
||||
"phpunit/phpunit": "^8.5 || ^9.5",
|
||||
"symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
|
||||
"symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
|
||||
"symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0"
|
||||
},
|
||||
"type": "composer-plugin",
|
||||
"extra": {
|
||||
"class": "Bamarni\\Composer\\Bin\\BamarniBinPlugin"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Bamarni\\Composer\\Bin\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "No conflicts for your bin dependencies",
|
||||
"keywords": [
|
||||
"composer",
|
||||
"conflict",
|
||||
"dependency",
|
||||
"executable",
|
||||
"isolation",
|
||||
"tool"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/bamarni/composer-bin-plugin/issues",
|
||||
"source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2"
|
||||
},
|
||||
"time": "2022-10-31T08:38:03+00:00"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": ">=7.1",
|
||||
"ext-json": "*",
|
||||
"ext-dom": "*"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"platform-overrides": {
|
||||
"php": "7.3.33"
|
||||
},
|
||||
"plugin-api-version": "2.3.0"
|
||||
}
|
14
robo
Executable file
14
robo
Executable file
|
@ -0,0 +1,14 @@
|
|||
#! /bin/sh
|
||||
base=`dirname "$0"`
|
||||
roboCommand="$1"
|
||||
if [ $# -eq 0 ]; then
|
||||
"$base/vendor-bin/robo/vendor/bin/robo"
|
||||
else
|
||||
shift
|
||||
ulimit -n 2048
|
||||
if [ "$1" = "clean" ]; then
|
||||
"$base/vendor-bin/robo/vendor/bin/robo" "$roboCommand" "$@"
|
||||
else
|
||||
"$base/vendor-bin/robo/vendor/bin/robo" "$roboCommand" -- "$@"
|
||||
fi
|
||||
fi
|
21
robo.bat
Normal file
21
robo.bat
Normal file
|
@ -0,0 +1,21 @@
|
|||
@echo off
|
||||
setlocal
|
||||
set base=%~dp0
|
||||
set roboCommand=%1
|
||||
|
||||
rem get all arguments except the first
|
||||
shift
|
||||
set "args="
|
||||
:parse
|
||||
if "%~1" neq "" (
|
||||
set args=%args% %1
|
||||
shift
|
||||
goto :parse
|
||||
)
|
||||
if defined args set args=%args:~1%
|
||||
|
||||
if "%1"=="clean" (
|
||||
call "%base%vendor-bin\robo\vendor\bin\robo" "%roboCommand%" %args%
|
||||
) else (
|
||||
call "%base%vendor-bin\robo\vendor\bin\robo" "%roboCommand%" -- %args%
|
||||
)
|
24
tests/bootstrap.php
Normal file
24
tests/bootstrap.php
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
/** @license MIT
|
||||
* Copyright 2023 J. King
|
||||
* See LICENSE and AUTHORS files for details */
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MensBeam\Microformats;
|
||||
|
||||
const NS_BASE = __NAMESPACE__."\\";
|
||||
define(NS_BASE."BASE", dirname(__DIR__).DIRECTORY_SEPARATOR);
|
||||
ini_set("memory_limit", "-1");
|
||||
ini_set("zend.assertions", "1");
|
||||
ini_set("assert.exception", "true");
|
||||
error_reporting(\E_ALL);
|
||||
require_once BASE."vendor".DIRECTORY_SEPARATOR."autoload.php";
|
||||
|
||||
if (function_exists("xdebug_set_filter")) {
|
||||
if (defined("XDEBUG_PATH_INCLUDE")) {
|
||||
xdebug_set_filter(\XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_PATH_INCLUDE, [BASE."lib/"]);
|
||||
} else {
|
||||
xdebug_set_filter(\XDEBUG_FILTER_CODE_COVERAGE, XDEBUG_PATH_WHITELIST, [BASE."lib/"]);
|
||||
}
|
||||
}
|
24
tests/phpunit.dist.xml
Normal file
24
tests/phpunit.dist.xml
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0"?>
|
||||
<phpunit
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
|
||||
colors="true"
|
||||
bootstrap="bootstrap.php"
|
||||
convertErrorsToExceptions="false"
|
||||
convertNoticesToExceptions="false"
|
||||
convertWarningsToExceptions="false"
|
||||
beStrictAboutTestsThatDoNotTestAnything="true"
|
||||
beStrictAboutOutputDuringTests="true"
|
||||
forceCoversAnnotation="true"
|
||||
executionOrder="defects"
|
||||
>
|
||||
|
||||
|
||||
<coverage processUncoveredFiles="true">
|
||||
<include>
|
||||
<directory suffix=".php">../lib</directory>
|
||||
</include>
|
||||
</coverage>
|
||||
<testsuites>
|
||||
</testsuites>
|
||||
</phpunit>
|
5
vendor-bin/csfixer/composer.json
Normal file
5
vendor-bin/csfixer/composer.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "3.*"
|
||||
}
|
||||
}
|
2045
vendor-bin/csfixer/composer.lock
generated
Normal file
2045
vendor-bin/csfixer/composer.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
5
vendor-bin/phpunit/composer.json
Normal file
5
vendor-bin/phpunit/composer.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.0"
|
||||
}
|
||||
}
|
1750
vendor-bin/phpunit/composer.lock
generated
Normal file
1750
vendor-bin/phpunit/composer.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
6
vendor-bin/robo/composer.json
Normal file
6
vendor-bin/robo/composer.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"require-dev": {
|
||||
"consolidation/robo": "^3.0",
|
||||
"pear/archive_tar": "^1.4"
|
||||
}
|
||||
}
|
2146
vendor-bin/robo/composer.lock
generated
Normal file
2146
vendor-bin/robo/composer.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue