Skip to content
Snippets Groups Projects
Unverified Commit b6d327ee authored by Roeland Jago Douma's avatar Roeland Jago Douma Committed by GitHub
Browse files

Merge pull request #13995 from nextcloud/feature/dont-call-get-repair-steps

Do not run getRepairSteps in register_commands
parents af233f84 e090973e
No related branches found
No related tags found
No related merge requests found
...@@ -77,11 +77,14 @@ class Repair extends Command { ...@@ -77,11 +77,14 @@ class Repair extends Command {
} }
protected function execute(InputInterface $input, OutputInterface $output) { protected function execute(InputInterface $input, OutputInterface $output) {
$includeExpensive = $input->getOption('include-expensive'); $repairSteps = $this->repair::getRepairSteps();
if ($includeExpensive) {
foreach ($this->repair->getExpensiveRepairSteps() as $step) { if ($input->getOption('include-expensive')) {
$this->repair->addStep($step); $repairSteps = array_merge($repairSteps, $this->repair::getExpensiveRepairSteps());
} }
foreach ($repairSteps as $step) {
$this->repair->addStep($step);
} }
$apps = $this->appManager->getInstalledApps(); $apps = $this->appManager->getInstalledApps();
......
...@@ -140,8 +140,11 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) { ...@@ -140,8 +140,11 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
$application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig(), \OC::$server->getLogger(), \OC::$server->query(\OC\Installer::class))); $application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig(), \OC::$server->getLogger(), \OC::$server->query(\OC\Installer::class)));
$application->add(new OC\Core\Command\Maintenance\Repair( $application->add(new OC\Core\Command\Maintenance\Repair(
new \OC\Repair(\OC\Repair::getRepairSteps(), \OC::$server->getEventDispatcher()), \OC::$server->getConfig(), new \OC\Repair([], \OC::$server->getEventDispatcher()),
\OC::$server->getEventDispatcher(), \OC::$server->getAppManager())); \OC::$server->getConfig(),
\OC::$server->getEventDispatcher(),
\OC::$server->getAppManager()
));
$application->add(new OC\Core\Command\User\Add(\OC::$server->getUserManager(), \OC::$server->getGroupManager())); $application->add(new OC\Core\Command\User\Add(\OC::$server->getUserManager(), \OC::$server->getGroupManager()));
$application->add(new OC\Core\Command\User\Delete(\OC::$server->getUserManager())); $application->add(new OC\Core\Command\User\Delete(\OC::$server->getUserManager()));
......
...@@ -29,7 +29,7 @@ use OC\Repair; ...@@ -29,7 +29,7 @@ use OC\Repair;
use OC_App; use OC_App;
use OCP\BackgroundJob\IJobList; use OCP\BackgroundJob\IJobList;
use OCP\ILogger; use OCP\ILogger;
use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventDispatcherInterface;
/** /**
* Class BackgroundRepair * Class BackgroundRepair
...@@ -44,12 +44,16 @@ class BackgroundRepair extends TimedJob { ...@@ -44,12 +44,16 @@ class BackgroundRepair extends TimedJob {
/** @var ILogger */ /** @var ILogger */
private $logger; private $logger;
/** @var EventDispatcher */ /** @var EventDispatcherInterface */
private $dispatcher; private $dispatcher;
public function setDispatcher(EventDispatcher $dispatcher) { /**
* @param EventDispatcherInterface $dispatcher
*/
public function setDispatcher(EventDispatcherInterface $dispatcher): void {
$this->dispatcher = $dispatcher; $this->dispatcher = $dispatcher;
} }
/** /**
* run the job, then remove it from the job list * run the job, then remove it from the job list
* *
......
...@@ -56,7 +56,7 @@ use OC\Template\SCSSCacher; ...@@ -56,7 +56,7 @@ use OC\Template\SCSSCacher;
use OCP\AppFramework\QueryException; use OCP\AppFramework\QueryException;
use OCP\Migration\IOutput; use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep; use OCP\Migration\IRepairStep;
use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent; use Symfony\Component\EventDispatcher\GenericEvent;
class Repair implements IOutput { class Repair implements IOutput {
...@@ -64,7 +64,7 @@ class Repair implements IOutput { ...@@ -64,7 +64,7 @@ class Repair implements IOutput {
/** @var IRepairStep[] */ /** @var IRepairStep[] */
private $repairSteps; private $repairSteps;
/** @var EventDispatcher */ /** @var EventDispatcherInterface */
private $dispatcher; private $dispatcher;
/** @var string */ /** @var string */
...@@ -74,9 +74,9 @@ class Repair implements IOutput { ...@@ -74,9 +74,9 @@ class Repair implements IOutput {
* Creates a new repair step runner * Creates a new repair step runner
* *
* @param IRepairStep[] $repairSteps array of RepairStep instances * @param IRepairStep[] $repairSteps array of RepairStep instances
* @param EventDispatcher $dispatcher * @param EventDispatcherInterface $dispatcher
*/ */
public function __construct($repairSteps = [], EventDispatcher $dispatcher = null) { public function __construct(array $repairSteps, EventDispatcherInterface $dispatcher) {
$this->repairSteps = $repairSteps; $this->repairSteps = $repairSteps;
$this->dispatcher = $dispatcher; $this->dispatcher = $dispatcher;
} }
......
...@@ -21,13 +21,12 @@ ...@@ -21,13 +21,12 @@
namespace Test\Migration; namespace Test\Migration;
use OC\Migration\BackgroundRepair; use OC\Migration\BackgroundRepair;
use OC\NeedsUpdateException; use OC\NeedsUpdateException;
use OCP\ILogger; use OCP\ILogger;
use OCP\Migration\IOutput; use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep; use OCP\Migration\IRepairStep;
use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent; use Symfony\Component\EventDispatcher\GenericEvent;
use Test\TestCase; use Test\TestCase;
...@@ -57,15 +56,18 @@ class TestRepairStep implements IRepairStep { ...@@ -57,15 +56,18 @@ class TestRepairStep implements IRepairStep {
class BackgroundRepairTest extends TestCase { class BackgroundRepairTest extends TestCase {
/** @var \OC\BackgroundJob\JobList | \PHPUnit_Framework_MockObject_MockObject */ /** @var \OC\BackgroundJob\JobList|\PHPUnit_Framework_MockObject_MockObject */
private $jobList; private $jobList;
/** @var BackgroundRepair | \PHPUnit_Framework_MockObject_MockObject */ /** @var BackgroundRepair|\PHPUnit_Framework_MockObject_MockObject */
private $job; private $job;
/** @var ILogger | \PHPUnit_Framework_MockObject_MockObject */ /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
private $logger; private $logger;
/** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject $dispatcher */
private $dispatcher;
public function setUp() { public function setUp() {
parent::setUp(); parent::setUp();
...@@ -78,6 +80,9 @@ class BackgroundRepairTest extends TestCase { ...@@ -78,6 +80,9 @@ class BackgroundRepairTest extends TestCase {
$this->job = $this->getMockBuilder(BackgroundRepair::class) $this->job = $this->getMockBuilder(BackgroundRepair::class)
->setMethods(['loadApp']) ->setMethods(['loadApp'])
->getMock(); ->getMock();
$this->dispatcher = $this->createMock(EventDispatcherInterface::class);
$this->job->setDispatcher($this->dispatcher);
} }
public function testNoArguments() { public function testNoArguments() {
...@@ -96,8 +101,11 @@ class BackgroundRepairTest extends TestCase { ...@@ -96,8 +101,11 @@ class BackgroundRepairTest extends TestCase {
} }
public function testUnknownStep() { public function testUnknownStep() {
$this->dispatcher->expects($this->never())->method('dispatch');
$this->jobList->expects($this->once())->method('remove'); $this->jobList->expects($this->once())->method('remove');
$this->logger->expects($this->once())->method('logException'); $this->logger->expects($this->once())->method('logException');
$this->job->setArgument([ $this->job->setArgument([
'app' => 'test', 'app' => 'test',
'step' => 'j' 'step' => 'j'
...@@ -106,13 +114,11 @@ class BackgroundRepairTest extends TestCase { ...@@ -106,13 +114,11 @@ class BackgroundRepairTest extends TestCase {
} }
public function testWorkingStep() { public function testWorkingStep() {
/** @var EventDispatcher | \PHPUnit_Framework_MockObject_MockObject $dispatcher */ $this->dispatcher->expects($this->once())->method('dispatch')
$dispatcher = $this->createMock(EventDispatcher::class);
$dispatcher->expects($this->once())->method('dispatch')
->with('\OC\Repair::step', new GenericEvent('\OC\Repair::step', ['A test repair step'])); ->with('\OC\Repair::step', new GenericEvent('\OC\Repair::step', ['A test repair step']));
$this->jobList->expects($this->once())->method('remove'); $this->jobList->expects($this->once())->method('remove');
$this->job->setDispatcher($dispatcher);
$this->job->setArgument([ $this->job->setArgument([
'app' => 'test', 'app' => 'test',
'step' => '\Test\Migration\TestRepairStep' 'step' => '\Test\Migration\TestRepairStep'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment