Do not run getRepairSteps in register_commandstags/v16.0.0alpha1
} | } | ||||
protected function execute(InputInterface $input, OutputInterface $output) { | protected function execute(InputInterface $input, OutputInterface $output) { | ||||
$includeExpensive = $input->getOption('include-expensive'); | |||||
if ($includeExpensive) { | |||||
foreach ($this->repair->getExpensiveRepairSteps() as $step) { | |||||
$this->repair->addStep($step); | |||||
} | |||||
$repairSteps = $this->repair::getRepairSteps(); | |||||
if ($input->getOption('include-expensive')) { | |||||
$repairSteps = array_merge($repairSteps, $this->repair::getExpensiveRepairSteps()); | |||||
} | |||||
foreach ($repairSteps as $step) { | |||||
$this->repair->addStep($step); | |||||
} | } | ||||
$apps = $this->appManager->getInstalledApps(); | $apps = $this->appManager->getInstalledApps(); |
$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(), | |||||
\OC::$server->getEventDispatcher(), \OC::$server->getAppManager())); | |||||
new \OC\Repair([], \OC::$server->getEventDispatcher()), | |||||
\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())); |
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 | ||||
/** @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 | ||||
* | * |
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 { | ||||
/** @var IRepairStep[] */ | /** @var IRepairStep[] */ | ||||
private $repairSteps; | private $repairSteps; | ||||
/** @var EventDispatcher */ | |||||
/** @var EventDispatcherInterface */ | |||||
private $dispatcher; | private $dispatcher; | ||||
/** @var string */ | /** @var string */ | ||||
* 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; | ||||
} | } |
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; | ||||
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(); | ||||
$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() { | ||||
} | } | ||||
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' | ||||
} | } | ||||
public function testWorkingStep() { | public function testWorkingStep() { | ||||
/** @var EventDispatcher | \PHPUnit_Framework_MockObject_MockObject $dispatcher */ | |||||
$dispatcher = $this->createMock(EventDispatcher::class); | |||||
$dispatcher->expects($this->once())->method('dispatch') | |||||
$this->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' |