PageRenderTime 47ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/test-node/tests/blanket_core.js

https://github.com/morkai/blanket
JavaScript | 117 lines | 100 code | 16 blank | 1 comment | 1 complexity | b1cf39587b32eef1fab05c1122747787 MD5 | raw file
Possible License(s): MIT
  1. /* core test to lib/blanket.js */
  2. var assert = require("assert"),
  3. blanketCore = require("../../lib/blanket").blanket,
  4. falafel = require("../../lib/falafel").falafel,
  5. core_fixtures = require("../fixture/core_fixtures");
  6. function normalizeWhitespace(str) {
  7. return str
  8. .replace(/\r\n/g, '\n')
  9. .replace(/\r/g, '\n')
  10. .replace(/\s+\n/g, '\n')
  11. .replace(/\n\s+/g, '\n');
  12. }
  13. function assertString(actual, expected) {
  14. assert.equal(normalizeWhitespace(actual), normalizeWhitespace(expected));
  15. }
  16. describe('tracking', function(){
  17. describe('tracking setup', function(){
  18. it('should return tracking setup', function(){
  19. var expectedSource = "if (typeof _$jscoverage === 'undefined') _$jscoverage = {};\n";
  20. expectedSource += "if (typeof _$jscoverage['test.js'] === 'undefined'){_$jscoverage['test.js']=[];\n";
  21. expectedSource += "_$jscoverage['test.js'].source=['var test=\'1234\';',\n";
  22. expectedSource += "'//comment',\n";
  23. expectedSource += "'console.log(test);'];\n";
  24. expectedSource += "_$jscoverage['test.js'][1]=0;\n";
  25. expectedSource += "_$jscoverage['test.js'][2]=0;\n";
  26. expectedSource += "_$jscoverage['test.js'][3]=0;\n";
  27. expectedSource += "}";
  28. var filename = "test.js";
  29. var sourceArray = [
  30. "var test='1234';",
  31. "//comment",
  32. "console.log(test);"
  33. ];
  34. var result = blanketCore._trackingSetup(filename,sourceArray);
  35. assertString(result,expectedSource);
  36. });
  37. });
  38. describe('source setup', function(){
  39. it('should return source setup', function(){
  40. var source = core_fixtures.simple_test_file_js;
  41. var expectedSource= [
  42. "//this is test source",
  43. "var test=\\'1234\\';",
  44. "if (test === \\'1234\\')",
  45. " console.log(true);",
  46. "//comment",
  47. "console.log(test);"
  48. ];
  49. var result = blanketCore._prepareSource(source);
  50. assertString(result.toString(),expectedSource.toString());
  51. });
  52. });
  53. describe('add tracking', function(){
  54. it('should add tracking lines', function(){
  55. var result = falafel(
  56. core_fixtures.simple_test_file_js,
  57. {loc:true,comment:true},
  58. blanketCore._addTracking,"simple_test_file.js" );
  59. assertString(result.toString(),
  60. core_fixtures.simple_test_file_instrumented_js);
  61. });
  62. });
  63. describe('detect single line ifs', function(){
  64. it('should wrap with block statement', function(){
  65. var result = falafel(
  66. core_fixtures.blockinjection_test_file_js,
  67. {loc:true,comment:true},
  68. blanketCore._addTracking,"blockinjection_test_file.js" );
  69. assertString(result.toString(),
  70. core_fixtures.blockinjection_test_file_instrumented_js);
  71. });
  72. });
  73. });
  74. describe('blanket instrument', function(){
  75. describe('instrument file', function(){
  76. it('should return instrumented file', function(done){
  77. blanketCore.instrument({
  78. inputFile: core_fixtures.simple_test_file_js,
  79. inputFileName: "simple_test_file.js"
  80. },function(result){
  81. assertString(result,
  82. core_fixtures.simple_test_file_instrumented_full_js);
  83. done();
  84. });
  85. });
  86. });
  87. describe('instrument tricky if block', function(){
  88. it('should return properly instrumented string', function(done){
  89. var expected = 4;
  90. var infile = "var a=3;if(a==1)a=2;else if(a==3){a="+expected+";}result=a;";
  91. var infilename= "testfile2";
  92. blanketCore.instrument({
  93. inputFile: infile,
  94. inputFileName: infilename
  95. },function(result){
  96. assert.equal(eval("(function test(){"+result+" return result;})()"),expected);
  97. done();
  98. });
  99. });
  100. });
  101. });