Skip to content

Commit 35c987e

Browse files
Add test to reproduce issue
1 parent a28217f commit 35c987e

File tree

1 file changed

+83
-62
lines changed

1 file changed

+83
-62
lines changed

tests/phpbu/Backup/Cleaner/StepwiseTest.php

Lines changed: 83 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<?php
22
namespace phpbu\App\Backup\Cleaner;
33

4+
use phpbu\App\Backup\Collector\Local;
5+
use phpbu\App\Backup\Target;
6+
use phpbu\App\Result;
7+
48
/**
59
* StepwiseTest
610
*
@@ -9,7 +13,7 @@
913
* @author Sebastian Feldmann <sebastian@phpbu.de>
1014
* @copyright Sebastian Feldmann <sebastian@phpbu.de>
1115
* @license https://opensource.org/licenses/MIT The MIT License (MIT)
12-
* @link http://www.phpbu.de/
16+
* @link https://www.phpbu.de/
1317
* @since Class available since Release 5.0.0
1418
*/
1519
class StepwiseTest extends TestCase
@@ -21,66 +25,22 @@ public function testCleanupDeleteOldestFile()
2125
{
2226
$fileList = $this->getFileMockList(
2327
[
24-
[
25-
'size' => 100,
26-
'shouldBeDeleted' => false,
27-
'mTime' => $this->getMTime('1d'),
28-
],
29-
[
30-
'size' => 100,
31-
'shouldBeDeleted' => false,
32-
'mTime' => $this->getMTime('2d'),
33-
],
34-
[
35-
'size' => 100,
36-
'shouldBeDeleted' => false,
37-
'mTime' => $this->getMTime('3d'),
38-
],
39-
[
40-
'size' => 100,
41-
'shouldBeDeleted' => false,
42-
'mTime' => $this->getMTime('1w'),
43-
],
44-
[
45-
'size' => 100,
46-
'shouldBeDeleted' => false,
47-
'mTime' => $this->getMTime('2w'),
48-
],
49-
[
50-
'size' => 100,
51-
'shouldBeDeleted' => true,
52-
'mTime' => $this->getMTime('2y'),
53-
],
54-
[
55-
'size' => 100,
56-
'shouldBeDeleted' => false,
57-
'mTime' => $this->getMTime('2i'),
58-
],
59-
[
60-
'size' => 100,
61-
'shouldBeDeleted' => false,
62-
'mTime' => $this->getMTime('3i'),
63-
],
64-
[
65-
'size' => 100,
66-
'shouldBeDeleted' => false,
67-
'mTime' => $this->getMTime('5i'),
68-
],
69-
[
70-
'size' => 100,
71-
'shouldBeDeleted' => false,
72-
'mTime' => $this->getMTime('6i'),
73-
],
74-
[
75-
'size' => 100,
76-
'shouldBeDeleted' => false,
77-
'mTime' => $this->getMTime('7i'),
78-
],
28+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('1d')],
29+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('2d')],
30+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('3d')],
31+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('1w')],
32+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('2w')],
33+
['size' => 100, 'shouldBeDeleted' => true, 'mTime' => $this->getMTime('2y')],
34+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('2i')],
35+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('3i')],
36+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('5i')],
37+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('6i')],
38+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => $this->getMTime('7i')],
7939
]
8040
);
81-
$resultStub = $this->createMock(\phpbu\App\Result::class);
82-
$collectorStub = $this->createMock(\phpbu\App\Backup\Collector\Local::class);
83-
$targetStub = $this->createMock(\phpbu\App\Backup\Target::class);
41+
$resultStub = $this->createMock(Result::class);
42+
$collectorStub = $this->createMock(Local::class);
43+
$targetStub = $this->createMock(Target::class);
8444

8545
$collectorStub->method('getBackupFiles')->willReturn($fileList);
8646

@@ -98,6 +58,67 @@ public function testCleanupDeleteOldestFile()
9858
$cleaner->cleanup($targetStub, $collectorStub, $resultStub);
9959
}
10060

61+
/**
62+
* Tests Stepwise::cleanup
63+
*/
64+
public function testCleanupDeleteOldestFileIssue197()
65+
{
66+
$fileList = $this->getFileMockList(
67+
[
68+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-13 19:59:00')],
69+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-13 19:58:00')],
70+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-13 19:55:00')],
71+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-13 19:54:00')],
72+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-13 19:53:00')],
73+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-13 19:48:00')],
74+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-13 03:00:00')],
75+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-12 03:00:00')],
76+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-11 03:00:00')],
77+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-10 03:00:00')],
78+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-09 03:00:00')],
79+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-08 03:00:00')],
80+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-07 03:00:00')],
81+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-06 03:00:00')],
82+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-05 03:00:00')],
83+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-04 03:00:00')],
84+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-03 03:00:00')],
85+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-02 03:00:00')],
86+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-08-01 03:00:00')],
87+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-31 03:00:00')],
88+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-30 03:00:00')],
89+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-29 03:00:00')],
90+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-28 03:00:00')],
91+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-27 03:00:00')],
92+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-26 03:00:00')],
93+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-25 03:00:00')],
94+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-24 03:00:00')],
95+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-22 03:00:00')],
96+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-07-06 03:00:00')],
97+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-06-27 03:00:00')],
98+
['size' => 100, 'shouldBeDeleted' => false, 'mTime' => strtotime('2019-05-10 03:00:00')],
99+
['size' => 100, 'shouldBeDeleted' => true, 'mTime' => strtotime('2019-05-09 03:00:00')],
100+
]
101+
);
102+
$resultStub = $this->createMock(Result::class);
103+
$collectorStub = $this->createMock(Local::class);
104+
$targetStub = $this->createMock(Target::class);
105+
106+
$collectorStub->method('getBackupFiles')->willReturn($fileList);
107+
108+
$cleaner = new Stepwise(strtotime('2019-08-13 20:00:00'));
109+
$cleaner->setup(
110+
[
111+
'daysToKeepAll' => '10',
112+
'daysToKeepDaily' => '10',
113+
'weeksToKeepWeekly' => '1',
114+
'monthToKeepMonthly' => '1',
115+
'yearsToKeepYearly' => '1',
116+
]
117+
);
118+
119+
$cleaner->cleanup($targetStub, $collectorStub, $resultStub);
120+
}
121+
101122
/**
102123
* Tests Stepwise::cleanup
103124
*/
@@ -113,9 +134,9 @@ public function testCleanupInvalidRange()
113134
]
114135
]
115136
);
116-
$resultStub = $this->createMock(\phpbu\App\Result::class);
117-
$collectorStub = $this->createMock(\phpbu\App\Backup\Collector\Local::class);
118-
$targetStub = $this->createMock(\phpbu\App\Backup\Target::class);
137+
$resultStub = $this->createMock(Result::class);
138+
$collectorStub = $this->createMock(Local::class);
139+
$targetStub = $this->createMock(Target::class);
119140

120141
$collectorStub->expects($this->once())->method('getBackupFiles')->willReturn($fileList);
121142

0 commit comments

Comments
 (0)