mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-16 15:47:58 +00:00
121 lines
3.0 KiB
PHP
121 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace Nominatim;
|
|
|
|
require_once(CONST_BasePath.'/lib/Shell.php');
|
|
|
|
class ShellTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
public function testNew()
|
|
{
|
|
$this->expectException('ArgumentCountError');
|
|
$this->expectExceptionMessage('Too few arguments to function');
|
|
$oCmd = new \Nominatim\Shell();
|
|
|
|
|
|
$oCmd = new \Nominatim\Shell('wc', '-l', 'file.txt');
|
|
$this->assertSame(
|
|
"wc -l 'file.txt'",
|
|
$oCmd->escapedCmd()
|
|
);
|
|
}
|
|
|
|
public function testaddParams()
|
|
{
|
|
$oCmd = new \Nominatim\Shell('grep');
|
|
$oCmd->addParams('-a', 'abc')
|
|
->addParams(10);
|
|
|
|
$this->assertSame(
|
|
'grep -a abc 10',
|
|
$oCmd->escapedCmd(),
|
|
'no escaping needed, chained'
|
|
);
|
|
|
|
$oCmd = new \Nominatim\Shell('grep');
|
|
$oCmd->addParams();
|
|
$oCmd->addParams(null);
|
|
$oCmd->addParams('');
|
|
|
|
$this->assertEmpty($oCmd->aParams);
|
|
$this->assertSame('grep', $oCmd->escapedCmd(), 'empty params');
|
|
|
|
$oCmd = new \Nominatim\Shell('echo', '-n', 0);
|
|
$this->assertSame(
|
|
'echo -n 0',
|
|
$oCmd->escapedCmd(),
|
|
'zero param'
|
|
);
|
|
|
|
$oCmd = new \Nominatim\Shell('/path with space/do.php');
|
|
$oCmd->addParams('-a', ' b ');
|
|
$oCmd->addParams('--flag');
|
|
$oCmd->addParams('two words');
|
|
$oCmd->addParams('v=1');
|
|
|
|
$this->assertSame(
|
|
"'/path with space/do.php' -a ' b ' --flag 'two words' 'v=1'",
|
|
$oCmd->escapedCmd(),
|
|
'escape whitespace'
|
|
);
|
|
|
|
$oCmd = new \Nominatim\Shell('grep');
|
|
$oCmd->addParams(';', '|more&', '2>&1');
|
|
|
|
$this->assertSame(
|
|
"grep ';' '|more&' '2>&1'",
|
|
$oCmd->escapedCmd(),
|
|
'escape shell characters'
|
|
);
|
|
}
|
|
|
|
public function testaddEnvPair()
|
|
{
|
|
$oCmd = new \Nominatim\Shell('date');
|
|
|
|
$oCmd->addEnvPair('one', 'two words')
|
|
->addEnvPair('null', null)
|
|
->addEnvPair(null, 'null')
|
|
->addEnvPair('empty', '')
|
|
->addEnvPair('', 'empty');
|
|
|
|
$this->assertEquals(
|
|
array('one' => 'two words', 'empty' => ''),
|
|
$oCmd->aEnv
|
|
);
|
|
|
|
$oCmd->addEnvPair('one', 'overwrite');
|
|
$this->assertEquals(
|
|
array('one' => 'overwrite', 'empty' => ''),
|
|
$oCmd->aEnv
|
|
);
|
|
}
|
|
|
|
public function testClone()
|
|
{
|
|
$oCmd = new \Nominatim\Shell('wc', '-l', 'file.txt');
|
|
$oCmd2 = clone $oCmd;
|
|
$oCmd->addParams('--flag');
|
|
$oCmd2->addParams('--flag2');
|
|
|
|
$this->assertSame(
|
|
"wc -l 'file.txt' --flag",
|
|
$oCmd->escapedCmd()
|
|
);
|
|
|
|
$this->assertSame(
|
|
"wc -l 'file.txt' --flag2",
|
|
$oCmd2->escapedCmd()
|
|
);
|
|
}
|
|
|
|
public function testRun()
|
|
{
|
|
$oCmd = new \Nominatim\Shell('echo');
|
|
|
|
$this->assertSame(0, $oCmd->run());
|
|
|
|
// var_dump($sStdout);
|
|
}
|
|
}
|