dont run invalid path repair step when upgrading from 11.0.5.2 and later

Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
Robin Appelman 2017-10-03 16:27:26 +02:00
parent 4a21eb1c7d
commit 95dc9a89b3
No known key found for this signature in database
GPG Key ID: CBCA68FBAEBF98C9
2 changed files with 41 additions and 3 deletions

View File

@ -162,10 +162,18 @@ class RepairInvalidPaths implements IRepairStep {
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');

View File

@ -186,4 +186,34 @@ class RepairInvalidPathsTest extends TestCase {
$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'));
}
}