function setUp()
 {
     $this->_prev_env = $_ENV;
     $_ENV = array();
     self::$counter = 0;
     $packages_dir = lmb_var_dir() . 'core_packages_test/';
     if (!file_exists($packages_dir)) {
         mkdir($packages_dir);
     }
     lmb_env_set('LIMB_PACKAGES_DIR', $packages_dir);
 }
 function testGetFilesLocator_CacheConditions()
 {
     $old_mode = lmb_env_get('LIMB_APP_MODE');
     $old_var_dir = lmb_env_get('LIMB_VAR_DIR');
     lmb_env_set('LIMB_APP_MODE', 'devel');
     lmb_env_remove('LIMB_VAR_DIR');
     $this->assertIsA($this->tools->getFileLocator('foo', 'locator1'), 'lmbFileLocator');
     lmb_env_set('LIMB_VAR_DIR', $old_var_dir);
     $this->assertIsA($this->tools->getFileLocator('foo', 'locator2'), 'lmbFileLocator');
     lmb_env_set('LIMB_APP_MODE', 'production');
     $this->assertIsA($this->tools->getFileLocator('foo', 'locator3'), 'lmbCachingFileLocator');
     lmb_env_set('LIMB_APP_MODE', $old_mode);
 }
 function testOnceRender()
 {
     $root = lmb_env_get('LIMB_VAR_DIR') . '/www/';
     lmb_env_set('LIMB_DOCUMENT_ROOT', $root);
     lmbFs::safeWrite($root . 'style/main.css', 'body {background-url: url("../images/one.jpg");}');
     lmbFs::safeWrite($root . 'images/one.jpg', 'simple content');
     $template = '{{css_compiled src="style/main.css" dir="media/css" /}}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     $content = $page->render();
     $src = $this->toolkit->addVersionToUrl('media/css/style-main.css');
     $this->assertEqual('<link rel="stylesheet" type="text/css" href="' . $src . '" />', $content);
     $compiled_file = $root . 'media/css/style-main.css';
     $src = $this->toolkit->addVersionToUrl('images/one.jpg');
     $this->assertEqual('body {background-url: url(' . $src . ');}', file_get_contents($compiled_file));
 }
 function testGzipStatic()
 {
     if (!function_exists('gzencode')) {
         return print "Skip: function gzencode not exists.\n";
     }
     lmb_env_set('LIMB_DOCUMENT_ROOT', lmb_env_get('LIMB_VAR_DIR') . '/www/');
     lmbFs::safeWrite(lmb_env_get('LIMB_VAR_DIR') . '/www/one.js', 'var window = {};');
     $doc_root = lmb_env_get('LIMB_DOCUMENT_ROOT');
     $template = '{{file:version src="one.js" gzip_static_dir="media/var/gz" gzip_level="9" }}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     $content = $page->render();
     $file = 'media/var/gz/one.js';
     $this->assertEqual($content, $this->toolkit->addVersionToUrl($file, false));
     $this->assertEqual('var window = {};', file_get_contents($doc_root . $file));
     $gz_file = $doc_root . $file . '.gz';
     $this->assertTrue(file_exists($gz_file));
     $this->assertEqual(gzencode('var window = {};', 9, FORCE_DEFLATE), file_get_contents($gz_file));
 }
示例#5
0
function lmb_tests_init_db_dsn()
{
    lmb_env_set('LIMB_CACHE_DB_META_IN_FILE', false);
    if (lmbToolkit::instance()->isDefaultDbDSNAvailable()) {
        $dsn = lmbToolkit::instance()->getDefaultDbDSN();
        static $reported_about;
        if (is_null($reported_about) || $reported_about != $dsn) {
            $pass = $dsn->_getUri()->getPassword();
            $masked_dsn = str_replace($pass, str_pad('*', strlen($pass), '*'), $dsn->toString());
            echo "INFO: Using database '{$masked_dsn}'\n";
            $reported_about = $dsn;
        }
    } else {
        $default_value = 'sqlite://localhost/' . lmb_var_dir() . '/sqlite_tests.db';
        $dsn = lmb_env_get('LIMB_TEST_DB_DSN', $default_value);
        lmbToolkit::instance()->setDefaultDbDSN($dsn);
        echo "INFO: Using default test database '{$dsn}'\n";
    }
}
 function testNotFoundFile()
 {
     lmb_env_set('LIMB_DOCUMENT_ROOT', lmb_env_get('LIMB_VAR_DIR'));
     $template = '{{js:require_once src="js/main.js" }}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     try {
         $page->render();
         $this->assertTrue(false);
     } catch (lmbException $e) {
         $this->assertTrue(true);
     }
     $template = '{{js:require_once src="js/main.js" safe="true" }}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     try {
         $page->render();
         $this->assertTrue(true);
     } catch (lmbException $e) {
         $this->assertTrue(false);
     }
 }
 function testNotFoundFile()
 {
     $root = lmb_env_get('LIMB_VAR_DIR') . '/www';
     lmb_env_set('LIMB_DOCUMENT_ROOT', $root);
     lmbFs::rm($root);
     $template = '{{js_combined dir="media/"}}{{js_once src="js/main.js" }}{{/js_combined}}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     try {
         $page->render();
         $this->assertTrue(false);
     } catch (lmbException $e) {
         $this->assertTrue(true);
     }
     lmbFs::safeWrite($root . '/js/blog.js', 'function blog() {};');
     $template = '{{js_combined dir="media"}}{{js_once src="js/main.js" safe="true" }}{{js_once src="js/blog.js" }}{{/js_combined}}';
     $page = $this->_createMacroTemplate($template, 'tpl.html');
     $page->render();
     $file = array_shift(lmbFs::ls($root . '/media/'));
     $js_content = "/* include main.js - NOT FOUND */\n\n/* include blog.js */\nfunction blog() {};";
     $this->assertEqual(file_get_contents($root . '/media/' . $file), $js_content);
 }
 function testToUrlWithHttpOffset()
 {
     $old_offset = lmb_env_get('LIMB_HTTP_OFFSET_PATH');
     $config = array('blog' => array('path' => '/blog', 'defaults' => array('controller' => 'Blog', 'action' => 'display')));
     $routes = new lmbRoutes($config);
     lmb_env_set('LIMB_HTTP_OFFSET_PATH', 'app');
     $this->assertEqual($routes->toUrl(array(), 'blog'), '/app/blog');
     lmb_env_set('LIMB_HTTP_OFFSET_PATH', $old_offset);
 }
示例#9
0
<?php

set_include_path(dirname(__FILE__) . '/../../../../');
$test = null;
if (isset($argv[1])) {
    $test = $argv[1];
}
$mark = microtime(true);
$counter = 0;
require_once 'limb/core/common.inc.php';
lmb_env_set('LIMB_VAR_DIR', dirname(__FILE__) . '/../../../var/');
lmb_env_set('LIMB_CACHE_DB_META_IN_FILE', true);
require_once 'limb/active_record/common.inc.php';
echo "active record common includes: " . (microtime(true) - $mark) . "\n";
$db = LIMB_VAR_DIR . '/benchdb';
if ($native_db = sqlite_open($db)) {
    @sqlite_query($native_db, "DROP TABLE foo");
    sqlite_query($native_db, 'CREATE TABLE foo (id INTEGER PRIMARY KEY, bar VARCHAR(10))');
    for ($i = 0; $i < 30; $i++) {
        sqlite_query($native_db, "INSERT INTO foo VALUES (null, 'some value{$i}')");
    }
} else {
    throw new Exception("Could not open sqlite db '{$db}'");
}
if (++$counter == $test || $test == null) {
    $mark = microtime(true);
    for ($i = 0; $i < 1000; $i++) {
        $query = sqlite_query($native_db, 'SELECT bar FROM foo');
        while ($entry = sqlite_fetch_array($query, SQLITE_ASSOC)) {
            $bar = $entry['bar'];
        }
示例#10
0
function lmb_app_mode($new_value = null)
{
    if ($new_value) {
        lmb_env_set('LIMB_APP_MODE', $new_value);
    } else {
        return lmb_env_get('LIMB_APP_MODE', LIMB_APP_PRODUCTION);
    }
}
 function testWithHTTPOffset()
 {
     $old_offset = lmb_env_get('LIMB_HTTP_OFFSET_PATH');
     $config = array(array('path' => '/blog', 'defaults' => array('controller' => 'Blog', 'action' => 'display')));
     $routes = new lmbRoutes($config);
     lmb_env_set('LIMB_HTTP_OFFSET_PATH', 'limb-app');
     $result = $routes->dispatch('/limb-app/blog');
     $this->assertEqual($result['controller'], 'Blog');
     $this->assertEqual($result['action'], 'display');
     lmb_env_set('LIMB_HTTP_OFFSET_PATH', $old_offset);
 }
 function testAddVersionToUrl_Safe()
 {
     $toolkit = lmbToolkit::merge(new lmbWebAppTools());
     lmb_env_set('LIMB_DOCUMENT_ROOT', null);
     try {
         $url = $toolkit->addVersionToUrl('js/main.js', true);
         $this->assertEqual($url, 'js/main.js?00');
         $this->assertTrue(true);
     } catch (lmbException $e) {
         $this->assertTrue(false);
     }
     lmb_env_set('LIMB_DOCUMENT_ROOT', lmb_env_get('LIMB_VAR_DIR') . '/www');
     lmbFs::rm(lmb_env_get('LIMB_DOCUMENT_ROOT') . '/js/main.js');
     try {
         $url = $toolkit->addVersionToUrl('js/main.js', true);
         $this->assertEqual('js/main.js?00', $url);
         $this->assertTrue(true);
     } catch (lmbException $e) {
         $this->assertTrue(false);
     }
 }
 function testDispatchWithOffset()
 {
     $old_offset = lmb_env_get('LIMB_HTTP_OFFSET_PATH');
     $config_array = array(array('path' => ':controller/:action'));
     $routes = new lmbRoutes($config_array);
     $this->toolkit->setRoutes($routes);
     $dispatcher = new lmbRoutesRequestDispatcher();
     lmb_env_set('LIMB_HTTP_OFFSET_PATH', 'app');
     $this->request->getUri()->reset('http://example.com/app/news/admin_display');
     $result = $dispatcher->dispatch($this->request);
     $this->assertEqual($result['controller'], 'news');
     $this->assertEqual($result['action'], 'admin_display');
     lmb_env_set('LIMB_HTTP_OFFSET_PATH', $old_offset);
 }
示例#14
0
 function testLmbVarDir_Set()
 {
     $old_value = lmb_env_get('LIMB_VAR_DIR');
     $new_value = $old_value . '/';
     lmb_var_dir($new_value);
     $this->assertIdentical($new_value, lmb_var_dir());
     lmb_env_set('LIMB_VAR_DIR', $old_value);
 }
示例#15
0
 function testGetDbInfo_cache_global_positive()
 {
     lmb_env_set('LIMB_CACHE_DB_META_IN_FILE', true);
     $conn = $this->tools->getDbConnectionByDsn('mysql://*****:*****@localhost/hello_from_foo?charset=cp1251&version=2');
     $this->assertIsA($this->tools->getDbInfo($conn), 'lmbDbCachedInfo');
 }
示例#16
0
function lmb_var_dir($value = null)
{
    if ($value) {
        lmb_env_set('LIMB_VAR_DIR', $value);
    } else {
        return lmb_env_get('LIMB_VAR_DIR');
    }
}
 function testLmbAppMode()
 {
     $old_value = lmb_env_get('LIMB_APP_MODE');
     lmb_env_set('LIMB_APP_MODE', LIMB_APP_PRODUCTION);
     $this->assertIdentical(LIMB_APP_PRODUCTION, lmb_app_mode());
     lmb_app_mode(LIMB_APP_DEVELOPMENT);
     $this->assertIdentical(LIMB_APP_DEVELOPMENT, lmb_app_mode());
     lmb_env_set('LIMB_APP_MODE', $old_value);
 }