xref: /dokuwiki/_test/tests/lib/exe/css_css_loadfile.test.php (revision 1c33cec37215d0c964cf961bdbc49ae7db3657e6)
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