Code Duplication    Length = 30-31 lines in 2 locations

tests/integration/CollectionTest.php 2 locations

@@ 122-151 (lines=30) @@
119
        $this->assertFileExists('build/a/c/c.txt');
120
    }
121
122
    public function testRollbackAfterFailureViaACollectionBuilder()
123
    {
124
        // This is like the previous test, toRunMultipleTasksViaACollectionBuilder,
125
        // except we force an error at the end, and confirm that the
126
        // rollback function is called.
127
        $collection = $this->collectionBuilder();
128
        $result = $collection->taskFilesystemStack()
129
                ->mkdir('j')
130
                ->touch('j/j.txt')
131
            ->rollback(
132
                $this->taskDeleteDir('j')
133
            )
134
            ->taskFilesystemStack()
135
                ->mkdir('j/k')
136
                ->touch('j/k/k.txt')
137
            ->taskFilesystemStack()
138
                ->mkdir('j/k/m')
139
                ->touch('j/k/m/m.txt')
140
            ->taskCopyDir(['doesNotExist' => 'copied'])
141
            ->run();
142
143
        $this->assertEquals(1, $result->getExitCode(), $result->getMessage());
144
145
        // All of the tasks created by the builder should be added
146
        // to a collection, and `run()` should run them all.
147
        $this->assertFileNotExists('q/q.txt');
148
        $this->assertFileNotExists('j/j.txt');
149
        $this->assertFileNotExists('j/k/k.txt');
150
        $this->assertFileNotExists('j/k/m/m.txt');
151
    }
152
153
    public function testAbortRollbackOrCompletion()
154
    {
@@ 153-183 (lines=31) @@
150
        $this->assertFileNotExists('j/k/m/m.txt');
151
    }
152
153
    public function testAbortRollbackOrCompletion()
154
    {
155
        // This is like the previous test, except we throw a ForcedException()
156
        // inside the rollback to abort the rollback.
157
        $collection = $this->collectionBuilder();
158
        $result = $collection->taskFilesystemStack()
159
            ->mkdir('j')
160
            ->touch('j/j.txt')
161
            ->rollback(
162
                $this->taskDeleteDir('j')
163
            )
164
            ->rollbackCode(function () {
165
                throw new AbortTasksException('Aborting rollback.');
166
            })
167
            ->taskFilesystemStack()
168
            ->mkdir('j/k')
169
            ->touch('j/k/k.txt')
170
            ->taskFilesystemStack()
171
            ->mkdir('j/k/m')
172
            ->touch('j/k/m/m.txt')
173
            ->taskCopyDir(['doesNotExist' => 'copied'])
174
            ->run();
175
176
        $this->assertEquals(1, $result->getExitCode(), $result->getMessage());
177
178
        // All of the tasks created by the builder should be added
179
        // to a collection, and `run()` should run them all.
180
        $this->assertFileExists('j/j.txt');
181
        $this->assertFileExists('j/k/k.txt');
182
        $this->assertFileExists('j/k/m/m.txt');
183
    }
184
185
    public function testRollbackAWorkingDir()
186
    {