--- /dev/null
+<!doctype html>
+<html lang="en">
+<head>
+ <title>Code coverage report for spec/spec.js</title>
+ <meta charset="utf-8">
+
+ <link rel="stylesheet" href="../prettify.css">
+
+ <style>
+ body, html {
+ margin:0; padding: 0;
+ }
+ body {
+ font-family: Helvetica Neue, Helvetica,Arial;
+ font-size: 10pt;
+ }
+ div.header, div.footer {
+ background: #eee;
+ padding: 1em;
+ }
+ div.header {
+ z-index: 100;
+ position: fixed;
+ top: 0;
+ border-bottom: 1px solid #666;
+ width: 100%;
+ }
+ div.footer {
+ border-top: 1px solid #666;
+ }
+ div.body {
+ margin-top: 10em;
+ }
+ div.meta {
+ font-size: 90%;
+ text-align: center;
+ }
+ h1, h2, h3 {
+ font-weight: normal;
+ }
+ h1 {
+ font-size: 12pt;
+ }
+ h2 {
+ font-size: 10pt;
+ }
+ pre {
+ font-family: Consolas, Menlo, Monaco, monospace;
+ margin: 0;
+ padding: 0;
+ line-height: 14px;
+ font-size: 14px;
+ -moz-tab-size: 2;
+ -o-tab-size: 2;
+ tab-size: 2;
+ }
+
+ div.path { font-size: 110%; }
+ div.path a:link, div.path a:visited { color: #000; }
+ table.coverage { border-collapse: collapse; margin:0; padding: 0 }
+
+ table.coverage td {
+ margin: 0;
+ padding: 0;
+ color: #111;
+ vertical-align: top;
+ }
+ table.coverage td.line-count {
+ width: 50px;
+ text-align: right;
+ padding-right: 5px;
+ }
+ table.coverage td.line-coverage {
+ color: #777 !important;
+ text-align: right;
+ border-left: 1px solid #666;
+ border-right: 1px solid #666;
+ }
+
+ table.coverage td.text {
+ }
+
+ table.coverage td span.cline-any {
+ display: inline-block;
+ padding: 0 5px;
+ width: 40px;
+ }
+ table.coverage td span.cline-neutral {
+ background: #eee;
+ }
+ table.coverage td span.cline-yes {
+ background: #b5d592;
+ color: #999;
+ }
+ table.coverage td span.cline-no {
+ background: #fc8c84;
+ }
+
+ .cstat-yes { color: #111; }
+ .cstat-no { background: #fc8c84; color: #111; }
+ .fstat-no { background: #ffc520; color: #111 !important; }
+ .cbranch-no { background: yellow !important; color: #111; }
+
+ .cstat-skip { background: #ddd; color: #111; }
+ .fstat-skip { background: #ddd; color: #111 !important; }
+ .cbranch-skip { background: #ddd !important; color: #111; }
+
+ .missing-if-branch {
+ display: inline-block;
+ margin-right: 10px;
+ position: relative;
+ padding: 0 4px;
+ background: black;
+ color: yellow;
+ }
+
+ .skip-if-branch {
+ display: none;
+ margin-right: 10px;
+ position: relative;
+ padding: 0 4px;
+ background: #ccc;
+ color: white;
+ }
+
+ .missing-if-branch .typ, .skip-if-branch .typ {
+ color: inherit !important;
+ }
+
+ .entity, .metric { font-weight: bold; }
+ .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
+ .metric small { font-size: 80%; font-weight: normal; color: #666; }
+
+ div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
+ div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
+ div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
+ div.coverage-summary th.file { border-right: none !important; }
+ div.coverage-summary th.pic { border-left: none !important; text-align: right; }
+ div.coverage-summary th.pct { border-right: none !important; }
+ div.coverage-summary th.abs { border-left: none !important; text-align: right; }
+ div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
+ div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
+ div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap; }
+ div.coverage-summary td.pic { min-width: 120px !important; }
+ div.coverage-summary a:link { text-decoration: none; color: #000; }
+ div.coverage-summary a:visited { text-decoration: none; color: #333; }
+ div.coverage-summary a:hover { text-decoration: underline; }
+ div.coverage-summary tfoot td { border-top: 1px solid #666; }
+
+ div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
+ height: 10px;
+ width: 7px;
+ display: inline-block;
+ margin-left: 0.5em;
+ }
+ div.coverage-summary .yui3-datatable-sort-indicator {
+ background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
+ }
+ div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
+ background-position: 0 -20px;
+ }
+ div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
+ background-position: 0 -10px;
+ }
+
+ .high { background: #b5d592 !important; }
+ .medium { background: #ffe87c !important; }
+ .low { background: #fc8c84 !important; }
+
+ span.cover-fill, span.cover-empty {
+ display:inline-block;
+ border:1px solid #444;
+ background: white;
+ height: 12px;
+ }
+ span.cover-fill {
+ background: #ccc;
+ border-right: 1px solid #444;
+ }
+ span.cover-empty {
+ background: white;
+ border-left: none;
+ }
+ span.cover-full {
+ border-right: none !important;
+ }
+ pre.prettyprint {
+ border: none !important;
+ padding: 0 !important;
+ margin: 0 !important;
+ }
+ .com { color: #999 !important; }
+ .ignore-none { color: #999; font-weight: normal; }
+
+ </style>
+</head>
+<body>
+<div class="header medium">
+ <h1>Code coverage report for <span class="entity">spec/spec.js</span></h1>
+ <h2>
+
+ Statements: <span class="metric">76.19% <small>(16 / 21)</small></span>
+
+
+ Branches: <span class="metric">73.33% <small>(11 / 15)</small></span>
+
+
+ Functions: <span class="metric">83.33% <small>(5 / 6)</small></span>
+
+
+ Lines: <span class="metric">76.19% <small>(16 / 21)</small></span>
+
+ Ignored: <span class="metric"><span class="ignore-none">none</span></span>
+ </h2>
+ <div class="path"><a href="../index.html">All files</a> » <a href="index.html">spec/</a> » spec.js</div>
+</div>
+<div class="body">
+<pre><table class="coverage">
+<tr><td class="line-count">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50</td><td class="line-coverage"><span class="cline-any cline-yes">3</span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-yes">3</span>
+<span class="cline-any cline-no"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-yes">3</span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-yes">3</span>
+<span class="cline-any cline-yes">3</span>
+<span class="cline-any cline-yes">42</span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-yes">3</span>
+<span class="cline-any cline-yes">21</span>
+<span class="cline-any cline-yes">21</span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-yes">366</span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-yes">30</span>
+<span class="cline-any cline-yes">78</span>
+<span class="cline-any cline-yes">78</span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-yes">288</span>
+<span class="cline-any cline-yes">288</span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-no"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-yes">288</span>
+<span class="cline-any cline-no"> </span>
+<span class="cline-any cline-no"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-no"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span>
+<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">describe('spec', function() {
+ // NOP Under non-node environments
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof process === 'undefined') {
+<span class="cstat-no" title="statement not covered" > return;</span>
+ }
+
+ var _ = require('underscore'),
+ Handlebars = require('../lib'),
+ fs = require('fs');
+
+ var specDir =__dirname + '/mustache/specs/';
+ var specs = _.filter(fs.readdirSync(specDir), function(name) {
+ return /.*\.json$/.test(name);
+ });
+
+ _.each(specs, function(name) {
+ var spec = require(specDir + name);
+ _.each(spec.tests, function(test) {
+ // Our lambda implementation knowingly deviates from the optional Mustace lambda spec
+ // We also do not support alternative delimeters
+ if (name === '~lambdas.json'
+
+ // We also choose to throw if paritals are not found
+ || (name === 'partials.json' && test.name === 'Failed Lookup')
+
+ // We nest the entire response from partials, not just the literals
+ || (name === 'partials.json' && test.name === 'Standalone Indentation')
+
+ || /\{\{\=/.test(test.template)
+ || _.any(test.partials, function(partial) { return /\{\{\=/.test(partial); })) {
+ it.skip(name + ' - ' + test.name);
+ return;
+ }
+
+ var data = _.clone(test.data);
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (data.lambda) {
+ // Blergh
+<span class="cstat-no" title="statement not covered" > data.lambda = eval('(' + data.lambda.js + ')');</span>
+ }
+ it(name + ' - ' + test.name, <span class="fstat-no" title="function not covered" >function() {</span>
+<span class="cstat-no" title="statement not covered" > if (test.partials) {</span>
+<span class="cstat-no" title="statement not covered" > shouldCompileToWithPartials(test.template, [data, {}, test.partials, true], true, test.expected, test.desc + ' "' + test.template + '"');</span>
+ } else {
+<span class="cstat-no" title="statement not covered" > shouldCompileTo(test.template, [data, {}, {}, true], test.expected, test.desc + ' "' + test.template + '"');</span>
+ }
+ });
+ });
+ });
+});
+ </pre></td></tr>
+</table></pre>
+
+</div>
+<div class="footer">
+ <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Wed Aug 13 2014 23:50:21 GMT-0500 (CDT)</div>
+</div>
+
+<script src="../prettify.js"></script>
+
+<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
+<script>
+
+ YUI().use('datatable', function (Y) {
+
+ var formatters = {
+ pct: function (o) {
+ o.className += o.record.get('classes')[o.column.key];
+ try {
+ return o.value.toFixed(2) + '%';
+ } catch (ex) { return o.value + '%'; }
+ },
+ html: function (o) {
+ o.className += o.record.get('classes')[o.column.key];
+ return o.record.get(o.column.key + '_html');
+ }
+ },
+ defaultFormatter = function (o) {
+ o.className += o.record.get('classes')[o.column.key];
+ return o.value;
+ };
+
+ function getColumns(theadNode) {
+ var colNodes = theadNode.all('tr th'),
+ cols = [],
+ col;
+ colNodes.each(function (colNode) {
+ col = {
+ key: colNode.getAttribute('data-col'),
+ label: colNode.get('innerHTML') || ' ',
+ sortable: !colNode.getAttribute('data-nosort'),
+ className: colNode.getAttribute('class'),
+ type: colNode.getAttribute('data-type'),
+ allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
+ };
+ col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
+ cols.push(col);
+ });
+ return cols;
+ }
+
+ function getRowData(trNode, cols) {
+ var tdNodes = trNode.all('td'),
+ i,
+ row = { classes: {} },
+ node,
+ name;
+ for (i = 0; i < cols.length; i += 1) {
+ name = cols[i].key;
+ node = tdNodes.item(i);
+ row[name] = node.getAttribute('data-value') || node.get('innerHTML');
+ row[name + '_html'] = node.get('innerHTML');
+ row.classes[name] = node.getAttribute('class');
+ //Y.log('Name: ' + name + '; Value: ' + row[name]);
+ if (cols[i].type === 'number') { row[name] = row[name] * 1; }
+ }
+ //Y.log(row);
+ return row;
+ }
+
+ function getData(tbodyNode, cols) {
+ var data = [];
+ tbodyNode.all('tr').each(function (trNode) {
+ data.push(getRowData(trNode, cols));
+ });
+ return data;
+ }
+
+ function replaceTable(node) {
+ if (!node) { return; }
+ var cols = getColumns(node.one('thead')),
+ data = getData(node.one('tbody'), cols),
+ table,
+ parent = node.get('parentNode');
+
+ table = new Y.DataTable({
+ columns: cols,
+ data: data,
+ sortBy: 'file'
+ });
+ parent.set('innerHTML', '');
+ table.render(parent);
+ }
+
+ Y.on('domready', function () {
+ replaceTable(Y.one('div.coverage-summary table'));
+ if (typeof prettyPrint === 'function') {
+ prettyPrint();
+ }
+ });
+ });
+</script>
+</body>
+</html>