From 95dc9a89b3e3fb908e733b8d9df99436a78be9a8 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 3 Oct 2017 16:27:26 +0200 Subject: [PATCH] dont run invalid path repair step when upgrading from 11.0.5.2 and later Signed-off-by: Robin Appelman --- .../Repair/NC13/RepairInvalidPaths.php | 14 +++++++-- tests/lib/Repair/RepairInvalidPathsTest.php | 30 +++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/lib/private/Repair/NC13/RepairInvalidPaths.php b/lib/private/Repair/NC13/RepairInvalidPaths.php index 59115d1a1c871..1b6a7d23ef33d 100644 --- a/lib/private/Repair/NC13/RepairInvalidPaths.php +++ b/lib/private/Repair/NC13/RepairInvalidPaths.php @@ -162,10 +162,18 @@ private function repair() { return $count; } - public function run(IOutput $output) { + private function shouldRun() { $versionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0'); - // was added to 12.0.0.30 and 13.0.0.1 - if (version_compare($versionFromBeforeUpdate, '12.0.0.30', '<') || version_compare($versionFromBeforeUpdate, '13.0.0.0', '==')) { + + // was added to 11.0.5.2, 12.0.0.30 and 13.0.0.1 + $shouldRun = version_compare($versionFromBeforeUpdate, '11.0.5.2', '<'); + $shouldRun |= version_compare($versionFromBeforeUpdate, '12.0.0.0', '>=') && version_compare($versionFromBeforeUpdate, '12.0.0.30', '<'); + $shouldRun |= version_compare($versionFromBeforeUpdate, '13.0.0.0', '=='); + return $shouldRun; + } + + public function run(IOutput $output) { + if ($this->shouldRun()) { $count = $this->repair(); $output->info('Repaired ' . $count . ' paths'); diff --git a/tests/lib/Repair/RepairInvalidPathsTest.php b/tests/lib/Repair/RepairInvalidPathsTest.php index b0370f5ae2d7d..17c584fd149ef 100644 --- a/tests/lib/Repair/RepairInvalidPathsTest.php +++ b/tests/lib/Repair/RepairInvalidPathsTest.php @@ -186,4 +186,34 @@ public function testRepairNonDuplicateBetweenStorage() { $this->assertEquals($folderId, $this->cache2->get('foo2/bar/asd')['parent']); $this->assertEquals($folderId, $this->cache2->getId('foo2/bar')); } + + public function shouldRunDataProvider() { + return [ + ['11.0.0.0', true], + ['11.0.0.31', true], + ['11.0.5.2', false], + ['12.0.0.0', true], + ['12.0.0.1', true], + ['12.0.0.31', false], + ['13.0.0.0', true], + ['13.0.0.1', false] + ]; + } + + /** + * @dataProvider shouldRunDataProvider + * + * @param string $from + * @param boolean $expected + */ + public function testShouldRun($from, $expected) { + $config = $this->createMock(IConfig::class); + $config->expects($this->any()) + ->method('getSystemValue') + ->with('version', '0.0.0') + ->willReturn($from); + $repair = new RepairInvalidPaths(\OC::$server->getDatabaseConnection(), $config); + + $this->assertEquals($expected, $this->invokePrivate($repair, 'shouldRun')); + } }