Code Duplication    Length = 84-85 lines in 2 locations

Process/DescRunner/PlatformSpecificDescRunner.php 1 location

@@ 9-92 (lines=84) @@
6
use RMiller\BehatSpec\Extension\PhpSpecExtension\Process\CommandRunner;
7
use RMiller\BehatSpec\Extension\PhpSpecExtension\Process\DescRunner;
8
9
class PlatformSpecificDescRunner implements DescRunner
10
{
11
    const COMMAND_NAME = 'desc';
12
13
    /**
14
     * @var string
15
     */
16
    private $phpspecPath;
17
18
    /**
19
     * @var string
20
     */
21
    private $phpspecConfig;
22
23
    /**
24
     * @var CommandRunner
25
     */
26
    private $commandRunner;
27
28
    /**
29
     * @var CachingExecutableFinder
30
     */
31
    private $executableFinder;
32
33
    /**
34
     * @param CommandRunner $commandRunner
35
     * @param CachingExecutableFinder $executableFinder
36
     * @param string $phpspecPath
37
     */
38
    public function __construct(
39
        CommandRunner $commandRunner,
40
        CachingExecutableFinder $executableFinder,
41
        $phpspecPath,
42
        $phpspecConfig
43
    ) {
44
        $this->commandRunner = $commandRunner;
45
        $this->executableFinder = $executableFinder;
46
        $this->phpspecPath = $phpspecPath;
47
        $this->phpspecConfig = $phpspecConfig;
48
    }
49
50
    /**
51
     * @return boolean
52
     */
53
    public function isSupported()
54
    {
55
        return $this->commandRunner->isSupported();
56
    }
57
58
    public function runDescCommand($className)
59
    {
60
        $this->commandRunner->runCommand(
61
            $this->executableFinder->getExecutablePath(),
62
            $this->getCommandArguments($className)
63
        );
64
    }
65
66
    /**
67
     * @param $className
68
     *
69
     * @return array
70
     */
71
    private function getCommandArguments($className)
72
    {
73
        $commandArguments = [$this->phpspecPath, self::COMMAND_NAME];
74
        $commandArguments = array_merge($commandArguments, $this->composeConfigOption());
75
        array_push($commandArguments, $className);
76
77
        return $commandArguments;
78
    }
79
80
    /**
81
     * @return array
82
     */
83
    private function composeConfigOption()
84
    {
85
        $configOption = [];
86
        if (!is_null($this->phpspecConfig)) {
87
            array_push($configOption, '--config', $this->phpspecConfig);
88
        }
89
90
        return $configOption;
91
    }
92
}
93

Process/ExemplifyRunner/PlatformSpecificExemplifyRunner.php 1 location

@@ 9-93 (lines=85) @@
6
use RMiller\BehatSpec\Extension\PhpSpecExtension\Process\CommandRunner;
7
use RMiller\BehatSpec\Extension\PhpSpecExtension\Process\ExemplifyRunner;
8
9
class PlatformSpecificExemplifyRunner implements ExemplifyRunner
10
{
11
    const COMMAND_NAME = 'exemplify';
12
13
    /**
14
     * @var string
15
     */
16
    private $phpspecPath;
17
18
    /**
19
     * @var string
20
     */
21
    private $phpspecConfig;
22
23
    /**
24
     * @var CommandRunner
25
     */
26
    private $commandRunner;
27
28
    /**
29
     * @var CachingExecutableFinder
30
     */
31
    private $executableFinder;
32
33
    /**
34
     * @param CommandRunner $commandRunner
35
     * @param CachingExecutableFinder $executableFinder
36
     * @param string $phpspecPath
37
     */
38
    public function __construct(
39
        CommandRunner $commandRunner,
40
        CachingExecutableFinder $executableFinder,
41
        $phpspecPath,
42
        $phpspecConfig
43
    ) {
44
        $this->commandRunner = $commandRunner;
45
        $this->executableFinder = $executableFinder;
46
        $this->phpspecPath = $phpspecPath;
47
        $this->phpspecConfig = $phpspecConfig;
48
    }
49
50
    /**
51
     * @return boolean
52
     */
53
    public function isSupported()
54
    {
55
        return $this->commandRunner->isSupported();
56
    }
57
58
    public function runExemplifyCommand($className, $methodName)
59
    {
60
        $this->commandRunner->runCommand(
61
            $this->executableFinder->getExecutablePath(),
62
            $this->getCommandArguments($className, $methodName)
63
        );
64
    }
65
66
    /**
67
     * @param $className
68
     * @param $methodName
69
     *
70
     * @return array
71
     */
72
    private function getCommandArguments($className, $methodName)
73
    {
74
        $commandArguments = [$this->phpspecPath, self::COMMAND_NAME];
75
        $commandArguments = array_merge($commandArguments, $this->composeConfigOption());
76
        array_push($commandArguments, $className, $methodName);
77
78
        return $commandArguments;
79
    }
80
81
    /**
82
     * @return array
83
     */
84
    private function composeConfigOption()
85
    {
86
        $configOption = [];
87
        if (!is_null($this->phpspecConfig)) {
88
            array_push($configOption, '--config', $this->phpspecConfig);
89
        }
90
91
        return $configOption;
92
    }
93
}
94