Skip to content

Commit a08c4aa

Browse files
committed
Merge pull request #47 from enb-bem/test/fix-server
Fixed server for client tests
2 parents a7bd4d4 + b02709f commit a08c4aa

File tree

4 files changed

+65
-153
lines changed

4 files changed

+65
-153
lines changed

test/lib/run-phantom.js

+17-13
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,25 @@ module.exports = function (page) {
1010
exec([phantomjsPath, mochaPhantomjsScriptPath, page, reporter].join(' '),
1111
function (err, stdout) {
1212
if (err) {
13-
var json = JSON.parse(stdout),
14-
errors = json.tests.filter(function (test) {
15-
return test.err;
16-
}),
17-
testError = errors[0].err;
13+
try {
14+
var json = JSON.parse(stdout),
15+
errors = json.tests.filter(function (test) {
16+
return test.err;
17+
}),
18+
testError = errors[0].err;
1819

19-
if (testError) {
20-
var stack = testError.stack;
21-
testError = new Error(testError.message);
22-
testError.stack = stack;
23-
} else {
24-
testError = err;
25-
}
20+
if (testError) {
21+
var stack = testError.stack;
22+
testError = new Error(testError.message);
23+
testError.stack = stack;
24+
} else {
25+
testError = err;
26+
}
2627

27-
defer.reject(testError);
28+
defer.reject(testError);
29+
} catch (e) {
30+
defer.reject(err);
31+
}
2832
} else {
2933
defer.resolve();
3034
}

test/lib/run-server.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
var http = require('http'),
2+
promisify = require('vow-node').promisify,
3+
serveStatic = require('serve-static'),
4+
finalhandler = require('finalhandler'),
5+
runPhantom = require('./run-phantom');
6+
7+
module.exports = function (port) {
8+
var serve = serveStatic(process.cwd(), { index: false }),
9+
server = http.createServer(function (req, res) {
10+
var done = finalhandler(req, res);
11+
12+
serve(req, res, done);
13+
}),
14+
listen = promisify(server.listen.bind(server));
15+
16+
return listen(port)
17+
.then(function () {
18+
return runPhantom('http://localhost:' + port + '/index.html');
19+
})
20+
.then(function () {
21+
server.close();
22+
})
23+
.fail(function (err) {
24+
server.close();
25+
throw err;
26+
});
27+
};

test/techs/bh-client-module.test.js

+12-85
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
var fs = require('fs'),
22
path = require('path'),
33
mock = require('mock-fs'),
4-
promisify = require('vow-node').promisify,
5-
http = require('http'),
6-
serveStatic = require('serve-static'),
7-
finalhandler = require('finalhandler'),
84
TestNode = require('enb/lib/test/mocks/test-node'),
95
FileList = require('enb/lib/file-list'),
106
bhClientModule = require('../../techs/bh-client-module'),
@@ -14,20 +10,9 @@ var fs = require('fs'),
1410
chaiFilename = require.resolve('chai/chai.js'),
1511
ymFilename = require.resolve('ym/modules.js'),
1612
writeFile = require('../lib/write-file'),
17-
runPhantom = require('../lib/run-phantom'),
18-
serve, server, listen;
13+
runServer = require('../lib/run-server');
1914

2015
describe('bh-client-module', function () {
21-
beforeEach(function () {
22-
serve = serveStatic(process.cwd(), { index: false });
23-
server = http.createServer(function (req, res) {
24-
var done = finalhandler(req, res);
25-
26-
serve(req, res, done);
27-
});
28-
listen = promisify(server.listen.bind(server));
29-
});
30-
3116
afterEach(function () {
3217
mock.restore();
3318
});
@@ -117,31 +102,6 @@ describe('bh-client-module', function () {
117102
return runTest(test, options, template, lib);
118103
});
119104

120-
it('sourcemap', function () {
121-
var options = {
122-
sourcemap: true,
123-
bhFile: 'bh.js'
124-
},
125-
scheme = {
126-
blocks: {},
127-
bundle: {},
128-
'bh.js': 'module.exports = BH;'
129-
},
130-
bundle, fileList;
131-
132-
mock(scheme);
133-
134-
bundle = new TestNode('bundle');
135-
fileList = new FileList();
136-
fileList.loadFromDirSync('blocks');
137-
bundle.provideTechData('?.files', fileList);
138-
139-
return bundle.runTechAndGetContent(bhClientModule, options)
140-
.spread(function (bh) {
141-
bh.toString().must.include('sourceMappingURL');
142-
});
143-
});
144-
145105
describe('caches', function () {
146106
var mockBhCore, scheme, bundle, fileList;
147107

@@ -158,14 +118,11 @@ describe('bh-client-module', function () {
158118
'index.html': fs.readFileSync(htmlFilename, 'utf-8'),
159119
'mocha.js': fs.readFileSync(mochaFilename, 'utf-8'),
160120
'chai.js': fs.readFileSync(chaiFilename, 'utf-8'),
161-
'ym.js': fs.readFileSync(ymFilename, 'utf-8')
121+
'ym.js': fs.readFileSync(ymFilename, 'utf-8'),
122+
'some-ym-lib.js': ''
162123
};
163124
});
164125

165-
afterEach(function () {
166-
server.close();
167-
});
168-
169126
it('must use cached bhFile', function () {
170127
scheme['test.js'] = generateTest({ block: 'block' }, '<div class="block"></div>');
171128

@@ -196,16 +153,10 @@ describe('bh-client-module', function () {
196153
return bundle.runTechAndGetContent(bhClientModule, { bhFile: 'mock.bh.js' });
197154
})
198155
.spread(function (bh) {
199-
fs.writeFileSync('bundle/bundle.bh.js', bh);
200156
// TODO: удалить, когда пофиксится https://github.com/enb-make/enb/issues/224
157+
fs.writeFileSync('bundle/bundle.bh.js', bh);
201158

202-
return listen(3000);
203-
})
204-
.then(function () {
205-
return runPhantom('http://localhost:3000/index.html');
206-
})
207-
.fail(function (err) {
208-
throw err;
159+
return runServer(3000);
209160
});
210161
});
211162

@@ -239,16 +190,10 @@ describe('bh-client-module', function () {
239190
return bundle.runTechAndGetContent(bhClientModule, { bhFile: 'mock.bh.js' });
240191
})
241192
.spread(function (bh) {
242-
fs.writeFileSync('bundle/bundle.bh.js', bh);
243193
// TODO: удалить, когда пофиксится https://github.com/enb-make/enb/issues/224
194+
fs.writeFileSync('bundle/bundle.bh.js', bh);
244195

245-
return listen(3000);
246-
})
247-
.then(function () {
248-
return runPhantom('http://localhost:3000/index.html');
249-
})
250-
.fail(function (err) {
251-
throw err;
196+
return runServer(3000);
252197
});
253198
});
254199

@@ -279,16 +224,10 @@ describe('bh-client-module', function () {
279224
return bundle.runTechAndGetContent(bhClientModule);
280225
})
281226
.spread(function (bh) {
282-
fs.writeFileSync('bundle/bundle.bh.js', bh);
283227
// TODO: удалить, когда пофиксится https://github.com/enb-make/enb/issues/224
228+
fs.writeFileSync('bundle/bundle.bh.js', bh);
284229

285-
return listen(3000);
286-
})
287-
.then(function () {
288-
return runPhantom('http://localhost:3000/index.html');
289-
})
290-
.fail(function (err) {
291-
throw err;
230+
return runServer(3000);
292231
});
293232
});
294233
});
@@ -320,9 +259,7 @@ function runTest(testContent, options, template, lib) {
320259
options.bhFile = 'bh.js';
321260
}
322261

323-
if (lib) {
324-
scheme['some-ym-lib.js'] = lib;
325-
}
262+
scheme['some-ym-lib.js'] = lib || '';
326263

327264
scheme[bhCoreFilename] = fs.readFileSync(bhCoreFilename, 'utf-8');
328265

@@ -335,19 +272,10 @@ function runTest(testContent, options, template, lib) {
335272

336273
return bundle.runTechAndGetContent(bhClientModule, options)
337274
.spread(function (bh) {
338-
fs.writeFileSync('bundle/bundle.bh.js', bh);
339275
// TODO: удалить, когда пофиксится https://github.com/enb-make/enb/issues/224
276+
fs.writeFileSync('bundle/bundle.bh.js', bh);
340277

341-
return listen(3000);
342-
})
343-
.then(function () {
344-
return runPhantom('http://localhost:3000/index.html');
345-
})
346-
.then(function () {
347-
server.close();
348-
})
349-
.fail(function (err) {
350-
throw err;
278+
return runServer(3000);
351279
});
352280
}
353281

@@ -364,4 +292,3 @@ function generateTest(json, result) {
364292
'});'
365293
].join('\n');
366294
}
367-

test/techs/bh-client.test.js

+9-55
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
var fs = require('fs'),
22
path = require('path'),
33
mock = require('mock-fs'),
4-
promisify = require('vow-node').promisify,
5-
http = require('http'),
6-
serveStatic = require('serve-static'),
7-
finalhandler = require('finalhandler'),
84
TestNode = require('enb/lib/test/mocks/test-node'),
95
FileList = require('enb/lib/file-list'),
106
bhClient = require('../../techs/bh-client'),
@@ -13,20 +9,9 @@ var fs = require('fs'),
139
mochaFilename = require.resolve('mocha/mocha.js'),
1410
chaiFilename = require.resolve('chai/chai.js'),
1511
writeFile = require('../lib/write-file'),
16-
runPhantom = require('../lib/run-phantom'),
17-
serve, server, listen;
12+
runServer = require('../lib/run-server');
1813

1914
describe('bh-client', function () {
20-
beforeEach(function () {
21-
serve = serveStatic(process.cwd(), { index: false });
22-
server = http.createServer(function (req, res) {
23-
var done = finalhandler(req, res);
24-
25-
serve(req, res, done);
26-
});
27-
listen = promisify(server.listen.bind(server));
28-
});
29-
3015
afterEach(function () {
3116
mock.restore();
3217
});
@@ -156,10 +141,6 @@ describe('bh-client', function () {
156141
};
157142
});
158143

159-
afterEach(function () {
160-
server.close();
161-
});
162-
163144
it('must use cached bhFile', function () {
164145
scheme['test.js'] = generateTest({ block: 'block' }, '<div class="block"></div>');
165146

@@ -190,16 +171,10 @@ describe('bh-client', function () {
190171
return bundle.runTechAndGetContent(bhClient, { bhFile: 'mock.bh.js' });
191172
})
192173
.spread(function (bh) {
193-
fs.writeFileSync('bundle/bundle.bh.js', bh);
194174
// TODO: удалить, когда пофиксится https://github.com/enb-make/enb/issues/224
175+
fs.writeFileSync('bundle/bundle.bh.js', bh);
195176

196-
return listen(3000);
197-
})
198-
.then(function () {
199-
return runPhantom('http://localhost:3000/index.html');
200-
})
201-
.fail(function (err) {
202-
throw err;
177+
return runServer(3000);
203178
});
204179
});
205180

@@ -233,16 +208,10 @@ describe('bh-client', function () {
233208
return bundle.runTechAndGetContent(bhClient, { bhFile: 'mock.bh.js' });
234209
})
235210
.spread(function (bh) {
236-
fs.writeFileSync('bundle/bundle.bh.js', bh);
237211
// TODO: удалить, когда пофиксится https://github.com/enb-make/enb/issues/224
212+
fs.writeFileSync('bundle/bundle.bh.js', bh);
238213

239-
return listen(3000);
240-
})
241-
.then(function () {
242-
return runPhantom('http://localhost:3000/index.html');
243-
})
244-
.fail(function (err) {
245-
throw err;
214+
return runServer(3000);
246215
});
247216
});
248217

@@ -273,16 +242,10 @@ describe('bh-client', function () {
273242
return bundle.runTechAndGetContent(bhClient);
274243
})
275244
.spread(function (bh) {
276-
fs.writeFileSync('bundle/bundle.bh.js', bh);
277245
// TODO: удалить, когда пофиксится https://github.com/enb-make/enb/issues/224
246+
fs.writeFileSync('bundle/bundle.bh.js', bh);
278247

279-
return listen(3000);
280-
})
281-
.then(function () {
282-
return runPhantom('http://localhost:3000/index.html');
283-
})
284-
.fail(function (err) {
285-
throw err;
248+
return runServer(3000);
286249
});
287250
});
288251
});
@@ -324,19 +287,10 @@ function runTest(testContent, options, template) {
324287

325288
return bundle.runTechAndGetContent(bhClient, options)
326289
.spread(function (bh) {
327-
fs.writeFileSync('bundle/bundle.bh.js', bh);
328290
// TODO: удалить, когда пофиксится https://github.com/enb-make/enb/issues/224
291+
fs.writeFileSync('bundle/bundle.bh.js', bh);
329292

330-
return listen(3000);
331-
})
332-
.then(function () {
333-
return runPhantom('http://localhost:3000/index.html');
334-
})
335-
.then(function () {
336-
server.close();
337-
})
338-
.fail(function (err) {
339-
throw err;
293+
return runServer(3000);
340294
});
341295
}
342296

0 commit comments

Comments
 (0)