From 36499e5533b78cdd4bd706720ffcd7e4ae4d6168 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sat, 30 May 2015 21:31:14 +0200 Subject: [PATCH] windows robo support --- README.md | 15 +++++++++++++++ RoboFile.php | 40 ++++++++++++++++++++++++++++++++-------- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 89ae170..320bc2d 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,18 @@ $ composer install $ vendor/bin/robo $ vendor/bin/robo test:acceptance ``` + + +For Windows: +Create a symbolic link from your tests\joomla-cms3 to a subfolder of your web server. For example, I'm creating a link between the tests folder of my weblinks folder and the tests folder of my web server: +mklink /J C:\wamp\www\tests\joomla-cms3 C:\Users\Nicolas\Documents\GitHub\weblinks\tests\joomla-cms3 + +Go in the folder of weblinks, for example: +cd C:\Users\Nicolas\Documents\GitHub\weblinks + +Then, run the command: +composer update + +That will add all the dependencies for the testing of weblinks +You can then run the command: +vendor\bin\robo.bat test:acceptance diff --git a/RoboFile.php b/RoboFile.php index 75754ba..05316f2 100644 --- a/RoboFile.php +++ b/RoboFile.php @@ -15,7 +15,14 @@ class RoboFile extends \Robo\Tasks // load tasks from composer, see composer.json use \joomla_projects\robo\loadTasks; - + + private $extension = ''; + + public function setExecExtension(){ + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $this->extension = '.exe'; + } + } /** * Executes Selenium System Tests in your machine * @@ -25,41 +32,58 @@ class RoboFile extends \Robo\Tasks */ public function testAcceptance($seleniumPath = null) { + + $this->setExecExtension(); + // Get Joomla Clean Testing sites if (is_dir('tests/joomla-cms3')) { $this->taskDeleteDir('tests/joomla-cms3')->run(); } - $this->_exec('git clone -b staging --single-branch --depth 1 https://github.com/joomla/joomla-cms.git tests/joomla-cms3'); + $this->_exec('git'.$this->extension.' clone -b staging --single-branch --depth 1 https://github.com/joomla/joomla-cms.git tests/joomla-cms3'); $this->say('Joomla CMS site created at tests/joomla-cms3'); if (!$seleniumPath) { if (!file_exists('selenium-server-standalone.jar')) { $this->say('Downloading Selenium Server, this may take a while.'); - $this->taskExec('wget') + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $this->_exec('curl.exe -sS http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone-2.45.0.jar > selenium-server-standalone.jar'); + }else{ + $this->taskExec('wget') ->arg('http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone-2.45.0.jar') ->arg('-O selenium-server-standalone.jar') ->printed(false) ->run(); + } } $seleniumPath = 'selenium-server-standalone.jar'; } + if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') { + $seleniumPath = "java -jar $seleniumPath >> selenium.log 2>&1 &"; + }else{ + $seleniumPath = "START java.exe -jar .\\" . $seleniumPath; + } // Make sure we have Composer if (!file_exists('./composer.phar')) { - $this->_exec('curl -sS https://getcomposer.org/installer | php'); + $this->_exec('curl'.$this->extension.' -sS https://getcomposer.org/installer | php'); } $this->taskComposerUpdate()->run(); // Running Selenium server - $this->_exec("java -jar $seleniumPath >> selenium.log 2>&1 &"); - - $this->taskWaitForSeleniumStandaloneServer() + $this->_exec($seleniumPath); + + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + sleep(10); + }else{ + $this->taskWaitForSeleniumStandaloneServer() ->run() ->stopOnFail(); + } + // Loading Symfony Command and running with passed argument - $this->_exec('php vendor/bin/codecept build'); + $this->_exec('php'.$this->extension.' vendor/bin/codecept build'); $this->taskCodecept() ->suite('acceptance')