summaryrefslogtreecommitdiff
path: root/framework/prado-cli.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/prado-cli.php')
-rwxr-xr-xframework/prado-cli.php94
1 files changed, 87 insertions, 7 deletions
diff --git a/framework/prado-cli.php b/framework/prado-cli.php
index f8ce826c..1a0e5498 100755
--- a/framework/prado-cli.php
+++ b/framework/prado-cli.php
@@ -10,12 +10,16 @@ if(!isset($_SERVER['argv']))
//command line options.
$options['create'] = array('c:', 'create=', '<directory>', 'create a new project <directory>');
+$options['tests'] = array('t', 'create-tests', '', 'create unit and function test fixtures');
+
$console = new ConsoleOptions($options, $_SERVER['argv']);
if($console->hasOptions())
{
if($dir = $console->getOption('create'))
create_new_prado_project($dir);
+ if($console->getOption('tests'))
+ create_test_fixtures($dir);
}
else
{
@@ -51,32 +55,106 @@ function create_new_prado_project($dir)
$htaccessFile = $protectedPath.'/.htaccess';
$defaultPageFile = $pagesPath.'/Home.page';
+ $tests = $basePath.'/tests';
+ $unit_tests = $tests.'/unit';
+ $functional_tests = $tests.'/functional';
+
create_directory($basePath, 0755);
create_directory($assetPath,0777);
create_directory($protectedPath,0755);
create_directory($runtimePath,0777);
create_directory($pagesPath,0755);
+
+ create_directory($tests,0755);
+ create_directory($unit_tests,0755);
+ create_directory($functional_tests,0755);
+
+ create_file($indexFile, render_index_file());
+ create_file($htaccessFile, render_htaccess_file());
+ create_file($defaultPageFile, render_default_page());
+}
+
+function create_test_fixtures($dir)
+{
+ if(strlen(trim($dir)) == 0)
+ return;
- file_put_contents($indexFile, render_index_file());
- file_put_contents($htaccessFile, render_htaccess_file());
- file_put_contents($defaultPageFile, render_default_page());
+ $rootPath = realpath(dirname(trim($dir)));
+ $basePath = $rootPath.'/'.basename($dir);
+
+ $tests = $basePath.'/tests';
+ $unit_tests = $tests.'/unit';
+ $functional_tests = $tests.'/functional';
+
+ create_directory($tests,0755);
+ create_directory($unit_tests,0755);
+ create_directory($functional_tests,0755);
+
+ $unit_test_index = $tests.'/unit.php';
+ $functional_test_index = $tests.'/functional.php';
+
+ create_file($unit_test_index, render_unit_test_fixture());
+ create_file($functional_test_index, render_functional_test_fixture());
+}
+
+function render_unit_test_fixture()
+{
+ $tester = realpath(dirname(__FILE__).'/../tests/test_tools/unit_tests.php');
+return '<?php
+
+include_once \''.$tester.'\';
+
+$app_directory = "../protected";
+$test_cases = dirname(__FILE__)."/unit";
+
+$tester = new PradoUnitTester($test_cases, $app_directory);
+$tester->run(new HtmlReporter());
+
+?>';
+}
+
+function render_functional_test_fixture()
+{
+ $tester = realpath(dirname(__FILE__).'/../tests/test_tools/functional_tests.php');
+return '<?php
+
+include_once \''.$tester.'\';
+
+$test_cases = dirname(__FILE__)."/functional";
+
+$tester=new PradoFunctionalTester($test_cases);
+$tester->run(new SimpleReporter());
+
+?>';
}
function create_directory($dir, $mask)
{
if(!is_dir($dir))
+ {
mkdir($dir);
+ echo "creating $dir\n";
+ }
if(is_dir($dir))
chmod($dir, $mask);
}
+function create_file($filename, $content)
+{
+ if(!is_file($filename))
+ {
+ file_put_contents($filename, $content);
+ echo "creating $filename\n";
+ }
+}
+
function render_index_file()
{
$framework = realpath(dirname(__FILE__)).'/prado.php';
return '<?php
$basePath=dirname(__FILE__);
-$frameworkPath="'.$framework.'";
+$frameworkPath=\''.$framework.'\';
$assetsPath=$basePath."/assets";
$runtimePath=$basePath."/protected/runtime";
@@ -214,6 +292,7 @@ class ConsoleOptions
{
if(is_null($this->_values))
$this->_values = $this->getNamedOptions();
+
return isset($this->_values[$name]) ? $this->_values[$name] : null;
}
@@ -248,9 +327,10 @@ class ConsoleOptions
{
foreach($this->_options as $name => $option)
{
- if(strpos($option[0],$value[0]) !== false
- || strpos($option[1], $value[0]) !== false)
- $options[$name] = $value[1];
+ $short = str_replace(':', '', $option[0]);
+ $long = str_replace('=', '', $option[1]);
+ if($short == $value[0] || $long == $value[0])
+ $options[$name] = is_null($value[1]) ? true : $value[1];
}
}
return $options;