/js/lib/Socket.IO-node/support/expresso/deps/jscoverage/report.js
JavaScript | 76 lines | 67 code | 4 blank | 5 comment | 14 complexity | c5a58ebc0cbb9d9dfd86be069c8004b8 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
- if (! window.jscoverage_report) {
- window.jscoverage_report = function jscoverage_report(dir) {
- var createRequest = function () {
- if (window.XMLHttpRequest) {
- return new XMLHttpRequest();
- }
- else if (window.ActiveXObject) {
- return new ActiveXObject("Microsoft.XMLHTTP");
- }
- };
- var pad = function (s) {
- return '0000'.substr(s.length) + s;
- };
- var quote = function (s) {
- return '"' + s.replace(/[\u0000-\u001f"\\\u007f-\uffff]/g, function (c) {
- switch (c) {
- case '\b':
- return '\\b';
- case '\f':
- return '\\f';
- case '\n':
- return '\\n';
- case '\r':
- return '\\r';
- case '\t':
- return '\\t';
- // IE doesn't support this
- /*
- case '\v':
- return '\\v';
- */
- case '"':
- return '\\"';
- case '\\':
- return '\\\\';
- default:
- return '\\u' + pad(c.charCodeAt(0).toString(16));
- }
- }) + '"';
- };
- var json = [];
- for (var file in top._$jscoverage) {
- var coverage = top._$jscoverage[file];
- var array = [];
- var length = coverage.length;
- for (var line = 0; line < length; line++) {
- var value = coverage[line];
- if (value === undefined || value === null) {
- value = 'null';
- }
- array.push(value);
- }
- json.push(quote(file) + ':[' + array.join(',') + ']');
- }
- json = '{' + json.join(',') + '}';
- var request = createRequest();
- var url = '/jscoverage-store';
- if (dir) {
- url += '/' + encodeURIComponent(dir);
- }
- request.open('POST', url, false);
- request.setRequestHeader('Content-Type', 'application/json');
- request.setRequestHeader('Content-Length', json.length.toString());
- request.send(json);
- if (request.status === 200 || request.status === 201 || request.status === 204) {
- return request.responseText;
- }
- else {
- throw request.status;
- }
- };
- }