diff options
-rw-r--r-- | lib/private/Migration/BackgroundRepair.php | 22 | ||||
-rw-r--r-- | tests/lib/Migration/BackgroundRepairTest.php | 19 |
2 files changed, 10 insertions, 31 deletions
diff --git a/lib/private/Migration/BackgroundRepair.php b/lib/private/Migration/BackgroundRepair.php index cbc21e4fe12..d542b82d5e1 100644 --- a/lib/private/Migration/BackgroundRepair.php +++ b/lib/private/Migration/BackgroundRepair.php @@ -7,9 +7,8 @@ */ namespace OC\Migration; -use OC\NeedsUpdateException; use OC\Repair; -use OC_App; +use OCP\App\IAppManager; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\BackgroundJob\TimedJob; @@ -26,6 +25,7 @@ class BackgroundRepair extends TimedJob { ITimeFactory $time, private LoggerInterface $logger, private IJobList $jobList, + private IAppManager $appManager, ) { parent::__construct($time); $this->setInterval(15 * 60); @@ -34,7 +34,6 @@ class BackgroundRepair extends TimedJob { /** * @param array $argument * @throws \Exception - * @throws \OC\NeedsUpdateException */ protected function run($argument): void { if (!isset($argument['app']) || !isset($argument['step'])) { @@ -44,13 +43,7 @@ class BackgroundRepair extends TimedJob { } $app = $argument['app']; - try { - $this->loadApp($app); - } catch (NeedsUpdateException $ex) { - // as long as the app is not yet done with it's offline migration - // we better not start with the live migration - return; - } + $this->appManager->loadApp($app); $step = $argument['step']; $this->repair->setRepairSteps([]); @@ -73,13 +66,4 @@ class BackgroundRepair extends TimedJob { // remove the job once executed successfully $this->jobList->remove($this, $this->argument); } - - /** - * @codeCoverageIgnore - * @param $app - * @throws NeedsUpdateException - */ - protected function loadApp($app): void { - OC_App::loadApp($app); - } } diff --git a/tests/lib/Migration/BackgroundRepairTest.php b/tests/lib/Migration/BackgroundRepairTest.php index 585ebc420ad..25ea6088072 100644 --- a/tests/lib/Migration/BackgroundRepairTest.php +++ b/tests/lib/Migration/BackgroundRepairTest.php @@ -9,9 +9,9 @@ namespace Test\Migration; use OC\BackgroundJob\JobList; use OC\Migration\BackgroundRepair; -use OC\NeedsUpdateException; use OC\Repair; use OC\Repair\Events\RepairStepEvent; +use OCP\App\IAppManager; use OCP\AppFramework\Utility\ITimeFactory; use OCP\EventDispatcher\IEventDispatcher; use OCP\Migration\IOutput; @@ -48,6 +48,7 @@ class BackgroundRepairTest extends TestCase { private LoggerInterface $logger; private IEventDispatcher $dispatcher; private ITimeFactory $time; + private IAppManager $appManager; private Repair $repair; protected function setUp(): void { @@ -63,9 +64,10 @@ class BackgroundRepairTest extends TestCase { $this->time = $this->createMock(ITimeFactory::class); $this->time->method('getTime') ->willReturn(999999); + $this->appManager = $this->createMock(IAppManager::class); $this->repair = new Repair($this->dispatcher, $this->logger); $this->job = $this->getMockBuilder(BackgroundRepair::class) - ->setConstructorArgs([$this->repair, $this->time, $this->logger, $this->jobList]) + ->setConstructorArgs([$this->repair, $this->time, $this->logger, $this->jobList, $this->appManager]) ->setMethods(['loadApp']) ->getMock(); } @@ -75,16 +77,6 @@ class BackgroundRepairTest extends TestCase { $this->job->start($this->jobList); } - public function testAppUpgrading(): void { - $this->jobList->expects($this->never())->method('remove'); - $this->job->expects($this->once())->method('loadApp')->with('test')->willThrowException(new NeedsUpdateException()); - $this->job->setArgument([ - 'app' => 'test', - 'step' => 'j' - ]); - $this->job->start($this->jobList); - } - public function testUnknownStep(): void { $this->dispatcher->expects($this->never())->method('dispatchTyped'); @@ -103,6 +95,9 @@ class BackgroundRepairTest extends TestCase { ->with($this->equalTo(new RepairStepEvent('A test repair step'))); $this->jobList->expects($this->once())->method('remove'); + $this->appManager->expects(self::once()) + ->method('loadApp') + ->with('test'); $this->job->setArgument([ 'app' => 'test', |