保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 9bdb95c9e34cef640534e5e5a1e2225a80442000
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
import fs from 'fs';
import postcss from 'postcss';
import test from 'ava';
import {diffLines} from 'diff';
import chalk from 'chalk';
import plugin from '../';
 
function getDiff (left, right) {
    let msg = ['\n'];
    diffLines(left, right).forEach(item => {
        if (item.added || item.removed) {
            let text = item.value
                .replace('\n', '\u00b6\n')
                .replace('\ufeff', '[[BOM]]');
            msg.push(chalk[item.added ? 'green' : 'red'](text));
        } else {
            let value = item.value.replace('\ufeff', '[[BOM]]');
            let lines = value.split('\n');
 
            // max line count for each item
            let keepLines = 6;
            // lines to be omitted
            let omitLines = lines.length - keepLines;
            if (lines.length > keepLines) {
                lines.splice(
                    Math.floor(keepLines / 2),
                    omitLines,
                    chalk.gray('(...' + omitLines + ' lines omitted...)')
                );
            }
            msg.concat(lines);
        }
    });
    msg.push('\n');
    return msg.map(line => '  ' + line).join('');
}
 
function read (file) {
    return fs.readFileSync(__dirname + `/fixtures/${file}.css`, {encoding: 'utf-8'});
}
 
function exec (t, input) {
    let output = read(`${input}.post`);
    return postcss([ plugin() ]).process(read(input))
        .then( result => {
            if (result.css !== output) {
                t.fail(getDiff(result.css, output));
            }
            t.deepEqual(result.warnings().length, 0);
        });
}
 
test(
    'Overridden @keyframes should be discarded correctly.',
    exec,
    'keyframes'
);
 
test(
    'Overridden @counter-style should be discarded correctly.',
    exec,
    'counter-style'
);