| <!doctype html> |
| <html lang="en"> |
| <head> |
| <title>Code coverage report for lib/index.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("http://yui.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 high"> |
| <h1>Code coverage report for <span class="entity">lib/index.js</span></h1> |
| <h2> |
| |
| Statements: <span class="metric">100% <small>(54 / 54)</small></span> |
| |
| |
| Branches: <span class="metric">100% <small>(26 / 26)</small></span> |
| |
| |
| Functions: <span class="metric">100% <small>(6 / 6)</small></span> |
| |
| |
| Lines: <span class="metric">100% <small>(54 / 54)</small></span> |
| |
| Ignored: <span class="metric">1 branch</span> |
| </h2> |
| <div class="path"><a href="../index.html">All files</a> » <a href="index.html">lib/</a> » index.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 |
| 51 |
| 52 |
| 53 |
| 54 |
| 55 |
| 56 |
| 57 |
| 58 |
| 59 |
| 60 |
| 61 |
| 62 |
| 63 |
| 64 |
| 65 |
| 66 |
| 67 |
| 68 |
| 69 |
| 70 |
| 71 |
| 72 |
| 73 |
| 74 |
| 75 |
| 76 |
| 77 |
| 78 |
| 79 |
| 80 |
| 81 |
| 82 |
| 83 |
| 84 |
| 85 |
| 86 |
| 87 |
| 88 |
| 89 |
| 90 |
| 91 |
| 92 |
| 93 |
| 94 |
| 95 |
| 96 |
| 97 |
| 98 |
| 99 |
| 100 |
| 101 |
| 102 |
| 103 |
| 104 |
| 105 |
| 106 |
| 107 |
| 108 |
| 109 |
| 110 |
| 111 |
| 112 |
| 113 |
| 114 |
| 115 |
| 116 |
| 117 |
| 118 |
| 119 |
| 120 |
| 121 |
| 122 |
| 123 |
| 124 |
| 125 |
| 126 |
| 127</td><td class="line-coverage"><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">1</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">1</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1</span> |
| <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-yes">424</span> |
| <span class="cline-any cline-yes">424</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">424</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">4</span> |
| <span class="cline-any cline-yes">4</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">4</span> |
| <span class="cline-any cline-yes">4</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-neutral"> </span> |
| <span class="cline-any cline-yes">3</span> |
| <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-yes">3</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-neutral"> </span> |
| <span class="cline-any cline-yes">263</span> |
| <span class="cline-any cline-yes">263</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">263</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">48</span> |
| <span class="cline-any cline-yes">48</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">48</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">48</span> |
| <span class="cline-any cline-yes">48</span> |
| <span class="cline-any cline-yes">591</span> |
| <span class="cline-any cline-yes">48</span> |
| <span class="cline-any cline-yes">48</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">48</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">23</span> |
| <span class="cline-any cline-yes">23</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">23</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">424</span> |
| <span class="cline-any cline-yes">7</span> |
| <span class="cline-any cline-yes">7</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-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-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-neutral"> </span> |
| <span class="cline-any cline-yes">3</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1</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">1</span> |
| <span class="cline-any cline-yes">3</span> |
| <span class="cline-any cline-yes">3</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-yes">1</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">1</span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/* |
| Copyright (c) 2012, Yahoo! Inc. All rights reserved. |
| Code licensed under the BSD License: |
| http://yuilibrary.com/license/ |
| */ |
| |
| var fs = require('fs'), |
| path = require('path'); |
| |
| /* istanbul ignore next */ |
| var exists = fs.exists || <span class="branch-1 cbranch-skip" title="branch not covered" >path.exists;</span> |
| |
| var walkFile = function(str, cb) { |
| var data = [], item; |
| |
| [ 'end_of_record' ].concat(str.split('\n')).forEach(function(line) { |
| line = line.trim(); |
| var allparts = line.split(':'), |
| parts = [allparts.shift(), allparts.join(':')], |
| lines, fn; |
| |
| switch (parts[0].toUpperCase()) { |
| case 'TN': |
| item.title = parts[1].trim(); |
| break; |
| case 'SF': |
| item.file = parts.slice(1).join(':').trim(); |
| break; |
| case 'FNF': |
| item.functions.found = Number(parts[1].trim()); |
| break; |
| case 'FNH': |
| item.functions.hit = Number(parts[1].trim()); |
| break; |
| case 'LF': |
| item.lines.found = Number(parts[1].trim()); |
| break; |
| case 'LH': |
| item.lines.hit = Number(parts[1].trim()); |
| break; |
| case 'DA': |
| lines = parts[1].split(','); |
| item.lines.details.push({ |
| line: Number(lines[0]), |
| hit: Number(lines[1]) |
| }); |
| break; |
| case 'FN': |
| fn = parts[1].split(','); |
| item.functions.details.push({ |
| name: fn[1], |
| line: Number(fn[0]) |
| }); |
| break; |
| case 'FNDA': |
| fn = parts[1].split(','); |
| item.functions.details.some(function(i, k) { |
| if (i.name === fn[1] && i.hit === undefined) { |
| item.functions.details[k].hit = Number(fn[0]); |
| return true; |
| } |
| }); |
| break; |
| case 'BRDA': |
| fn = parts[1].split(','); |
| item.branches.details.push({ |
| line: Number(fn[0]), |
| block: Number(fn[1]), |
| branch: Number(fn[2]), |
| taken: ((fn[3] === '-') ? 0 : Number(fn[3])) |
| }); |
| break; |
| case 'BRF': |
| item.branches.found = Number(parts[1]); |
| break; |
| case 'BRH': |
| item.branches.hit = Number(parts[1]); |
| break; |
| } |
| |
| if (line.indexOf('end_of_record') > -1) { |
| data.push(item); |
| item = { |
| lines: { |
| found: 0, |
| hit: 0, |
| details: [] |
| }, |
| functions: { |
| hit: 0, |
| found: 0, |
| details: [] |
| }, |
| branches: { |
| hit: 0, |
| found: 0, |
| details: [] |
| } |
| }; |
| } |
| }); |
| |
| data.shift(); |
| |
| if (data.length) { |
| cb(null, data); |
| } else { |
| cb('Failed to parse string'); |
| } |
| }; |
| |
| var parse = function(file, cb) { |
| exists(file, function(x) { |
| if (!x) { |
| return walkFile(file, cb); |
| } |
| fs.readFile(file, 'utf8', function(err, str) { |
| walkFile(str, cb); |
| }); |
| }); |
| |
| }; |
| |
| |
| module.exports = parse; |
| module.exports.source = walkFile; |
| </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 Tue Jun 17 2014 12:27:58 GMT-0500 (CDT)</div> |
| </div> |
| |
| <script src="../prettify.js"></script> |
| |
| <script src="http://yui.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> |