1: <?php
2: /**
3: * CakePHP : Rapid Development Framework (https://cakephp.org)
4: * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
5: *
6: * Licensed under The MIT License
7: * For full copyright and license information, please see the LICENSE.txt
8: * Redistributions of files must retain the above copyright notice.
9: *
10: * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
11: * @link https://cakephp.org CakePHP Project
12: * @license https://opensource.org/licenses/mit-license.php MIT License
13: */
14: namespace Cake\TestSuite\Stub;
15:
16: use Cake\Console\ConsoleOutput as ConsoleOutputBase;
17:
18: /**
19: * StubOutput makes testing shell commands/shell helpers easier.
20: *
21: * You can use this class by injecting it into a ConsoleIo instance
22: * that your command/task/helper uses:
23: *
24: * ```
25: * use Cake\Console\ConsoleIo;
26: * use Cake\TestSuite\Stub\ConsoleOutput;
27: *
28: * $output = new ConsoleOutput();
29: * $io = new ConsoleIo($output);
30: * ```
31: */
32: class ConsoleOutput extends ConsoleOutputBase
33: {
34: /**
35: * Buffered messages.
36: *
37: * @var array
38: */
39: protected $_out = [];
40:
41: /**
42: * Write output to the buffer.
43: *
44: * @param string|string[] $message A string or an array of strings to output
45: * @param int $newlines Number of newlines to append
46: * @return void
47: */
48: public function write($message, $newlines = 1)
49: {
50: foreach ((array)$message as $line) {
51: $this->_out[] = $line;
52: }
53:
54: $newlines--;
55: while ($newlines > 0) {
56: $this->_out[] = '';
57: $newlines--;
58: }
59: }
60:
61: /**
62: * Get the buffered output.
63: *
64: * @return array
65: */
66: public function messages()
67: {
68: return $this->_out;
69: }
70: }
71: