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
JavaScript
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();