UNPKG

1.47 kBJavaScriptView Raw
1var tape = require('tape');
2
3var browserify = require('browserify');
4var proxyquire = require('proxyquire');
5var fs = require('fs');
6var path = require('path');
7
8var casesDir = path.join(__dirname, 'cases');
9var cssOutFilename = 'out.css';
10
11var globalCases = ['compose-node-module', 'compose-local-node-module', 'import-node-module'];
12
13function runTestCase (dir) {
14 tape('case: ' + dir, function (t) {
15 var fakeFs = {
16 writeFile: function (filename, content, cb) {
17 var expected = fs.readFileSync(path.join(casesDir, dir, 'expected.css'), 'utf8');
18
19 t.equal(filename, cssOutFilename, 'correct output filename');
20 t.equal(content, expected, 'output matches expected');
21 cb();
22 }
23 };
24
25 var cssModulesify = proxyquire('../', {
26 fs: fakeFs
27 });
28
29 var b = browserify();
30 b.add(path.join(casesDir, dir, 'main.js'));
31 b.plugin(cssModulesify, {
32 rootDir: path.join(casesDir, dir)
33 , output: cssOutFilename
34 , generateScopedName: cssModulesify.generateLongName
35
36 // only certain cases will use a global transform
37 , global: globalCases.indexOf(dir) !== -1
38 });
39
40 b.bundle(function (err) {
41 if (err) {
42 t.error(err, 'should not error');
43 }
44
45 t.end();
46 });
47 });
48}
49
50// test cases are expected to have:
51// - main.js (entry point)
52// - expected.css (what to expect from css-modulesify output)
53fs.readdirSync(path.join(__dirname, 'cases')).forEach(runTestCase);