/
setup.js
46 lines (37 loc) · 1.23 KB
/
setup.js
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
const chai = require('chai');
const postcss = require('postcss');
const url = require('../src');
const fs = require('fs');
global.assert = chai.assert;
global.compareFixtures = compareFixtures;
global.read = read;
global.processedCss = processedCss;
global.postcss = postcss;
global.postcssUrl = url;
function compareFixtures(name, msg, opts, postcssOpts, plugin) {
it(msg, () => {
opts = opts || {};
const pcss = postcss();
if (plugin) {
pcss.use(plugin());
}
pcss.use(url(opts));
return pcss.process(read(`fixtures/${name}`), postcssOpts)
.then((result) => {
const actual = result.css;
const expected = read(`fixtures/${name}.expected`);
// handy thing: checkout actual in the *.actual.css file
fs.writeFile(`test/fixtures/${name}.actual.css`, actual, () => {});
assert.equal(actual, expected);
});
});
}
function read(name) {
return fs.readFileSync(`test/${name}.css`, 'utf8').trim();
}
function processedCss(fixtures, urlOpts, postcssOpts) {
return postcss()
.use(url(urlOpts))
.process(read(fixtures), postcssOpts)
.then((res) => res.css);
}