first commit
This commit is contained in:
139
wp-content/plugins/wp-optimize/vendor/rosell-dk/locate-binaries/tests/LocateBinariesTest.php
vendored
Normal file
139
wp-content/plugins/wp-optimize/vendor/rosell-dk/locate-binaries/tests/LocateBinariesTest.php
vendored
Normal file
@@ -0,0 +1,139 @@
|
||||
<?php
|
||||
|
||||
namespace LocateBinaries\Tests;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use LocateBinaries\LocateBinaries;
|
||||
use ExecWithFallback\ExecWithFallback;
|
||||
|
||||
class LocateBinariesTest extends TestCase
|
||||
{
|
||||
|
||||
private function isWin()
|
||||
{
|
||||
return (stripos(PHP_OS, 'WIN') === 0);
|
||||
}
|
||||
|
||||
public function testLocateInCommonSystemPaths()
|
||||
{
|
||||
$binary = ($this->isWin() ? 'where' : 'ls');
|
||||
$binaries = LocateBinaries::locateInCommonSystemPaths($binary);
|
||||
$this->assertGreaterThanOrEqual(1, count($binaries));
|
||||
//echo "found: '" . implode("\n", $binaries) . "'";
|
||||
|
||||
/*
|
||||
if ($this->isWin()) {
|
||||
// peek into C:\Windows\System32
|
||||
ExecWithFallback::exec('DIR C:\Windows\System32', $output, $returnCode);
|
||||
echo "DIR: '" . implode("\r\n", $output) . "'";
|
||||
}
|
||||
*/
|
||||
/*
|
||||
echo 'OS: "' . PHP_OS . '"' . "\n\r";
|
||||
ExecWithFallback::exec('echo $PATH', $output, $returnCode);
|
||||
echo 'PATH: "' . implode("\n\r", $output) . '"';
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function testLocateBinariesUsingWhereIs()
|
||||
{
|
||||
if ($this->isWin()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// whereis uses a hardcoded list of paths to search. which uses your PATH.
|
||||
// You can print the list of paths whereis searches by running the following: sysctl user.cs_path
|
||||
//
|
||||
// https://apple.stackexchange.com/questions/287467/use-whereis-can-not-find-the-file-in-the-mac
|
||||
|
||||
/* $output = [];
|
||||
ExecWithFallback::exec('echo hi && echo hi 2>&1', $output, $returnCode);
|
||||
echo "output (echo)" . print_r($output, true) . "\n";*/
|
||||
/*
|
||||
$output = [];
|
||||
ExecWithFallback::exec('which -a bash 2>&1', $output, $returnCode);
|
||||
echo "output (which):" . print_r($output, true) . "\n";
|
||||
|
||||
$output = [];
|
||||
ExecWithFallback::exec('whereis bash 2>&1', $output, $returnCode);
|
||||
echo "output (whereis):" . print_r($output, true) . "\n";
|
||||
|
||||
$output = [];
|
||||
ExecWithFallback::exec('whereis aoeua 2>&1', $output, $returnCode);
|
||||
echo "output (whereis no result):" . print_r($output, true) . "\n";
|
||||
*/
|
||||
|
||||
// ExecWithFallback::exec('sysctl user.cs_path 2>&1', $output2, $returnCode2);
|
||||
/*ExecWithFallback::exec('whereis -b which 2>&1', $output2, $returnCode2);
|
||||
echo "returnCode:" . $returnCode2;
|
||||
echo "output 2:" . implode("\n", $output2) . "\n";*/
|
||||
|
||||
$whereIsBinaries = LocateBinaries::locateInCommonSystemPaths('whereis');
|
||||
if (count($whereIsBinaries) > 0) {
|
||||
$binaries = MethodInvoker::invoke(new LocateBinaries, 'locateBinariesUsingWhereIs', ['bash']);
|
||||
echo 'whereis bash: ' . print_r($binaries, true);
|
||||
$this->assertEquals('array', gettype($binaries));
|
||||
$this->assertGreaterThanOrEqual(1, count($binaries));
|
||||
$this->assertFalse(strpos($binaries[0], ' ')); // make sure there is no space in result
|
||||
|
||||
$binaries = MethodInvoker::invoke(new LocateBinaries, 'locateBinariesUsingWhereIs', ['aoeuaoeu']);
|
||||
$this->assertEquals('array', gettype($binaries));
|
||||
$this->assertEquals(0, count($binaries));
|
||||
}
|
||||
}
|
||||
|
||||
public function testLocateBinariesUsingWhich()
|
||||
{
|
||||
if ($this->isWin()) {
|
||||
return;
|
||||
}
|
||||
$whichBinaries = LocateBinaries::locateInCommonSystemPaths('which');
|
||||
if (count($whichBinaries) > 0) {
|
||||
$binaries = MethodInvoker::invoke(new LocateBinaries, 'locateBinariesUsingWhich', ['ls']);
|
||||
$this->assertEquals('array', gettype($binaries));
|
||||
$this->assertGreaterThanOrEqual(1, count($binaries));
|
||||
}
|
||||
}
|
||||
|
||||
public function testLocateBinariesUsingWhere()
|
||||
{
|
||||
if (!$this->isWin()) {
|
||||
return;
|
||||
}
|
||||
$binaries = MethodInvoker::invoke(new LocateBinaries, 'locateBinariesUsingWhere', ['where']);
|
||||
$this->assertEquals('array', gettype($binaries));
|
||||
$this->assertGreaterThanOrEqual(1, count($binaries));
|
||||
}
|
||||
|
||||
|
||||
public function testLocateInstalledBinaries()
|
||||
{
|
||||
//$whichBinaries = LocateBinaries::locateInCommonSystemPaths('which');
|
||||
//if (count($whichBinaries) > 0) {
|
||||
$binary = ($this->isWin() ? 'where.exe' : 'ls');
|
||||
$binaries = LocateBinaries::locateInstalledBinaries($binary);
|
||||
$this->assertEquals('array', gettype($binaries));
|
||||
$this->assertGreaterThanOrEqual(1, count($binaries));
|
||||
//}
|
||||
//echo "found:\n" . implode("\n", $binaries);
|
||||
}
|
||||
|
||||
public function testLocateInstalledNoBinariesFound()
|
||||
{
|
||||
$binaries = LocateBinaries::locateInstalledBinaries('lsbananaflip');
|
||||
$this->assertEquals('array', gettype($binaries));
|
||||
$this->assertEquals(0, count($binaries));
|
||||
}
|
||||
|
||||
/*
|
||||
public function testLocateInstalledNoExecAvail()
|
||||
{
|
||||
// If no exec() is avail, we expect Exception... But how do we simulate that exec() is unavailable?
|
||||
// $this->expectException(\Exception::class);
|
||||
// how to test this?
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
21
wp-content/plugins/wp-optimize/vendor/rosell-dk/locate-binaries/tests/MethodInvoker.php
vendored
Normal file
21
wp-content/plugins/wp-optimize/vendor/rosell-dk/locate-binaries/tests/MethodInvoker.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace LocateBinaries\Tests;
|
||||
|
||||
class MethodInvoker
|
||||
{
|
||||
public static function invoke($object, string $methodName, array $args=[]) {
|
||||
$privateMethod = self::getMethod(get_class($object), $methodName);
|
||||
|
||||
return $privateMethod->invokeArgs($object, $args);
|
||||
}
|
||||
|
||||
private static function getMethod(string $className, string $methodName) {
|
||||
$class = new \ReflectionClass($className);
|
||||
|
||||
$method = $class->getMethod($methodName);
|
||||
$method->setAccessible(true);
|
||||
|
||||
return $method;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user