diff --git a/.gitignore b/.gitignore index 29f0600..c730c7f 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,7 @@ vendor/* # Robo robo.phar +RoboFile.ini # Test related files tests/acceptance.suite.yml diff --git a/RoboFile.dist.ini b/RoboFile.dist.ini new file mode 100644 index 0000000..2980766 --- /dev/null +++ b/RoboFile.dist.ini @@ -0,0 +1 @@ +skipClone = true \ No newline at end of file diff --git a/RoboFile.php b/RoboFile.php index 02dfb6a..a104e85 100644 --- a/RoboFile.php +++ b/RoboFile.php @@ -17,6 +17,8 @@ class RoboFile extends \Robo\Tasks private $extension = ''; + private $configuration = array(); + /** * Set the Execute extension for Windows Operating System * @@ -40,6 +42,8 @@ class RoboFile extends \Robo\Tasks */ public function runTests($seleniumPath = null, $suite = 'acceptance') { + $this->configuration = $this->getConfiguration(); + $this->setExecExtension(); $this->createTestingSite(); @@ -160,6 +164,11 @@ class RoboFile extends \Robo\Tasks */ public function createTestingSite() { + if (!empty($this->configuration->skipClone)) { + $this->say('Reusing Joomla CMS site already present at tests/joomla-cms3'); + return; + } + // Get Joomla Clean Testing sites if (is_dir('tests/joomla-cms3')) { @@ -170,6 +179,29 @@ class RoboFile extends \Robo\Tasks $this->say('Joomla CMS site created at tests/joomla-cms3'); } + /** + * Get (optional) configuration from an external file + * + * @return \stdClass|null + */ + public function getConfiguration() + { + $configurationFile = __DIR__ . '/RoboFile.ini'; + + if (!file_exists($configurationFile)) { + $this->say("No local configuration file"); + return null; + } + + $configuration = parse_ini_file($configurationFile); + if ($configuration === false) { + $this->say('Local configuration file is empty or wrong (check is it in correct .ini format'); + return null; + } + + return json_decode(json_encode($configuration)); + } + /** * Runs Selenium Standalone Server. *