xref: /dokuwiki/_test/tests/lib/exe/css_at_import_less.test.php (revision d2a843c310418267d3baedd63547d75917da2efe)
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    public function test_basic() {
42        $this->setUpFiles();
43
44        $import = preg_replace('#(^.*[/])#','',$this->import);
45        $in_css = '@import "'.$import.'";';
46        $in_less = '@foo: "bar";
47content: @foo;';
48
49        $expected_css = '@import "/'.$import.'";';
50        $expected_less = 'content: "bar";';
51
52        io_saveFile($this->import, $in_less);
53        $this->csstest($in_css, $expected_css, $expected_less);
54    }
55
56    public function test_subdirectory() {
57        $this->setUpFiles('/foo/bar');
58
59        $import = preg_replace('#(^.*[/])#','',$this->import);
60        $in_css = '@import "'.$import.'";';
61        $in_less = '@foo: "bar";
62content: @foo;';
63
64        $expected_css = '@import "/foo/bar/'.$import.'";';
65        $expected_less = 'content: "bar";';
66
67        io_saveFile($this->import, $in_less);
68        $this->csstest($in_css, $expected_css, $expected_less);
69    }
70
71    public function tearDown() {
72        unlink($this->file);
73        unlink($this->import);
74        unset($this->file, $this->import);
75    }
76}
77
78//Setup VIM: ex: et ts=4 sw=4 :
79