PageRenderTime 17ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/js/lib/Socket.IO-node/support/expresso/deps/jscoverage/report.js

http://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs
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
  1. if (! window.jscoverage_report) {
  2. window.jscoverage_report = function jscoverage_report(dir) {
  3. var createRequest = function () {
  4. if (window.XMLHttpRequest) {
  5. return new XMLHttpRequest();
  6. }
  7. else if (window.ActiveXObject) {
  8. return new ActiveXObject("Microsoft.XMLHTTP");
  9. }
  10. };
  11. var pad = function (s) {
  12. return '0000'.substr(s.length) + s;
  13. };
  14. var quote = function (s) {
  15. return '"' + s.replace(/[\u0000-\u001f"\\\u007f-\uffff]/g, function (c) {
  16. switch (c) {
  17. case '\b':
  18. return '\\b';
  19. case '\f':
  20. return '\\f';
  21. case '\n':
  22. return '\\n';
  23. case '\r':
  24. return '\\r';
  25. case '\t':
  26. return '\\t';
  27. // IE doesn't support this
  28. /*
  29. case '\v':
  30. return '\\v';
  31. */
  32. case '"':
  33. return '\\"';
  34. case '\\':
  35. return '\\\\';
  36. default:
  37. return '\\u' + pad(c.charCodeAt(0).toString(16));
  38. }
  39. }) + '"';
  40. };
  41. var json = [];
  42. for (var file in top._$jscoverage) {
  43. var coverage = top._$jscoverage[file];
  44. var array = [];
  45. var length = coverage.length;
  46. for (var line = 0; line < length; line++) {
  47. var value = coverage[line];
  48. if (value === undefined || value === null) {
  49. value = 'null';
  50. }
  51. array.push(value);
  52. }
  53. json.push(quote(file) + ':[' + array.join(',') + ']');
  54. }
  55. json = '{' + json.join(',') + '}';
  56. var request = createRequest();
  57. var url = '/jscoverage-store';
  58. if (dir) {
  59. url += '/' + encodeURIComponent(dir);
  60. }
  61. request.open('POST', url, false);
  62. request.setRequestHeader('Content-Type', 'application/json');
  63. request.setRequestHeader('Content-Length', json.length.toString());
  64. request.send(json);
  65. if (request.status === 200 || request.status === 201 || request.status === 204) {
  66. return request.responseText;
  67. }
  68. else {
  69. throw request.status;
  70. }
  71. };
  72. }