1<?php 2 3require_once DOKU_INC.'lib/exe/css.php'; 4 5class css_at_import_less_test extends DokuWikiTest { 6 7 protected $file = ''; 8 protected $import = ''; 9 10 public function setUpFiles($subdir = '') { 11 12 $dir = TMP_DIR . $subdir; 13 if (!is_dir($dir)) { 14 mkdir($dir, 0777, true); 15 } 16 if (!is_dir($dir)) { 17 $this->markTestSkipped('Could not create directory.'); 18 } 19 20 $this->file = tempnam($dir, 'css'); 21 22 $import = ''; 23 do { 24 if ($import) unlink($import); 25 $import = tempnam($dir, 'less'); 26 $ok = rename($import, $import.'.less'); 27 } while (!$ok); 28 29 $this->import = $import.'.less'; 30 } 31 32 private function csstest($input, $expected_css, $expected_less) { 33 $location = "http://test.com/"; 34 io_saveFile($this->file, $input); 35 $css = css_loadfile($this->file, $location); 36 $less = css_parseless($css); 37 $this->assertEquals($expected_css, $css); 38 $this->assertEquals($expected_less, $less); 39 } 40 41 // make relative 42 private function importPath($path) { 43 return isWindows() ? preg_replace('#(^.*[\\\\])#','', $path) : preg_replace('#(^.*[/])#','', $path); 44 } 45 46 public function test_basic() { 47 $this->setUpFiles(); 48 49 $import = $this->importPath($this->import); 50 $in_css = '@import "'.$import.'";'; 51 $in_less = '@foo: "bar"; 52content: @foo;'; 53 54 $expected_css = '@import "/'.$import.'";'; 55 $expected_less = 'content: "bar";'; 56 57 io_saveFile($this->import, $in_less); 58 $this->csstest($in_css, $expected_css, $expected_less); 59 } 60 61 public function test_subdirectory() { 62 $this->setUpFiles('/foo/bar'); 63 64 $import = $this->importPath($this->import); 65 $in_css = '@import "'.$import.'";'; 66 $in_less = '@foo: "bar"; 67content: @foo;'; 68 69 $expected_css = isWindows() ? '@import "\\foo\\bar/'.$import.'";' : '@import "/foo/bar/'.$import.'";'; 70 $expected_less = 'content: "bar";'; 71 72 io_saveFile($this->import, $in_less); 73 $this->csstest($in_css, $expected_css, $expected_less); 74 } 75 76 public function tearDown() { 77 unlink($this->file); 78 unlink($this->import); 79 unset($this->file, $this->import); 80 } 81} 82 83//Setup VIM: ex: et ts=4 sw=4 : 84