UNPKG

gulp-build-html

Version:

Used to process html files to automatically concat css and js files, and meanwhile update html references.

77 lines (64 loc) 4.64 kB
var assert = require("assert"), BuildBlock = require("./BuildBlock"), blockParserAndBuilder1 = require("./blockParserAndBuilder1"); var test_parseBuildBlocks = function(){ var blocks = blockParserAndBuilder1.parseBuildBlocks(); assert.equal(0, blocks.length); blocks = blockParserAndBuilder1.parseBuildBlocks(" \r\n "); assert.equal(0, blocks.length); blocks = blockParserAndBuilder1.parseBuildBlocks("<!-- -- build js --> <!-- BUILD : js ../s.js -->\n<!-- endbuilD --><!-- BUILD:cSS ../fa/s.css -->\n<!--endbuild--><!-- BUILD:scss ../fa/s.css -->\n<!--endbuild--> <!--endbuild--> <!-- -- build js -->", "/file.html"); assert.equal(3, blocks.length); assert.equal("js", blocks[0].getType()); assert.equal("../s.js", blocks[0].getTargetFileName()); assert.equal(21, blocks[0].getBeginIndex()); assert.equal(65, blocks[0].getEndIndex()); assert.equal(0, blocks[0].getReferencedFilePathsOrContents().length); assert.equal("css", blocks[1].getType()); assert.equal("../fa/s.css", blocks[1].getTargetFileName()); assert.equal(66, blocks[1].getBeginIndex()); assert.equal(111, blocks[1].getEndIndex()); assert.equal(0, blocks[1].getReferencedFilePathsOrContents().length); assert.equal("scss", blocks[2].getType()); assert.equal("../fa/s.css", blocks[2].getTargetFileName()); assert.equal(112, blocks[2].getBeginIndex()); assert.equal(158, blocks[2].getEndIndex()); assert.equal(0, blocks[2].getReferencedFilePathsOrContents().length); blocks = blockParserAndBuilder1.parseBuildBlocks("<!--build:js --> <!--endbuild-->", "/file.html"); assert.equal(1, blocks.length); assert.equal("", blocks[0].getTargetFileName()); blocks = blockParserAndBuilder1.parseBuildBlocks("<!--endbuild--><!--build:js --> ", "/file.html"); assert.equal(0, blocks.length); blocks = blockParserAndBuilder1.parseBuildBlocks("<!--build:js ../js/allinone.js--><link rel=\'stylesheet\' href = \'../css/index.css\'/><script src = \'../a.js\'></script>\n<script type = \'text/javascript\'></script><scRIPT src=\'b.js\'></script> <!--endbuild-->", "/file.html"); assert.equal(1, blocks.length); assert.equal("js", blocks[0].getType()); assert.equal("../js/allinone.js", blocks[0].getTargetFileName()); assert.equal(2, blocks[0].getReferencedFilePathsOrContents().length); assert.equal("../a.js", blocks[0].getReferencedFilePathsOrContents()[0]); assert.equal("b.js", blocks[0].getReferencedFilePathsOrContents()[1]); blocks = blockParserAndBuilder1.parseBuildBlocks("<!-- build:js index.js --> <script></script> <script>\nalert(2)</script> <script type='text/javascrpit'></script><scRIPt SRc='../a/0.js'></script>\n<script type='text/javascript' src = '../a/1.js'></script><script src ='../a/2.js'></script> <!-- endbuild -->", "/file.html"); assert.equal(1, blocks.length); assert.equal("js", blocks[0].getType()); assert.equal("index.js", blocks[0].getTargetFileName()); assert.equal(4, blocks[0].getReferencedFilePathsOrContents().length); assert.equal("../a/0.js", blocks[0].getReferencedFilePathsOrContents()[1]); assert.equal("../a/1.js", blocks[0].getReferencedFilePathsOrContents()[2]); assert.equal("../a/2.js", blocks[0].getReferencedFilePathsOrContents()[3]); blocks = blockParserAndBuilder1.parseBuildBlocks("<script src ='2.js'></script><!-- build:js index.js --><script src ='2.js'></script> <!-- endbuild -->\n<script src ='2.js'></script>", "/file.html"); assert.equal(1, blocks.length); blocks = blockParserAndBuilder1.parseBuildBlocks("<!-- build:js index.js --> <link> <link href ='../a.css'/> <!-- endbuild -->", "/file.html"); assert.equal(1, blocks.length); assert.equal("js", blocks[0].getType()); assert.equal("index.js", blocks[0].getTargetFileName()); assert.equal(0, blocks[0].getReferencedFilePathsOrContents().length); blocks = blockParserAndBuilder1.parseBuildBlocks("<link rel = 'stylesheet' href = '../tmp.css' /> <!-- build:css index.css --> <link href = '../ea.css' rel = 'stylesheet' /> <link>\n<link hREf = 'b.css'> <link rEL='stYLESHEET' hrEF ='../a.css'/> <script src='a.js'></script> <!-- endbuild -->\n<link rel = 'stylesheet' href = '../tmp2.css' />", "/file.html"); assert.equal(1, blocks.length); assert.equal("css", blocks[0].getType()); assert.equal("index.css", blocks[0].getTargetFileName()); assert.equal(2, blocks[0].getReferencedFilePathsOrContents().length); assert.equal("../ea.css", blocks[0].getReferencedFilePathsOrContents()[0]); assert.equal("../a.css", blocks[0].getReferencedFilePathsOrContents()[1]); }; var testAll = function(){ test_parseBuildBlocks(); }; testAll();