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: /**
36: * Buffered messages.
37: *
38: * @var array
39: */
40: protected $_out = [];
41:
42: /**
43: * Write output to the buffer.
44: *
45: * @param string|array $message A string or an array of strings to output
46: * @param int $newlines Number of newlines to append
47: * @return void
48: */
49: public function write($message, $newlines = 1)
50: {
51: foreach ((array)$message as $line) {
52: $this->_out[] = $line;
53: }
54:
55: $newlines--;
56: while ($newlines > 0) {
57: $this->_out[] = '';
58: $newlines--;
59: }
60: }
61:
62: /**
63: * Get the buffered output.
64: *
65: * @return array
66: */
67: public function messages()
68: {
69: return $this->_out;
70: }
71: }
72: