summaryrefslogtreecommitdiffstats
path: root/admin/survey/minify/vendor/tubalmartin/cssmin/tests/bin/runner
blob: 0f43f028cb13892d0de7948cc72cc18a47c8fd0b (plain) (blame)
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
#!/usr/bin/env php
<?php

require __DIR__ . '/../../vendor/autoload.php';

use tubalmartin\CssMin\Minifier;
use tubalmartin\CssMin\Tests\FineDiff\Render\Cli as CliRenderer;
use cogpowered\FineDiff\Diff;

$opts = getopt(
    't:f:',
    array('keep-sourcemap', 'keep-sourcemap-comment', 'remove-important-comments', 'linebreak-position:')
);

if (empty($opts['t'])) {
    fwrite(
        STDERR,
        'You need to provide -t argument to run the specified test i.e. "php ./tests/bin/runner -t mui"' . PHP_EOL
    );
    die(1);
}

$expectation = $opts['t'];
$fixture = $expectation;

if (!empty($opts['f'])) {
    $fixture = $opts['f'];
}

$fixtureFile = __DIR__ .'/../fixtures/'. $fixture .'.css';
$expectationFile = __DIR__ .'/../expectations/'. $expectation .'.css';

if (!is_readable($fixtureFile) || !is_readable($expectationFile)) {
    fwrite(
        STDERR,
        'Either test fixture or expectation is missing or not readable' . PHP_EOL
    );
    die(1);
}

$minifier = new Minifier;

if (isset($opts['keep-sourcemap']) || isset($opts['keep-sourcemap-comment'])) {
    $minifier->keepSourceMapComment();
}

if (isset($opts['remove-important-comments'])) {
    $minifier->removeImportantComments();
}

if (!empty($opts['linebreak-position'])) {
    $minifier->setLineBreakPosition($opts['linebreak-position']);
}

$fixture = file_get_contents($fixtureFile);
$expectation = file_get_contents($expectationFile);
$output = $minifier->run($fixture);

if (strcmp($output, $expectation) === 0) {
    fwrite(
        STDOUT,
        "\x1b[30m\x1b[42m OK \x1b[0m" . PHP_EOL
    );
    die(0);
} else {
    $diff = new Diff;
    $cliRenderer = new CliRenderer;
    $diffString = $cliRenderer->process($expectation, $diff->getOpcodes($expectation, $output));
    fwrite(
        STDERR,
        "\x1b[37m\x1b[41m FAILURE \x1b[0m" . PHP_EOL .
        '---' . PHP_EOL .
        $diffString . PHP_EOL .
        '---' . PHP_EOL
    );
    die(1);
}