diff --git a/lib/Doctrine/ORM/Tools/Console/Command/RunDqlCommand.php b/lib/Doctrine/ORM/Tools/Console/Command/RunDqlCommand.php index 000a94d8c..abd999aef 100644 --- a/lib/Doctrine/ORM/Tools/Console/Command/RunDqlCommand.php +++ b/lib/Doctrine/ORM/Tools/Console/Command/RunDqlCommand.php @@ -81,6 +81,7 @@ EOT */ protected function execute(InputInterface $input, OutputInterface $output) { + /* @var $em \Doctrine\ORM\EntityManagerInterface */ $em = $this->getHelper('em')->getEntityManager(); if (($dql = $input->getArgument('dql')) === null) { @@ -120,13 +121,13 @@ EOT $query->setMaxResults((int) $maxResult); } - if ($input->hasOption('show-sql')) { - Debug::dump($query->getSQL()); + if ($input->getOption('show-sql')) { + $output->writeln(Debug::dump($query->getSQL(), 2, true, false)); return; } $resultSet = $query->execute(array(), constant($hydrationMode)); - Debug::dump($resultSet, $input->getOption('depth')); + $output->writeln(Debug::dump($resultSet, $input->getOption('depth'), true, false)); } } diff --git a/tests/Doctrine/Tests/ORM/Tools/Console/Command/RunDqlCommandTest.php b/tests/Doctrine/Tests/ORM/Tools/Console/Command/RunDqlCommandTest.php new file mode 100644 index 000000000..534922329 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Tools/Console/Command/RunDqlCommandTest.php @@ -0,0 +1,90 @@ +useModelSet('generic'); + + parent::setUp(); + + $this->application = new Application(); + $this->command = new RunDqlCommand(); + + $this->application->setHelperSet(new HelperSet(array( + 'em' => new EntityManagerHelper($this->_em) + ))); + + $this->application->add($this->command); + + $this->tester = new CommandTester($this->command); + } + + public function testCommandName() + { + $this->assertSame($this->command, $this->application->get('orm:run-dql')); + } + + public function testWillRunQuery() + { + $this->_em->persist(new DateTimeModel()); + $this->_em->flush(); + + $this->assertSame( + 0, + $this->tester->execute(array( + 'command' => $this->command->getName(), + 'dql' => 'SELECT e FROM ' . DateTimeModel::CLASSNAME . ' e', + )) + ); + + $this->assertContains(DateTimeModel::CLASSNAME, $this->tester->getDisplay()); + } + + public function testWillShowQuery() + { + $this->_em->persist(new DateTimeModel()); + $this->_em->flush(); + + $this->assertSame( + 0, + $this->tester->execute(array( + 'command' => $this->command->getName(), + 'dql' => 'SELECT e FROM ' . DateTimeModel::CLASSNAME . ' e', + '--show-sql' => 'true' + )) + ); + + $this->assertStringMatchesFormat('string \'SELECT %a', $this->tester->getDisplay()); + } +}