From 0b58b0faf3f6aba4ec78935e21d4201048ccfcc9 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Sat, 2 Feb 2019 18:07:48 +0100 Subject: Do not run getRepairSteps in register_commands getRepairSteps is quite expensive (because every repair step is initialized and their dependencies are injected). Should not call it during register. Signed-off-by: Daniel Kesselberg --- lib/private/Repair.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/private') diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 2ab3a57e824..0d1209d552b 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -56,7 +56,7 @@ use OC\Template\SCSSCacher; use OCP\AppFramework\QueryException; use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; -use Symfony\Component\EventDispatcher\EventDispatcher; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\GenericEvent; class Repair implements IOutput { @@ -64,7 +64,7 @@ class Repair implements IOutput { /** @var IRepairStep[] */ private $repairSteps; - /** @var EventDispatcher */ + /** @var EventDispatcherInterface */ private $dispatcher; /** @var string */ @@ -74,9 +74,9 @@ class Repair implements IOutput { * Creates a new repair step runner * * @param IRepairStep[] $repairSteps array of RepairStep instances - * @param EventDispatcher $dispatcher + * @param EventDispatcherInterface $dispatcher */ - public function __construct($repairSteps = [], EventDispatcher $dispatcher = null) { + public function __construct($repairSteps = [], EventDispatcherInterface $dispatcher = null) { $this->repairSteps = $repairSteps; $this->dispatcher = $dispatcher; } -- cgit v1.2.3 From 4f9abaaaa9490ebd56d30dcb7e9c9c31a5ac10e4 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Wed, 6 Feb 2019 20:56:17 +0100 Subject: Make $repairSteps & $dispatcher mandatory Signed-off-by: Daniel Kesselberg --- lib/private/Repair.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/private') diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 0d1209d552b..72995a96132 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -76,7 +76,7 @@ class Repair implements IOutput { * @param IRepairStep[] $repairSteps array of RepairStep instances * @param EventDispatcherInterface $dispatcher */ - public function __construct($repairSteps = [], EventDispatcherInterface $dispatcher = null) { + public function __construct(array $repairSteps, EventDispatcherInterface $dispatcher) { $this->repairSteps = $repairSteps; $this->dispatcher = $dispatcher; } -- cgit v1.2.3 From e090973e64d34bfb20062acce67512b30dcfb489 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Mon, 11 Feb 2019 17:27:48 +0100 Subject: Fix unit test Null is not longer possible as value for $dispatcher. Signed-off-by: Daniel Kesselberg --- lib/private/Migration/BackgroundRepair.php | 10 +++++++--- tests/lib/Migration/BackgroundRepairTest.php | 24 +++++++++++++++--------- 2 files changed, 22 insertions(+), 12 deletions(-) (limited to 'lib/private') diff --git a/lib/private/Migration/BackgroundRepair.php b/lib/private/Migration/BackgroundRepair.php index 62ba3a9554c..a873d23e7b2 100644 --- a/lib/private/Migration/BackgroundRepair.php +++ b/lib/private/Migration/BackgroundRepair.php @@ -29,7 +29,7 @@ use OC\Repair; use OC_App; use OCP\BackgroundJob\IJobList; use OCP\ILogger; -use Symfony\Component\EventDispatcher\EventDispatcher; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** * Class BackgroundRepair @@ -44,12 +44,16 @@ class BackgroundRepair extends TimedJob { /** @var ILogger */ private $logger; - /** @var EventDispatcher */ + /** @var EventDispatcherInterface */ private $dispatcher; - public function setDispatcher(EventDispatcher $dispatcher) { + /** + * @param EventDispatcherInterface $dispatcher + */ + public function setDispatcher(EventDispatcherInterface $dispatcher): void { $this->dispatcher = $dispatcher; } + /** * run the job, then remove it from the job list * diff --git a/tests/lib/Migration/BackgroundRepairTest.php b/tests/lib/Migration/BackgroundRepairTest.php index 7a3a960074f..180ce72d315 100644 --- a/tests/lib/Migration/BackgroundRepairTest.php +++ b/tests/lib/Migration/BackgroundRepairTest.php @@ -21,13 +21,12 @@ namespace Test\Migration; - use OC\Migration\BackgroundRepair; use OC\NeedsUpdateException; use OCP\ILogger; use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; -use Symfony\Component\EventDispatcher\EventDispatcher; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\GenericEvent; use Test\TestCase; @@ -57,15 +56,18 @@ class TestRepairStep implements IRepairStep { class BackgroundRepairTest extends TestCase { - /** @var \OC\BackgroundJob\JobList | \PHPUnit_Framework_MockObject_MockObject */ + /** @var \OC\BackgroundJob\JobList|\PHPUnit_Framework_MockObject_MockObject */ private $jobList; - /** @var BackgroundRepair | \PHPUnit_Framework_MockObject_MockObject */ + /** @var BackgroundRepair|\PHPUnit_Framework_MockObject_MockObject */ private $job; - /** @var ILogger | \PHPUnit_Framework_MockObject_MockObject */ + /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ private $logger; + /** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject $dispatcher */ + private $dispatcher; + public function setUp() { parent::setUp(); @@ -78,6 +80,9 @@ class BackgroundRepairTest extends TestCase { $this->job = $this->getMockBuilder(BackgroundRepair::class) ->setMethods(['loadApp']) ->getMock(); + + $this->dispatcher = $this->createMock(EventDispatcherInterface::class); + $this->job->setDispatcher($this->dispatcher); } public function testNoArguments() { @@ -96,8 +101,11 @@ class BackgroundRepairTest extends TestCase { } public function testUnknownStep() { + $this->dispatcher->expects($this->never())->method('dispatch'); + $this->jobList->expects($this->once())->method('remove'); $this->logger->expects($this->once())->method('logException'); + $this->job->setArgument([ 'app' => 'test', 'step' => 'j' @@ -106,13 +114,11 @@ class BackgroundRepairTest extends TestCase { } 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'])); $this->jobList->expects($this->once())->method('remove'); - $this->job->setDispatcher($dispatcher); + $this->job->setArgument([ 'app' => 'test', 'step' => '\Test\Migration\TestRepairStep' -- cgit v1.2.3