Skip to content

Commit fa1e6d3

Browse files
author
Brian Muenzenmeyer
committed
Merge pull request #354 from pattern-lab/engine-unit-tests-chill
Make the engine unit tests chill out if their engines aren't installed
2 parents 9d37b62 + 1c89489 commit fa1e6d3

File tree

3 files changed

+88
-95
lines changed

3 files changed

+88
-95
lines changed

test/engine_handlebars_tests.js

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,11 @@
11
"use strict";
22

3-
// don't run these tests unless handlebars is installed
4-
try { var handlebars = require('handlebars'); }
5-
catch (err) { return; }
6-
73
var path = require('path');
84
var pa = require('../core/lib/pattern_assembler');
95
var Pattern = require('../core/lib/object_factory').Pattern;
106
var testPatternsPath = path.resolve(__dirname, 'files', '_handlebars-test-patterns');
117
var eol = require('os').EOL;
128

13-
try {
14-
require('handlebars');
15-
} catch (err) {
16-
console.log('handlebars renderer not installed; skipping tests');
17-
return;
18-
}
19-
209
// fake pattern lab constructor:
2110
// sets up a fake patternlab object, which is needed by the pattern processing
2211
// apparatus.
@@ -194,3 +183,11 @@ exports['engine_handlebars'] = {
194183
]);
195184
}
196185
};
186+
187+
188+
// don't run these tests unless handlebars is installed
189+
var engineLoader = require('../core/lib/pattern_engines');
190+
if (!engineLoader.handlebars) {
191+
console.log("Handlebars engine not installed, skipping tests.");
192+
delete exports.engine_handlebars;
193+
}

test/engine_twig_tests.js

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,11 @@
11
"use strict";
22
/*eslint-disable dot-notation*/
33

4-
// don't run these tests unless twig is installed
5-
try { var twig = require('twig'); }
6-
catch (err) { return; }
7-
84
var path = require('path');
95
var pa = require('../core/lib/pattern_assembler');
106
var Pattern = require('../core/lib/object_factory').Pattern;
11-
var testPatternsPath = path.resolve(__dirname, 'files', '_twig-test-patterns');
127
var eol = require('os').EOL;
138

14-
try {
15-
require('twig');
16-
} catch (err) {
17-
console.log('twig renderer not installed; skipping tests');
18-
return;
19-
}
20-
219
// fake pattern lab constructor:
2210
// sets up a fake patternlab object, which is needed by the pattern processing
2311
// apparatus.
@@ -193,3 +181,11 @@ exports['engine_twig'] = {
193181
]);
194182
}
195183
};
184+
185+
186+
// don't run these tests unless twig is installed
187+
var engineLoader = require('../core/lib/pattern_engines');
188+
if (!engineLoader.twig) {
189+
console.log("Twig engine not installed, skipping tests.");
190+
delete exports.engine_twig;
191+
}

test/engine_underscore_tests.js

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,85 @@
1-
(function () {
2-
"use strict";
1+
"use strict";
32

4-
var path = require('path');
5-
var pa = require('../core/lib/pattern_assembler');
6-
var testPatternsPath = path.resolve(__dirname, 'files', '_underscore-test-patterns');
7-
var eol = require('os').EOL;
3+
var path = require('path');
4+
var pa = require('../core/lib/pattern_assembler');
5+
var testPatternsPath = path.resolve(__dirname, 'files', '_underscore-test-patterns');
6+
var eol = require('os').EOL;
87

9-
try {
10-
require('underscore');
11-
} catch (err) {
12-
console.log('underscore renderer not installed; skipping tests');
13-
return;
14-
}
8+
// fake pattern lab constructor:
9+
// sets up a fake patternlab object, which is needed by the pattern processing
10+
// apparatus.
11+
function fakePatternLab() {
12+
var fpl = {
13+
partials: {},
14+
patterns: [],
15+
footer: '',
16+
header: '',
17+
listitems: {},
18+
listItemArray: [],
19+
data: {
20+
link: {}
21+
},
22+
config: require('../patternlab-config.json'),
23+
package: {}
24+
};
1525

16-
// fake pattern lab constructor:
17-
// sets up a fake patternlab object, which is needed by the pattern processing
18-
// apparatus.
19-
function fakePatternLab() {
20-
var fpl = {
21-
partials: {},
22-
patterns: [],
23-
footer: '',
24-
header: '',
25-
listitems: {},
26-
listItemArray: [],
27-
data: {
28-
link: {}
29-
},
30-
config: require('../patternlab-config.json'),
31-
package: {}
32-
};
26+
// patch the pattern source so the pattern assembler can correctly determine
27+
// the "subdir"
28+
fpl.config.paths.source.patterns = testPatternsPath;
3329

34-
// patch the pattern source so the pattern assembler can correctly determine
35-
// the "subdir"
36-
fpl.config.paths.source.patterns = testPatternsPath;
30+
return fpl;
31+
}
3732

38-
return fpl;
39-
}
33+
exports['engine_underscore'] = {
34+
'hello world underscore pattern renders': function (test) {
35+
test.expect(1);
4036

41-
exports['engine_underscore'] = {
42-
'hello world underscore pattern renders': function (test) {
43-
test.expect(1);
37+
var patternPath = path.resolve(
38+
testPatternsPath,
39+
'00-atoms',
40+
'00-global',
41+
'00-helloworld.html'
42+
);
4443

45-
var patternPath = path.resolve(
46-
testPatternsPath,
47-
'00-atoms',
48-
'00-global',
49-
'00-helloworld.html'
50-
);
44+
// do all the normal processing of the pattern
45+
var patternlab = new fakePatternLab();
46+
var assembler = new pa();
47+
var helloWorldPattern = assembler.process_pattern_iterative(patternPath, patternlab);
48+
assembler.process_pattern_recursive(patternPath, patternlab);
5149

52-
// do all the normal processing of the pattern
53-
var patternlab = new fakePatternLab();
54-
var assembler = new pa();
55-
var helloWorldPattern = assembler.process_pattern_iterative(patternPath, patternlab);
56-
assembler.process_pattern_recursive(patternPath, patternlab);
50+
test.equals(helloWorldPattern.render(), 'Hello world!' + eol);
51+
test.done();
52+
},
53+
'underscore partials can render JSON values': function (test) {
54+
test.expect(1);
5755

58-
test.equals(helloWorldPattern.render(), 'Hello world!' + eol);
59-
test.done();
60-
},
61-
'underscore partials can render JSON values': function (test) {
62-
test.expect(1);
56+
// pattern paths
57+
var pattern1Path = path.resolve(
58+
testPatternsPath,
59+
'00-atoms',
60+
'00-global',
61+
'00-helloworld-withdata.html'
62+
);
6363

64-
// pattern paths
65-
var pattern1Path = path.resolve(
66-
testPatternsPath,
67-
'00-atoms',
68-
'00-global',
69-
'00-helloworld-withdata.html'
70-
);
64+
// set up environment
65+
var patternlab = new fakePatternLab(); // environment
66+
var assembler = new pa();
7167

72-
// set up environment
73-
var patternlab = new fakePatternLab(); // environment
74-
var assembler = new pa();
68+
// do all the normal processing of the pattern
69+
var helloWorldWithData = assembler.process_pattern_iterative(pattern1Path, patternlab);
70+
assembler.process_pattern_recursive(pattern1Path, patternlab);
7571

76-
// do all the normal processing of the pattern
77-
var helloWorldWithData = assembler.process_pattern_iterative(pattern1Path, patternlab);
78-
assembler.process_pattern_recursive(pattern1Path, patternlab);
72+
// test
73+
test.equals(helloWorldWithData.render(), 'Hello world!' + eol + 'Yeah, we got the subtitle from the JSON.' + eol);
74+
test.done();
75+
}
76+
};
7977

80-
// test
81-
test.equals(helloWorldWithData.render(), 'Hello world!' + eol + 'Yeah, we got the subtitle from the JSON.' + eol);
82-
test.done();
83-
}
84-
};
85-
})();
78+
79+
80+
// don't run these tests unless underscore is installed
81+
var engineLoader = require('../core/lib/pattern_engines');
82+
if (!engineLoader.underscore) {
83+
console.log("Underscore engine not installed, skipping tests.");
84+
delete exports.engine_underscore;
85+
}

0 commit comments

Comments
 (0)