1 | var tape = require('tape');
|
2 |
|
3 | var browserify = require('browserify');
|
4 | var proxyquire = require('proxyquire');
|
5 | var fs = require('fs');
|
6 | var path = require('path');
|
7 |
|
8 | var casesDir = path.join(__dirname, 'cases');
|
9 | var cssOutFilename = 'out.css';
|
10 |
|
11 | var globalCases = ['compose-node-module', 'compose-local-node-module', 'import-node-module'];
|
12 |
|
13 | function 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 |
|
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 |
|
51 |
|
52 |
|
53 | fs.readdirSync(path.join(__dirname, 'cases')).forEach(runTestCase);
|