1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- require_once __DIR__ . "/../lessc.inc.php";
- // Runs all the tests in inputs/ and compares their output to ouputs/
- function _dump($value) {
- fwrite(STDOUT, print_r($value, true));
- }
- function _quote($str) {
- return preg_quote($str, "/");
- }
- class InputTest extends PHPUnit_Framework_TestCase {
- protected static $inputDir = "inputs";
- protected static $outputDir = "outputs";
- public function setUp() {
- $this->less = new lessc();
- $this->less->importDir = array(__DIR__ . "/" . self::$inputDir . "/test-imports");
- }
- /**
- * @dataProvider fileNameProvider
- */
- public function testInputFile($inFname) {
- if ($pattern = getenv("BUILD")) {
- return $this->buildInput($inFname);
- }
- $outFname = self::outputNameFor($inFname);
- if (!is_readable($outFname)) {
- $this->fail("$outFname is missing, ".
- "consider building tests with BUILD=true");
- }
- $input = file_get_contents($inFname);
- $output = file_get_contents($outFname);
- $this->assertEquals($output, $this->less->parse($input));
- }
- public function fileNameProvider() {
- return array_map(function($a) { return array($a); },
- self::findInputNames());
- }
- // only run when env is set
- public function buildInput($inFname) {
- $css = $this->less->parse(file_get_contents($inFname));
- file_put_contents(self::outputNameFor($inFname), $css);
- }
- static public function findInputNames($pattern="*.less") {
- $files = glob(__DIR__ . "/" . self::$inputDir . "/" . $pattern);
- return array_filter($files, "is_file");
- }
- static public function outputNameFor($input) {
- $front = _quote(__DIR__ . "/");
- $out = preg_replace("/^$front/", "", $input);
- $in = _quote(self::$inputDir . "/");
- $out = preg_replace("/$in/", self::$outputDir . "/", $out);
- $out = preg_replace("/.less$/", ".css", $out);
- return __DIR__ . "/" . $out;
- }
- }
|