summaryrefslogtreecommitdiff
path: root/_test/tests/lib/exe/css_at_import_less.test.php
blob: 4a6efcf44d3e9c5b48211d53f9cad2401aec97f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php

require_once DOKU_INC.'lib/exe/css.php';

class css_at_import_less_test extends DokuWikiTest {

    protected $file = '';
    protected $import = '';

    public function setUpFiles($subdir = '') {

        $dir = TMP_DIR . $subdir;
        if (!is_dir($dir)) {
            mkdir($dir, 0777, true);
        }
        if (!is_dir($dir)) {
            $this->markTestSkipped('Could not create directory.');
        }

        $this->file = tempnam($dir, 'css');

        $import = '';
        do {
            if ($import) unlink($import);
            $import = tempnam($dir, 'less');
            $ok = rename($import, $import.'.less');
        } while (!$ok);

        $this->import = $import.'.less';
    }

    private function csstest($input, $expected_css, $expected_less) {
        $location = "http://test.com/";
        io_saveFile($this->file, $input);
        $css = css_loadfile($this->file, $location);
        $less = css_parseless($css);
        $this->assertEquals($expected_css, $css);
        $this->assertEquals($expected_less, $less);
    }

    public function test_basic() {
        $this->setUpFiles();

        $import = preg_replace('#(^.*[/])#','',$this->import);
        $in_css = '@import "'.$import.'";';
        $in_less = '@foo: "bar";
content: @foo;';

        $expected_css = '@import "/'.$import.'";';
        $expected_less = 'content: "bar";';

        io_saveFile($this->import, $in_less);
        $this->csstest($in_css, $expected_css, $expected_less);
    }

    public function test_subdirectory() {
        $this->setUpFiles('/foo/bar');

        $import = preg_replace('#(^.*[/])#','',$this->import);
        $in_css = '@import "'.$import.'";';
        $in_less = '@foo: "bar";
content: @foo;';

        $expected_css = '@import "/foo/bar/'.$import.'";';
        $expected_less = 'content: "bar";';

        io_saveFile($this->import, $in_less);
        $this->csstest($in_css, $expected_css, $expected_less);
    }

    public function tearDown() {
        unlink($this->file);
        unlink($this->import);
        unset($this->file, $this->import);
    }
}

//Setup VIM: ex: et ts=4 sw=4 :