Skip to content

Commit

Permalink
Merge pull request #6742 from nextcloud/invalid-path-repair-from11
Browse files Browse the repository at this point in the history
dont run invalid path repair step when upgrading from 11.0.5.2 and later
  • Loading branch information
icewind1991 committed Oct 4, 2017
2 parents e95e7dc + 7525c38 commit 73554a3
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 3 deletions.
14 changes: 11 additions & 3 deletions lib/private/Repair/NC13/RepairInvalidPaths.php
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,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');
Expand Down
30 changes: 30 additions & 0 deletions tests/lib/Repair/RepairInvalidPathsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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'));
}
}

0 comments on commit 73554a3

Please sign in to comment.