From 49656ff0d9b9e0686a0bbd3382d314207e638669 Mon Sep 17 00:00:00 2001
From: Philipp Scheit
Date: Tue, 31 Mar 2015 15:59:32 +0200
Subject: [PATCH] adjust Quoting in Gulp Test for windows and use the symfony
escapeArgument for correct escaping on windows
---
src/Common/ExecCommand.php | 2 +-
src/Task/Gulp/Base.php | 3 +-
tests/unit/GulpTest.php | 73 ++++++++++++++++++++++++++------------
3 files changed, 54 insertions(+), 24 deletions(-)
diff --git a/src/Common/ExecCommand.php b/src/Common/ExecCommand.php
index cba913a94..9a4937fac 100644
--- a/src/Common/ExecCommand.php
+++ b/src/Common/ExecCommand.php
@@ -71,6 +71,6 @@ protected function executeCommand($command)
}
$this->stopTimer();
- return new Result($this, $process->getExitCode(), $process->getOutput(), ['time' => $this->getExecutionTime()]);
+ return new Result($this, $process->getExitCode(), $process->getOutput(), ['time' => $this->getExecutionTime()]);
}
}
\ No newline at end of file
diff --git a/src/Task/Gulp/Base.php b/src/Task/Gulp/Base.php
index 59b76644c..a9ff97ad2 100644
--- a/src/Task/Gulp/Base.php
+++ b/src/Task/Gulp/Base.php
@@ -4,6 +4,7 @@
use Robo\Task\BaseTask;
use Robo\Exception\TaskException;
+use Symfony\Component\Process\ProcessUtils;
abstract class Base extends BaseTask
{
@@ -73,6 +74,6 @@ public function __construct($task, $pathToGulp = null)
public function getCommand()
{
- return "{$this->command} " . escapeshellarg($this->task) . "{$this->arguments}";
+ return "{$this->command} " . ProcessUtils::escapeArgument($this->task) . "{$this->arguments}";
}
}
\ No newline at end of file
diff --git a/tests/unit/GulpTest.php b/tests/unit/GulpTest.php
index e34065bca..60cfb3e26 100644
--- a/tests/unit/GulpTest.php
+++ b/tests/unit/GulpTest.php
@@ -16,42 +16,71 @@ protected function _before()
'getOutput' => new \Symfony\Component\Console\Output\NullOutput()
]);
}
+
// tests
public function testGulpRun()
{
- verify(
- $this->taskGulpRun('default','gulp')->getCommand()
- )->equals('gulp \'default\'');
-
- verify(
- $this->taskGulpRun('another','gulp')->getCommand()
- )->equals('gulp \'another\'');
+ $isWindows = defined('PHP_WINDOWS_VERSION_MAJOR');
+
+ if ($isWindows) {
+ verify(
+ $this->taskGulpRun('default','gulp')->getCommand()
+ )->equals('gulp "default"');
+
+ verify(
+ $this->taskGulpRun('another','gulp')->getCommand()
+ )->equals('gulp "another"');
+
+ verify(
+ $this->taskGulpRun('anotherWith weired!("\') Chars','gulp')->getCommand()
+ )->equals('gulp "anotherWith weired!(\"\') Chars"');
- verify(
- $this->taskGulpRun('anotherWith wired!("\') Chars','gulp')->getCommand()
- )->equals("gulp 'anotherWith wired!(\"'\\'') Chars'");
+ verify(
+ $this->taskGulpRun('default','gulp')->silent()->getCommand()
+ )->equals('gulp "default" --silent');
+ verify(
+ $this->taskGulpRun('default','gulp')->noColor()->getCommand()
+ )->equals('gulp "default" --no-color');
- verify(
- $this->taskGulpRun('default','gulp')->silent()->getCommand()
- )->equals('gulp \'default\' --silent');
+ verify(
+ $this->taskGulpRun('default','gulp')->color()->getCommand()
+ )->equals('gulp "default" --color');
- verify(
- $this->taskGulpRun('default','gulp')->noColor()->getCommand()
- )->equals('gulp \'default\' --no-color');
+ verify(
+ $this->taskGulpRun('default','gulp')->simple()->getCommand()
+ )->equals('gulp "default" --tasks-simple');
- verify(
- $this->taskGulpRun('default','gulp')->color()->getCommand()
- )->equals('gulp \'default\' --color');
+ } else {
- verify(
- $this->taskGulpRun('default','gulp')->simple()->getCommand()
- )->equals('gulp \'default\' --tasks-simple');
+ verify(
+ $this->taskGulpRun('default','gulp')->getCommand()
+ )->equals('gulp \'default\'');
+
+ verify(
+ $this->taskGulpRun('another','gulp')->getCommand()
+ )->equals('gulp \'another\'');
+ verify(
+ $this->taskGulpRun('anotherWith weired!("\') Chars','gulp')->getCommand()
+ )->equals("gulp 'anotherWith weired!(\"'\\'') Chars'");
+ verify(
+ $this->taskGulpRun('default','gulp')->silent()->getCommand()
+ )->equals('gulp \'default\' --silent');
+ verify(
+ $this->taskGulpRun('default','gulp')->noColor()->getCommand()
+ )->equals('gulp \'default\' --no-color');
+ verify(
+ $this->taskGulpRun('default','gulp')->color()->getCommand()
+ )->equals('gulp \'default\' --color');
+ verify(
+ $this->taskGulpRun('default','gulp')->simple()->getCommand()
+ )->equals('gulp \'default\' --tasks-simple');
+ }
}
}
\ No newline at end of file