1f8369d7dSTobias Sarnowski<?php 2f8369d7dSTobias Sarnowski 3f8369d7dSTobias Sarnowskirequire_once DOKU_INC.'lib/exe/css.php'; 4f8369d7dSTobias Sarnowski 5f8369d7dSTobias Sarnowskiclass css_css_loadfile_test extends DokuWikiTest { 65f598213SChristopher Smith 75f598213SChristopher Smith protected $file = ''; 85f598213SChristopher Smith 9*1c33cec3SAndreas Gohr public function setUp() : void { 105f598213SChristopher Smith $this->file = tempnam(TMP_DIR, 'css'); 11f8369d7dSTobias Sarnowski } 12f8369d7dSTobias Sarnowski 13f8369d7dSTobias Sarnowski private function csstest($input, $output = null, $location = 'http://www.example.com/') { 14f8369d7dSTobias Sarnowski io_saveFile($this->file, $input); 155f598213SChristopher Smith $this->assertEquals((is_null($output) ? $input : $output), css_loadfile($this->file, $location)); 16f8369d7dSTobias Sarnowski } 17f8369d7dSTobias Sarnowski 18f8369d7dSTobias Sarnowski public function test_url_relative() { 19f8369d7dSTobias Sarnowski $this->csstest('#test { background: url("test/test.png"); }', '#test { background: url("http://www.example.com/test/test.png"); }'); 20f8369d7dSTobias Sarnowski $this->csstest('#test { background: url(\'test/test.png\'); }', '#test { background: url(\'http://www.example.com/test/test.png\'); }'); 21f8369d7dSTobias Sarnowski } 22f8369d7dSTobias Sarnowski 23f8369d7dSTobias Sarnowski public function test_url_absolute() { 24f8369d7dSTobias Sarnowski $this->csstest('#test { background: url("/test/test.png"); }'); 25f8369d7dSTobias Sarnowski $this->csstest('#test { background: url(\'/test/test.png\'); }'); 26f8369d7dSTobias Sarnowski } 27f8369d7dSTobias Sarnowski 28f8369d7dSTobias Sarnowski public function test_url_with_protocol() { 29f8369d7dSTobias Sarnowski $this->csstest('#test { background: url("http://www.test.com/test/test.png"); }'); 30f8369d7dSTobias Sarnowski $this->csstest('#test { background: url("https://www.test.com/test/test.png"); }'); 31f8369d7dSTobias Sarnowski $this->csstest('#test { background: url(\'http://www.test.com/test/test.png\'); }'); 32f8369d7dSTobias Sarnowski $this->csstest('#test { background: url(\'https://www.test.com/test/test.png\'); }'); 33f8369d7dSTobias Sarnowski } 34f8369d7dSTobias Sarnowski 35f8369d7dSTobias Sarnowski public function test_import_relative() { 36f8369d7dSTobias Sarnowski $this->csstest('@import "test/test.png";', '@import "http://www.example.com/test/test.png";'); 37f8369d7dSTobias Sarnowski $this->csstest('@import \'test/test.png\';', '@import \'http://www.example.com/test/test.png\';'); 385f598213SChristopher Smith $this->csstest('@import url(test/test.png);', '@import url(http://www.example.com/test/test.png);'); 395f598213SChristopher Smith $this->csstest('@import url("test/test.png");', '@import url("http://www.example.com/test/test.png");'); 40f8369d7dSTobias Sarnowski } 41f8369d7dSTobias Sarnowski 42f8369d7dSTobias Sarnowski public function test_import_absolute() { 43f8369d7dSTobias Sarnowski $this->csstest('@import "/test/test.png";'); 44f8369d7dSTobias Sarnowski $this->csstest('@import \'/test/test.png\';'); 455f598213SChristopher Smith $this->csstest('@import url(/test/test.png);'); 465f598213SChristopher Smith $this->csstest('@import url("/test/test.png");'); 47f8369d7dSTobias Sarnowski } 48f8369d7dSTobias Sarnowski 49f8369d7dSTobias Sarnowski public function test_import_with_protocol() { 50f8369d7dSTobias Sarnowski $this->csstest('@import "http://www.test.com/test/test.png";'); 51f8369d7dSTobias Sarnowski $this->csstest('@import "https://www.test.com/test/test.png";'); 52f8369d7dSTobias Sarnowski $this->csstest('@import \'http://www.test.com/test/test.png\';'); 53f8369d7dSTobias Sarnowski $this->csstest('@import \'https://www.test.com/test/test.png\';'); 545f598213SChristopher Smith $this->csstest('@import url(http://www.test.com/test/test.png);'); 555f598213SChristopher Smith $this->csstest('@import url("http://www.test.com/test/test.png");'); 565f598213SChristopher Smith } 575f598213SChristopher Smith 585f598213SChristopher Smith public function test_less_basic() { 595f598213SChristopher Smith $this->csstest('@import "test.less"', '@import "/test.less"'); 605f598213SChristopher Smith $this->csstest('@import "/test.less"', '@import "/test.less"'); 616d7e4640SChristopher Smith $this->csstest('@import "foo/test.less"', '@import "/foo/test.less"'); 625f598213SChristopher Smith $this->csstest('@import url(http://test.less)'); 635f598213SChristopher Smith } 645f598213SChristopher Smith 655f598213SChristopher Smith // more expected use, where less @import(ed) from e.g. lib/plugins/plugin_name 665f598213SChristopher Smith public function test_less_subdirectories() { 675f598213SChristopher Smith 685f598213SChristopher Smith unlink($this->file); 695f598213SChristopher Smith 705f598213SChristopher Smith $dir = TMP_DIR.'/foo/bar'; 7128ad2ce3SChristopher Smith if (!is_dir($dir)) { 725f598213SChristopher Smith mkdir($dir, 0777, true); 7328ad2ce3SChristopher Smith } 7428ad2ce3SChristopher Smith if (!is_dir($dir)) { 7528ad2ce3SChristopher Smith $this->markTestSkipped('Could not create directory.'); 7628ad2ce3SChristopher Smith } 7728ad2ce3SChristopher Smith 785f598213SChristopher Smith $this->file = tempnam($dir, 'css'); 795f598213SChristopher Smith 80e9d25488SYurii K if (isWindows()) { 81e9d25488SYurii K $this->csstest('@import "test.less"', '@import "\foo\bar/test.less"'); 82e9d25488SYurii K $this->csstest('@import \'test.less\'', '@import \'\foo\bar/test.less\''); 83e9d25488SYurii K $this->csstest('@import url(test.less)', '@import url(\foo\bar/test.less)'); 84e9d25488SYurii K $this->csstest('@import "abc/test.less"', '@import "\foo\bar/abc/test.less"'); 85e9d25488SYurii K } else { 865f598213SChristopher Smith $this->csstest('@import "test.less"', '@import "/foo/bar/test.less"'); 875f598213SChristopher Smith $this->csstest('@import \'test.less\'', '@import \'/foo/bar/test.less\''); 885f598213SChristopher Smith $this->csstest('@import url(test.less)', '@import url(/foo/bar/test.less)'); 896d7e4640SChristopher Smith $this->csstest('@import "abc/test.less"', '@import "/foo/bar/abc/test.less"'); 90f8369d7dSTobias Sarnowski } 91e9d25488SYurii K } 92f8369d7dSTobias Sarnowski 93*1c33cec3SAndreas Gohr public function tearDown() : void { 94f8369d7dSTobias Sarnowski unlink($this->file); 95f8369d7dSTobias Sarnowski unset($this->file); 96f8369d7dSTobias Sarnowski } 97f8369d7dSTobias Sarnowski} 98f8369d7dSTobias Sarnowski 99f8369d7dSTobias Sarnowski//Setup VIM: ex: et ts=4 sw=4 : 100