File tree Expand file tree Collapse file tree 2 files changed +78
-0
lines changed Expand file tree Collapse file tree 2 files changed +78
-0
lines changed Original file line number Diff line number Diff line change
1
+ <?php declare (strict_types=1 );
2
+
3
+ namespace Kiboko \Component \PHPUnitExtension ;
4
+
5
+ use Kiboko \Contract \Pipeline \PipelineRunnerInterface ;
6
+ use org \bovigo \vfs \vfsStream ;
7
+ use org \bovigo \vfs \vfsStreamDirectory ;
8
+ use PHPUnit \Framework \TestCase ;
9
+
10
+ abstract class BuilderTestCase extends TestCase
11
+ {
12
+ private ?vfsStreamDirectory $ fs = null ;
13
+
14
+ protected function setUp (): void
15
+ {
16
+ $ this ->fs = vfsStream::setup ();
17
+ }
18
+
19
+ protected function tearDown (): void
20
+ {
21
+ $ this ->fs = null ;
22
+ }
23
+
24
+ protected function getBuilderCompilePath (): string
25
+ {
26
+ return $ this ->fs ->url ();
27
+ }
28
+
29
+ public function pipelineRunner (): PipelineRunnerInterface
30
+ {
31
+ return new PipelineRunner ();
32
+ }
33
+ }
Original file line number Diff line number Diff line change
1
+ <?php declare (strict_types=1 );
2
+
3
+ namespace Kiboko \Component \PHPUnitExtension ;
4
+
5
+ use Kiboko \Contract \Bucket \AcceptanceResultBucketInterface ;
6
+ use Kiboko \Contract \Bucket \RejectionResultBucketInterface ;
7
+ use Kiboko \Contract \Pipeline \PipelineRunnerInterface ;
8
+ use Kiboko \Contract \Pipeline \RejectionInterface ;
9
+ use Kiboko \Contract \Pipeline \StateInterface ;
10
+
11
+ final class PipelineRunner implements PipelineRunnerInterface
12
+ {
13
+ public function run (
14
+ \Iterator $ source ,
15
+ \Generator $ async ,
16
+ RejectionInterface $ rejection ,
17
+ StateInterface $ state ,
18
+ ): \Iterator {
19
+ $ state ->initialize ();
20
+ $ rejection ->initialize ();
21
+
22
+ $ source ->rewind ();
23
+ $ async ->rewind ();
24
+
25
+ while ($ source ->valid () && $ async ->valid ()) {
26
+ $ bucket = $ async ->send ($ source ->current ());
27
+
28
+ if ($ bucket instanceof RejectionResultBucketInterface) {
29
+ foreach ($ bucket ->walkRejection () as $ line ) {
30
+ $ rejection ->reject ($ line );
31
+ $ state ->reject ();
32
+ }
33
+ }
34
+ if ($ bucket instanceof AcceptanceResultBucketInterface) {
35
+ yield from $ bucket ->walkAcceptance ();
36
+ $ state ->accept ();
37
+ }
38
+
39
+ $ source ->next ();
40
+ }
41
+
42
+ $ rejection ->teardown ();
43
+ $ state ->teardown ();
44
+ }
45
+ }
You can’t perform that action at this time.
0 commit comments