Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 39 lines (35 sloc) 1.364 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
<?php
/**
* @package sapphire
* @subpackage tests
*
* Test the syntax of the PHP files with various settings
*/
class PhpSyntaxTest extends SapphireTest {
function testShortTagsOffWillWork() {
// Ignore this test completely if running the test suite on windows
// TODO: Make it work on all platforms, by building an alternative to find | grep.
$returnCode = 0;
$output = array();
exec("which find && which grep && which php", $output, $returnCode);
if($returnCode != 0) return;

$settingTests = array('short_open_tag=Off','short_open_tag=On -d asp_tags=On');

$files = $this->getAllFiles('php');
$files[] = BASE_PATH.'/sapphire/dev/install/config-form.html';

foreach($files as $i => $file) {
$CLI_file = escapeshellarg($file);
foreach($settingTests as $settingTest) {
$returnCode = 0;
$output = array();
exec("php -l -d $settingTest $CLI_file", $output, $returnCode);
$hasErrors = ($returnCode != 0 && strpos('No syntax errors detected', implode("\n", $output)) === FALSE);
$this->assertFalse($hasErrors, "Syntax error parsing $CLI_file with setting $settingTest:\n" . implode("\n", $output) . " (Returned: {$returnCode})");
}
}
}

function getAllFiles($ext = 'php') {
// TODO: Unix only
$CLI_regexp = escapeshellarg("\.$ext\$");
return explode("\n", trim(`find .. | grep $CLI_regexp`));
}
}
Something went wrong with that request. Please try again.