1 | var lessGlob = require('../'),
|
2 | less = require('less'),
|
3 | fs = require('fs'),
|
4 | expect = require('chai').expect;
|
5 |
|
6 | function readResource(filename) {
|
7 | return fs.readFileSync(filename, 'utf-8');
|
8 | }
|
9 |
|
10 | function assertFilesToBeIncluded(output, files) {
|
11 | var pattern = "file:([\\w\\.\\-]+)",
|
12 | includes = output.match(new RegExp(pattern, 'g'));
|
13 | includes.forEach(function(include) {
|
14 | include = new RegExp(pattern).exec(include)[1];
|
15 | expect(files).to.contain(include);
|
16 | files.splice(files.indexOf(include), 1);
|
17 | });
|
18 | expect(files).to.have.length(0, 'all includes should be found');
|
19 | }
|
20 |
|
21 | var options = {
|
22 | paths: ['test/fixtures'],
|
23 | plugins: [lessGlob]
|
24 | };
|
25 |
|
26 | describe('less-glob', function() {
|
27 | it('should import files by glob', function(done) {
|
28 | less.render(readResource('test/fixtures/all-less.less'), options)
|
29 | .then(function(output) {
|
30 | assertFilesToBeIncluded(output.css, [
|
31 | 'one.less',
|
32 | 'one-sub.less'
|
33 | ]);
|
34 | })
|
35 | .then(done, done);
|
36 | });
|
37 |
|
38 | it('should ignore non-less files', function(done) {
|
39 | less.render(readResource('test/fixtures/include-non-less.less'), options)
|
40 | .then(function(output) {
|
41 | assertFilesToBeIncluded(output.css, [
|
42 | 'two.less'
|
43 | ]);
|
44 | expect(output.css).to.not.contain('file:resource.txt');
|
45 | })
|
46 | .then(done, done);
|
47 | });
|
48 |
|
49 | it('should not break standard imports', function(done) {
|
50 | less.render(readResource('test/fixtures/no-glob.less'), options)
|
51 | .then(function(output) {
|
52 | assertFilesToBeIncluded(output.css, [
|
53 | 'one.less'
|
54 | ]);
|
55 | })
|
56 | .then(done, done);
|
57 | });
|
58 |
|
59 | it('should recursively resolve globs', function(done) {
|
60 | less.render(readResource('test/fixtures/recursive.less'), options)
|
61 | .then(function(output) {
|
62 | assertFilesToBeIncluded(output.css, [
|
63 | 'three.less',
|
64 | 'three-sub.less',
|
65 | 'three-sub2.less'
|
66 | ]);
|
67 | })
|
68 | .then(done, done);
|
69 | });
|
70 | }); |
\ | No newline at end of file |