Browse Source

Fix regression of arrays to be passed for output.

mscherer 8 years ago
parent
commit
c2559a7406
2 changed files with 46 additions and 4 deletions
  1. 32 4
      src/Console/Shell.php
  2. 14 0
      tests/TestCase/Console/ShellTest.php

+ 32 - 4
src/Console/Shell.php

@@ -665,7 +665,14 @@ class Shell
      */
     public function err($message = null, $newlines = 1)
     {
-        return $this->_io->err('<error>' . $message . '</error>', $newlines);
+        if (is_array($message)) {
+            foreach ($message as $k => $v) {
+                $message[$k] = '<error>' . $v . '</error>';
+            }
+        } else {
+            $message = '<error>' . $message . '</error>';
+        }
+        return $this->_io->err($message, $newlines);
     }
 
     /**
@@ -679,7 +686,14 @@ class Shell
      */
     public function info($message = null, $newlines = 1, $level = Shell::NORMAL)
     {
-        return $this->out('<info>' . $message . '</info>', $newlines, $level);
+        if (is_array($message)) {
+            foreach ($message as $k => $v) {
+                $message[$k] = '<info>' . $v . '</info>';
+            }
+        } else {
+            $message = '<info>' . $message . '</info>';
+        }
+        return $this->out($message, $newlines, $level);
     }
 
     /**
@@ -692,7 +706,14 @@ class Shell
      */
     public function warn($message = null, $newlines = 1)
     {
-        return $this->_io->err('<warning>' . $message . '</warning>', $newlines);
+        if (is_array($message)) {
+            foreach ($message as $k => $v) {
+                $message[$k] = '<warning>' . $v . '</warning>';
+            }
+        } else {
+            $message = '<warning>' . $message . '</warning>';
+        }
+        return $this->_io->err($message, $newlines);
     }
 
     /**
@@ -706,7 +727,14 @@ class Shell
      */
     public function success($message = null, $newlines = 1, $level = Shell::NORMAL)
     {
-        return $this->out('<success>' . $message . '</success>', $newlines, $level);
+        if (is_array($message)) {
+            foreach ($message as $k => $v) {
+                $message[$k] = '<success>' . $v . '</success>';
+            }
+        } else {
+            $message = '<success>' . $message . '</success>';
+        }
+        return $this->out($message, $newlines, $level);
     }
 
     /**

+ 14 - 0
tests/TestCase/Console/ShellTest.php

@@ -310,6 +310,20 @@ class ShellTest extends TestCase
     }
 
     /**
+     * testErr method with array
+     *
+     * @return void
+     */
+    public function testErrArray()
+    {
+        $this->io->expects($this->once())
+            ->method('err')
+            ->with(['<error>Just</error>', '<error>a</error>', '<error>test</error>'], 1);
+
+        $this->Shell->err(['Just', 'a', 'test']);
+    }
+
+    /**
      * testInfo method
      *
      * @return void