Commit 386b63b4 by Alexander Makarov

Merge branch 'master' into codeception-test-adjustments

Conflicts: .travis.yml
parents 7eb403bf cc1247f3
...@@ -47,8 +47,13 @@ before_script: ...@@ -47,8 +47,13 @@ before_script:
script: script:
- vendor/bin/phpunit --verbose --coverage-clover=coverage.clover --exclude-group mssql,oci,wincache,xcache,zenddata - vendor/bin/phpunit --verbose --coverage-clover=coverage.clover --exclude-group mssql,oci,wincache,xcache,zenddata
- cd apps/basic/tests && php ../vendor/bin/codecept run - |
- cd ../../advanced/tests && ../vendor/bin/codecept run if (php --version | grep -i HipHop > /dev/null); then
echo "skipping application tests on HHVM"
else
cd apps/basic/tests && php ../vendor/bin/codecept run
cd ../../advanced/tests && ../vendor/bin/codecept run
fi
after_script: after_script:
- cd ../../.. - cd ../../..
......
...@@ -23,17 +23,17 @@ class ClassmapController extends Controller ...@@ -23,17 +23,17 @@ class ClassmapController extends Controller
/** /**
* Creates a class map for the core Yii classes. * Creates a class map for the core Yii classes.
* @param string $root the root path of Yii framework. Defaults to YII_PATH. * @param string $root the root path of Yii framework. Defaults to YII2_PATH.
* @param string $mapFile the file to contain the class map. Defaults to YII_PATH . '/classes.php'. * @param string $mapFile the file to contain the class map. Defaults to YII2_PATH . '/classes.php'.
*/ */
public function actionCreate($root = null, $mapFile = null) public function actionCreate($root = null, $mapFile = null)
{ {
if ($root === null) { if ($root === null) {
$root = YII_PATH; $root = YII2_PATH;
} }
$root = FileHelper::normalizePath($root); $root = FileHelper::normalizePath($root);
if ($mapFile === null) { if ($mapFile === null) {
$mapFile = YII_PATH . '/classes.php'; $mapFile = YII2_PATH . '/classes.php';
} }
$options = [ $options = [
'filter' => function ($path) { 'filter' => function ($path) {
...@@ -60,7 +60,7 @@ class ClassmapController extends Controller ...@@ -60,7 +60,7 @@ class ClassmapController extends Controller
throw new Exception("Something wrong: $file\n"); throw new Exception("Something wrong: $file\n");
} }
$path = str_replace('\\', '/', substr($file, strlen($root))); $path = str_replace('\\', '/', substr($file, strlen($root)));
$map[$path] = " 'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII_PATH . '$path',"; $map[$path] = " 'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII2_PATH . '$path',";
} }
ksort($map); ksort($map);
$map = implode("\n", $map); $map = implode("\n", $map);
......
...@@ -37,7 +37,7 @@ class PhpDocController extends Controller ...@@ -37,7 +37,7 @@ class PhpDocController extends Controller
* *
* See https://github.com/yiisoft/yii2/wiki/Core-framework-code-style#documentation for details. * See https://github.com/yiisoft/yii2/wiki/Core-framework-code-style#documentation for details.
* *
* @param string $root the directory to parse files from. Defaults to YII_PATH. * @param string $root the directory to parse files from. Defaults to YII2_PATH.
*/ */
public function actionProperty($root = null) public function actionProperty($root = null)
{ {
...@@ -68,7 +68,7 @@ class PhpDocController extends Controller ...@@ -68,7 +68,7 @@ class PhpDocController extends Controller
/** /**
* Fix some issues with PHPdoc in files * Fix some issues with PHPdoc in files
* *
* @param string $root the directory to parse files from. Defaults to YII_PATH. * @param string $root the directory to parse files from. Defaults to YII2_PATH.
*/ */
public function actionFix($root = null) public function actionFix($root = null)
{ {
...@@ -112,7 +112,7 @@ class PhpDocController extends Controller ...@@ -112,7 +112,7 @@ class PhpDocController extends Controller
{ {
$except = []; $except = [];
if ($root === null) { if ($root === null) {
$root = dirname(YII_PATH); $root = dirname(YII2_PATH);
$extensionPath = "$root/extensions"; $extensionPath = "$root/extensions";
foreach (scandir($extensionPath) as $extension) { foreach (scandir($extensionPath) as $extension) {
if (ctype_alpha($extension) && is_dir($extensionPath . '/' . $extension)) { if (ctype_alpha($extension) && is_dir($extensionPath . '/' . $extension)) {
......
...@@ -79,7 +79,7 @@ class ReleaseController extends Controller ...@@ -79,7 +79,7 @@ class ReleaseController extends Controller
protected function getChangelogs() protected function getChangelogs()
{ {
return array_merge([YII_PATH . '/CHANGELOG.md'], glob(dirname(YII_PATH) . '/extensions/*/CHANGELOG.md')); return array_merge([YII2_PATH . '/CHANGELOG.md'], glob(dirname(YII2_PATH) . '/extensions/*/CHANGELOG.md'));
} }
protected function composerSetStability($version) protected function composerSetStability($version)
...@@ -99,9 +99,9 @@ class ReleaseController extends Controller ...@@ -99,9 +99,9 @@ class ReleaseController extends Controller
'/"minimum-stability": "(.+?)",/', '/"minimum-stability": "(.+?)",/',
'"minimum-stability": "' . $stability . '",', '"minimum-stability": "' . $stability . '",',
[ [
dirname(YII_PATH) . '/apps/advanced/composer.json', dirname(YII2_PATH) . '/apps/advanced/composer.json',
dirname(YII_PATH) . '/apps/basic/composer.json', dirname(YII2_PATH) . '/apps/basic/composer.json',
dirname(YII_PATH) . '/apps/benchmark/composer.json', dirname(YII2_PATH) . '/apps/benchmark/composer.json',
] ]
); );
} }
...@@ -111,7 +111,7 @@ class ReleaseController extends Controller ...@@ -111,7 +111,7 @@ class ReleaseController extends Controller
$this->sed( $this->sed(
'/function getVersion\(\)\n \{\n return \'(.+?)\';/', '/function getVersion\(\)\n \{\n return \'(.+?)\';/',
"function getVersion()\n {\n return '$version';", "function getVersion()\n {\n return '$version';",
YII_PATH . '/BaseYii.php'); YII2_PATH . '/BaseYii.php');
} }
protected function sed($pattern, $replace, $files) protected function sed($pattern, $replace, $files)
......
...@@ -103,7 +103,9 @@ Configuring Web Servers <a name="configuring-web-servers"></a> ...@@ -103,7 +103,9 @@ Configuring Web Servers <a name="configuring-web-servers"></a>
The application installed according to the above instructions should work out of box with either The application installed according to the above instructions should work out of box with either
an [Apache HTTP server](http://httpd.apache.org/) or an [Nginx HTTP server](http://nginx.org/), on an [Apache HTTP server](http://httpd.apache.org/) or an [Nginx HTTP server](http://nginx.org/), on
Windows, Mac OS X, or Linux. Windows, Mac OS X, or Linux running PHP 5.4 or higher. Yii 2.0 is also compatible the facebooks
[HHVM](http://hhvm.com/) however there are some edge cases where HHVM behaves different than native
PHP so you have to take some extra care when using HHVM.
On a production server, you may want to configure your Web server so that the application can be accessed On a production server, you may want to configure your Web server so that the application can be accessed
via the URL `http://www.example.com/index.php` instead of `http://www.example.com/basic/web/index.php`. Such configuration via the URL `http://www.example.com/index.php` instead of `http://www.example.com/basic/web/index.php`. Such configuration
......
...@@ -121,7 +121,7 @@ class BaseDoc extends Object ...@@ -121,7 +121,7 @@ class BaseDoc extends Object
// //
// public function getSourceCode() // public function getSourceCode()
// { // {
// $lines = file(YII_PATH . $this->sourcePath); // $lines = file(YII2_PATH . $this->sourcePath);
// return implode("", array_slice($lines, $this->startLine - 1, $this->endLine - $this->startLine + 1)); // return implode("", array_slice($lines, $this->startLine - 1, $this->endLine - $this->startLine + 1));
// } // }
......
...@@ -20,7 +20,7 @@ defined('YII_BEGIN_TIME') or define('YII_BEGIN_TIME', microtime(true)); ...@@ -20,7 +20,7 @@ defined('YII_BEGIN_TIME') or define('YII_BEGIN_TIME', microtime(true));
/** /**
* This constant defines the framework installation directory. * This constant defines the framework installation directory.
*/ */
defined('YII_PATH') or define('YII_PATH', __DIR__); defined('YII2_PATH') or define('YII2_PATH', __DIR__);
/** /**
* This constant defines whether the application should be in debug mode or not. Defaults to false. * This constant defines whether the application should be in debug mode or not. Defaults to false.
*/ */
......
...@@ -180,6 +180,7 @@ Yii Framework 2 Change Log ...@@ -180,6 +180,7 @@ Yii Framework 2 Change Log
- Enh #4602: Added $key param in ActionColumn buttons Closure call (disem) - Enh #4602: Added $key param in ActionColumn buttons Closure call (disem)
- Enh #4607: AR model will throw an exception if it does not have a primary key to avoid updating/deleting data massively (qiangxue) - Enh #4607: AR model will throw an exception if it does not have a primary key to avoid updating/deleting data massively (qiangxue)
- Enh #4630: Added automatic generating of unique slug value to `yii\behaviors\Sluggable` (klimov-paul) - Enh #4630: Added automatic generating of unique slug value to `yii\behaviors\Sluggable` (klimov-paul)
- Enh #4636: Added `yii\web\Response::setDownloadHeaders()` (pawzar)
- Enh #4644: Added `\yii\db\Schema::createColumnSchema()` to be able to customize column schema used (mcd-php) - Enh #4644: Added `\yii\db\Schema::createColumnSchema()` to be able to customize column schema used (mcd-php)
- Enh #4656: HtmlPurifier helper config can now be a closure to change the purifier config object after it was created (Alex-Code) - Enh #4656: HtmlPurifier helper config can now be a closure to change the purifier config object after it was created (Alex-Code)
- Enh #4691: Encoding on `ActiveForm` and `ActiveField` validation errors is now configurable (Alex-Code) - Enh #4691: Encoding on `ActiveForm` and `ActiveField` validation errors is now configurable (Alex-Code)
...@@ -228,6 +229,7 @@ Yii Framework 2 Change Log ...@@ -228,6 +229,7 @@ Yii Framework 2 Change Log
- Chg #4310: Removed `$data` from signature of `yii\rbac\ManagerInterface` (samdark) - Chg #4310: Removed `$data` from signature of `yii\rbac\ManagerInterface` (samdark)
- Chg #4318: `yii\helpers\Html::ul()` and `ol()` will return an empty list tag if an empty item array is given (qiangxue) - Chg #4318: `yii\helpers\Html::ul()` and `ol()` will return an empty list tag if an empty item array is given (qiangxue)
- Chg #4331: `yii\helpers\Url` now uses `UrlManager` to determine base URL when generating URLs (qiangxue) - Chg #4331: `yii\helpers\Url` now uses `UrlManager` to determine base URL when generating URLs (qiangxue)
- Chg #4501: Renamed the constant `YII_PATH` to `YII2_PATH` (qiangxue)
- Chg #4586: Signed bigint and unsigned int will be converted into integers when they are loaded from DB by AR (qiangxue) - Chg #4586: Signed bigint and unsigned int will be converted into integers when they are loaded from DB by AR (qiangxue)
- Chg #4591: `yii\helpers\Url::to()` will no longer prefix relative URLs with the base URL (qiangxue) - Chg #4591: `yii\helpers\Url::to()` will no longer prefix relative URLs with the base URL (qiangxue)
- Chg #4595: `yii\widgets\LinkPager`'s `nextPageLabel`, `prevPageLabel`, `firstPageLabel`, `lastPageLabel` are now taking `false` instead of `null` for "no label" (samdark) - Chg #4595: `yii\widgets\LinkPager`'s `nextPageLabel`, `prevPageLabel`, `firstPageLabel`, `lastPageLabel` are now taking `false` instead of `null` for "no label" (samdark)
......
...@@ -78,6 +78,8 @@ Upgrade from Yii 2.0 Beta ...@@ -78,6 +78,8 @@ Upgrade from Yii 2.0 Beta
`new \yii\caching\TagDependency(['tags' => 'TagName'])`, where `TagName` is similar to the group name that you `new \yii\caching\TagDependency(['tags' => 'TagName'])`, where `TagName` is similar to the group name that you
previously used. previously used.
* If you are using the constant `YII_PATH` in your code, you should rename it to `YII2_PATH` now.
* You must explicitly configure `yii\web\Request::cookieValidationKey` with a secret key. Previously this is done automatically. * You must explicitly configure `yii\web\Request::cookieValidationKey` with a secret key. Previously this is done automatically.
To do so, modify your application configuration like the following: To do so, modify your application configuration like the following:
......
{
"name": "yii2",
"version": "2.0.0",
"homepage": "http://www.yiiframework.com/",
"authors": [
"Qiang Xue <qiang.xue@gmail.com>",
"Alexander Makarov <sam@rmcreative.ru>",
"Carsten Brandt <mail@cebe.cc>",
"Paul Klimov <klimov.paul@gmail.com>"
],
"description": "Yii PHP Framework Version 2",
"keywords": [
"yii2",
"framework"
],
"license": "BSD-3-Clause",
"main": [
"assets/yii.js",
"assets/yii.validation.js",
"assets/yii.activeForm.js",
"assets/yii.captcha.js",
"assets/yii.gridView.js"
],
"ignore": [
"**/.*",
"**/*",
"!assets/",
"!LICENSE.md"
],
"dependencies": {
"jquery.inputmask": ">=3.0.0",
"punycode": ">=1.3.0"
}
}
...@@ -249,7 +249,7 @@ class Formatter extends \yii\base\Formatter ...@@ -249,7 +249,7 @@ class Formatter extends \yii\base\Formatter
/** /**
* Formats the value as a decimal number. * Formats the value as a decimal number.
* @param mixed $value the value to be formatted * @param mixed $value the value to be formatted
* @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#_details) * @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#details)
* for details on how to specify a format. * for details on how to specify a format.
* @return string the formatted result. * @return string the formatted result.
*/ */
...@@ -267,7 +267,7 @@ class Formatter extends \yii\base\Formatter ...@@ -267,7 +267,7 @@ class Formatter extends \yii\base\Formatter
* @param mixed $value the value to be formatted * @param mixed $value the value to be formatted
* @param string $currency the 3-letter ISO 4217 currency code indicating the currency to use. * @param string $currency the 3-letter ISO 4217 currency code indicating the currency to use.
* If null, [[currencyCode]] will be used. * If null, [[currencyCode]] will be used.
* @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#_details) * @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#details)
* for details on how to specify a format. * for details on how to specify a format.
* @return string the formatted result. * @return string the formatted result.
*/ */
...@@ -287,7 +287,7 @@ class Formatter extends \yii\base\Formatter ...@@ -287,7 +287,7 @@ class Formatter extends \yii\base\Formatter
/** /**
* Formats the value as a percent number. * Formats the value as a percent number.
* @param mixed $value the value to be formatted * @param mixed $value the value to be formatted
* @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#_details) * @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#details)
* for details on how to specify a format. * for details on how to specify a format.
* @return string the formatted result. * @return string the formatted result.
*/ */
...@@ -303,7 +303,7 @@ class Formatter extends \yii\base\Formatter ...@@ -303,7 +303,7 @@ class Formatter extends \yii\base\Formatter
/** /**
* Formats the value as a scientific number. * Formats the value as a scientific number.
* @param mixed $value the value to be formatted * @param mixed $value the value to be formatted
* @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#_details) * @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#details)
* for details on how to specify a format. * for details on how to specify a format.
* @return string the formatted result. * @return string the formatted result.
*/ */
...@@ -319,7 +319,7 @@ class Formatter extends \yii\base\Formatter ...@@ -319,7 +319,7 @@ class Formatter extends \yii\base\Formatter
/** /**
* Creates a number formatter based on the given type and format. * Creates a number formatter based on the given type and format.
* @param integer $type the type of the number formatter * @param integer $type the type of the number formatter
* @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#_details) * @param string $format the format to be used. Please refer to [ICU manual](http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#details)
* @return NumberFormatter the created formatter instance * @return NumberFormatter the created formatter instance
*/ */
protected function createNumberFormatter($type, $format) protected function createNumberFormatter($type, $format)
......
...@@ -141,7 +141,7 @@ class Logger extends Component ...@@ -141,7 +141,7 @@ class Logger extends Component
$ts = debug_backtrace(); $ts = debug_backtrace();
array_pop($ts); // remove the last trace since it would be the entry script, not very useful array_pop($ts); // remove the last trace since it would be the entry script, not very useful
foreach ($ts as $trace) { foreach ($ts as $trace) {
if (isset($trace['file'], $trace['line']) && strpos($trace['file'], YII_PATH) !== 0) { if (isset($trace['file'], $trace['line']) && strpos($trace['file'], YII2_PATH) !== 0) {
unset($trace['object'], $trace['args']); unset($trace['object'], $trace['args']);
$traces[] = $trace; $traces[] = $trace;
if (++$count >= $this->traceLevel) { if (++$count >= $this->traceLevel) {
......
...@@ -23,6 +23,9 @@ use yii\helpers\VarDumper; ...@@ -23,6 +23,9 @@ use yii\helpers\VarDumper;
* (for example, the authorization data for a personal blog system). * (for example, the authorization data for a personal blog system).
* Use [[DbManager]] for more complex authorization data. * Use [[DbManager]] for more complex authorization data.
* *
* Note that PhpManager is not compatible with facebooks [HHVM](http://hhvm.com/) because
* it relies on writing php files and including them afterwards which is not supported by HHVM.
*
* @author Qiang Xue <qiang.xue@gmail.com> * @author Qiang Xue <qiang.xue@gmail.com>
* @author Alexander Kochetov <creocoder@gmail.com> * @author Alexander Kochetov <creocoder@gmail.com>
* @author Christophe Boulain <christophe.boulain@gmail.com> * @author Christophe Boulain <christophe.boulain@gmail.com>
......
...@@ -278,7 +278,7 @@ class ErrorHandler extends \yii\base\ErrorHandler ...@@ -278,7 +278,7 @@ class ErrorHandler extends \yii\base\ErrorHandler
*/ */
public function isCoreFile($file) public function isCoreFile($file)
{ {
return $file === null || strpos(realpath($file), YII_PATH . DIRECTORY_SEPARATOR) === 0; return $file === null || strpos(realpath($file), YII2_PATH . DIRECTORY_SEPARATOR) === 0;
} }
/** /**
......
...@@ -455,24 +455,19 @@ class Response extends \yii\base\Response ...@@ -455,24 +455,19 @@ class Response extends \yii\base\Response
public function sendContentAsFile($content, $attachmentName, $mimeType = 'application/octet-stream') public function sendContentAsFile($content, $attachmentName, $mimeType = 'application/octet-stream')
{ {
$headers = $this->getHeaders(); $headers = $this->getHeaders();
$contentLength = StringHelper::byteLength($content); $contentLength = StringHelper::byteLength($content);
$range = $this->getHttpRange($contentLength); $range = $this->getHttpRange($contentLength);
if ($range === false) { if ($range === false) {
$headers->set('Content-Range', "bytes */$contentLength"); $headers->set('Content-Range', "bytes */$contentLength");
throw new HttpException(416, 'Requested range not satisfiable'); throw new HttpException(416, 'Requested range not satisfiable');
} }
$headers->setDefault('Pragma', 'public') $this->setDownloadHeaders($attachmentName, $mimeType, $contentLength);
->setDefault('Accept-Ranges', 'bytes')
->setDefault('Expires', '0')
->setDefault('Content-Type', $mimeType)
->setDefault('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
->setDefault('Content-Transfer-Encoding', 'binary')
->setDefault('Content-Length', StringHelper::byteLength($content))
->setDefault('Content-Disposition', "attachment; filename=\"$attachmentName\"");
list($begin, $end) = $range; list($begin, $end) = $range;
if ($begin !=0 || $end != $contentLength - 1) { if ($begin != 0 || $end != $contentLength - 1) {
$this->setStatusCode(206); $this->setStatusCode(206);
$headers->set('Content-Range', "bytes $begin-$end/$contentLength"); $headers->set('Content-Range', "bytes $begin-$end/$contentLength");
$this->content = StringHelper::byteSubstr($content, $begin, $end - $begin + 1); $this->content = StringHelper::byteSubstr($content, $begin, $end - $begin + 1);
...@@ -511,25 +506,46 @@ class Response extends \yii\base\Response ...@@ -511,25 +506,46 @@ class Response extends \yii\base\Response
} }
list($begin, $end) = $range; list($begin, $end) = $range;
if ($begin !=0 || $end != $fileSize - 1) { if ($begin != 0 || $end != $fileSize - 1) {
$this->setStatusCode(206); $this->setStatusCode(206);
$headers->set('Content-Range', "bytes $begin-$end/$fileSize"); $headers->set('Content-Range', "bytes $begin-$end/$fileSize");
} else { } else {
$this->setStatusCode(200); $this->setStatusCode(200);
} }
$length = $end - $begin + 1; $this->setDownloadHeaders($attachmentName, $mimeType, $end - $begin + 1);
$this->format = self::FORMAT_RAW;
$this->stream = [$handle, $begin, $end];
return $this;
}
/**
* Sets a default set of HTTP headers for file downloading purpose.
* @param string $attachmentName the attachment file name
* @param string $mimeType the MIME type for the response. If null, `Content-Type` header will NOT be set.
* @param integer $contentLength the byte length of the file being downloaded. If null, `Content-Length` header will NOT be set.
* @return static the response object itself
*/
public function setDownloadHeaders($attachmentName, $mimeType = null, $contentLength = null)
{
$headers = $this->getHeaders();
$headers->setDefault('Pragma', 'public') $headers->setDefault('Pragma', 'public')
->setDefault('Accept-Ranges', 'bytes') ->setDefault('Accept-Ranges', 'bytes')
->setDefault('Expires', '0') ->setDefault('Expires', '0')
->setDefault('Content-Type', $mimeType)
->setDefault('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') ->setDefault('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
->setDefault('Content-Transfer-Encoding', 'binary') ->setDefault('Content-Transfer-Encoding', 'binary')
->setDefault('Content-Length', $length)
->setDefault('Content-Disposition', "attachment; filename=\"$attachmentName\""); ->setDefault('Content-Disposition', "attachment; filename=\"$attachmentName\"");
$this->format = self::FORMAT_RAW;
$this->stream = [$handle, $begin, $end]; if ($mimeType !== null) {
$headers->setDefault('Content-Type', $mimeType);
}
if ($contentLength !== null) {
$headers->setDefault('Content-Length', $contentLength);
}
return $this; return $this;
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# #
# install CUBRID DBMS # install CUBRID DBMS
if (php --version | grep -i HHVM > /dev/null); then if (php --version | grep -i HipHop > /dev/null); then
echo "Skipping CUBRID on HHVM" echo "Skipping CUBRID on HHVM"
exit 0 exit 0
fi fi
......
#!/bin/sh #!/bin/sh
if (php --version | grep -i HHVM > /dev/null); then if (php --version | grep -i HipHop > /dev/null); then
echo "skipping application init on HHVM" echo "skipping application init on HHVM"
else else
......
#!/bin/sh #!/bin/sh
if (php --version | grep -i HHVM > /dev/null); then if (php --version | grep -i HipHop > /dev/null); then
echo "skipping memcache on HHVM" echo "skipping memcache on HHVM"
else else
mkdir -p ~/.phpenv/versions/$(phpenv version-name)/etc mkdir -p ~/.phpenv/versions/$(phpenv version-name)/etc
......
#!/bin/sh #!/bin/sh
if (php --version | grep -i HHVM > /dev/null); then if (php --version | grep -i HipHop > /dev/null); then
echo "skipping application setup on HHVM" echo "skipping application setup on HHVM"
else else
......
...@@ -26,7 +26,7 @@ class BaseYiiTest extends TestCase ...@@ -26,7 +26,7 @@ class BaseYiiTest extends TestCase
public function testAlias() public function testAlias()
{ {
$this->assertEquals(YII_PATH, Yii::getAlias('@yii')); $this->assertEquals(YII2_PATH, Yii::getAlias('@yii'));
Yii::$aliases = []; Yii::$aliases = [];
$this->assertFalse(Yii::getAlias('@yii', false)); $this->assertFalse(Yii::getAlias('@yii', false));
......
...@@ -265,7 +265,10 @@ class FormatterTest extends TestCase ...@@ -265,7 +265,10 @@ class FormatterTest extends TestCase
$this->assertSame('12 years ago', $this->formatter->asRelativeTime($interval_12_years)); $this->assertSame('12 years ago', $this->formatter->asRelativeTime($interval_12_years));
// Pass a DateInterval string // Pass a DateInterval string
if (!defined('HHVM_VERSION')) {
// TODO format not supported by HHVM currently https://github.com/facebook/hhvm/issues/2952
$this->assertSame('a year ago', $this->formatter->asRelativeTime('2007-03-01T13:00:00Z/2008-05-11T15:30:00Z')); $this->assertSame('a year ago', $this->formatter->asRelativeTime('2007-03-01T13:00:00Z/2008-05-11T15:30:00Z'));
}
$this->assertSame('a year ago', $this->formatter->asRelativeTime('2007-03-01T13:00:00Z/P1Y2M10DT2H30M')); $this->assertSame('a year ago', $this->formatter->asRelativeTime('2007-03-01T13:00:00Z/P1Y2M10DT2H30M'));
$this->assertSame('a year ago', $this->formatter->asRelativeTime('P1Y2M10DT2H30M/2008-05-11T15:30:00Z')); $this->assertSame('a year ago', $this->formatter->asRelativeTime('P1Y2M10DT2H30M/2008-05-11T15:30:00Z'));
$this->assertSame('a year ago', $this->formatter->asRelativeTime('P1Y2M10DT2H30M')); $this->assertSame('a year ago', $this->formatter->asRelativeTime('P1Y2M10DT2H30M'));
...@@ -324,7 +327,10 @@ class FormatterTest extends TestCase ...@@ -324,7 +327,10 @@ class FormatterTest extends TestCase
$this->assertSame('in 12 years', $this->formatter->asRelativeTime($interval_12_years)); $this->assertSame('in 12 years', $this->formatter->asRelativeTime($interval_12_years));
// Pass a inverted DateInterval string // Pass a inverted DateInterval string
if (!defined('HHVM_VERSION')) {
// TODO format not supported by HHVM currently https://github.com/facebook/hhvm/issues/2952
$this->assertSame('in a year', $this->formatter->asRelativeTime('2008-05-11T15:30:00Z/2007-03-01T13:00:00Z')); $this->assertSame('in a year', $this->formatter->asRelativeTime('2008-05-11T15:30:00Z/2007-03-01T13:00:00Z'));
}
// Force the reference time and pass a future DateTime // Force the reference time and pass a future DateTime
$dateNow = new DateTime('2014-03-13'); $dateNow = new DateTime('2014-03-13');
......
...@@ -17,6 +17,11 @@ class POMessageControllerTest extends BaseMessageControllerTest ...@@ -17,6 +17,11 @@ class POMessageControllerTest extends BaseMessageControllerTest
public function setUp() public function setUp()
{ {
parent::setUp(); parent::setUp();
if (defined('HHVM_VERSION')) {
$this->markTestSkipped('POMessageControllerTest can not run on HHVM because it relies on saving and re-including PHP files which is not supported by HHVM.');
}
$this->messagePath = Yii::getAlias('@yiiunit/runtime/test_messages'); $this->messagePath = Yii::getAlias('@yiiunit/runtime/test_messages');
FileHelper::createDirectory($this->messagePath, 0777); FileHelper::createDirectory($this->messagePath, 0777);
} }
......
...@@ -188,7 +188,7 @@ class CommandTest extends DatabaseTestCase ...@@ -188,7 +188,7 @@ class CommandTest extends DatabaseTestCase
$this->assertEquals($blobCol, stream_get_contents($row['blob_col'])); $this->assertEquals($blobCol, stream_get_contents($row['blob_col']));
} }
$this->assertEquals($numericCol, $row['numeric_col']); $this->assertEquals($numericCol, $row['numeric_col']);
if ($this->driverName === 'mysql') { if ($this->driverName === 'mysql' || defined('HHVM_VERSION') && $this->driverName === 'sqlite') {
$this->assertEquals($boolCol, (int)$row['bool_col']); $this->assertEquals($boolCol, (int)$row['bool_col']);
} else { } else {
$this->assertEquals($boolCol, $row['bool_col']); $this->assertEquals($boolCol, $row['bool_col']);
......
...@@ -47,12 +47,19 @@ class FormatterTest extends TestCase ...@@ -47,12 +47,19 @@ class FormatterTest extends TestCase
$value = '123456'; $value = '123456';
$this->assertSame("123,456", $this->formatter->asDecimal($value)); $this->assertSame("123,456", $this->formatter->asDecimal($value));
$value = '-123456.123'; $value = '-123456.123';
if (defined('HHVM_VERSION')) { // the default format is different on HHVM
$this->assertSame("-123,456", $this->formatter->asDecimal($value));
} else {
$this->assertSame("-123,456.123", $this->formatter->asDecimal($value)); $this->assertSame("-123,456.123", $this->formatter->asDecimal($value));
}
$this->assertSame($this->formatter->nullDisplay, $this->formatter->asDecimal(null)); $this->assertSame($this->formatter->nullDisplay, $this->formatter->asDecimal(null));
} }
public function testAsPercent() public function testAsPercent()
{ {
if (defined('HHVM_VERSION')) { // the default format is different on HHVM
$this->markTestSkipped('HHVM behaves quite different in the default patterns used for formatting.');
}
$value = '123'; $value = '123';
$this->assertSame('12,300%', $this->formatter->asPercent($value)); $this->assertSame('12,300%', $this->formatter->asPercent($value));
$value = '0.1234'; $value = '0.1234';
...@@ -64,6 +71,9 @@ class FormatterTest extends TestCase ...@@ -64,6 +71,9 @@ class FormatterTest extends TestCase
public function testAsScientific() public function testAsScientific()
{ {
if (defined('HHVM_VERSION')) { // the default format is different on HHVM
$this->markTestSkipped('HHVM behaves quite different in the default patterns used for formatting.');
}
$value = '123'; $value = '123';
$this->assertSame('1.23E2', $this->formatter->asScientific($value)); $this->assertSame('1.23E2', $this->formatter->asScientific($value));
$value = '123456'; $value = '123456';
......
...@@ -384,6 +384,10 @@ class Message extends BaseMessage ...@@ -384,6 +384,10 @@ class Message extends BaseMessage
public function toString() public function toString()
{ {
return var_export($this, true); $mailer = $this->mailer;
$this->mailer = null;
$s = var_export($this, true);
$this->mailer = $mailer;
return $s;
} }
} }
...@@ -72,6 +72,11 @@ class PhpManagerTest extends ManagerTestCase ...@@ -72,6 +72,11 @@ class PhpManagerTest extends ManagerTestCase
static::$filemtime = null; static::$filemtime = null;
static::$time = null; static::$time = null;
parent::setUp(); parent::setUp();
if (defined('HHVM_VERSION')) {
$this->markTestSkipped('PhpManager is not compatible with HHVM.');
}
$this->mockApplication(); $this->mockApplication();
$this->removeDataFiles(); $this->removeDataFiles();
$this->auth = $this->createManager(); $this->auth = $this->createManager();
......
* *
!.gitignore !.gitignore
!/coveralls/.gitkeep
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment