mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/15055] Support console questions on windows
PHPBB3-15055
This commit is contained in:
parent
ede339c1c8
commit
a999718b42
4 changed files with 52 additions and 15 deletions
|
@ -14,12 +14,15 @@
|
||||||
use Symfony\Component\Console\Application;
|
use Symfony\Component\Console\Application;
|
||||||
use Symfony\Component\Console\Tester\CommandTester;
|
use Symfony\Component\Console\Tester\CommandTester;
|
||||||
use phpbb\console\command\user\add;
|
use phpbb\console\command\user\add;
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
use Symfony\Component\Console\Question\Question;
|
||||||
|
|
||||||
require_once dirname(__FILE__) . '/base.php';
|
require_once dirname(__FILE__) . '/base.php';
|
||||||
|
|
||||||
class phpbb_console_user_add_test extends phpbb_console_user_base
|
class phpbb_console_user_add_test extends phpbb_console_user_base
|
||||||
{
|
{
|
||||||
public function get_command_tester()
|
public function get_command_tester($question_answers = [])
|
||||||
{
|
{
|
||||||
$application = new Application();
|
$application = new Application();
|
||||||
$application->add(new add(
|
$application->add(new add(
|
||||||
|
@ -34,7 +37,42 @@ class phpbb_console_user_add_test extends phpbb_console_user_base
|
||||||
|
|
||||||
$command = $application->find('user:add');
|
$command = $application->find('user:add');
|
||||||
$this->command_name = $command->getName();
|
$this->command_name = $command->getName();
|
||||||
|
|
||||||
|
if (!empty($question_answers))
|
||||||
|
{
|
||||||
|
$ask = function(InputInterface $input, OutputInterface $output, Question $question) use ($question_answers)
|
||||||
|
{
|
||||||
|
$text = $question->getQuestion();
|
||||||
|
|
||||||
|
// handle a question
|
||||||
|
foreach ($question_answers as $expected_question => $answer)
|
||||||
|
{
|
||||||
|
if (strpos($text, $expected_question) !== false)
|
||||||
|
{
|
||||||
|
$response = $answer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($response))
|
||||||
|
{
|
||||||
|
throw new \RuntimeException('Was asked for input on an unhandled question: ' . $text);
|
||||||
|
}
|
||||||
|
|
||||||
|
$output->writeln(print_r($response, true));
|
||||||
|
return $response;
|
||||||
|
};
|
||||||
|
$helper = $this->createMock('\Symfony\Component\Console\Helper\QuestionHelper');
|
||||||
|
$helper->expects($this->any())
|
||||||
|
->method('ask')
|
||||||
|
->will($this->returnCallback($ask));
|
||||||
|
$this->question = $helper;
|
||||||
|
$command->getHelperSet()->set($helper, 'question');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
$this->question = $command->getHelper('question');
|
$this->question = $command->getHelper('question');
|
||||||
|
}
|
||||||
|
|
||||||
return new CommandTester($command);
|
return new CommandTester($command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +95,11 @@ class phpbb_console_user_add_test extends phpbb_console_user_base
|
||||||
|
|
||||||
public function test_add_dialog()
|
public function test_add_dialog()
|
||||||
{
|
{
|
||||||
$command_tester = $this->get_command_tester();
|
$command_tester = $this->get_command_tester([
|
||||||
|
'USERNAME' => 'bar',
|
||||||
|
'PASSWORD' => 'password',
|
||||||
|
'EMAIL_ADDRESS' => 'bar@test.com',
|
||||||
|
]);
|
||||||
|
|
||||||
$this->assertEquals(2, $this->get_user_id('Admin'));
|
$this->assertEquals(2, $this->get_user_id('Admin'));
|
||||||
|
|
||||||
|
|
|
@ -34,11 +34,6 @@ abstract class phpbb_console_user_base extends phpbb_database_test_case
|
||||||
{
|
{
|
||||||
global $auth, $db, $cache, $config, $user, $phpbb_dispatcher, $phpbb_container, $phpbb_root_path, $phpEx;
|
global $auth, $db, $cache, $config, $user, $phpbb_dispatcher, $phpbb_container, $phpbb_root_path, $phpEx;
|
||||||
|
|
||||||
if (strtolower(substr(PHP_OS, 0, 5)) !== 'linux')
|
|
||||||
{
|
|
||||||
$this->markTestSkipped('Unable to test console feature on OS other than Linux.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||||
$phpbb_container = new phpbb_mock_container_builder();
|
$phpbb_container = new phpbb_mock_container_builder();
|
||||||
$phpbb_container->set('cache.driver', new phpbb_mock_cache());
|
$phpbb_container->set('cache.driver', new phpbb_mock_cache());
|
||||||
|
|
|
@ -462,10 +462,6 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case
|
||||||
// Index name has > 30 chars - that should not be possible.
|
// Index name has > 30 chars - that should not be possible.
|
||||||
$too_long_index_name = str_repeat('i', 31);
|
$too_long_index_name = str_repeat('i', 31);
|
||||||
$this->assertFalse($this->tools->sql_index_exists('prefix_table_name', $too_long_index_name));
|
$this->assertFalse($this->tools->sql_index_exists('prefix_table_name', $too_long_index_name));
|
||||||
if (strpos($this->tools->sql_layer, 'mssql') === false)
|
|
||||||
{
|
|
||||||
$this->setExpectedTriggerError(E_USER_ERROR);
|
|
||||||
}
|
|
||||||
$this->tools->sql_create_index('prefix_table_name', $too_long_index_name, array('c_timestamp'));
|
$this->tools->sql_create_index('prefix_table_name', $too_long_index_name, array('c_timestamp'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,6 +100,8 @@ class phpbb_tests_tree_nestedset_forum_base extends phpbb_database_test_case
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Turn on identity insert on mssql to be able to insert into
|
||||||
|
// identity columns (e.g. forum_id)
|
||||||
if (strpos($this->db->sql_layer, 'mssql') !== false)
|
if (strpos($this->db->sql_layer, 'mssql') !== false)
|
||||||
{
|
{
|
||||||
$sql = 'SET IDENTITY_INSERT phpbb_forums ON';
|
$sql = 'SET IDENTITY_INSERT phpbb_forums ON';
|
||||||
|
@ -112,6 +114,8 @@ class phpbb_tests_tree_nestedset_forum_base extends phpbb_database_test_case
|
||||||
$this->database_synchronisation(array(
|
$this->database_synchronisation(array(
|
||||||
'phpbb_forums' => array('forum_id'),
|
'phpbb_forums' => array('forum_id'),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
// Disable identity insert on mssql again
|
||||||
if (strpos($this->db->sql_layer, 'mssql') !== false)
|
if (strpos($this->db->sql_layer, 'mssql') !== false)
|
||||||
{
|
{
|
||||||
$sql = 'SET IDENTITY_INSERT phpbb_forums OFF';
|
$sql = 'SET IDENTITY_INSERT phpbb_forums OFF';
|
||||||
|
|
Loading…
Add table
Reference in a new issue