Add coverage

pull/134/head
Koichi Nakashima 3 years ago
parent 346be658ae
commit a8b03123ac

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

@ -0,0 +1,32 @@
/* Based upon the lcov CSS style, style files can be reused */
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #284FA8; text-decoration: underline; }
a:visited { color: #00CB40; text-decoration: underline; }
a:active { color: #FF0040; text-decoration: underline; }
td.title { text-align: center; padding-bottom: 10px; font-size: 20pt; font-weight: bold; }
td.ruler { background-color: #6688D4; }
td.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
td.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
td.versionInfo { text-align: center; padding-top: 2px; }
th.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
th.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
pre.source { font-family: monospace; white-space: pre; overflow: hidden; text-overflow: ellipsis; }
span.lineNum { background-color: #EFE383; }
span.lineNumLegend { background-color: #EFE383; width: 96px; font-weight: bold ;}
span.lineCov { background-color: #adff9a; }
span.linePartCov { background-color: #fffe80; }
span.lineNoCov { background-color: #ffbbbb; }
span.orderNum { background-color: #e0b373; float: right; width:5em; text-align: left; }
span.orderNumLegend { background-color: #e0b373; width: 96px; font-weight: bold ;}
span.coverHits { background-color: #DFE383; padding-left: 3px; padding-right: 1px; text-align: right; list-style-type: none; display: inline-block; width: 5em; }
span.coverHitsLegend { background-color: #DFE383; width: 96px; font-weight: bold; margin: 0 auto;}
td.tableHead { text-align: center; color: #FFFFFF; background-color: #6688D4; font-family: sans-serif; font-size: 120%; font-weight: bold; }
td.coverFile { text-align: left; padding-left: 10px; padding-right: 20px; color: #284FA8; font-family: monospace; }
td.coverBar { padding-left: 10px; padding-right: 10px; background-color: #DAE7FE; }
td.coverBarOutline { background-color: #000000; }
td.coverPer { text-align: left; padding-left: 10px; padding-right: 10px; font-weight: bold; }
td.coverPerLeftMed { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #fffe80; font-weight: bold; }
td.coverPerLeftLo { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #ffbbbb; font-weight: bold; }
td.coverPerLeftHi { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #adff9a; font-weight: bold; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }

@ -0,0 +1,72 @@
<script type="text/javascript" src="JSON.sh.703d91c7.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,196 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/usr/bin/env bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"throw () {"},
{"lineNum":" 4","line":" echo \"$*\" >&2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 5","line":" exit 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 6","line":"}"},
{"lineNum":" 7","line":""},
{"lineNum":" 8","line":"BRIEF=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 9","line":"LEAFONLY=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 10","line":"PRUNE=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 11","line":""},
{"lineNum":" 12","line":"usage() {"},
{"lineNum":" 13","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 14","line":" echo \"Usage: JSON.sh [-b] [-l] [-p] [-h]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 15","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 16","line":" echo \"-p - Prune empty. Exclude fields with empty values.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 17","line":" echo \"-l - Leaf only. Only show leaf nodes, which stops data duplication.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":" echo \"-b - Brief. Combines \'Leaf only\' and \'Prune empty\' options.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 19","line":" echo \"-h - This help text.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 20","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":"}"},
{"lineNum":" 22","line":""},
{"lineNum":" 23","line":"parse_options() {"},
{"lineNum":" 24","line":" set -- \"$@\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 25","line":" local ARGN=$#","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 26","line":" while [ $ARGN -ne 0 ]","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 27","line":" do"},
{"lineNum":" 28","line":" case $1 in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":" -h) usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 30","line":" exit 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 31","line":" ;;"},
{"lineNum":" 32","line":" -b) BRIEF=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 33","line":" LEAFONLY=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 34","line":" PRUNE=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" ;;"},
{"lineNum":" 36","line":" -l) LEAFONLY=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 37","line":" ;;"},
{"lineNum":" 38","line":" -p) PRUNE=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 39","line":" ;;"},
{"lineNum":" 40","line":" ?*) echo \"ERROR: Unknown option.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 41","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 42","line":" exit 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":" ;;"},
{"lineNum":" 44","line":" esac"},
{"lineNum":" 45","line":" shift 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 46","line":" ARGN=$((ARGN-1))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":" done"},
{"lineNum":" 48","line":"}"},
{"lineNum":" 49","line":""},
{"lineNum":" 50","line":"awk_egrep () {"},
{"lineNum":" 51","line":" local pattern_string=$1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 52","line":""},
{"lineNum":" 53","line":" gawk \'{","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 54","line":" while ($0) {","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 55","line":" start=match($0, pattern);","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 56","line":" token=substr($0, start, RLENGTH);","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 57","line":" print token;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":" $0=substr($0, start+RLENGTH);","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 59","line":" }"},
{"lineNum":" 60","line":" }\' pattern=$pattern_string","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 61","line":"}"},
{"lineNum":" 62","line":""},
{"lineNum":" 63","line":"tokenize () {"},
{"lineNum":" 64","line":" local GREP","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 65","line":" local ESCAPE","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 66","line":" local CHAR","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 67","line":""},
{"lineNum":" 68","line":" if echo \"test string\" | egrep -ao --color=never \"test\" &>/dev/null","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 69","line":" then"},
{"lineNum":" 70","line":" GREP=\'egrep -ao --color=never\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 71","line":" else"},
{"lineNum":" 72","line":" GREP=\'egrep -ao\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 73","line":" fi"},
{"lineNum":" 74","line":""},
{"lineNum":" 75","line":" if echo \"test string\" | egrep -o \"test\" &>/dev/null","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 76","line":" then"},
{"lineNum":" 77","line":" ESCAPE=\'(\\\\[^u[:cntrl:]]|\\\\u[0-9a-fA-F]{4})\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 78","line":" CHAR=\'[^[:cntrl:]\"\\\\]\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 79","line":" else"},
{"lineNum":" 80","line":" GREP=awk_egrep","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 81","line":" ESCAPE=\'(\\\\\\\\[^u[:cntrl:]]|\\\\u[0-9a-fA-F]{4})\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":" CHAR=\'[^[:cntrl:]\"\\\\\\\\]\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 83","line":" fi"},
{"lineNum":" 84","line":""},
{"lineNum":" 85","line":" local STRING=\"\\\"$CHAR*($ESCAPE$CHAR*)*\\\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 86","line":" local NUMBER=\'-?(0|[1-9][0-9]*)([.][0-9]*)?([eE][+-]?[0-9]*)?\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 87","line":" local KEYWORD=\'null|false|true\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 88","line":" local SPACE=\'[[:space:]]+\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 89","line":""},
{"lineNum":" 90","line":" $GREP \"$STRING|$NUMBER|$KEYWORD|$SPACE|.\" | egrep -v \"^$SPACE$\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 91","line":"}"},
{"lineNum":" 92","line":""},
{"lineNum":" 93","line":"parse_array () {"},
{"lineNum":" 94","line":" local index=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 95","line":" local ary=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 96","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 97","line":" case \"$token\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 98","line":" \']\') ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 99","line":" *)"},
{"lineNum":" 100","line":" while :","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 101","line":" do"},
{"lineNum":" 102","line":" parse_value \"$1\" \"$index\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 103","line":" index=$((index+1))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 104","line":" ary=\"$ary\"\"$value\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 105","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 106","line":" case \"$token\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 107","line":" \']\') break ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 108","line":" \',\') ary=\"$ary,\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 109","line":" *) throw \"EXPECTED , or ] GOT ${token:-EOF}\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 110","line":" esac"},
{"lineNum":" 111","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 112","line":" done"},
{"lineNum":" 113","line":" ;;"},
{"lineNum":" 114","line":" esac"},
{"lineNum":" 115","line":" [ \"$BRIEF\" -eq 0 ] && value=`printf \'[%s]\' \"$ary\"` || value=","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 116","line":" :","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 117","line":"}"},
{"lineNum":" 118","line":""},
{"lineNum":" 119","line":"parse_object () {"},
{"lineNum":" 120","line":" local key","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 121","line":" local obj=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 122","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 123","line":" case \"$token\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 124","line":" \'}\') ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 125","line":" *)"},
{"lineNum":" 126","line":" while :","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 127","line":" do"},
{"lineNum":" 128","line":" case \"$token\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 129","line":" \'\"\'*\'\"\') key=$token ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 130","line":" *) throw \"EXPECTED string GOT ${token:-EOF}\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 131","line":" esac"},
{"lineNum":" 132","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 133","line":" case \"$token\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 134","line":" \':\') ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 135","line":" *) throw \"EXPECTED : GOT ${token:-EOF}\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 136","line":" esac"},
{"lineNum":" 137","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 138","line":" parse_value \"$1\" \"$key\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 139","line":" obj=\"$obj$key:$value\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 140","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 141","line":" case \"$token\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 142","line":" \'}\') break ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 143","line":" \',\') obj=\"$obj,\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 144","line":" *) throw \"EXPECTED , or } GOT ${token:-EOF}\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 145","line":" esac"},
{"lineNum":" 146","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 147","line":" done"},
{"lineNum":" 148","line":" ;;"},
{"lineNum":" 149","line":" esac"},
{"lineNum":" 150","line":" [ \"$BRIEF\" -eq 0 ] && value=`printf \'{%s}\' \"$obj\"` || value=","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 151","line":" :","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 152","line":"}"},
{"lineNum":" 153","line":""},
{"lineNum":" 154","line":"parse_value () {"},
{"lineNum":" 155","line":" local jpath=\"${1:+$1,}$2\" isleaf=0 isempty=0 print=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 156","line":" case \"$token\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 157","line":" \'{\') parse_object \"$jpath\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 158","line":" \'[\') parse_array \"$jpath\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 159","line":" # At this point, the only valid single-character tokens are digits."},
{"lineNum":" 160","line":" \'\'|[!0-9]) throw \"EXPECTED value GOT ${token:-EOF}\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 161","line":" *) value=$token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 162","line":" isleaf=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 163","line":" [ \"$value\" = \'\"\"\' ] && isempty=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 164","line":" ;;"},
{"lineNum":" 165","line":" esac"},
{"lineNum":" 166","line":" [ \"$value\" = \'\' ] && return","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 167","line":" [ \"$LEAFONLY\" -eq 0 ] && [ \"$PRUNE\" -eq 0 ] && print=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 168","line":" [ \"$LEAFONLY\" -eq 1 ] && [ \"$isleaf\" -eq 1 ] && [ $PRUNE -eq 0 ] && print=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 169","line":" [ \"$LEAFONLY\" -eq 0 ] && [ \"$PRUNE\" -eq 1 ] && [ \"$isempty\" -eq 0 ] && print=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 170","line":" [ \"$LEAFONLY\" -eq 1 ] && [ \"$isleaf\" -eq 1 ] && \\","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 171","line":" [ $PRUNE -eq 1 ] && [ $isempty -eq 0 ] && print=1"},
{"lineNum":" 172","line":" [ \"$print\" -eq 1 ] && printf \"[%s]\\t%s\\n\" \"$jpath\" \"$value\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 173","line":" :","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 174","line":"}"},
{"lineNum":" 175","line":""},
{"lineNum":" 176","line":"parse () {"},
{"lineNum":" 177","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 178","line":" parse_value","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 179","line":" read -r token","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 180","line":" case \"$token\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 181","line":" \'\') ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 182","line":" *) throw \"EXPECTED EOF GOT $token\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 183","line":" esac"},
{"lineNum":" 184","line":"}"},
{"lineNum":" 185","line":""},
{"lineNum":" 186","line":"parse_options \"$@\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 187","line":""},
{"lineNum":" 188","line":"if ([ \"$0\" = \"$BASH_SOURCE\" ] || ! [ -n \"$BASH_SOURCE\" ]);","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 189","line":"then"},
{"lineNum":" 190","line":" tokenize | parse","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 191","line":"fi"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 119, "covered" : 0,};
var merged_data = [];

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

@ -0,0 +1,32 @@
/* Based upon the lcov CSS style, style files can be reused */
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #284FA8; text-decoration: underline; }
a:visited { color: #00CB40; text-decoration: underline; }
a:active { color: #FF0040; text-decoration: underline; }
td.title { text-align: center; padding-bottom: 10px; font-size: 20pt; font-weight: bold; }
td.ruler { background-color: #6688D4; }
td.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
td.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
td.versionInfo { text-align: center; padding-top: 2px; }
th.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
th.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
pre.source { font-family: monospace; white-space: pre; overflow: hidden; text-overflow: ellipsis; }
span.lineNum { background-color: #EFE383; }
span.lineNumLegend { background-color: #EFE383; width: 96px; font-weight: bold ;}
span.lineCov { background-color: #adff9a; }
span.linePartCov { background-color: #fffe80; }
span.lineNoCov { background-color: #ffbbbb; }
span.orderNum { background-color: #e0b373; float: right; width:5em; text-align: left; }
span.orderNumLegend { background-color: #e0b373; width: 96px; font-weight: bold ;}
span.coverHits { background-color: #DFE383; padding-left: 3px; padding-right: 1px; text-align: right; list-style-type: none; display: inline-block; width: 5em; }
span.coverHitsLegend { background-color: #DFE383; width: 96px; font-weight: bold; margin: 0 auto;}
td.tableHead { text-align: center; color: #FFFFFF; background-color: #6688D4; font-family: sans-serif; font-size: 120%; font-weight: bold; }
td.coverFile { text-align: left; padding-left: 10px; padding-right: 20px; color: #284FA8; font-family: monospace; }
td.coverBar { padding-left: 10px; padding-right: 10px; background-color: #DAE7FE; }
td.coverBarOutline { background-color: #000000; }
td.coverPer { text-align: left; padding-left: 10px; padding-right: 10px; font-weight: bold; }
td.coverPerLeftMed { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #fffe80; font-weight: bold; }
td.coverPerLeftLo { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #ffbbbb; font-weight: bold; }
td.coverPerLeftHi { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #adff9a; font-weight: bold; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }

@ -0,0 +1,72 @@
<script type="text/javascript" src="bpkg.sh.8900aafb.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,128 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"## prevent sourcing"},
{"lineNum":" 4","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 5","line":" echo >&2 \"error: \\`bpkg\' cannot be sourced\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 6","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 7","line":"fi"},
{"lineNum":" 8","line":""},
{"lineNum":" 9","line":"## bpkg version"},
{"lineNum":" 10","line":"VERSION=\"0.3.2\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 11","line":""},
{"lineNum":" 12","line":"## output error to stderr"},
{"lineNum":" 13","line":"error () {"},
{"lineNum":" 14","line":" printf >&2 \"error: %s\\n\" \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 15","line":"}"},
{"lineNum":" 16","line":""},
{"lineNum":" 17","line":"## output usage"},
{"lineNum":" 18","line":"usage () {"},
{"lineNum":" 19","line":" echo \"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 20","line":" echo \" usage: bpkg [-hV] <command> [args]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":" echo \"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 22","line":"}"},
{"lineNum":" 23","line":""},
{"lineNum":" 24","line":"## commands"},
{"lineNum":" 25","line":"commands () {"},
{"lineNum":" 26","line":" {"},
{"lineNum":" 27","line":" declare -a local cmds=( $(","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 28","line":" bpkg-suggest \'bpkg-\' |","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":" tail -n+2 |","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 30","line":" sed \'s/.*\\/bpkg-//g\' |","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 31","line":" sort -u |","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 32","line":" tr \'\\n\' \' \'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 33","line":" ) )","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 34","line":""},
{"lineNum":" 35","line":" echo \"${cmds[@]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 36","line":" }"},
{"lineNum":" 37","line":"}"},
{"lineNum":" 38","line":""},
{"lineNum":" 39","line":"## feature tests"},
{"lineNum":" 40","line":"features () {"},
{"lineNum":" 41","line":" declare -a local features=(bpkg-json bpkg-suggest)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 42","line":" for ((i = 0; i < ${#features[@]}; ++i)); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":" local f=\"${features[$i]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 44","line":" if ! type \"${f}\" > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 45","line":" error \"Missing \"${f}\" dependency\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 46","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":" fi"},
{"lineNum":" 48","line":" done"},
{"lineNum":" 49","line":"}"},
{"lineNum":" 50","line":""},
{"lineNum":" 51","line":"bpkg () {"},
{"lineNum":" 52","line":" local arg=\"$1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 53","line":" local cmd=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 54","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 55","line":""},
{"lineNum":" 56","line":" ## test for required features"},
{"lineNum":" 57","line":" features || return $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":""},
{"lineNum":" 59","line":" case \"${arg}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 60","line":""},
{"lineNum":" 61","line":" ## flags"},
{"lineNum":" 62","line":" -V|--version)"},
{"lineNum":" 63","line":" echo \"${VERSION}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 64","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 65","line":" ;;"},
{"lineNum":" 66","line":""},
{"lineNum":" 67","line":" -h|--help)"},
{"lineNum":" 68","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 69","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 70","line":" echo \"Here are some commands available in your path:\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 71","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 72","line":" local cmds=($(commands))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 73","line":" for cmd in ${cmds[@]}; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 74","line":" echo \" ${cmd}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 75","line":" done"},
{"lineNum":" 76","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 77","line":" ;;"},
{"lineNum":" 78","line":""},
{"lineNum":" 79","line":" *)"},
{"lineNum":" 80","line":" if [ -z \"${arg}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 81","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 83","line":" fi"},
{"lineNum":" 84","line":" cmd=\"bpkg-${arg}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 85","line":" if type -f \"${cmd}\" > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 86","line":" \"${cmd}\" \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 87","line":" return $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 88","line":" else"},
{"lineNum":" 89","line":" echo >&2 \"error: \\`${arg}\' is not a bpkg command.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 90","line":" {"},
{"lineNum":" 91","line":" declare -a local res=($(commands))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 92","line":""},
{"lineNum":" 93","line":" if [ ! -z \"${res}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 94","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 95","line":" echo >&2 \"Did you mean one of these?\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 96","line":" found=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 97","line":" for r in \"${res[@]}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 98","line":" if [[ \"$r\" == *\"${arg}\"* ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 99","line":" echo \" $ bpkg ${r}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 100","line":" found=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 101","line":" fi"},
{"lineNum":" 102","line":" done"},
{"lineNum":" 103","line":" if [ \"$found\" == \"0\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 104","line":" for r in \"${res[@]}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 105","line":" echo \" $ bpkg ${r}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 106","line":" done"},
{"lineNum":" 107","line":" fi"},
{"lineNum":" 108","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 109","line":" else"},
{"lineNum":" 110","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 111","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 112","line":" fi"},
{"lineNum":" 113","line":" }"},
{"lineNum":" 114","line":" fi"},
{"lineNum":" 115","line":" ;;"},
{"lineNum":" 116","line":""},
{"lineNum":" 117","line":" esac"},
{"lineNum":" 118","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 119","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 120","line":"}"},
{"lineNum":" 121","line":""},
{"lineNum":" 122","line":"bpkg \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 123","line":"exit $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 64, "covered" : 0,};
var merged_data = [];

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,25 @@
{
"files": [
{"file": "/home/koichi/workspace/bpkg/lib/term/example.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "48"},
{"file": "/home/koichi/workspace/bpkg/lib/utils/utils.sh", "percent_covered": "20.55", "covered_lines": "15", "total_lines": "73"},
{"file": "/home/koichi/workspace/bpkg/setup.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "57"},
{"file": "/home/koichi/workspace/bpkg/lib/update/update.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "43"},
{"file": "/home/koichi/workspace/bpkg/lib/suggest/suggest.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "48"},
{"file": "/home/koichi/workspace/bpkg/lib/term/term.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "147"},
{"file": "/home/koichi/workspace/bpkg/lib/package/package.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "21"},
{"file": "/home/koichi/workspace/bpkg/lib/getdeps/getdeps.sh", "percent_covered": "86.36", "covered_lines": "19", "total_lines": "22"},
{"file": "/home/koichi/workspace/bpkg/lib/init/init.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "183"},
{"file": "/home/koichi/workspace/bpkg/lib/show/show.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "129"},
{"file": "/home/koichi/workspace/bpkg/lib/install/install.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "241"},
{"file": "/home/koichi/workspace/bpkg/lib/json/JSON.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "119"},
{"file": "/home/koichi/workspace/bpkg/bpkg.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "64"},
{"file": "/home/koichi/workspace/bpkg/lib/list/list.sh", "percent_covered": "0.00", "covered_lines": "0", "total_lines": "47"}
],
"percent_covered": "2.74",
"covered_lines": 34,
"total_lines": 1242,
"percent_low": 25,
"percent_high": 75,
"command": "shellspec lib/json/spec spec",
"date": "2021-03-28 23:31:54"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

@ -0,0 +1,32 @@
/* Based upon the lcov CSS style, style files can be reused */
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #284FA8; text-decoration: underline; }
a:visited { color: #00CB40; text-decoration: underline; }
a:active { color: #FF0040; text-decoration: underline; }
td.title { text-align: center; padding-bottom: 10px; font-size: 20pt; font-weight: bold; }
td.ruler { background-color: #6688D4; }
td.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
td.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
td.versionInfo { text-align: center; padding-top: 2px; }
th.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
th.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
pre.source { font-family: monospace; white-space: pre; overflow: hidden; text-overflow: ellipsis; }
span.lineNum { background-color: #EFE383; }
span.lineNumLegend { background-color: #EFE383; width: 96px; font-weight: bold ;}
span.lineCov { background-color: #adff9a; }
span.linePartCov { background-color: #fffe80; }
span.lineNoCov { background-color: #ffbbbb; }
span.orderNum { background-color: #e0b373; float: right; width:5em; text-align: left; }
span.orderNumLegend { background-color: #e0b373; width: 96px; font-weight: bold ;}
span.coverHits { background-color: #DFE383; padding-left: 3px; padding-right: 1px; text-align: right; list-style-type: none; display: inline-block; width: 5em; }
span.coverHitsLegend { background-color: #DFE383; width: 96px; font-weight: bold; margin: 0 auto;}
td.tableHead { text-align: center; color: #FFFFFF; background-color: #6688D4; font-family: sans-serif; font-size: 120%; font-weight: bold; }
td.coverFile { text-align: left; padding-left: 10px; padding-right: 20px; color: #284FA8; font-family: monospace; }
td.coverBar { padding-left: 10px; padding-right: 10px; background-color: #DAE7FE; }
td.coverBarOutline { background-color: #000000; }
td.coverPer { text-align: left; padding-left: 10px; padding-right: 10px; font-weight: bold; }
td.coverPerLeftMed { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #fffe80; font-weight: bold; }
td.coverPerLeftLo { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #ffbbbb; font-weight: bold; }
td.coverPerLeftHi { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #adff9a; font-weight: bold; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,78 @@
window.onload = function () {
// http://stackoverflow.com/questions/8853396/logical-operator-in-a-handlebars-js-if-conditional
Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
switch (operator) {
case '==':
return (v1 == v2) ? options.fn(this) : options.inverse(this);
case '===':
return (v1 === v2) ? options.fn(this) : options.inverse(this);
case '<':
return (v1 < v2) ? options.fn(this) : options.inverse(this);
case '<=':
return (v1 <= v2) ? options.fn(this) : options.inverse(this);
case '>':
return (v1 > v2) ? options.fn(this) : options.inverse(this);
case '>=':
return (v1 >= v2) ? options.fn(this) : options.inverse(this);
case '&&':
return (v1 && v2) ? options.fn(this) : options.inverse(this);
case '||':
return (v1 || v2) ? options.fn(this) : options.inverse(this);
default:
return options.inverse(this);
}
});
// http://stackoverflow.com/questions/17095813/handlebars-if-and-numeric-zeroes
Handlebars.registerHelper('exists', function(variable, options) {
if (typeof variable !== 'undefined') {
return options.fn(this);
} else {
return options.inverse(this);
}
});
var filesElement = document.getElementById("files-template")
if (filesElement) {
var source = filesElement.innerHTML;
var template = Handlebars.compile(source);
document.getElementById('files-placeholder').innerHTML = template(data);
}
var linesElement = document.getElementById("lines-template")
if (linesElement) {
var source = linesElement.innerHTML;
var template = Handlebars.compile(source);
document.getElementById('lines-placeholder').innerHTML = template(data);
}
elem = document.getElementById('header-percent-covered')
elem.className = toCoverPercentString(header.covered, header.instrumented);
elem.innerHTML = ((header.covered / header.instrumented) * 100).toFixed(1) + "%";
document.getElementById('header-command').innerHTML = header.command;
document.getElementById('window-title').innerHTML = "Coverage report - " + header.command;
document.getElementById('header-date').innerHTML = header.date;
document.getElementById('header-covered').innerHTML = header.covered
document.getElementById('header-instrumented').innerHTML = header.instrumented
$("#index-table").tablesorter({
theme : 'blue',
sortList : [[1,0]],
cssInfoBlock : "tablesorter-no-sort",
widgets: ["saveSort"],
});
}
function toCoverPercentString (covered, instrumented) {
perc = (covered / instrumented) * 100;
if (perc <= percent_low)
return "coverPerLeftLo";
else if (perc >= percent_high)
return "coverPerLeftHi";
return "coverPerLeftMed";
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,221 @@
/*************
Blue Theme
*************/
/* overall */
.tablesorter-blue {
width: 100%;
background-color: #fff;
margin: 10px 0 15px;
text-align: left;
border-spacing: 0;
border: #cdcdcd 1px solid;
border-width: 1px 0 0 1px;
}
.tablesorter-blue th,
.tablesorter-blue td {
border: #cdcdcd 1px solid;
border-width: 0 1px 1px 0;
}
/* header */
.tablesorter-blue th,
.tablesorter-blue thead td {
font: bold 12px/18px Arial, Sans-serif;
color: #000;
background-color: #99bfe6;
border-collapse: collapse;
padding: 4px;
text-shadow: 0 1px 0 rgba(204, 204, 204, 0.7);
}
.tablesorter-blue tbody td,
.tablesorter-blue tfoot th,
.tablesorter-blue tfoot td {
padding: 4px;
vertical-align: top;
}
.tablesorter-blue .header,
.tablesorter-blue .tablesorter-header {
/* black (unsorted) double arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);
/* white (unsorted) double arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); */
/* image */
/* background-image: url(images/black-unsorted.gif); */
background-repeat: no-repeat;
background-position: center right;
padding: 4px 18px 4px 4px;
white-space: normal;
cursor: pointer;
}
.tablesorter-blue .headerSortUp,
.tablesorter-blue .tablesorter-headerSortUp,
.tablesorter-blue .tablesorter-headerAsc {
background-color: #9fbfdf;
/* black asc arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);
/* white asc arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); */
/* image */
/* background-image: url(images/black-asc.gif); */
}
.tablesorter-blue .headerSortDown,
.tablesorter-blue .tablesorter-headerSortDown,
.tablesorter-blue .tablesorter-headerDesc {
background-color: #8cb3d9;
/* black desc arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);
/* white desc arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); */
/* image */
/* background-image: url(images/black-desc.gif); */
}
.tablesorter-blue thead .sorter-false {
background-image: none;
cursor: default;
padding: 4px;
}
/* tfoot */
.tablesorter-blue tfoot .tablesorter-headerSortUp,
.tablesorter-blue tfoot .tablesorter-headerSortDown,
.tablesorter-blue tfoot .tablesorter-headerAsc,
.tablesorter-blue tfoot .tablesorter-headerDesc {
/* remove sort arrows from footer */
background-image: none;
}
/* tbody */
.tablesorter-blue td {
color: #3d3d3d;
background-color: #fff;
padding: 4px;
vertical-align: top;
}
/* hovered row colors
you'll need to add additional lines for
rows with more than 2 child rows
*/
.tablesorter-blue tbody > tr:hover > td,
.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.even:hover > td,
.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
background: #d9d9d9;
}
.tablesorter-blue tbody > tr.odd:hover > td,
.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
background: #bfbfbf;
}
/* table processing indicator */
.tablesorter-blue .tablesorter-processing {
background-position: center center !important;
background-repeat: no-repeat !important;
/* background-image: url(../addons/pager/icons/loading.gif) !important; */
background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important;
}
/* Zebra Widget - row alternating colors */
.tablesorter-blue tbody tr.odd td {
background-color: #ebf2fa;
}
.tablesorter-blue tbody tr.even td {
background-color: #fff;
}
/* Column Widget - column sort colors */
.tablesorter-blue td.primary,
.tablesorter-blue tr.odd td.primary {
background-color: #99b3e6;
}
.tablesorter-blue tr.even td.primary {
background-color: #c2d1f0;
}
.tablesorter-blue td.secondary,
.tablesorter-blue tr.odd td.secondary {
background-color: #c2d1f0;
}
.tablesorter-blue tr.even td.secondary {
background-color: #d6e0f5;
}
.tablesorter-blue td.tertiary,
.tablesorter-blue tr.odd td.tertiary {
background-color: #d6e0f5;
}
.tablesorter-blue tr.even td.tertiary {
background-color: #ebf0fa;
}
/* caption */
caption {
background: #fff;
}
/* filter widget */
.tablesorter-blue .tablesorter-filter-row td {
background: #eee;
line-height: normal;
text-align: center; /* center the input */
-webkit-transition: line-height 0.1s ease;
-moz-transition: line-height 0.1s ease;
-o-transition: line-height 0.1s ease;
transition: line-height 0.1s ease;
}
/* optional disabled input styling */
.tablesorter-blue .tablesorter-filter-row .disabled {
opacity: 0.5;
filter: alpha(opacity=50);
cursor: not-allowed;
}
/* hidden filter row */
.tablesorter-blue .tablesorter-filter-row.hideme td {
/*** *********************************************** ***/
/*** change this padding to modify the thickness ***/
/*** of the closed filter row (height = padding x 2) ***/
padding: 2px;
/*** *********************************************** ***/
margin: 0;
line-height: 0;
cursor: pointer;
}
.tablesorter-blue .tablesorter-filter-row.hideme .tablesorter-filter {
height: 1px;
min-height: 0;
border: 0;
padding: 0;
margin: 0;
/* don't use visibility: hidden because it disables tabbing */
opacity: 0;
filter: alpha(opacity=0);
}
/* filters */
.tablesorter-blue .tablesorter-filter {
width: 98%;
height: auto;
margin: 0;
padding: 4px;
background-color: #fff;
border: 1px solid #bbb;
color: #333;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-transition: height 0.1s ease;
-moz-transition: height 0.1s ease;
-o-transition: height 0.1s ease;
transition: height 0.1s ease;
}
/* rows hidden by filtering (needed for child rows) */
.tablesorter .filtered {
display: none;
}
/* ajax error row */
.tablesorter .tablesorter-errorRow td {
text-align: center;
cursor: pointer;
background-color: #e6bf99;
}

@ -0,0 +1,72 @@
<script type="text/javascript" src="example.sh.17ea44a3.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,103 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"## include"},
{"lineNum":" 4","line":". term.sh","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 5","line":""},
{"lineNum":" 6","line":"## data"},
{"lineNum":" 7","line":"declare -a data=( 0 2 3 1 3 3 3 8 2 12 4 2 4 3 )","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 8","line":""},
{"lineNum":" 9","line":"## clean up everything"},
{"lineNum":" 10","line":"cleanup () {"},
{"lineNum":" 11","line":" ## clear"},
{"lineNum":" 12","line":" term clear screen","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 13","line":" ## bring back cursor"},
{"lineNum":" 14","line":" term cursor show","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 15","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 16","line":"}"},
{"lineNum":" 17","line":""},
{"lineNum":" 18","line":"## on SIGINT signal"},
{"lineNum":" 19","line":"onsigint () {"},
{"lineNum":" 20","line":" cleanup","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":" exit 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 22","line":"}"},
{"lineNum":" 23","line":""},
{"lineNum":" 24","line":"## clear screen"},
{"lineNum":" 25","line":"term clear screen","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 26","line":""},
{"lineNum":" 27","line":"## position to top left"},
{"lineNum":" 28","line":"term move 0 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":""},
{"lineNum":" 30","line":"## clear line"},
{"lineNum":" 31","line":"term clear line","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 32","line":""},
{"lineNum":" 33","line":"## hide cursor"},
{"lineNum":" 34","line":"term cursor hide","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":""},
{"lineNum":" 36","line":"## catch sigint"},
{"lineNum":" 37","line":"trap \"onsigint\" SIGINT","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 38","line":""},
{"lineNum":" 39","line":""},
{"lineNum":" 40","line":"## main loop"},
{"lineNum":" 41","line":"{"},
{"lineNum":" 42","line":" let pad=3","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":" let n=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 44","line":" let w=($(tput cols))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 45","line":" let h=($(tput lines))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 46","line":" let x=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":" let y=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 48","line":" let len=\"${#data[@]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 49","line":""},
{"lineNum":" 50","line":" term clear screen","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 51","line":""},
{"lineNum":" 52","line":" term move ${pad} 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 53","line":""},
{"lineNum":" 54","line":" ## y axis"},
{"lineNum":" 55","line":" for (( n = 0; n < (h - pad - 1); n += 2 )); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 56","line":" term transition 0 2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 57","line":" term color gray","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":" printf \".\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 59","line":" done"},
{"lineNum":" 60","line":""},
{"lineNum":" 61","line":" y=( ${h} - 2 )","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 62","line":" term move ${pad} ${y}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 63","line":""},
{"lineNum":" 64","line":" ## x axis"},
{"lineNum":" 65","line":" for (( n = 0; n < (w - pad * 3); n += 6)); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 66","line":" term color gray","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 67","line":" printf \".\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 68","line":" term transition 6 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 69","line":" done"},
{"lineNum":" 70","line":""},
{"lineNum":" 71","line":" x=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 72","line":" for (( i = 0; i < len; ++i )); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 73","line":" let n=\"${data[$i]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 74","line":" while (( n-- )); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 75","line":" if (( n < 0 )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 76","line":" break","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 77","line":" fi"},
{"lineNum":" 78","line":" let a=( ${x} * 6 + ${pad} )","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 79","line":" let b=( ${h} - ${n} + ${pad} )","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 80","line":" #echo $a $b"},
{"lineNum":" 81","line":" term move ${a} ${b}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":" term reset","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 83","line":" printf \"█\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 84","line":" done"},
{"lineNum":" 85","line":" (( x++ ))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 86","line":" sleep .5","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 87","line":" done"},
{"lineNum":" 88","line":""},
{"lineNum":" 89","line":" h=( ${h} - 1)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 90","line":" term move ${w} ${h}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 91","line":"}"},
{"lineNum":" 92","line":""},
{"lineNum":" 93","line":"## clean up terminal"},
{"lineNum":" 94","line":"cleanup","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 95","line":""},
{"lineNum":" 96","line":"## exit"},
{"lineNum":" 97","line":"exit $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 98","line":""},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 48, "covered" : 0,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="getdeps.sh.f6aaa467.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,52 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"## output usage"},
{"lineNum":" 4","line":"usage () {"},
{"lineNum":" 5","line":" echo \"Installs dependencies for a package.\"","class":"lineCov","hits":"1","order":"7","possible_hits":"0",},
{"lineNum":" 6","line":" echo \"usage: bpkg-getdeps [-h|--help]\"","class":"lineCov","hits":"1","order":"8","possible_hits":"0",},
{"lineNum":" 7","line":" echo \" or: bpkg-getdeps\"","class":"lineCov","hits":"1","order":"9","possible_hits":"0",},
{"lineNum":" 8","line":"}"},
{"lineNum":" 9","line":""},
{"lineNum":" 10","line":"## Read a package property"},
{"lineNum":" 11","line":"bpkg_getdeps () {"},
{"lineNum":" 12","line":" local cwd=\"$(pwd)\"","class":"lineCov","hits":"10","order":"3","possible_hits":"0",},
{"lineNum":" 13","line":" local pkg=\"${cwd}/package.json\"","class":"lineCov","hits":"5","order":"4","possible_hits":"0",},
{"lineNum":" 14","line":""},
{"lineNum":" 15","line":" ## parse flags"},
{"lineNum":" 16","line":" case \"$1\" in","class":"lineCov","hits":"5","order":"5","possible_hits":"0",},
{"lineNum":" 17","line":" -h|--help)"},
{"lineNum":" 18","line":" usage","class":"lineCov","hits":"1","order":"6","possible_hits":"0",},
{"lineNum":" 19","line":" return 0","class":"lineCov","hits":"1","order":"10","possible_hits":"0",},
{"lineNum":" 20","line":" ;;"},
{"lineNum":" 21","line":" esac"},
{"lineNum":" 22","line":""},
{"lineNum":" 23","line":" ## ensure there is a package to read"},
{"lineNum":" 24","line":" if ! test -f \"${pkg}\"; then","class":"lineCov","hits":"4","order":"11","possible_hits":"0",},
{"lineNum":" 25","line":" echo 2>&1 \"error: Unable to find \\`package.json\' in $(pwd)\"","class":"lineCov","hits":"2","order":"12","possible_hits":"0",},
{"lineNum":" 26","line":" return 1","class":"lineCov","hits":"1","order":"13","possible_hits":"0",},
{"lineNum":" 27","line":" fi"},
{"lineNum":" 28","line":""},
{"lineNum":" 29","line":" dependencies=$(cat \"${pkg}\" | bpkg-json -b | grep \'\\[\\\"dependencies\' | sed \"s/\\[\\\"dependencies\\\",//\" | sed \"s/\\\"\\]$(printf \'\\t\')\\\"/@/\" | tr -d \'\"\')","class":"lineCov","hits":"24","order":"14","possible_hits":"0",},
{"lineNum":" 30","line":" dependencies=($(echo ${dependencies[@]}))","class":"lineCov","hits":"6","order":"15","possible_hits":"0",},
{"lineNum":" 31","line":""},
{"lineNum":" 32","line":" ## run bpkg install for each dependency"},
{"lineNum":" 33","line":" for (( i = 0; i < ${#dependencies[@]} ; ++i )); do","class":"lineCov","hits":"16","order":"16","possible_hits":"0",},
{"lineNum":" 34","line":" (","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" local package=${dependencies[$i]}","class":"lineCov","hits":"5","order":"18","possible_hits":"0",},
{"lineNum":" 36","line":" bpkg install ${package}","class":"lineCov","hits":"5","order":"19","possible_hits":"0",},
{"lineNum":" 37","line":" )"},
{"lineNum":" 38","line":" done"},
{"lineNum":" 39","line":" return 0","class":"lineCov","hits":"3","order":"17","possible_hits":"0",},
{"lineNum":" 40","line":"}"},
{"lineNum":" 41","line":""},
{"lineNum":" 42","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineCov","hits":"1","order":"1","possible_hits":"0",},
{"lineNum":" 43","line":" export -f bpkg_getdeps","class":"lineCov","hits":"1","order":"2","possible_hits":"0",},
{"lineNum":" 44","line":"else"},
{"lineNum":" 45","line":" bpkg_getdeps \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 46","line":" exit $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":"fi"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 22, "covered" : 19,};
var merged_data = [];

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

@ -0,0 +1,97 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title id="window-title">???</title>
<link rel="stylesheet" href="data/tablesorter-theme.css">
<link rel="stylesheet" type="text/css" href="data/bcov.css"/>
</head>
<noscript>
<font color=red><B>ERROR:</B></font> JavaScript need to be enabled for the coverage report to work.
</noscript>
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/tablesorter.min.js"></script>
<script type="text/javascript" src="data/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="80%" colspan=6>???</td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="15%"></td>
<td width="5%"></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="10%">???</td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="15%">???</td>
<td width="5%"></td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="10%">???</td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="files-template" type="text/x-handlebars-template">
<center>
<table width="80%" cellpadding="2" cellspacing="1" border="0" id="index-table" class="tablesorter">
<thead>
<tr>
<th class="tableHead" width="50%">Filename</th>
<th width="20%">Coverage percent</th>
<th width="10%">Covered lines</th>
<th width="10%">Uncovered lines</th>
<th width="10%">Executable lines</th>
</tr>
</thead>
<tbody id="main-data">
{{#each files}}
<tr>
<td class="coverFile"><a href="{{link}}" title="{{title}}">{{summary_name}}</a></td>
<td class="coverPer"><span style="display:block;width:{{covered}}%" class="{{covered_class}}">{{covered}}%</td>
<td class="coverNum">{{covered_lines}}</td>
<td class="coverNum">{{uncovered_lines}}</td>
<td class="coverNum">{{total_lines}}</td>
</tr>
{{/each}}
</tbody>
{{#each merged_files}}
<tbody tablesorter-no-sort id="merged-data">
<tr>
<td class="coverFile"><a href="{{link}}" title="{{title}}">{{summary_name}}</a></td>
<td class="coverPer"><span style="display:block;width:{{covered}}%" class="{{covered_class}}">{{covered}}%</td>
<td class="coverNum">{{covered_lines}}</td>
<td class="coverNum">{{uncovered_lines}}</td>
<td class="coverNum">{{total_lines}}</td>
</tr>
</tbody>
{{/each}}
</table>
</center>
</script>
<div id="files-placeholder"></div>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,19 @@
var data = {files:[
{"link":"example.sh.17ea44a3.html","title":"example.sh","summary_name":"[...]/bpkg/lib/term/example.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"48","total_lines" : "48"},
{"link":"utils.sh.933926a4.html","title":"utils.sh","summary_name":"[...]/bpkg/lib/utils/utils.sh","covered_class":"lineNoCov","covered":"20.5","covered_lines":"15","uncovered_lines":"58","total_lines" : "73"},
{"link":"setup.sh.305ad541.html","title":"setup.sh","summary_name":"[...]/bpkg/setup.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"57","total_lines" : "57"},
{"link":"update.sh.f09f8845.html","title":"update.sh","summary_name":"[...]/bpkg/lib/update/update.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"43","total_lines" : "43"},
{"link":"suggest.sh.481ede8f.html","title":"suggest.sh","summary_name":"[...]/bpkg/lib/suggest/suggest.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"48","total_lines" : "48"},
{"link":"term.sh.f9c3d168.html","title":"term.sh","summary_name":"[...]/bpkg/lib/term/term.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"147","total_lines" : "147"},
{"link":"package.sh.120f35a6.html","title":"package.sh","summary_name":"[...]/bpkg/lib/package/package.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"21","total_lines" : "21"},
{"link":"getdeps.sh.f6aaa467.html","title":"getdeps.sh","summary_name":"[...]/bpkg/lib/getdeps/getdeps.sh","covered_class":"lineCov","covered":"86.4","covered_lines":"19","uncovered_lines":"3","total_lines" : "22"},
{"link":"init.sh.c1978740.html","title":"init.sh","summary_name":"[...]/bpkg/lib/init/init.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"183","total_lines" : "183"},
{"link":"show.sh.739c7ecf.html","title":"show.sh","summary_name":"[...]/bpkg/lib/show/show.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"129","total_lines" : "129"},
{"link":"install.sh.6d77639c.html","title":"install.sh","summary_name":"[...]/bpkg/lib/install/install.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"241","total_lines" : "241"},
{"link":"JSON.sh.703d91c7.html","title":"JSON.sh","summary_name":"[...]/bpkg/lib/json/JSON.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"119","total_lines" : "119"},
{"link":"bpkg.sh.8900aafb.html","title":"bpkg.sh","summary_name":"[...]/bpkg/bpkg.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"64","total_lines" : "64"},
{"link":"list.sh.25ee64ce.html","title":"list.sh","summary_name":"[...]/bpkg/lib/list/list.sh","covered_class":"lineNoCov","covered":"0.0","covered_lines":"0","uncovered_lines":"47","total_lines" : "47"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 1242, "covered" : 34,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="init.sh.c1978740.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,339 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"## sets optional variable from environment"},
{"lineNum":" 4","line":"opt () { eval \"if [ -z \"\\${$1}\" ]; then ${1}=\'${2}\'; fi\"; }"},
{"lineNum":" 5","line":""},
{"lineNum":" 6","line":"## output usage"},
{"lineNum":" 7","line":"usage () {"},
{"lineNum":" 8","line":" echo \"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 9","line":" echo \" usage: bpkg-init [-hV]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 10","line":" echo \"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 11","line":"}"},
{"lineNum":" 12","line":""},
{"lineNum":" 13","line":"## prompt with question and store result in variable"},
{"lineNum":" 14","line":"prompt () {"},
{"lineNum":" 15","line":" local var=\"$1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 16","line":" local q=\"$2\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 17","line":" local value=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":""},
{"lineNum":" 19","line":" {"},
{"lineNum":" 20","line":" trap \"exit -1\" SIGINT SIGTERM","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":" read -p \"$q\" -r -e value;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 22","line":""},
{"lineNum":" 23","line":" value=\"${value//\\\"/\\\'}\";","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 24","line":" } 2>&1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 25","line":" if [ ! -z \"${value}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 26","line":" eval \"${var}\"=\\\"${value}\\\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 27","line":" fi"},
{"lineNum":" 28","line":"}"},
{"lineNum":" 29","line":""},
{"lineNum":" 30","line":"prompt_if () {"},
{"lineNum":" 31","line":" local mesg=\"$1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 32","line":" local func=\"$2\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 33","line":" prompt ANSWER \"$mesg [y/n]: \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 34","line":" case \"$ANSWER\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" y|Y|yes|YES|Yes)"},
{"lineNum":" 36","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 37","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 38","line":" $func $@","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 39","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 40","line":" esac"},
{"lineNum":" 41","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 42","line":"}"},
{"lineNum":" 43","line":""},
{"lineNum":" 44","line":"## alert user of hint"},
{"lineNum":" 45","line":"hint () {"},
{"lineNum":" 46","line":" {"},
{"lineNum":" 47","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 48","line":" printf \" hint: %s\\n\" \"$@\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 49","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 50","line":" } >&2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 51","line":"}"},
{"lineNum":" 52","line":""},
{"lineNum":" 53","line":"## output error"},
{"lineNum":" 54","line":"error () {"},
{"lineNum":" 55","line":" {"},
{"lineNum":" 56","line":" printf \"error: %s\\n\" \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 57","line":" } >&2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":"}"},
{"lineNum":" 59","line":""},
{"lineNum":" 60","line":"## append line to buffer"},
{"lineNum":" 61","line":"append () {"},
{"lineNum":" 62","line":" appendf \'%s\' \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 63","line":" buf+=$\'\\n\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 64","line":"}"},
{"lineNum":" 65","line":""},
{"lineNum":" 66","line":"## append formatted string to buffer"},
{"lineNum":" 67","line":"appendf () {"},
{"lineNum":" 68","line":" local fmt=\"$1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 69","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 70","line":" buf+=\"$(printf \"${fmt}\" \"${@}\")\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 71","line":"}"},
{"lineNum":" 72","line":""},
{"lineNum":" 73","line":"## wraps each argument in quotes"},
{"lineNum":" 74","line":"wrap () {"},
{"lineNum":" 75","line":" printf \'\"%s\" \' \"${@}\";","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 76","line":" echo \"\";","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 77","line":"}"},
{"lineNum":" 78","line":""},
{"lineNum":" 79","line":"intro () {"},
{"lineNum":" 80","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 81","line":" echo \"This will walk you through initializing the bpkg \\`package.json\' file.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":" echo \"It will prompt you for the bare minimum that is needed and provide\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 83","line":" echo \"defaults.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 84","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 85","line":" echo \"See github.com/bpkg/bpkg for more information on defining the bpkg\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 86","line":" echo \"\\`package.json\' file.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 87","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 88","line":" echo \"You can press ^C anytime to quit this prompt. The \\`package.json\' file\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 89","line":" echo \"will only be written upon completion.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 90","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 91","line":"}"},
{"lineNum":" 92","line":""},
{"lineNum":" 93","line":"options () {"},
{"lineNum":" 94","line":" opt NAME \"$(basename $(pwd))\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 95","line":" opt VERSION \"0.0.1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 96","line":" opt DESCRIPTION \"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 97","line":" opt GLOBAL \"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 98","line":" opt INSTALL \"install -b ${NAME}.sh \\${PREFIX:-/usr/local}/bin/${NAME}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 99","line":" opt SCRIPTS \"${NAME}.sh\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 100","line":"}"},
{"lineNum":" 101","line":""},
{"lineNum":" 102","line":"set_global () {"},
{"lineNum":" 103","line":" GLOBAL=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 104","line":"}"},
{"lineNum":" 105","line":""},
{"lineNum":" 106","line":"prompts () {"},
{"lineNum":" 107","line":" prompt NAME \"name: (${NAME}) \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 108","line":" prompt VERSION \"version: (${VERSION}) \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 109","line":" prompt DESCRIPTION \"description: \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 110","line":" prompt INSTALL \"install: (${INSTALL})\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 111","line":" prompt SCRIPTS \"scripts: (${SCRIPTS}) \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 112","line":" prompt USER \"Github username: (${USER}) \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 113","line":" prompt_if \"Force global install?\" set_global","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 114","line":"}"},
{"lineNum":" 115","line":""},
{"lineNum":" 116","line":"## handle required fields"},
{"lineNum":" 117","line":"required () {"},
{"lineNum":" 118","line":" for key in \\","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 119","line":" \"NAME\" \\"},
{"lineNum":" 120","line":" \"SCRIPTS\""},
{"lineNum":" 121","line":" do"},
{"lineNum":" 122","line":" eval local val=\"\\${${key}}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 123","line":" [ -z \"${val}\" ] && error \"Missing \\`","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 124","line":" ${key}\' property\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 125","line":" done"},
{"lineNum":" 126","line":"}"},
{"lineNum":" 127","line":""},
{"lineNum":" 128","line":"## convert scripts to quoted csv"},
{"lineNum":" 129","line":"csv () {"},
{"lineNum":" 130","line":" if [ ! -z \"${SCRIPTS}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 131","line":" RAW_SCRIPTS=${SCRIPTS}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 132","line":" {"},
{"lineNum":" 133","line":" local TMP=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 134","line":" SCRIPTS=\"${SCRIPTS//,/ }\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 135","line":" SCRIPTS=\"${SCRIPTS//\\\"/}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 136","line":" SCRIPTS=\"${SCRIPTS//\\\'/}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 137","line":" SCRIPTS=($(wrap ${SCRIPTS}))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 138","line":" let len=${#SCRIPTS[@]}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 139","line":" for (( i = 0; i < len; i++ )); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 140","line":" word=${SCRIPTS[$i]}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 141","line":" if (( i + 1 != len )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 142","line":" TMP+=\"${word}, \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 143","line":" else"},
{"lineNum":" 144","line":" TMP+=\"${word}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 145","line":" fi"},
{"lineNum":" 146","line":" done"},
{"lineNum":" 147","line":" SCRIPTS=\"${TMP}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 148","line":" }"},
{"lineNum":" 149","line":" fi"},
{"lineNum":" 150","line":"}"},
{"lineNum":" 151","line":""},
{"lineNum":" 152","line":"## delimit object and key-value pairs"},
{"lineNum":" 153","line":"delimit () {"},
{"lineNum":" 154","line":" append \"{\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 155","line":""},
{"lineNum":" 156","line":" for key in \\","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 157","line":" \"NAME\" \\"},
{"lineNum":" 158","line":" \"VERSION\" \\"},
{"lineNum":" 159","line":" \"DESCRIPTION\" \\"},
{"lineNum":" 160","line":" \"GLOBAL\" \\"},
{"lineNum":" 161","line":" \"INSTALL\" \\"},
{"lineNum":" 162","line":" \"SCRIPTS\""},
{"lineNum":" 163","line":" do"},
{"lineNum":" 164","line":" local lowercase=\"$(echo ${key} | tr \'[:upper:]\' \'[:lower:]\')\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 165","line":""},
{"lineNum":" 166","line":" eval local val=\"\\${${key}}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 167","line":" if [ ! -z \"${val}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 168","line":""},
{"lineNum":" 169","line":" ## swap leading/trailing quotes for brackets in arrays"},
{"lineNum":" 170","line":" local before=\"\\\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 171","line":" local after=\"\\\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 172","line":" [ \"$key\" == \"SCRIPTS\" ] && before=\"[ \" && after=\" ]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 173","line":""},
{"lineNum":" 174","line":" appendf \" \\\"${lowercase}\\\": ${before}%s${after}\" \"${val}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 175","line":" append \",\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 176","line":" fi"},
{"lineNum":" 177","line":" done"},
{"lineNum":" 178","line":""},
{"lineNum":" 179","line":" ## remove final trailing newline and comma"},
{"lineNum":" 180","line":" buf=\"${buf%?}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 181","line":" buf=\"${buf%?}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 182","line":""},
{"lineNum":" 183","line":" append \"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 184","line":" append \"}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 185","line":"}"},
{"lineNum":" 186","line":""},
{"lineNum":" 187","line":"## validate completed contents with user"},
{"lineNum":" 188","line":"validate () {"},
{"lineNum":" 189","line":" prompt ANSWER \"${buf} Does this look OK? (type \'n\' to cancel) \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 190","line":" if [ \"n\" = \"${ANSWER:0:1}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 191","line":" exit 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 192","line":" fi"},
{"lineNum":" 193","line":"}"},
{"lineNum":" 194","line":""},
{"lineNum":" 195","line":"## if package file already exists, ensure user wants to clobber"},
{"lineNum":" 196","line":"clobber () {"},
{"lineNum":" 197","line":" if test -f \"${file}\"; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 198","line":" prompt_if \"A \\`package.json\' already exists. Would you like to replace it?\" rm -f \"${file}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 199","line":" fi"},
{"lineNum":" 200","line":"}"},
{"lineNum":" 201","line":""},
{"lineNum":" 202","line":"create_shell_file () {"},
{"lineNum":" 203","line":" if [ \"${NAME}.sh\" == \"${RAW_SCRIPTS}\" ] && [ ! -f \"${NAME}.sh\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 204","line":" {"},
{"lineNum":" 205","line":" echo \"#!/bin/bash\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 206","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 207","line":" echo \"VERSION=$VERSION\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 208","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 209","line":" echo \"usage () {\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 210","line":" echo \" echo \\\"$NAME [-hV]\\\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 211","line":" echo \" echo\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 212","line":" echo \" echo \\\"Options:\\\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 213","line":" echo \" echo \\\" -h|--help Print this help dialogue and exit\\\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 214","line":" echo \" echo \\\" -V|--version Print the current version and exit\\\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 215","line":" echo \'}\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 216","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 217","line":" echo \"${NAME} () {\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 218","line":" echo \" for opt in \\\"\\${@}\\\"; do\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 219","line":" echo \" case \\\"\\$opt\\\" in\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 220","line":" echo \" -h|--help)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 221","line":" echo \" usage\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 222","line":" echo \" return 0\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 223","line":" echo \" ;;\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 224","line":" echo \" -V|--version)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 225","line":" echo \" echo \\\"\\$VERSION\\\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 226","line":" echo \" return 0\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 227","line":" echo \" ;;\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 228","line":" echo \" esac\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 229","line":" echo \" done\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 230","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 231","line":" echo \" ## your code here\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 232","line":" echo \"}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 233","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 234","line":" echo \'if [[ ${BASH_SOURCE[0]} != $0 ]]; then\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 235","line":" echo \" export -f $NAME\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 236","line":" echo \'else\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 237","line":" echo \" $NAME \"\'\"${@}\"\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 238","line":" echo \' exit $?\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 239","line":" echo \'fi\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 240","line":" } > \"${NAME}.sh\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 241","line":" chmod 755 \"${NAME}.sh\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 242","line":" fi"},
{"lineNum":" 243","line":"}"},
{"lineNum":" 244","line":""},
{"lineNum":" 245","line":"create_readme () {"},
{"lineNum":" 246","line":" if [ ! -f \"README.md\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 247","line":" {"},
{"lineNum":" 248","line":" echo \"# $NAME\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 249","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 250","line":" echo \"$DESCRIPTION\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 251","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 252","line":" echo \"# Install\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 253","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 254","line":" echo \"Available as a [bpkg](http://www.bpkg.sh/)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 255","line":" echo \'```sh\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 256","line":" echo \"bpkg install [-g] ${USER:-bpkg}/$NAME\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 257","line":" echo \'```\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 258","line":" } > \"README.md\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 259","line":" fi"},
{"lineNum":" 260","line":"}"},
{"lineNum":" 261","line":""},
{"lineNum":" 262","line":"create_repo () {"},
{"lineNum":" 263","line":" if git status &>/dev/null; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 264","line":" echo \"Repo already exists\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 265","line":" else"},
{"lineNum":" 266","line":" git init","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 267","line":" fi"},
{"lineNum":" 268","line":"}"},
{"lineNum":" 269","line":""},
{"lineNum":" 270","line":""},
{"lineNum":" 271","line":"## main"},
{"lineNum":" 272","line":"bpkg_init () {"},
{"lineNum":" 273","line":" local version=\"0.0.1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 274","line":" local cwd=\"$(pwd)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 275","line":" local buf=\"\" ## output buffer","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 276","line":" local file=\"${cwd}/package.json\" ## output file","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 277","line":" local arg=\"$1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 278","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 279","line":""},
{"lineNum":" 280","line":" case \"${arg}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 281","line":""},
{"lineNum":" 282","line":" ## flags"},
{"lineNum":" 283","line":" -V|--version)"},
{"lineNum":" 284","line":" echo \"${version}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 285","line":" exit 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 286","line":" ;;"},
{"lineNum":" 287","line":""},
{"lineNum":" 288","line":" -h|--help)"},
{"lineNum":" 289","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 290","line":" exit 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 291","line":" ;;"},
{"lineNum":" 292","line":""},
{"lineNum":" 293","line":" *)"},
{"lineNum":" 294","line":" if [ ! -z \"${arg}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 295","line":" error \"Unknown option: \\`${arg}\'\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 296","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 297","line":" exit 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 298","line":" fi"},
{"lineNum":" 299","line":" ;;"},
{"lineNum":" 300","line":" esac"},
{"lineNum":" 301","line":""},
{"lineNum":" 302","line":" ## set up package file"},
{"lineNum":" 303","line":" intro","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 304","line":" options","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 305","line":" prompts","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 306","line":" required","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 307","line":" csv","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 308","line":" delimit","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 309","line":" validate","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 310","line":" clobber","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 311","line":""},
{"lineNum":" 312","line":" ## create and write package file"},
{"lineNum":" 313","line":" touch \"${file}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 314","line":" echo \"${buf}\" > \"${file}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 315","line":""},
{"lineNum":" 316","line":" create_shell_file","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 317","line":" create_readme","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 318","line":""},
{"lineNum":" 319","line":" # initialize a git repo if one does not exist"},
{"lineNum":" 320","line":" if [ ! -d \'.git\' ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 321","line":" git init","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 322","line":" fi"},
{"lineNum":" 323","line":""},
{"lineNum":" 324","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 325","line":"}"},
{"lineNum":" 326","line":""},
{"lineNum":" 327","line":"## export or run"},
{"lineNum":" 328","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 329","line":" export -f bpkg-init","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 330","line":"else"},
{"lineNum":" 331","line":" bpkg_init \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 332","line":" exit $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 333","line":"fi"},
{"lineNum":" 334","line":""},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 183, "covered" : 0,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="install.sh.6d77639c.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,480 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"# Include config rc file if found"},
{"lineNum":" 4","line":"CONFIG_FILE=\"$HOME/.bpkgrc\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 5","line":"[[ -f \"$CONFIG_FILE\" ]] && source \"$CONFIG_FILE\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 6","line":""},
{"lineNum":" 7","line":"## set defaults"},
{"lineNum":" 8","line":"if [[ ${#BPKG_REMOTES[@]} -eq 0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 9","line":" BPKG_REMOTES[0]=${BPKG_REMOTE-https://raw.githubusercontent.com}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 10","line":" BPKG_GIT_REMOTES[0]=${BPKG_GIT_REMOTE-https://github.com}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 11","line":"fi"},
{"lineNum":" 12","line":"BPKG_USER=\"${BPKG_USER:-bpkg}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 13","line":""},
{"lineNum":" 14","line":"## check parameter consistency"},
{"lineNum":" 15","line":"validate_parameters () {"},
{"lineNum":" 16","line":" if [[ ${#BPKG_GIT_REMOTES[@]} -ne ${#BPKG_REMOTES[@]} ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 17","line":" mesg=\'BPKG_GIT_REMOTES[%d] differs in size from BPKG_REMOTES[%d] array\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":" fmesg=$(printf \"$mesg\" \"${#BPKG_GIT_REMOTES[@]}\" \"${#BPKG_REMOTES[@]}\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 19","line":" error \"$fmesg\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 20","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":" fi"},
{"lineNum":" 22","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 23","line":"}"},
{"lineNum":" 24","line":""},
{"lineNum":" 25","line":"## outut usage"},
{"lineNum":" 26","line":"usage () {"},
{"lineNum":" 27","line":" echo \'usage: bpkg-install [-h|--help]\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 28","line":" echo \' or: bpkg-install [-g|--global] <package>\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":" echo \' or: bpkg-install [-g|--global] <user>/<package>\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 30","line":"}"},
{"lineNum":" 31","line":""},
{"lineNum":" 32","line":"## format and output message"},
{"lineNum":" 33","line":"message () {"},
{"lineNum":" 34","line":" if type -f bpkg-term > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" bpkg-term color \"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 36","line":" fi"},
{"lineNum":" 37","line":""},
{"lineNum":" 38","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 39","line":" printf \" ${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 40","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 41","line":""},
{"lineNum":" 42","line":" if type -f bpkg-term > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":" bpkg-term reset","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 44","line":" fi"},
{"lineNum":" 45","line":""},
{"lineNum":" 46","line":" printf \': \'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":""},
{"lineNum":" 48","line":" if type -f bpkg-term > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 49","line":" bpkg-term reset","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 50","line":" bpkg-term bright","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 51","line":" fi"},
{"lineNum":" 52","line":""},
{"lineNum":" 53","line":" printf \"%s\\n\" \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 54","line":""},
{"lineNum":" 55","line":" if type -f bpkg-term > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 56","line":" bpkg-term reset","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 57","line":" fi"},
{"lineNum":" 58","line":"}"},
{"lineNum":" 59","line":""},
{"lineNum":" 60","line":"## output error"},
{"lineNum":" 61","line":"error () {"},
{"lineNum":" 62","line":" {"},
{"lineNum":" 63","line":" message \'red\' \'error\' \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 64","line":" } >&2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 65","line":"}"},
{"lineNum":" 66","line":""},
{"lineNum":" 67","line":"## output warning"},
{"lineNum":" 68","line":"warn () {"},
{"lineNum":" 69","line":" {"},
{"lineNum":" 70","line":" message \'yellow\' \'warn\' \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 71","line":" } >&2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 72","line":"}"},
{"lineNum":" 73","line":""},
{"lineNum":" 74","line":"## output info"},
{"lineNum":" 75","line":"info () {"},
{"lineNum":" 76","line":" local title=\'info\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 77","line":" if (( \"${#}\" > 1 )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 78","line":" title=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 79","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 80","line":" fi"},
{"lineNum":" 81","line":" message \'cyan\' \"${title}\" \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":"}"},
{"lineNum":" 83","line":""},
{"lineNum":" 84","line":""},
{"lineNum":" 85","line":"save_remote_file () {"},
{"lineNum":" 86","line":" local auth_param path url","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 87","line":""},
{"lineNum":" 88","line":" url=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 89","line":" path=\"${2}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 90","line":" auth_param=\"${3:-}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 91","line":""},
{"lineNum":" 92","line":" local dirname=\"$(dirname \"${path}\")\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 93","line":""},
{"lineNum":" 94","line":" # Make sure directory exists"},
{"lineNum":" 95","line":" if [[ ! -d \"${dirname}\" ]];then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 96","line":" mkdir -p \"${dirname}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 97","line":" fi"},
{"lineNum":" 98","line":""},
{"lineNum":" 99","line":" if [[ \"${auth_param}\" ]];then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 100","line":" curl --silent -L -o \"${path}\" -u \"${auth_param}\" \"${url}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 101","line":" else"},
{"lineNum":" 102","line":" curl --silent -L -o \"${path}\" \"${url}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 103","line":" fi"},
{"lineNum":" 104","line":"}"},
{"lineNum":" 105","line":""},
{"lineNum":" 106","line":""},
{"lineNum":" 107","line":"url_exists () {"},
{"lineNum":" 108","line":" local auth_param exists url","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 109","line":""},
{"lineNum":" 110","line":" url=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 111","line":" auth_param=\"${2:-}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 112","line":""},
{"lineNum":" 113","line":" exists=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 114","line":""},
{"lineNum":" 115","line":" if [[ \"${auth_param}\" ]];then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 116","line":" status=$(curl --silent -L -w \'%{http_code}\' -o \'/dev/null\' -u \"${auth_param}\" \"${url}\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 117","line":" result=\"$?\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 118","line":" else"},
{"lineNum":" 119","line":" status=$(curl --silent -L -w \'%{http_code}\' -o \'/dev/null\' \"${url}\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 120","line":" result=\"$?\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 121","line":" fi"},
{"lineNum":" 122","line":""},
{"lineNum":" 123","line":" # In some rare cases, curl will return CURLE_WRITE_ERROR (23) when writing"},
{"lineNum":" 124","line":" # to `/dev/null`. In such a case we do not care that such an error occured."},
{"lineNum":" 125","line":" # We are only interested in the status, which *will* be available regardless."},
{"lineNum":" 126","line":" if [[ \'0\' != \"${result}\" && \'23\' != \"${result}\" ]] || (( status >= 400 )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 127","line":" exists=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 128","line":" fi"},
{"lineNum":" 129","line":""},
{"lineNum":" 130","line":" return \"${exists}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 131","line":"}"},
{"lineNum":" 132","line":""},
{"lineNum":" 133","line":"read_package_json () {"},
{"lineNum":" 134","line":" local auth_param url","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 135","line":""},
{"lineNum":" 136","line":" url=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 137","line":" auth_param=\"${2:-}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 138","line":""},
{"lineNum":" 139","line":" if [[ \"${auth_param}\" ]];then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 140","line":" curl --silent -L -u \"${auth_param}\" \"${url}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 141","line":" else"},
{"lineNum":" 142","line":" curl --silent -L \"${url}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 143","line":" fi"},
{"lineNum":" 144","line":"}"},
{"lineNum":" 145","line":""},
{"lineNum":" 146","line":"## Install a bash package"},
{"lineNum":" 147","line":"bpkg_install () {"},
{"lineNum":" 148","line":" local pkg=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 149","line":" local let needs_global=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 150","line":""},
{"lineNum":" 151","line":" for opt in \"${@}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 152","line":" if [[ \'-\' = \"${opt:0:1}\" ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 153","line":" continue","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 154","line":" fi"},
{"lineNum":" 155","line":" pkg=\"${opt}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 156","line":" break","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 157","line":" done"},
{"lineNum":" 158","line":""},
{"lineNum":" 159","line":" for opt in \"${@}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 160","line":" case \"${opt}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 161","line":" -h|--help)"},
{"lineNum":" 162","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 163","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 164","line":" ;;"},
{"lineNum":" 165","line":""},
{"lineNum":" 166","line":" -g|--global)"},
{"lineNum":" 167","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 168","line":" needs_global=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 169","line":" ;;"},
{"lineNum":" 170","line":""},
{"lineNum":" 171","line":" *)"},
{"lineNum":" 172","line":" if [[ \'-\' = \"${opt:0:1}\" ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 173","line":" echo 2>&1 \"error: Unknown argument \\`${1}\'\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 174","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 175","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 176","line":" fi"},
{"lineNum":" 177","line":" ;;"},
{"lineNum":" 178","line":" esac"},
{"lineNum":" 179","line":" done"},
{"lineNum":" 180","line":""},
{"lineNum":" 181","line":" ## ensure there is a package to install"},
{"lineNum":" 182","line":" if [[ -z \"${pkg}\" ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 183","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 184","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 185","line":" fi"},
{"lineNum":" 186","line":""},
{"lineNum":" 187","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 188","line":""},
{"lineNum":" 189","line":" ## Check each remote in order"},
{"lineNum":" 190","line":" local let i=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 191","line":" for remote in \"${BPKG_REMOTES[@]}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 192","line":" local git_remote=${BPKG_GIT_REMOTES[$i]}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 193","line":" bpkg_install_from_remote \"$pkg\" \"$remote\" \"$git_remote\" $needs_global","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 194","line":" if [[ \"$?\" == \'0\' ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 195","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 196","line":" elif [[ \"$?\" == \'2\' ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 197","line":" error \'fatal error occurred during install\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 198","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 199","line":" fi"},
{"lineNum":" 200","line":" i=$((i+1))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 201","line":" done"},
{"lineNum":" 202","line":" error \'package not found on any remote\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 203","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 204","line":"}"},
{"lineNum":" 205","line":""},
{"lineNum":" 206","line":"## try to install a package from a specific remote"},
{"lineNum":" 207","line":"## returns values:"},
{"lineNum":" 208","line":"## 0: success"},
{"lineNum":" 209","line":"## 1: the package was not found on the remote"},
{"lineNum":" 210","line":"## 2: a fatal error occurred"},
{"lineNum":" 211","line":"bpkg_install_from_remote () {"},
{"lineNum":" 212","line":" local pkg=$1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 213","line":" local remote=$2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 214","line":" local git_remote=$3","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 215","line":" local let needs_global=$4","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 216","line":""},
{"lineNum":" 217","line":" local cwd=$(pwd)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 218","line":" local url=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 219","line":" local uri=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 220","line":" local version=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 221","line":" local status=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 222","line":" local json=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 223","line":" local user=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 224","line":" local name=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 225","line":" local version=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 226","line":" local auth_param=\'\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 227","line":" local let has_pkg_json=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 228","line":" declare -a local pkg_parts=()","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 229","line":" declare -a local remote_parts=()","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 230","line":" declare -a local scripts=()","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 231","line":" declare -a local files=()","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 232","line":""},
{"lineNum":" 233","line":" ## get version if available"},
{"lineNum":" 234","line":" {"},
{"lineNum":" 235","line":" OLDIFS=\"${IFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 236","line":" IFS=\"@\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 237","line":" pkg_parts=(${pkg})","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 238","line":" IFS=\"${OLDIFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 239","line":" }"},
{"lineNum":" 240","line":""},
{"lineNum":" 241","line":" if [[ ${#pkg_parts[@]} -eq 1 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 242","line":" version=\'master\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 243","line":" #info \"Using latest (master)\""},
{"lineNum":" 244","line":" elif [[ ${#pkg_parts[@]} -eq 2 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 245","line":" name=\"${pkg_parts[0]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 246","line":" version=\"${pkg_parts[1]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 247","line":" else"},
{"lineNum":" 248","line":" error \'Error parsing package version\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 249","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 250","line":" fi"},
{"lineNum":" 251","line":""},
{"lineNum":" 252","line":" ## split by user name and repo"},
{"lineNum":" 253","line":" {"},
{"lineNum":" 254","line":" OLDIFS=\"${IFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 255","line":" IFS=\'/\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 256","line":" pkg_parts=(${pkg})","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 257","line":" IFS=\"${OLDIFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 258","line":" }"},
{"lineNum":" 259","line":""},
{"lineNum":" 260","line":" if [[ ${#pkg_parts[@]} -eq 1 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 261","line":" user=\"${BPKG_USER}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 262","line":" name=\"${pkg_parts[0]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 263","line":" elif [[ ${#pkg_parts[@]} -eq 2 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 264","line":" user=\"${pkg_parts[0]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 265","line":" name=\"${pkg_parts[1]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 266","line":" else"},
{"lineNum":" 267","line":" error \'Unable to determine package name\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 268","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 269","line":" fi"},
{"lineNum":" 270","line":""},
{"lineNum":" 271","line":" ## clean up name of weird trailing"},
{"lineNum":" 272","line":" ## versions and slashes"},
{"lineNum":" 273","line":" name=${name/@*//}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 274","line":" name=${name////}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 275","line":""},
{"lineNum":" 276","line":""},
{"lineNum":" 277","line":" ## check to see if remote is raw with oauth (GHE)"},
{"lineNum":" 278","line":" if [[ \"${remote:0:10}\" == \"raw-oauth|\" ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 279","line":" info \'Using OAUTH basic with content requests\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 280","line":" OLDIFS=\"${IFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 281","line":" IFS=\"\'|\'\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 282","line":" local remote_parts=($remote)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 283","line":" IFS=\"${OLDIFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 284","line":" local token=${remote_parts[1]}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 285","line":" remote=${remote_parts[2]}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 286","line":" auth_param=\"$token:x-oauth-basic\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 287","line":" uri=\"/${user}/${name}/raw/${version}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 288","line":" ## If git remote is a URL, and doesn\'t contain token information, we"},
{"lineNum":" 289","line":" ## inject it into the <user>@host field"},
{"lineNum":" 290","line":" if [[ \"$git_remote\" == https://* ]] && [[ \"$git_remote\" != *x-oauth-basic* ]] && [[ \"$git_remote\" != *${token}* ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 291","line":" git_remote=${git_remote/https:\\/\\//https:\\/\\/$token:x-oauth-basic@}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 292","line":" fi"},
{"lineNum":" 293","line":" else"},
{"lineNum":" 294","line":" uri=\"/${user}/${name}/${version}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 295","line":" fi"},
{"lineNum":" 296","line":""},
{"lineNum":" 297","line":" ## clean up extra slashes in uri"},
{"lineNum":" 298","line":" uri=${uri/\\/\\///}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 299","line":" info \"Install $uri from remote $remote [$git_remote]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 300","line":""},
{"lineNum":" 301","line":" ## Ensure remote is reachable"},
{"lineNum":" 302","line":" ## If a remote is totally down, this will be considered a fatal"},
{"lineNum":" 303","line":" ## error since the user may have intended to install the package"},
{"lineNum":" 304","line":" ## from the broken remote."},
{"lineNum":" 305","line":" {"},
{"lineNum":" 306","line":" if ! url_exists \"${remote}\" \"${auth_param}\"; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 307","line":" error \"Remote unreachable: ${remote}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 308","line":" return 2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 309","line":" fi"},
{"lineNum":" 310","line":" }"},
{"lineNum":" 311","line":""},
{"lineNum":" 312","line":" ## build url"},
{"lineNum":" 313","line":" url=\"${remote}${uri}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 314","line":" repo_url=\"${git_remote}/${user}/${name}.git\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 315","line":""},
{"lineNum":" 316","line":" ## determine if \'package.json\' exists at url"},
{"lineNum":" 317","line":" {"},
{"lineNum":" 318","line":" if ! url_exists \"${url}/package.json?$(date +%s)\" \"${auth_param}\"; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 319","line":" warn \'package.json doesn`t exist\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 320","line":" has_pkg_json=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 321","line":" # check to see if there\'s a Makefile. If not, this is not a valid package"},
{"lineNum":" 322","line":" if ! url_exists \"${url}/Makefile?$(date +%s)\" \"${auth_param}\"; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 323","line":" warn \"Makefile not found, skipping remote: $url\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 324","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 325","line":" fi"},
{"lineNum":" 326","line":" fi"},
{"lineNum":" 327","line":" }"},
{"lineNum":" 328","line":""},
{"lineNum":" 329","line":" ## read package.json"},
{"lineNum":" 330","line":" json=$(read_package_json \"${url}/package.json?$(date +%s)\" \"${auth_param}\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 331","line":""},
{"lineNum":" 332","line":" if (( 1 == has_pkg_json )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 333","line":" ## get package name from \'package.json\'"},
{"lineNum":" 334","line":" name=\"$("},
{"lineNum":" 335","line":" echo -n \"${json}\" |"},
{"lineNum":" 336","line":" bpkg-json -b |"},
{"lineNum":" 337","line":" grep -m 1 \'\"name\"\' |"},
{"lineNum":" 338","line":" awk \'{ $1=\"\"; print $0 }\' |"},
{"lineNum":" 339","line":" tr -d \'\\\"\' |"},
{"lineNum":" 340","line":" tr -d \' \'"},
{"lineNum":" 341","line":" )\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 342","line":""},
{"lineNum":" 343","line":" ## check if forced global"},
{"lineNum":" 344","line":" if [[ \"$(echo -n \"${json}\" | bpkg-json -b | grep \'\\[\"global\"\\]\' | awk \'{ print $2 }\' | tr -d \'\"\')\" == \'true\' ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 345","line":" needs_global=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 346","line":" fi"},
{"lineNum":" 347","line":""},
{"lineNum":" 348","line":" ## construct scripts array"},
{"lineNum":" 349","line":" {"},
{"lineNum":" 350","line":" scripts=$(echo -n \"${json}\" | bpkg-json -b | grep \'\\[\"scripts\' | awk \'{ print $2 }\' | tr -d \'\"\')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 351","line":""},
{"lineNum":" 352","line":" ## create array by splitting on newline"},
{"lineNum":" 353","line":" OLDIFS=\"${IFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 354","line":" IFS=$\'\\n\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 355","line":" scripts=(${scripts[@]})","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 356","line":" IFS=\"${OLDIFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 357","line":" }"},
{"lineNum":" 358","line":""},
{"lineNum":" 359","line":" ## construct files array"},
{"lineNum":" 360","line":" {"},
{"lineNum":" 361","line":" files=$(echo -n \"${json}\" | bpkg-json -b | grep \'\\[\"files\' | awk \'{ print $2 }\' | tr -d \'\"\')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 362","line":""},
{"lineNum":" 363","line":" ## create array by splitting on newline"},
{"lineNum":" 364","line":" OLDIFS=\"${IFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 365","line":" IFS=$\'\\n\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 366","line":" files=(${files[@]})","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 367","line":" IFS=\"${OLDIFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 368","line":" }"},
{"lineNum":" 369","line":""},
{"lineNum":" 370","line":" fi"},
{"lineNum":" 371","line":""},
{"lineNum":" 372","line":" ## build global if needed"},
{"lineNum":" 373","line":" if (( 1 == needs_global )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 374","line":" if (( 1 == has_pkg_json )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 375","line":" ## install bin if needed"},
{"lineNum":" 376","line":" build=\"$(echo -n \"${json}\" | bpkg-json -b | grep \'\\[\"install\"\\]\' | awk \'{$1=\"\"; print $0 }\' | tr -d \'\\\"\')\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 377","line":" build=\"$(echo -n \"${build}\" | sed -e \'s/^ *//\' -e \'s/ *$//\')\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 378","line":" fi"},
{"lineNum":" 379","line":""},
{"lineNum":" 380","line":" if [[ -z \"${build}\" ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 381","line":" warn \'Missing build script\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 382","line":" warn \'Trying `make install`...\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 383","line":" build=\'make install\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 384","line":" fi"},
{"lineNum":" 385","line":""},
{"lineNum":" 386","line":" if [ -z \"$PREFIX\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 387","line":" if [ \"$USER\" == \"root\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 388","line":" PREFIX=\"/usr/local\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 389","line":" else"},
{"lineNum":" 390","line":" PREFIX=\"$HOME/.local\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 391","line":" fi"},
{"lineNum":" 392","line":" build=\"env PREFIX=$PREFIX $build\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 393","line":" fi"},
{"lineNum":" 394","line":""},
{"lineNum":" 395","line":" { (","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 396","line":" ## go to tmp dir"},
{"lineNum":" 397","line":" cd \"$( [[ ! -z \"${TMPDIR}\" ]] && echo \"${TMPDIR}\" || echo /tmp)\" &&","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 398","line":" ## prune existing"},
{"lineNum":" 399","line":" rm -rf \"${name}-${version}\" &&","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 400","line":" ## shallow clone"},
{"lineNum":" 401","line":" info \"Cloning ${repo_url} to ${name}-${version}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 402","line":" git clone \"${repo_url}\" \"${name}-${version}\" &&","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 403","line":" (","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 404","line":" ## move into directory"},
{"lineNum":" 405","line":" cd \"${name}-${version}\" &&","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 406","line":" git checkout ${version} &&","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 407","line":" ## build"},
{"lineNum":" 408","line":" info \"Performing install: \\`${build}\'\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 409","line":" build_output=$(eval \"${build}\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 410","line":" echo \"${build_output}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 411","line":" ) &&","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 412","line":" ## clean up"},
{"lineNum":" 413","line":" rm -rf \"${name}-${version}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 414","line":" ) }","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 415","line":" ## perform local install otherwise"},
{"lineNum":" 416","line":" else"},
{"lineNum":" 417","line":" ## copy package.json over"},
{"lineNum":" 418","line":" save_remote_file \"${url}/package.json\" \"${cwd}/deps/${name}/package.json\" \"${auth_param}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 419","line":""},
{"lineNum":" 420","line":" ## make \'deps/\' directory if possible"},
{"lineNum":" 421","line":" mkdir -p \"${cwd}/deps/${name}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 422","line":""},
{"lineNum":" 423","line":" ## make \'deps/bin\' directory if possible"},
{"lineNum":" 424","line":" mkdir -p \"${cwd}/deps/bin\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 425","line":""},
{"lineNum":" 426","line":" # install package dependencies"},
{"lineNum":" 427","line":" info \"Install dependencies for ${name}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 428","line":" (cd \"${cwd}/deps/${name}\" && bpkg getdeps)"},
{"lineNum":" 429","line":""},
{"lineNum":" 430","line":" ## grab each script and place in deps directory"},
{"lineNum":" 431","line":" for script in \"${scripts[@]}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 432","line":" (","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 433","line":" if [[ \"${script}\" ]];then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 434","line":" local scriptname=\"$(echo \"${script}\" | xargs basename )\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 435","line":""},
{"lineNum":" 436","line":" info \"fetch\" \"${url}/${script}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 437","line":" info \"write\" \"${cwd}/deps/${name}/${script}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 438","line":" save_remote_file \"${url}/${script}\" \"${cwd}/deps/${name}/${script}\" \"${auth_param}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 439","line":""},
{"lineNum":" 440","line":" scriptname=\"${scriptname%.*}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 441","line":" info \"${scriptname} to PATH\" \"${cwd}/deps/bin/${scriptname}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 442","line":" ln -si \"${cwd}/deps/${name}/${script}\" \"${cwd}/deps/bin/${scriptname}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 443","line":" chmod u+x \"${cwd}/deps/bin/${scriptname}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 444","line":" fi"},
{"lineNum":" 445","line":" )"},
{"lineNum":" 446","line":" done"},
{"lineNum":" 447","line":""},
{"lineNum":" 448","line":" if [[ \"${#files[@]}\" -gt \'0\' ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 449","line":" ## grab each file and place in correct directory"},
{"lineNum":" 450","line":" for file in \"${files[@]}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 451","line":" (","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 452","line":" if [[ \"${file}\" ]];then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 453","line":" local filename=\"$(echo \"${file}\" | xargs basename )\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 454","line":""},
{"lineNum":" 455","line":" info \"fetch\" \"${url}/${file}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 456","line":" info \"write\" \"${cwd}/deps/${name}/${file}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 457","line":" save_remote_file \"${url}/${file}\" \"${cwd}/deps/${name}/${file}\" \"${auth_param}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 458","line":" fi"},
{"lineNum":" 459","line":" )"},
{"lineNum":" 460","line":" done"},
{"lineNum":" 461","line":" fi"},
{"lineNum":" 462","line":" fi"},
{"lineNum":" 463","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 464","line":"}"},
{"lineNum":" 465","line":""},
{"lineNum":" 466","line":"## Use as lib or perform install"},
{"lineNum":" 467","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 468","line":" export -f bpkg_install","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 469","line":"elif validate_parameters; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 470","line":" bpkg_install \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 471","line":" exit $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 472","line":"else"},
{"lineNum":" 473","line":" #param validation failed"},
{"lineNum":" 474","line":" exit $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 475","line":"fi"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 241, "covered" : 0,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="list.sh.25ee64ce.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,84 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"VERSION=\"0.0.1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 4","line":""},
{"lineNum":" 5","line":"if ! type -f bpkg-utils &>/dev/null; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 6","line":" echo \"error: bpkg-utils not found, aborting\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 7","line":" exit 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 8","line":"else"},
{"lineNum":" 9","line":" source $(which bpkg-utils)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 10","line":"fi"},
{"lineNum":" 11","line":""},
{"lineNum":" 12","line":"bpkg_initrc","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 13","line":""},
{"lineNum":" 14","line":"usage () {"},
{"lineNum":" 15","line":" echo \"bpkg-list [-h|--help] [-V|--version] [-d|--details]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 16","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 17","line":" echo \"List all known bash packages from the repo. You first must run \\`bpkg update\' to sync the repo locally.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":""},
{"lineNum":" 19","line":" echo \"Options:\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 20","line":" echo \" --help|-h Print this help dialogue\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":" echo \" --version|-V Print version and exit\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 22","line":" echo \" --details|-d More verbose output\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 23","line":"}"},
{"lineNum":" 24","line":""},
{"lineNum":" 25","line":"bpkg_list () {"},
{"lineNum":" 26","line":" local verbose=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 27","line":" for opt in \"${@}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 28","line":" case \"$opt\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":" -V|--version)"},
{"lineNum":" 30","line":" echo \"${VERSION}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 31","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 32","line":" ;;"},
{"lineNum":" 33","line":" -h|--help)"},
{"lineNum":" 34","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 36","line":" ;;"},
{"lineNum":" 37","line":" -d|--details)"},
{"lineNum":" 38","line":" verbose=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 39","line":" ;;"},
{"lineNum":" 40","line":" *)"},
{"lineNum":" 41","line":" if [ \"${opt:0:1}\" == \"-\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 42","line":" bpkg_error \"unknown option: $opt\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 44","line":" fi"},
{"lineNum":" 45","line":" esac"},
{"lineNum":" 46","line":" done"},
{"lineNum":" 47","line":""},
{"lineNum":" 48","line":" local i=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 49","line":" for remote in \"${BPKG_REMOTES[@]}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 50","line":" local git_remote=\"${BPKG_GIT_REMOTES[$i]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 51","line":" bpkg_select_remote \"$remote\" \"$git_remote\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 52","line":" if [ ! -f \"$BPKG_REMOTE_INDEX_FILE\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 53","line":" bpkg_warn \"no index file found for remote: ${remote}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 54","line":" bpkg_warn \"You should run \\`bpkg update\' before running this command.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 55","line":" continue","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 56","line":" fi"},
{"lineNum":" 57","line":" OLDIFS=\"$IFS\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":" IFS=$\'\\n\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 59","line":" for line in $(cat $BPKG_REMOTE_INDEX_FILE); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 60","line":" local name=$(echo \"$line\" | cut -d\\| -f1 | tr -d \' \')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 61","line":" local desc=$(echo \"$line\" | cut -d\\| -f2)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 62","line":" local host=$BPKG_REMOTE_HOST","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 63","line":" if [ \"$verbose\" == \"1\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 64","line":" echo \"$name [$host] - $desc\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 65","line":" else"},
{"lineNum":" 66","line":" echo $name","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 67","line":" fi"},
{"lineNum":" 68","line":" done"},
{"lineNum":" 69","line":" IFS=\"$OLDIFS\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 70","line":" i=$((i+1))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 71","line":" done"},
{"lineNum":" 72","line":"}"},
{"lineNum":" 73","line":""},
{"lineNum":" 74","line":""},
{"lineNum":" 75","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 76","line":" export -f bpkg_list","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 77","line":"elif bpkg_validate; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 78","line":" bpkg_list \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 79","line":"fi"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 47, "covered" : 0,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="package.sh.120f35a6.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,58 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"## output usage"},
{"lineNum":" 4","line":"usage () {"},
{"lineNum":" 5","line":" echo \"usage: bpkg-package [-h|--help]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 6","line":" echo \" or: bpkg-package <prop>\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 7","line":" echo \" or: bpkg-package\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 8","line":"}"},
{"lineNum":" 9","line":""},
{"lineNum":" 10","line":"## Read a package property"},
{"lineNum":" 11","line":"bpkg_package () {"},
{"lineNum":" 12","line":" local prop=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 13","line":" local cwd=\"$(pwd)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 14","line":" local pkg=\"${cwd}/package.json\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 15","line":""},
{"lineNum":" 16","line":" ## parse flags"},
{"lineNum":" 17","line":" case \"${prop}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":" -h|--help)"},
{"lineNum":" 19","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 20","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":" ;;"},
{"lineNum":" 22","line":" esac"},
{"lineNum":" 23","line":""},
{"lineNum":" 24","line":" ## ensure there is a package to read"},
{"lineNum":" 25","line":" if ! test -f \"${pkg}\"; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 26","line":" echo 2>&1 \"error: Unable to find \\`package.json\' in $(pwd)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 27","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 28","line":" fi"},
{"lineNum":" 29","line":""},
{"lineNum":" 30","line":" if [ -z \"${prop}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 31","line":" ## output all propertyies if property"},
{"lineNum":" 32","line":" ## is ommited"},
{"lineNum":" 33","line":" {"},
{"lineNum":" 34","line":" cat \"${pkg}\" | bpkg-json -b","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" }"},
{"lineNum":" 36","line":" else"},
{"lineNum":" 37","line":" ## show value for a specific property"},
{"lineNum":" 38","line":" ## in \'package.json\'"},
{"lineNum":" 39","line":" {"},
{"lineNum":" 40","line":" cat \"${pkg}\" | bpkg-json -b | grep \"${prop}\" | awk \'{ $1=\"\"; printf $0 }\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 41","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 42","line":" }"},
{"lineNum":" 43","line":" fi"},
{"lineNum":" 44","line":""},
{"lineNum":" 45","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 46","line":"}"},
{"lineNum":" 47","line":""},
{"lineNum":" 48","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 49","line":" export -f bpkg_package","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 50","line":"else"},
{"lineNum":" 51","line":" bpkg_package \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 52","line":" exit $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 53","line":"fi"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 21, "covered" : 0,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="setup.sh.305ad541.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,117 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":"#"},
{"lineNum":" 3","line":"# # #"},
{"lineNum":" 4","line":"# #mmm mmmm # m mmmm"},
{"lineNum":" 5","line":"# #\" \"# #\" \"# # m\" #\" \"#"},
{"lineNum":" 6","line":"# # # # # #\"# # #"},
{"lineNum":" 7","line":"# ##m#\" ##m#\" # \"m \"#m\"#"},
{"lineNum":" 8","line":"# # m #"},
{"lineNum":" 9","line":"# \" \"\""},
{"lineNum":" 10","line":"# bash package manager"},
{"lineNum":" 11","line":""},
{"lineNum":" 12","line":"REMOTE=${REMOTE:-https://github.com/bpkg/bpkg.git}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 13","line":"TMPDIR=${TMPDIR:-/tmp}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 14","line":"DEST=${DEST:-${TMPDIR}/bpkg-master}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 15","line":""},
{"lineNum":" 16","line":"## test if command exists"},
{"lineNum":" 17","line":"ftest () {"},
{"lineNum":" 18","line":" echo \" info: Checking for ${1}...\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 19","line":" if ! type -f \"${1}\" > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 20","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":" else"},
{"lineNum":" 22","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 23","line":" fi"},
{"lineNum":" 24","line":"}"},
{"lineNum":" 25","line":""},
{"lineNum":" 26","line":"## feature tests"},
{"lineNum":" 27","line":"features () {"},
{"lineNum":" 28","line":" for f in \"${@}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":" ftest \"${f}\" || {","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 30","line":" echo >&2 \" error: Missing \\`${f}\'! Make sure it exists and try again.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 31","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 32","line":" }"},
{"lineNum":" 33","line":" done"},
{"lineNum":" 34","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":"}"},
{"lineNum":" 36","line":""},
{"lineNum":" 37","line":"## main setup"},
{"lineNum":" 38","line":"setup () {"},
{"lineNum":" 39","line":" echo \" info: Welcome to the \'bpkg\' installer!\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 40","line":" ## test for require features"},
{"lineNum":" 41","line":" features git || return $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 42","line":""},
{"lineNum":" 43","line":" ## build"},
{"lineNum":" 44","line":" {"},
{"lineNum":" 45","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 46","line":" cd \"${TMPDIR}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":" echo \" info: Creating temporary files...\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 48","line":" test -d \"${DEST}\" && { echo \" warn: Already exists: \'${DEST}\'\"; }","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 49","line":" rm -rf \"${DEST}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 50","line":" echo \" info: Fetching latest \'bpkg\'...\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 51","line":" git clone --depth=1 \"${REMOTE}\" \"${DEST}\" > /dev/null 2>&1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 52","line":" cd \"${DEST}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 53","line":" echo \" info: Installing...\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 54","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 55","line":" make_install","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 56","line":" echo \" info: Done!\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 57","line":" } >&2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":" return $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 59","line":"}"},
{"lineNum":" 60","line":""},
{"lineNum":" 61","line":"## make targets"},
{"lineNum":" 62","line":"BIN=\"bpkg\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 63","line":"if [ -z \"$PREFIX\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 64","line":" if [ \"$USER\" == \"root\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 65","line":" PREFIX=\"/usr/local\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 66","line":" else"},
{"lineNum":" 67","line":" PREFIX=\"$HOME/.local\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 68","line":" fi"},
{"lineNum":" 69","line":"fi"},
{"lineNum":" 70","line":""},
{"lineNum":" 71","line":"# All \'bpkg\' supported commands"},
{"lineNum":" 72","line":"CMDS=\"json install package term suggest init utils update list show getdeps\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 73","line":""},
{"lineNum":" 74","line":"make_install () {"},
{"lineNum":" 75","line":" make_uninstall","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 76","line":" echo \" info: Installing $PREFIX/bin/$BIN...\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 77","line":" install -d \"$PREFIX/bin\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 78","line":" local source=$(<$BIN)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 79","line":" [ -f \"$source\" ] && install \"$source\" \"$PREFIX/bin/$BIN\" || install \"$BIN\" \"$PREFIX/bin\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 80","line":" for cmd in $CMDS; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 81","line":" source=$(<$BIN-$cmd)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":" [ -f \"$source\" ] && install \"$source\" \"$PREFIX/bin/$BIN-$cmd\" || install \"$BIN-$cmd\" \"$PREFIX/bin\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 83","line":" done"},
{"lineNum":" 84","line":" return $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 85","line":"}"},
{"lineNum":" 86","line":""},
{"lineNum":" 87","line":"make_uninstall () {"},
{"lineNum":" 88","line":" echo \" info: Uninstalling $PREFIX/bin/$BIN...\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 89","line":" rm -f \"$PREFIX/bin/$BIN\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 90","line":" for cmd in $CMDS; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 91","line":" rm -f \"$PREFIX/bin/$BIN-$cmd\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 92","line":" done"},
{"lineNum":" 93","line":" return $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 94","line":"}"},
{"lineNum":" 95","line":""},
{"lineNum":" 96","line":"make_link () {"},
{"lineNum":" 97","line":" make_uninstall","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 98","line":" echo \" info: Linking $PREFIX/bin/$BIN...\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 99","line":" ln -s \"$PWD/$BIN\" \"$PREFIX/bin/$BIN\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 100","line":" for cmd in $CMDS; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 101","line":" ln -s \"$PWD/$BIN-$cmd\" \"$PREFIX/bin\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 102","line":" done"},
{"lineNum":" 103","line":" return $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 104","line":"}"},
{"lineNum":" 105","line":""},
{"lineNum":" 106","line":"make_unlink () {"},
{"lineNum":" 107","line":" make_uninstall","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 108","line":"}"},
{"lineNum":" 109","line":""},
{"lineNum":" 110","line":"## go"},
{"lineNum":" 111","line":"[ $# -eq 0 ] && setup || make_$1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 112","line":"exit $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 57, "covered" : 0,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="show.sh.739c7ecf.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,198 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"VERSION=\"0.0.1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 4","line":""},
{"lineNum":" 5","line":"if ! type -f bpkg-utils &>/dev/null; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 6","line":" echo \"error: bpkg-utils not found, aborting\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 7","line":" exit 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 8","line":"else"},
{"lineNum":" 9","line":" source $(which bpkg-utils)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 10","line":"fi"},
{"lineNum":" 11","line":""},
{"lineNum":" 12","line":"bpkg_initrc","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 13","line":""},
{"lineNum":" 14","line":"usage () {"},
{"lineNum":" 15","line":" mesg=$1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 16","line":" if [ \"$mesg\" != \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 17","line":" echo \"$mesg\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 19","line":" fi"},
{"lineNum":" 20","line":" echo \"bpkg-show [-Vh]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":" echo \"bpkg-show <user/package_name>\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 22","line":" echo \"bpkg-show readme <user/package_name>\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 23","line":" echo \"bpkg-show sources <user/package_name>\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 24","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 25","line":" echo \"Show bash package details. You must first run \\`bpkg update\' to sync the repo locally.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 26","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 27","line":" echo \"Commands:\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 28","line":" echo \" readme Print package README.md file, if available, suppressing other output\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":" echo \" sources Print all sources listed in package.json scripts, in order. This\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 30","line":" echo \" option suppresses other output and prints executable bash.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 31","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 32","line":" echo \"Options:\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 33","line":" echo \" --help|-h Print this help dialogue\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 34","line":" echo \" --version|-V Print version and exit\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":"}"},
{"lineNum":" 36","line":""},
{"lineNum":" 37","line":"show_package () {"},
{"lineNum":" 38","line":" local pkg=$1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 39","line":" local desc=$2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 40","line":" local show_readme=$3","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 41","line":" local show_sources=$4","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 42","line":" local host=$BPKG_REMOTE_HOST","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":" local remote=$BPKG_REMOTE","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 44","line":" local git_remote=$BPKG_GIT_REMOTE","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 45","line":" local auth=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 46","line":" local json=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":" local readme=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 48","line":" local uri=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 49","line":""},
{"lineNum":" 50","line":" if [ \"$BPKG_OAUTH_TOKEN\" != \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 51","line":" auth=\"-u $BPKG_OAUTH_TOKEN:x-oauth-basic\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 52","line":" fi"},
{"lineNum":" 53","line":""},
{"lineNum":" 54","line":" if [ \"$auth\" == \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 55","line":" uri=$BPKG_REMOTE/$pkg/master","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 56","line":" else"},
{"lineNum":" 57","line":" uri=$BPKG_REMOTE/$pkg/raw/master","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":" fi"},
{"lineNum":" 59","line":""},
{"lineNum":" 60","line":" json=$(eval \"curl $auth -sL \'$uri/package.json?$(date +%s)\'\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 61","line":" readme=$(eval \"curl $auth -sL \'$uri/README.md?$(date +%s)\'\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 62","line":""},
{"lineNum":" 63","line":" local readme_len=$(echo \"$readme\" | wc -l | tr -d \' \')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 64","line":""},
{"lineNum":" 65","line":" local version=$(echo \"$json\" | bpkg-json -b | grep \'\"version\"\' | sed \'s/.*version\"\\]\\s*//\' | tr -d \'\\t\' | tr -d \'\"\')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 66","line":" local author=$(echo \"$json\" | bpkg-json -b | grep \'\"author\"\' | sed \'s/.*author\"\\]\\s*//\' | tr -d \'\\t\' | tr -d \'\"\')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 67","line":" local pkg_desc=$(echo \"$json\" | bpkg-json -b | grep \'\"description\"\' | sed \'s/.*description\"\\]\\s*//\' | tr -d \'\\t\' | tr -d \'\"\')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 68","line":" local sources=$(echo \"$json\" | bpkg-json -b | grep \'\"scripts\"\' | cut -f 2 | tr -d \'\"\' )","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 69","line":" local description=$(echo \"$json\" | bpkg-json -b | grep \'\"description\"\')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 70","line":" local install_sh=$(echo \"$json\" | bpkg-json -b | grep \'\"install\"\' | sed \'s/.*install\"\\]\\s*//\' | tr -d \'\\t\' | tr -d \'\"\')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 71","line":""},
{"lineNum":" 72","line":" if [ \"$pkg_desc\" != \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 73","line":" desc=\"$pkg_desc\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 74","line":" fi"},
{"lineNum":" 75","line":""},
{"lineNum":" 76","line":" if [ \"$show_sources\" == \'0\' ] && [ \"$show_readme\" == \"0\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 77","line":" echo \"Name: $pkg\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 78","line":" if [ \"$author\" != \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 79","line":" echo \"Author: $author\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 80","line":" fi"},
{"lineNum":" 81","line":" echo \"Description: $desc\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":" echo \"Current Version: $version\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 83","line":" echo \"Remote: $git_remote\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 84","line":" if [ \"$install_sh\" != \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 85","line":" echo \"Install: $install_sh\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 86","line":" fi"},
{"lineNum":" 87","line":" if [ \"$readme\" == \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 88","line":" echo \"README.md: Not Available\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 89","line":" else"},
{"lineNum":" 90","line":" echo \"README.md: ${readme_len} lines\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 91","line":" fi"},
{"lineNum":" 92","line":" elif [ \"$show_readme\" != \'0\' ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 93","line":" echo \"$readme\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 94","line":" else"},
{"lineNum":" 95","line":" # Show Sources"},
{"lineNum":" 96","line":" OLDIFS=\"$IFS\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 97","line":" IFS=$\'\\n\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 98","line":" for src in $(echo \"$sources\"); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 99","line":" local http_code=$(eval \"curl $auth -sL \'$uri/$src?$(date +%s)\' -w \'%{http_code}\' -o /dev/null\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 100","line":" if (( http_code < 400 )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 101","line":" local content=$(eval \"curl $auth -sL \'$uri/$src?$(date +%s)\'\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 102","line":" echo \"#[$src]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 103","line":" echo \"$content\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 104","line":" echo \"#[/$src]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 105","line":" else"},
{"lineNum":" 106","line":" bpkg_warn \"source not found: $src\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 107","line":" fi"},
{"lineNum":" 108","line":" done"},
{"lineNum":" 109","line":" IFS=\"$OLDIFS\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 110","line":" fi"},
{"lineNum":" 111","line":"}"},
{"lineNum":" 112","line":""},
{"lineNum":" 113","line":""},
{"lineNum":" 114","line":"bpkg_show () {"},
{"lineNum":" 115","line":" local readme=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 116","line":" local sources=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 117","line":" local pkg=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 118","line":" for opt in \"${@}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 119","line":" case \"$opt\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 120","line":" -V|--version)"},
{"lineNum":" 121","line":" echo \"${VERSION}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 122","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 123","line":" ;;"},
{"lineNum":" 124","line":" -h|--help)"},
{"lineNum":" 125","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 126","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 127","line":" ;;"},
{"lineNum":" 128","line":" readme)"},
{"lineNum":" 129","line":" readme=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 130","line":" if [ \"$sources\" == \"1\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 131","line":" usage \"Error: readme and sources are mutually exclusive options\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 132","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 133","line":" fi"},
{"lineNum":" 134","line":" ;;"},
{"lineNum":" 135","line":" source|sources)"},
{"lineNum":" 136","line":" sources=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 137","line":" if [ \"$readme\" == \"1\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 138","line":" usage \"Error: readme and sources are mutually exclusive options\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 139","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 140","line":" fi"},
{"lineNum":" 141","line":" ;;"},
{"lineNum":" 142","line":" *)"},
{"lineNum":" 143","line":" if [ \"${opt:0:1}\" == \"-\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 144","line":" bpkg_error \"unknown option: $opt\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 145","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 146","line":" fi"},
{"lineNum":" 147","line":" if [ \"$pkg\" == \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 148","line":" pkg=$opt","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 149","line":" fi"},
{"lineNum":" 150","line":" esac"},
{"lineNum":" 151","line":" done"},
{"lineNum":" 152","line":""},
{"lineNum":" 153","line":" if [ \"$pkg\" == \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 154","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 155","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 156","line":" fi"},
{"lineNum":" 157","line":""},
{"lineNum":" 158","line":" local i=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 159","line":" for remote in \"${BPKG_REMOTES[@]}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 160","line":" local git_remote=\"${BPKG_GIT_REMOTES[$i]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 161","line":" bpkg_select_remote \"$remote\" \"$git_remote\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 162","line":" if [ ! -f \"$BPKG_REMOTE_INDEX_FILE\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 163","line":" bpkg_warn \"no index file found for remote: ${remote}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 164","line":" bpkg_warn \"You should run \\`bpkg update\' before running this command.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 165","line":" i=$((i+1))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 166","line":" continue","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 167","line":" fi"},
{"lineNum":" 168","line":""},
{"lineNum":" 169","line":" OLDIFS=\"$IFS\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 170","line":" IFS=$\'\\n\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 171","line":" for line in $(cat $BPKG_REMOTE_INDEX_FILE); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 172","line":" local name=$(echo \"$line\" | cut -d\\| -f1 | tr -d \' \')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 173","line":" local desc=$(echo \"$line\" | cut -d\\| -f2)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 174","line":" if [ \"$name\" == \"$pkg\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 175","line":" IFS=\"$OLDIFS\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 176","line":" show_package \"$pkg\" \"$desc\" \"$readme\" \"$sources\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 177","line":" IFS=$\'\\n\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 178","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 179","line":" fi"},
{"lineNum":" 180","line":" done"},
{"lineNum":" 181","line":" IFS=\"$OLDIFS\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 182","line":" i=$((i+1))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 183","line":" done"},
{"lineNum":" 184","line":""},
{"lineNum":" 185","line":" bpkg_error \"package not found: $pkg\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 186","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 187","line":"}"},
{"lineNum":" 188","line":""},
{"lineNum":" 189","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 190","line":" export -f bpkg_show","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 191","line":"elif bpkg_validate; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 192","line":" bpkg_show \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 193","line":"fi"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 129, "covered" : 0,};
var merged_data = [];

File diff suppressed because it is too large Load Diff

@ -0,0 +1,72 @@
<script type="text/javascript" src="suggest.sh.481ede8f.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,105 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"## suggest version"},
{"lineNum":" 4","line":"VERSION=\"0.0.2\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 5","line":""},
{"lineNum":" 6","line":"## output usage"},
{"lineNum":" 7","line":"usage () {"},
{"lineNum":" 8","line":" echo \"usage: suggest [-hV] <query>\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 9","line":"}"},
{"lineNum":" 10","line":""},
{"lineNum":" 11","line":"## main"},
{"lineNum":" 12","line":"suggest () {"},
{"lineNum":" 13","line":" declare -a local paths=()","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 14","line":" declare -a local seen=()","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 15","line":" declare -a local found=()","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 16","line":" local query=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 17","line":""},
{"lineNum":" 18","line":" case \"${query}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 19","line":" -h|--help)"},
{"lineNum":" 20","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 22","line":" ;;"},
{"lineNum":" 23","line":""},
{"lineNum":" 24","line":" -V|--version)"},
{"lineNum":" 25","line":" echo \"${VERSION}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 26","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 27","line":" ;;"},
{"lineNum":" 28","line":""},
{"lineNum":" 29","line":" *)"},
{"lineNum":" 30","line":" if [ \"-\" = \"${query:0:1}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 31","line":" echo >&2 \"error: Unknown argument \\`${query}\'\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 32","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 33","line":" fi"},
{"lineNum":" 34","line":" ;;"},
{"lineNum":" 35","line":" esac"},
{"lineNum":" 36","line":""},
{"lineNum":" 37","line":" ## search path"},
{"lineNum":" 38","line":" {"},
{"lineNum":" 39","line":" local res=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 40","line":" IFS=\':\' read -a paths <<< \"${PATH}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 41","line":" for (( i = 0; i < ${#paths[@]}; ++i )); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 42","line":" local path=\"${paths[$i]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":" local let skip=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 44","line":""},
{"lineNum":" 45","line":" ## omit non existent paths"},
{"lineNum":" 46","line":" if ! test -d \"${path}\"; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":" continue","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 48","line":" else"},
{"lineNum":" 49","line":" for (( n = 0; n < \"${#seen[@]}\"; ++n )); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 50","line":" if [ \"${path}\" = \"${seen[$n]}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 51","line":" skip=1;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 52","line":" break;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 53","line":" fi"},
{"lineNum":" 54","line":" done"},
{"lineNum":" 55","line":""},
{"lineNum":" 56","line":" ## check if skip needed"},
{"lineNum":" 57","line":" if [ \"1\" = \"${skip}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":" continue","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 59","line":" fi"},
{"lineNum":" 60","line":" fi"},
{"lineNum":" 61","line":""},
{"lineNum":" 62","line":" ## mark seen"},
{"lineNum":" 63","line":" seen+=( \"${path}\" )","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 64","line":""},
{"lineNum":" 65","line":" ## find in path"},
{"lineNum":" 66","line":" if res=$(find \"${path}\" -name \"${query}*\" -prune -print 2>/dev/null); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 67","line":" if [ -z \"${res}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 68","line":" continue","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 69","line":" fi"},
{"lineNum":" 70","line":" res=\"$(echo ${res} | tr \'\\n\' \' \')\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 71","line":" ## add to found count"},
{"lineNum":" 72","line":" found+=( $(echo -n \"${res}\") )","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 73","line":" fi"},
{"lineNum":" 74","line":" done"},
{"lineNum":" 75","line":" }"},
{"lineNum":" 76","line":""},
{"lineNum":" 77","line":" ## get total"},
{"lineNum":" 78","line":" count=\"${#found[@]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 79","line":""},
{"lineNum":" 80","line":" if (( ${count} == 1 )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 81","line":" echo \"${found[0]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":" elif (( ${count} > 0 )); then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 83","line":" printf \"suggest: found %d result(s)\\n\" ${count}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 84","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 85","line":" for (( i = 0; i < ${count}; ++i )); do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 86","line":" printf \"%d %s\\n\" $(echo -n ${found[$i]} | wc -c | tr -d \' \') \"${found[$i]}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 87","line":" done | sort -n | awk \'{ print $2 }\' | xargs printf \' %s\\n\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 88","line":" else"},
{"lineNum":" 89","line":" echo \"suggest: Couldn\'t anything to match \\`${query}\'\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 90","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 91","line":" fi"},
{"lineNum":" 92","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 93","line":"}"},
{"lineNum":" 94","line":""},
{"lineNum":" 95","line":"## export or run"},
{"lineNum":" 96","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 97","line":" export -f suggest","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 98","line":"else"},
{"lineNum":" 99","line":" suggest \"$@\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 100","line":"fi"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 48, "covered" : 0,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="term.sh.f9c3d168.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,298 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"## version"},
{"lineNum":" 4","line":"VERSION=\"0.0.1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 5","line":""},
{"lineNum":" 6","line":"## coords"},
{"lineNum":" 7","line":"let _x=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 8","line":"let _y=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 9","line":""},
{"lineNum":" 10","line":"## output error to stderr"},
{"lineNum":" 11","line":"error () {"},
{"lineNum":" 12","line":" printf >&2 \"error: %s\\n\" \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 13","line":"}"},
{"lineNum":" 14","line":""},
{"lineNum":" 15","line":"## output usage"},
{"lineNum":" 16","line":"usage () {"},
{"lineNum":" 17","line":" echo \"usage: term [-hV] <command> [args]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":"}"},
{"lineNum":" 19","line":""},
{"lineNum":" 20","line":"## write code to terminal"},
{"lineNum":" 21","line":"term_write () {"},
{"lineNum":" 22","line":" local let c=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 23","line":" ## ensure"},
{"lineNum":" 24","line":" if [ -z \"${c}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 25","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 26","line":" fi"},
{"lineNum":" 27","line":" printf \"\\e[${c}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 28","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":"}"},
{"lineNum":" 30","line":""},
{"lineNum":" 31","line":"## cursor operations"},
{"lineNum":" 32","line":"term_cursor () {"},
{"lineNum":" 33","line":" local op=\"$1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 34","line":" if [ -z \"${op}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 36","line":" fi"},
{"lineNum":" 37","line":" case \"${op}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 38","line":" hide) term write \"?25l\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 39","line":" show) term write \"?25h\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 40","line":" *) return 1 ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 41","line":" esac"},
{"lineNum":" 42","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":"}"},
{"lineNum":" 44","line":""},
{"lineNum":" 45","line":"## move to (x, y)"},
{"lineNum":" 46","line":"term_move () {"},
{"lineNum":" 47","line":" local let x=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 48","line":" local let y=\"${2}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 49","line":""},
{"lineNum":" 50","line":" ## ensure"},
{"lineNum":" 51","line":" if [ -z \"${x}\" ] || [ -z \"${y}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 52","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 53","line":" fi"},
{"lineNum":" 54","line":""},
{"lineNum":" 55","line":" ## set state"},
{"lineNum":" 56","line":" (( _x = ${x} ))"},
{"lineNum":" 57","line":" (( _y = ${y} ))"},
{"lineNum":" 58","line":""},
{"lineNum":" 59","line":" ## write"},
{"lineNum":" 60","line":" printf \"\\e[%d;%d;f\" ${y} ${x}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 61","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 62","line":"}"},
{"lineNum":" 63","line":""},
{"lineNum":" 64","line":"term_transition () {"},
{"lineNum":" 65","line":" local let x=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 66","line":" local let y=\"${2}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 67","line":" if [ -z \"${x}\" ] || [ -z \"${y}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 68","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 69","line":" fi"},
{"lineNum":" 70","line":""},
{"lineNum":" 71","line":" (( x = ${x} + ${_x} ))"},
{"lineNum":" 72","line":" (( y = ${y} + ${_y} ))"},
{"lineNum":" 73","line":""},
{"lineNum":" 74","line":" term move \"${x}\" \"${y}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 75","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 76","line":"}"},
{"lineNum":" 77","line":""},
{"lineNum":" 78","line":"## set terminal color"},
{"lineNum":" 79","line":"term_color () {"},
{"lineNum":" 80","line":" local color=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 81","line":" local fmt=\"\\e[3%dm\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":" if [ -z \"${color}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 83","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 84","line":" fi"},
{"lineNum":" 85","line":" case \"${color}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 86","line":" black) printf \"${fmt}\" \"0\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 87","line":" red) printf \"${fmt}\" \"1\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 88","line":" green) printf \"${fmt}\" \"2\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 89","line":" yellow) printf \"${fmt}\" \"3\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 90","line":" blue) printf \"${fmt}\" \"4\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 91","line":" magenta) printf \"${fmt}\" \"5\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 92","line":" cyan) printf \"${fmt}\" \"6\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 93","line":" white) printf \"${fmt}\" \"7\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 94","line":" gray|grey) printf \"\\e[90m\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 95","line":" *) return 1 ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 96","line":" esac"},
{"lineNum":" 97","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 98","line":"}"},
{"lineNum":" 99","line":""},
{"lineNum":" 100","line":"## set term background color"},
{"lineNum":" 101","line":"term_background () {"},
{"lineNum":" 102","line":" local color=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 103","line":" local fmt=\"\\e[4%dm\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 104","line":" if [ -z \"${color}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 105","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 106","line":" fi"},
{"lineNum":" 107","line":" case \"${color}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 108","line":" black) printf \"${fmt}\" \"0\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 109","line":" red) printf \"${fmt}\" \"1\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 110","line":" green) printf \"${fmt}\" \"2\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 111","line":" yellow) printf \"${fmt}\" \"3\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 112","line":" blue) printf \"${fmt}\" \"4\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 113","line":" magenta) printf \"${fmt}\" \"5\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 114","line":" cyan) printf \"${fmt}\" \"6\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 115","line":" white) printf \"${fmt}\" \"7\" ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 116","line":" *) return 1 ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 117","line":" esac"},
{"lineNum":" 118","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 119","line":"}"},
{"lineNum":" 120","line":""},
{"lineNum":" 121","line":"## reset terminal escape sequence"},
{"lineNum":" 122","line":"term_reset () {"},
{"lineNum":" 123","line":" term write \"0m\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 124","line":"}"},
{"lineNum":" 125","line":""},
{"lineNum":" 126","line":"## make terminal bright"},
{"lineNum":" 127","line":"term_bright () {"},
{"lineNum":" 128","line":" term write \"1m\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 129","line":"}"},
{"lineNum":" 130","line":""},
{"lineNum":" 131","line":"## make terminal dim"},
{"lineNum":" 132","line":"term_dim () {"},
{"lineNum":" 133","line":" term write \"2m\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 134","line":"}"},
{"lineNum":" 135","line":""},
{"lineNum":" 136","line":"## make terminal underlined"},
{"lineNum":" 137","line":"term_underline () {"},
{"lineNum":" 138","line":" term write \"4m\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 139","line":"}"},
{"lineNum":" 140","line":""},
{"lineNum":" 141","line":"## make terminal blink"},
{"lineNum":" 142","line":"term_blink () {"},
{"lineNum":" 143","line":" term write \"5m\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 144","line":"}"},
{"lineNum":" 145","line":""},
{"lineNum":" 146","line":"## make terminal reverse"},
{"lineNum":" 147","line":"term_reverse () {"},
{"lineNum":" 148","line":" term write \"7m\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 149","line":"}"},
{"lineNum":" 150","line":""},
{"lineNum":" 151","line":"## make terminal hidden"},
{"lineNum":" 152","line":"term_hidden () {"},
{"lineNum":" 153","line":" term write \"8m\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 154","line":"}"},
{"lineNum":" 155","line":""},
{"lineNum":" 156","line":"## clear a terminal section by name"},
{"lineNum":" 157","line":"term_clear () {"},
{"lineNum":" 158","line":" local section=\"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 159","line":" local fmt=\"\\e[%s\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 160","line":" if [ -z \"${section}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 161","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 162","line":" fi"},
{"lineNum":" 163","line":" case \"${section}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 164","line":" start) printf \"${fmt}\" \"1K\";;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 165","line":" end) printf \"${fmt}\" \"K\";;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 166","line":" line) printf \"${fmt}\" \"2K\";;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 167","line":" screen|up) printf \"${fmt}\" \"1J\";;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 168","line":" down) printf \"${fmt}\" \"J\";;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 169","line":" *) return 1 ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 170","line":" esac"},
{"lineNum":" 171","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 172","line":"}"},
{"lineNum":" 173","line":""},
{"lineNum":" 174","line":"##"},
{"lineNum":" 175","line":"# Term functions"},
{"lineNum":" 176","line":"#"},
{"lineNum":" 177","line":"# usage: term [-hV] <command>"},
{"lineNum":" 178","line":"##"},
{"lineNum":" 179","line":""},
{"lineNum":" 180","line":"term () {"},
{"lineNum":" 181","line":" local arg=\"$1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 182","line":" local cmd=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 183","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 184","line":""},
{"lineNum":" 185","line":" case \"${arg}\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 186","line":""},
{"lineNum":" 187","line":" ## flags"},
{"lineNum":" 188","line":" -V|--version)"},
{"lineNum":" 189","line":" echo \"${VERSION}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 190","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 191","line":" ;;"},
{"lineNum":" 192","line":""},
{"lineNum":" 193","line":" -h|--help)"},
{"lineNum":" 194","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 195","line":""},
{"lineNum":" 196","line":" ## commands"},
{"lineNum":" 197","line":" {"},
{"lineNum":" 198","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 199","line":" echo \"commands: \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 200","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 201","line":" echo \" write <code> Write a terminal escape code\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 202","line":" echo \" cursor <op> Perform operation to cursor\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 203","line":" echo \" color <color> Set terminal color by name (See colors)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 204","line":" echo \" background <color> Set terminal background by name (See colors)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 205","line":" echo \" move <x> <y> Move to (x, y)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 206","line":" echo \" transition <x> <y> Transition to (x, y)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 207","line":" echo \" clear <section> Clear terminal section by name (See sections)\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 208","line":" echo \" reset Reset the terminal escape code sequence\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 209","line":" echo \" bright Write bright escape code\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 210","line":" echo \" dim Write dim escape code\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 211","line":" echo \" underline Write underline escape code\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 212","line":" echo \" blink Write blink escape code\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 213","line":" echo \" reverse Write reverse escape code\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 214","line":" echo \" hidden Write hidden escape code\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 215","line":" }"},
{"lineNum":" 216","line":""},
{"lineNum":" 217","line":" ## colors"},
{"lineNum":" 218","line":" {"},
{"lineNum":" 219","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 220","line":" echo \"colors:\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 221","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 222","line":""},
{"lineNum":" 223","line":" term color black","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 224","line":" echo \" black $ term color black\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 225","line":""},
{"lineNum":" 226","line":" term color red","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 227","line":" echo \" red $ term color red\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 228","line":""},
{"lineNum":" 229","line":" term color green","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 230","line":" echo \" green $ term color green\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 231","line":""},
{"lineNum":" 232","line":" term color yellow","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 233","line":" echo \" yellow $ term color yellow\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 234","line":""},
{"lineNum":" 235","line":" term color blue","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 236","line":" echo \" blue $ term color blue\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 237","line":""},
{"lineNum":" 238","line":" term color magenta","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 239","line":" echo \" magenta $ term color magenta\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 240","line":""},
{"lineNum":" 241","line":" term color cyan","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 242","line":" echo \" cyan $ term color cyan\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 243","line":""},
{"lineNum":" 244","line":" term color white","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 245","line":" echo \" white $ term color white\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 246","line":""},
{"lineNum":" 247","line":" term color gray","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 248","line":" echo \" gray|grey $ term color gray\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 249","line":""},
{"lineNum":" 250","line":" term reset","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 251","line":" }"},
{"lineNum":" 252","line":""},
{"lineNum":" 253","line":" ## sections"},
{"lineNum":" 254","line":" {"},
{"lineNum":" 255","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 256","line":" echo \"sections:\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 257","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 258","line":" echo \" start Start of line\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 259","line":" echo \" end End of line\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 260","line":" echo \" up Upper section\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 261","line":" echo \" down Lower section\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 262","line":" echo \" line Current line\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 263","line":" echo \" screen Entire screen\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 264","line":" }"},
{"lineNum":" 265","line":""},
{"lineNum":" 266","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 267","line":" ;;"},
{"lineNum":" 268","line":""},
{"lineNum":" 269","line":" *)"},
{"lineNum":" 270","line":" cmd=\"term_${arg}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 271","line":" if type \"${cmd}\" > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 272","line":" \"${cmd}\" \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 273","line":" return $?","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 274","line":" else"},
{"lineNum":" 275","line":" if [ ! -z \"${arg}\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 276","line":" error \"Unknown argument: \\`${arg}\'\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 277","line":" fi"},
{"lineNum":" 278","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 279","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 280","line":" fi"},
{"lineNum":" 281","line":" ;;"},
{"lineNum":" 282","line":" esac"},
{"lineNum":" 283","line":"}"},
{"lineNum":" 284","line":""},
{"lineNum":" 285","line":""},
{"lineNum":" 286","line":"## detect if being sourced and"},
{"lineNum":" 287","line":"## export if so else execute"},
{"lineNum":" 288","line":"## main function with args"},
{"lineNum":" 289","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 290","line":" export -f term","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 291","line":"else"},
{"lineNum":" 292","line":" term \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 293","line":"fi"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 147, "covered" : 0,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="update.sh.f09f8845.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,87 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"VERSION=\"0.0.1\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 4","line":""},
{"lineNum":" 5","line":"if ! type -f bpkg-utils &>/dev/null; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 6","line":" echo \"error: bpkg-utils not found, aborting\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 7","line":" exit 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 8","line":"else"},
{"lineNum":" 9","line":" source $(which bpkg-utils)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 10","line":"fi"},
{"lineNum":" 11","line":""},
{"lineNum":" 12","line":"bpkg_initrc","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 13","line":""},
{"lineNum":" 14","line":"usage () {"},
{"lineNum":" 15","line":" echo \"bpkg-update [-h] [-V]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 16","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 17","line":" echo \"Update local bpkg index for listing and searching packages\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":"}"},
{"lineNum":" 19","line":""},
{"lineNum":" 20","line":"bpkg_update_remote() {"},
{"lineNum":" 21","line":" local remote=$1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 22","line":" local git_remote=$2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 23","line":" local wiki_url=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 24","line":" local wiki=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 25","line":""},
{"lineNum":" 26","line":" bpkg_select_remote \"$remote\" \"$git_remote\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 27","line":""},
{"lineNum":" 28","line":" local index=$BPKG_REMOTE_INDEX","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":" mkdir -p \"$index\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 30","line":""},
{"lineNum":" 31","line":" local index_file=\"$index/index.txt\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 32","line":" local auth=$BPKG_CURL_AUTH_PARAM","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 33","line":""},
{"lineNum":" 34","line":" if [ \"$auth\" == \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" wiki_url=\"$BPKG_REMOTE/wiki/bpkg/bpkg/index.md\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 36","line":" else"},
{"lineNum":" 37","line":" # GHE wiki urls have a unique path structure"},
{"lineNum":" 38","line":" wiki_url=\"$BPKG_REMOTE/raw/wiki/bpkg/bpkg/index.md\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 39","line":" fi"},
{"lineNum":" 40","line":""},
{"lineNum":" 41","line":" #echo \"curl -slo- $auth \'$wiki_url\' | grep -o \'\\[.*\\](.*).*\'\""},
{"lineNum":" 42","line":" repo_list=$(curl -sLo- $auth \"$wiki_url\" | grep -o \'\\[.*\\](.*).*\' | sed \'s/\\[\\(.*\\)\\](.*)[ \\-]*/\\1|/\' )","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":""},
{"lineNum":" 44","line":" num_repos=$(echo \"$repo_list\" | wc -l | tr -d \' \')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 45","line":" bpkg_info \"indexing ${num_repos} repos from $BPKG_REMOTE_HOST to $index_file\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 46","line":" echo \"$repo_list\" > $index_file","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":"}"},
{"lineNum":" 48","line":""},
{"lineNum":" 49","line":"bpkg_update () {"},
{"lineNum":" 50","line":" for opt in \"${@}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 51","line":" case \"$opt\" in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 52","line":" -V|--version)"},
{"lineNum":" 53","line":" echo \"${VERSION}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 54","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 55","line":" ;;"},
{"lineNum":" 56","line":" -h|--help)"},
{"lineNum":" 57","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 59","line":" ;;"},
{"lineNum":" 60","line":" *)"},
{"lineNum":" 61","line":" if [ \"${opt:0:1}\" == \'-\' ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 62","line":" bpkg_error \"unknown option: $opt\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 63","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 64","line":" fi"},
{"lineNum":" 65","line":" ;;"},
{"lineNum":" 66","line":" esac"},
{"lineNum":" 67","line":" done"},
{"lineNum":" 68","line":""},
{"lineNum":" 69","line":" local let i=0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 70","line":" for remote in \"${BPKG_REMOTES[@]}\"; do","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 71","line":" local git_remote=${BPKG_GIT_REMOTES[$i]}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 72","line":" bpkg_update_remote \"$remote\" \"$git_remote\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 73","line":" i=$((i+1))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 74","line":" done"},
{"lineNum":" 75","line":"}"},
{"lineNum":" 76","line":""},
{"lineNum":" 77","line":"if [[ ${BASH_SOURCE[0]} != $0 ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 78","line":" export -f bpkg_update","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 79","line":"elif bpkg_validate; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 80","line":" bpkg_update \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 81","line":"fi"},
{"lineNum":" 82","line":""},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 43, "covered" : 0,};
var merged_data = [];

@ -0,0 +1,72 @@
<script type="text/javascript" src="utils.sh.933926a4.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,144 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/bin/bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"## Collection of shared bpkg functions"},
{"lineNum":" 4","line":""},
{"lineNum":" 5","line":"## Init local config and set environmental defaults"},
{"lineNum":" 6","line":"bpkg_initrc() {"},
{"lineNum":" 7","line":" local global_config=${BPKG_GLOBAL_CONFIG:-\"/etc/bpkgrc\"}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 8","line":" [ -f \"$global_config\" ] && source \"$global_config\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 9","line":" local config=${BPKG_CONFIG:-\"$HOME/.bpkgrc\"}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 10","line":" [ -f \"$config\" ] && source \"$config\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 11","line":" ## set defaults"},
{"lineNum":" 12","line":" if [ ${#BPKG_REMOTES[@]} -eq 0 ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 13","line":" BPKG_REMOTES[0]=${BPKG_REMOTE-https://raw.githubusercontent.com}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 14","line":" BPKG_GIT_REMOTES[0]=${BPKG_GIT_REMOTE-https://github.com}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 15","line":" fi"},
{"lineNum":" 16","line":" BPKG_USER=\"${BPKG_USER:-\"bpkg\"}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 17","line":" BPKG_INDEX=${BPKG_INDEX:-\"$HOME/.bpkg/index\"}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":"}"},
{"lineNum":" 19","line":""},
{"lineNum":" 20","line":"## check parameter consistency"},
{"lineNum":" 21","line":"bpkg_validate () {"},
{"lineNum":" 22","line":" bpkg_initrc","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 23","line":" if [ ${#BPKG_GIT_REMOTES[@]} -ne ${#BPKG_REMOTES[@]} ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 24","line":" mesg=\'BPKG_GIT_REMOTES[%d] differs in size from BPKG_REMOTES[%d] array\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 25","line":" fmesg=$(printf \"$mesg\" \"${#BPKG_GIT_REMOTES[@]}\" \"${#BPKG_REMOTES[@]}\")","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 26","line":" error \"$fmesg\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 27","line":" return 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 28","line":" fi"},
{"lineNum":" 29","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 30","line":"}"},
{"lineNum":" 31","line":""},
{"lineNum":" 32","line":"## format and output message"},
{"lineNum":" 33","line":"bpkg_message () {"},
{"lineNum":" 34","line":" if type -f bpkg-term > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" bpkg-term color \"${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 36","line":" fi"},
{"lineNum":" 37","line":""},
{"lineNum":" 38","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 39","line":" printf \" ${1}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 40","line":" shift","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 41","line":""},
{"lineNum":" 42","line":" if type -f bpkg-term > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":" bpkg-term reset","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 44","line":" fi"},
{"lineNum":" 45","line":""},
{"lineNum":" 46","line":" printf \": \"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":""},
{"lineNum":" 48","line":" if type -f bpkg-term > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 49","line":" bpkg-term reset","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 50","line":" bpkg-term bright","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 51","line":" fi"},
{"lineNum":" 52","line":""},
{"lineNum":" 53","line":" printf \"%s\\n\" \"${@}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 54","line":""},
{"lineNum":" 55","line":" if type -f bpkg-term > /dev/null 2>&1; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 56","line":" bpkg-term reset","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 57","line":" fi"},
{"lineNum":" 58","line":"}"},
{"lineNum":" 59","line":""},
{"lineNum":" 60","line":"## output error"},
{"lineNum":" 61","line":"bpkg_error () {"},
{"lineNum":" 62","line":" {"},
{"lineNum":" 63","line":" bpkg_message \"red\" \"error\" \"${@}\"","class":"lineCov","hits":"4","order":"28","possible_hits":"0",},
{"lineNum":" 64","line":" } >&2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 65","line":"}"},
{"lineNum":" 66","line":""},
{"lineNum":" 67","line":"## output warning"},
{"lineNum":" 68","line":"bpkg_warn () {"},
{"lineNum":" 69","line":" {"},
{"lineNum":" 70","line":" bpkg_message \"yellow\" \"warn\" \"${@}\"","class":"lineCov","hits":"4","order":"34","possible_hits":"0",},
{"lineNum":" 71","line":" } >&2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 72","line":"}"},
{"lineNum":" 73","line":""},
{"lineNum":" 74","line":"## output info"},
{"lineNum":" 75","line":"bpkg_info () {"},
{"lineNum":" 76","line":" local title=\"info\"","class":"lineCov","hits":"4","order":"29","possible_hits":"0",},
{"lineNum":" 77","line":" if (( \"${#}\" > 1 )); then","class":"lineCov","hits":"4","order":"30","possible_hits":"0",},
{"lineNum":" 78","line":" title=\"${1}\"","class":"lineCov","hits":"1","order":"32","possible_hits":"0",},
{"lineNum":" 79","line":" shift","class":"lineCov","hits":"1","order":"33","possible_hits":"0",},
{"lineNum":" 80","line":" fi"},
{"lineNum":" 81","line":" bpkg_message \"cyan\" \"${title}\" \"${@}\"","class":"lineCov","hits":"4","order":"31","possible_hits":"0",},
{"lineNum":" 82","line":"}"},
{"lineNum":" 83","line":""},
{"lineNum":" 84","line":"## takes a remote and git-remote and sets the globals:"},
{"lineNum":" 85","line":"## BPKG_REMOTE: raw remote URI"},
{"lineNum":" 86","line":"## BPKG_GIT_REMOTE: git remote for cloning"},
{"lineNum":" 87","line":"## BPKG_AUTH_GIT_REMOTE: git remote with oauth info embedded,"},
{"lineNum":" 88","line":"## BPKG_OAUTH_TOKEN: token for x-oauth-basic"},
{"lineNum":" 89","line":"## BPKG_CURL_AUTH_PARAM: auth arguments for raw curl requests"},
{"lineNum":" 90","line":"## BPKG_REMOTE_INDEX: location of local index for remote"},
{"lineNum":" 91","line":"bpkg_select_remote () {"},
{"lineNum":" 92","line":" local remote=$1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 93","line":" local git_remote=$2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 94","line":" BPKG_REMOTE_HOST=$(echo \"$git_remote\" | sed \'s/.*:\\/\\///\' | sed \'s/\\/$//\' | tr \'/\' \'_\')","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 95","line":" BPKG_REMOTE_INDEX=\"$BPKG_INDEX/$BPKG_REMOTE_HOST\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 96","line":" BPKG_REMOTE_INDEX_FILE=\"$BPKG_REMOTE_INDEX/index.txt\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 97","line":" BPKG_OAUTH_TOKEN=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 98","line":" BPKG_CURL_AUTH_PARAM=\"\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 99","line":" BPKG_GIT_REMOTE=$git_remote","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 100","line":" BPKG_AUTH_GIT_REMOTE=$git_remote","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 101","line":" if [ \"${remote:0:10}\" == \"raw-oauth|\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 102","line":" OLDIFS=\"${IFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 103","line":" IFS=\"|\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 104","line":" local remote_parts=($remote)","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 105","line":" IFS=\"${OLDIFS}\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 106","line":" BPKG_OAUTH_TOKEN=${remote_parts[1]}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 107","line":" BPKG_CURL_AUTH_PARAM=\"-u $BPKG_OAUTH_TOKEN:x-oauth-basic\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 108","line":" BPKG_REMOTE=${remote_parts[2]}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 109","line":" if [[ \"$git_remote\" == https://* ]] && [[ \"$git_remote\" != *x-oauth-basic* ]] && [[ \"$git_remote\" != *${BPKG_OAUTH_TOKEN}* ]]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 110","line":" BPKG_AUTH_GIT_REMOTE=${git_remote/https:\\/\\//https:\\/\\/$BPKG_OAUTH_TOKEN:x-oauth-basic@}","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 111","line":" fi"},
{"lineNum":" 112","line":" else"},
{"lineNum":" 113","line":" BPKG_REMOTE=$remote","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 114","line":" fi"},
{"lineNum":" 115","line":"}"},
{"lineNum":" 116","line":""},
{"lineNum":" 117","line":"## given a user and name, sets BPKG_RAW_PATH using the available"},
{"lineNum":" 118","line":"## BPKG_REMOTE and BPKG_OAUTH_TOKEN details"},
{"lineNum":" 119","line":"bpkg_select_raw_path() {"},
{"lineNum":" 120","line":" local user=$1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 121","line":" local name=$2","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 122","line":" if [ \"$BPKG_OAUTH_TOKEN\" == \"\" ]; then","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 123","line":" BPKG_RAW_PATH=\"$BPKG_REMOTE/$user/$name\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 124","line":" else"},
{"lineNum":" 125","line":" BPKG_RAW_PATH=\"$BPKG_REMOTE/$user/$name/raw\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 126","line":" fi"},
{"lineNum":" 127","line":" return 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 128","line":"}"},
{"lineNum":" 129","line":""},
{"lineNum":" 130","line":"export -f bpkg_initrc","class":"lineCov","hits":"1","order":"20","possible_hits":"0",},
{"lineNum":" 131","line":"export -f bpkg_validate","class":"lineCov","hits":"1","order":"21","possible_hits":"0",},
{"lineNum":" 132","line":""},
{"lineNum":" 133","line":"export -f bpkg_message","class":"lineCov","hits":"1","order":"22","possible_hits":"0",},
{"lineNum":" 134","line":"export -f bpkg_warn","class":"lineCov","hits":"1","order":"23","possible_hits":"0",},
{"lineNum":" 135","line":"export -f bpkg_error","class":"lineCov","hits":"1","order":"24","possible_hits":"0",},
{"lineNum":" 136","line":"export -f bpkg_info","class":"lineCov","hits":"1","order":"25","possible_hits":"0",},
{"lineNum":" 137","line":""},
{"lineNum":" 138","line":"export -f bpkg_select_remote","class":"lineCov","hits":"1","order":"26","possible_hits":"0",},
{"lineNum":" 139","line":"export -f bpkg_select_raw_path","class":"lineCov","hits":"1","order":"27","possible_hits":"0",},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 73, "covered" : 15,};
var merged_data = [];

@ -0,0 +1 @@
bpkg [specfiles]/cobertura.xml

@ -0,0 +1 @@
bpkg [specfiles]/coverage.json

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

@ -0,0 +1,32 @@
/* Based upon the lcov CSS style, style files can be reused */
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #284FA8; text-decoration: underline; }
a:visited { color: #00CB40; text-decoration: underline; }
a:active { color: #FF0040; text-decoration: underline; }
td.title { text-align: center; padding-bottom: 10px; font-size: 20pt; font-weight: bold; }
td.ruler { background-color: #6688D4; }
td.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
td.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
td.versionInfo { text-align: center; padding-top: 2px; }
th.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
th.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
pre.source { font-family: monospace; white-space: pre; overflow: hidden; text-overflow: ellipsis; }
span.lineNum { background-color: #EFE383; }
span.lineNumLegend { background-color: #EFE383; width: 96px; font-weight: bold ;}
span.lineCov { background-color: #adff9a; }
span.linePartCov { background-color: #fffe80; }
span.lineNoCov { background-color: #ffbbbb; }
span.orderNum { background-color: #e0b373; float: right; width:5em; text-align: left; }
span.orderNumLegend { background-color: #e0b373; width: 96px; font-weight: bold ;}
span.coverHits { background-color: #DFE383; padding-left: 3px; padding-right: 1px; text-align: right; list-style-type: none; display: inline-block; width: 5em; }
span.coverHitsLegend { background-color: #DFE383; width: 96px; font-weight: bold; margin: 0 auto;}
td.tableHead { text-align: center; color: #FFFFFF; background-color: #6688D4; font-family: sans-serif; font-size: 120%; font-weight: bold; }
td.coverFile { text-align: left; padding-left: 10px; padding-right: 20px; color: #284FA8; font-family: monospace; }
td.coverBar { padding-left: 10px; padding-right: 10px; background-color: #DAE7FE; }
td.coverBarOutline { background-color: #000000; }
td.coverPer { text-align: left; padding-left: 10px; padding-right: 10px; font-weight: bold; }
td.coverPerLeftMed { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #fffe80; font-weight: bold; }
td.coverPerLeftLo { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #ffbbbb; font-weight: bold; }
td.coverPerLeftHi { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #adff9a; font-weight: bold; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,78 @@
window.onload = function () {
// http://stackoverflow.com/questions/8853396/logical-operator-in-a-handlebars-js-if-conditional
Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
switch (operator) {
case '==':
return (v1 == v2) ? options.fn(this) : options.inverse(this);
case '===':
return (v1 === v2) ? options.fn(this) : options.inverse(this);
case '<':
return (v1 < v2) ? options.fn(this) : options.inverse(this);
case '<=':
return (v1 <= v2) ? options.fn(this) : options.inverse(this);
case '>':
return (v1 > v2) ? options.fn(this) : options.inverse(this);
case '>=':
return (v1 >= v2) ? options.fn(this) : options.inverse(this);
case '&&':
return (v1 && v2) ? options.fn(this) : options.inverse(this);
case '||':
return (v1 || v2) ? options.fn(this) : options.inverse(this);
default:
return options.inverse(this);
}
});
// http://stackoverflow.com/questions/17095813/handlebars-if-and-numeric-zeroes
Handlebars.registerHelper('exists', function(variable, options) {
if (typeof variable !== 'undefined') {
return options.fn(this);
} else {
return options.inverse(this);
}
});
var filesElement = document.getElementById("files-template")
if (filesElement) {
var source = filesElement.innerHTML;
var template = Handlebars.compile(source);
document.getElementById('files-placeholder').innerHTML = template(data);
}
var linesElement = document.getElementById("lines-template")
if (linesElement) {
var source = linesElement.innerHTML;
var template = Handlebars.compile(source);
document.getElementById('lines-placeholder').innerHTML = template(data);
}
elem = document.getElementById('header-percent-covered')
elem.className = toCoverPercentString(header.covered, header.instrumented);
elem.innerHTML = ((header.covered / header.instrumented) * 100).toFixed(1) + "%";
document.getElementById('header-command').innerHTML = header.command;
document.getElementById('window-title').innerHTML = "Coverage report - " + header.command;
document.getElementById('header-date').innerHTML = header.date;
document.getElementById('header-covered').innerHTML = header.covered
document.getElementById('header-instrumented').innerHTML = header.instrumented
$("#index-table").tablesorter({
theme : 'blue',
sortList : [[1,0]],
cssInfoBlock : "tablesorter-no-sort",
widgets: ["saveSort"],
});
}
function toCoverPercentString (covered, instrumented) {
perc = (covered / instrumented) * 100;
if (perc <= percent_low)
return "coverPerLeftLo";
else if (perc >= percent_high)
return "coverPerLeftHi";
return "coverPerLeftMed";
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,221 @@
/*************
Blue Theme
*************/
/* overall */
.tablesorter-blue {
width: 100%;
background-color: #fff;
margin: 10px 0 15px;
text-align: left;
border-spacing: 0;
border: #cdcdcd 1px solid;
border-width: 1px 0 0 1px;
}
.tablesorter-blue th,
.tablesorter-blue td {
border: #cdcdcd 1px solid;
border-width: 0 1px 1px 0;
}
/* header */
.tablesorter-blue th,
.tablesorter-blue thead td {
font: bold 12px/18px Arial, Sans-serif;
color: #000;
background-color: #99bfe6;
border-collapse: collapse;
padding: 4px;
text-shadow: 0 1px 0 rgba(204, 204, 204, 0.7);
}
.tablesorter-blue tbody td,
.tablesorter-blue tfoot th,
.tablesorter-blue tfoot td {
padding: 4px;
vertical-align: top;
}
.tablesorter-blue .header,
.tablesorter-blue .tablesorter-header {
/* black (unsorted) double arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);
/* white (unsorted) double arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); */
/* image */
/* background-image: url(images/black-unsorted.gif); */
background-repeat: no-repeat;
background-position: center right;
padding: 4px 18px 4px 4px;
white-space: normal;
cursor: pointer;
}
.tablesorter-blue .headerSortUp,
.tablesorter-blue .tablesorter-headerSortUp,
.tablesorter-blue .tablesorter-headerAsc {
background-color: #9fbfdf;
/* black asc arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);
/* white asc arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); */
/* image */
/* background-image: url(images/black-asc.gif); */
}
.tablesorter-blue .headerSortDown,
.tablesorter-blue .tablesorter-headerSortDown,
.tablesorter-blue .tablesorter-headerDesc {
background-color: #8cb3d9;
/* black desc arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);
/* white desc arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); */
/* image */
/* background-image: url(images/black-desc.gif); */
}
.tablesorter-blue thead .sorter-false {
background-image: none;
cursor: default;
padding: 4px;
}
/* tfoot */
.tablesorter-blue tfoot .tablesorter-headerSortUp,
.tablesorter-blue tfoot .tablesorter-headerSortDown,
.tablesorter-blue tfoot .tablesorter-headerAsc,
.tablesorter-blue tfoot .tablesorter-headerDesc {
/* remove sort arrows from footer */
background-image: none;
}
/* tbody */
.tablesorter-blue td {
color: #3d3d3d;
background-color: #fff;
padding: 4px;
vertical-align: top;
}
/* hovered row colors
you'll need to add additional lines for
rows with more than 2 child rows
*/
.tablesorter-blue tbody > tr:hover > td,
.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.even:hover > td,
.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
background: #d9d9d9;
}
.tablesorter-blue tbody > tr.odd:hover > td,
.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
background: #bfbfbf;
}
/* table processing indicator */
.tablesorter-blue .tablesorter-processing {
background-position: center center !important;
background-repeat: no-repeat !important;
/* background-image: url(../addons/pager/icons/loading.gif) !important; */
background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important;
}
/* Zebra Widget - row alternating colors */
.tablesorter-blue tbody tr.odd td {
background-color: #ebf2fa;
}
.tablesorter-blue tbody tr.even td {
background-color: #fff;
}
/* Column Widget - column sort colors */
.tablesorter-blue td.primary,
.tablesorter-blue tr.odd td.primary {
background-color: #99b3e6;
}
.tablesorter-blue tr.even td.primary {
background-color: #c2d1f0;
}
.tablesorter-blue td.secondary,
.tablesorter-blue tr.odd td.secondary {
background-color: #c2d1f0;
}
.tablesorter-blue tr.even td.secondary {
background-color: #d6e0f5;
}
.tablesorter-blue td.tertiary,
.tablesorter-blue tr.odd td.tertiary {
background-color: #d6e0f5;
}
.tablesorter-blue tr.even td.tertiary {
background-color: #ebf0fa;
}
/* caption */
caption {
background: #fff;
}
/* filter widget */
.tablesorter-blue .tablesorter-filter-row td {
background: #eee;
line-height: normal;
text-align: center; /* center the input */
-webkit-transition: line-height 0.1s ease;
-moz-transition: line-height 0.1s ease;
-o-transition: line-height 0.1s ease;
transition: line-height 0.1s ease;
}
/* optional disabled input styling */
.tablesorter-blue .tablesorter-filter-row .disabled {
opacity: 0.5;
filter: alpha(opacity=50);
cursor: not-allowed;
}
/* hidden filter row */
.tablesorter-blue .tablesorter-filter-row.hideme td {
/*** *********************************************** ***/
/*** change this padding to modify the thickness ***/
/*** of the closed filter row (height = padding x 2) ***/
padding: 2px;
/*** *********************************************** ***/
margin: 0;
line-height: 0;
cursor: pointer;
}
.tablesorter-blue .tablesorter-filter-row.hideme .tablesorter-filter {
height: 1px;
min-height: 0;
border: 0;
padding: 0;
margin: 0;
/* don't use visibility: hidden because it disables tabbing */
opacity: 0;
filter: alpha(opacity=0);
}
/* filters */
.tablesorter-blue .tablesorter-filter {
width: 98%;
height: auto;
margin: 0;
padding: 4px;
background-color: #fff;
border: 1px solid #bbb;
color: #333;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-transition: height 0.1s ease;
-moz-transition: height 0.1s ease;
-o-transition: height 0.1s ease;
transition: height 0.1s ease;
}
/* rows hidden by filtering (needed for child rows) */
.tablesorter .filtered {
display: none;
}
/* ajax error row */
.tablesorter .tablesorter-errorRow td {
text-align: center;
cursor: pointer;
background-color: #e6bf99;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

@ -0,0 +1,102 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title id="window-title">???</title>
<link rel="stylesheet" href="data/tablesorter-theme.css">
<link rel="stylesheet" type="text/css" href="data/bcov.css"/>
</head>
<noscript>
<font color=red><B>ERROR:</B></font> JavaScript need to be enabled for the coverage report to work.
</noscript>
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/tablesorter.min.js"></script>
<script type="text/javascript" src="data/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="80%" colspan=6>???</td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="15%"></td>
<td width="5%"></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="10%">???</td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="15%">???</td>
<td width="5%"></td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="10%">???</td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="files-template" type="text/x-handlebars-template">
<center>
<table width="80%" cellpadding="2" cellspacing="1" border="0" id="index-table" class="tablesorter">
<thead>
<tr>
<th class="tableHead" width="50%">Filename</th>
<th width="20%">Coverage percent</th>
<th width="10%">Covered lines</th>
<th width="10%">Uncovered lines</th>
<th width="10%">Executable lines</th>
</tr>
</thead>
<tbody id="main-data">
{{#each files}}
<tr>
<td class="coverFile"><a href="{{link}}" title="{{title}}">{{summary_name}}</a></td>
<td class="coverPer"><span style="display:block;width:{{covered}}%" class="{{covered_class}}">{{covered}}%</td>
<td class="coverNum">{{covered_lines}}</td>
<td class="coverNum">{{uncovered_lines}}</td>
<td class="coverNum">{{total_lines}}</td>
</tr>
{{/each}}
</tbody>
{{#each merged_files}}
<tbody tablesorter-no-sort id="merged-data">
<tr>
<td class="coverFile"><a href="{{link}}" title="{{title}}">{{summary_name}}</a></td>
<td class="coverPer"><span style="display:block;width:{{covered}}%" class="{{covered_class}}">{{covered}}%</td>
<td class="coverNum">{{covered_lines}}</td>
<td class="coverNum">{{uncovered_lines}}</td>
<td class="coverNum">{{total_lines}}</td>
</tr>
</tbody>
{{/each}}
</table>
</center>
</script>
<div id="files-placeholder"></div>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
<table width='100%' class='shellspecVersionInfo'>
<tr><td class='versionInfo'>
Tested by: <a href='https://shellspec.info'>ShellSpec</a> 0.29.0-dev (with bash 4.4.20(1)-release and kcov v37-4-gbd3a)
</td></tr>
</table>
</body>
</html>

@ -0,0 +1,5 @@
var data = {files:[
{"link":"bpkg [specfiles]/index.html","title":"bpkg [specfiles]","summary_name":"bpkg [specfiles]","covered_class":"lineNoCov","covered":"2.7","covered_lines":"34","uncovered_lines":"1208","total_lines" : "1242"},
], merged_files:[]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec lib/json/spec spec", "date" : "2021-03-28 23:31:54", "instrumented" : 1242, "covered" : 34,};

@ -0,0 +1 @@
bpkg [specfiles]/sonarqube.xml

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

@ -0,0 +1,32 @@
/* Based upon the lcov CSS style, style files can be reused */
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #284FA8; text-decoration: underline; }
a:visited { color: #00CB40; text-decoration: underline; }
a:active { color: #FF0040; text-decoration: underline; }
td.title { text-align: center; padding-bottom: 10px; font-size: 20pt; font-weight: bold; }
td.ruler { background-color: #6688D4; }
td.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
td.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
td.versionInfo { text-align: center; padding-top: 2px; }
th.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
th.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
pre.source { font-family: monospace; white-space: pre; overflow: hidden; text-overflow: ellipsis; }
span.lineNum { background-color: #EFE383; }
span.lineNumLegend { background-color: #EFE383; width: 96px; font-weight: bold ;}
span.lineCov { background-color: #adff9a; }
span.linePartCov { background-color: #fffe80; }
span.lineNoCov { background-color: #ffbbbb; }
span.orderNum { background-color: #e0b373; float: right; width:5em; text-align: left; }
span.orderNumLegend { background-color: #e0b373; width: 96px; font-weight: bold ;}
span.coverHits { background-color: #DFE383; padding-left: 3px; padding-right: 1px; text-align: right; list-style-type: none; display: inline-block; width: 5em; }
span.coverHitsLegend { background-color: #DFE383; width: 96px; font-weight: bold; margin: 0 auto;}
td.tableHead { text-align: center; color: #FFFFFF; background-color: #6688D4; font-family: sans-serif; font-size: 120%; font-weight: bold; }
td.coverFile { text-align: left; padding-left: 10px; padding-right: 20px; color: #284FA8; font-family: monospace; }
td.coverBar { padding-left: 10px; padding-right: 10px; background-color: #DAE7FE; }
td.coverBarOutline { background-color: #000000; }
td.coverPer { text-align: left; padding-left: 10px; padding-right: 10px; font-weight: bold; }
td.coverPerLeftMed { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #fffe80; font-weight: bold; }
td.coverPerLeftLo { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #ffbbbb; font-weight: bold; }
td.coverPerLeftHi { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #adff9a; font-weight: bold; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }

@ -0,0 +1 @@
json [specfiles]/cobertura.xml

@ -0,0 +1 @@
json [specfiles]/coverage.json

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

@ -0,0 +1,32 @@
/* Based upon the lcov CSS style, style files can be reused */
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #284FA8; text-decoration: underline; }
a:visited { color: #00CB40; text-decoration: underline; }
a:active { color: #FF0040; text-decoration: underline; }
td.title { text-align: center; padding-bottom: 10px; font-size: 20pt; font-weight: bold; }
td.ruler { background-color: #6688D4; }
td.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
td.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
td.versionInfo { text-align: center; padding-top: 2px; }
th.headerItem { text-align: right; padding-right: 6px; font-family: sans-serif; font-weight: bold; }
th.headerValue { text-align: left; color: #284FA8; font-family: sans-serif; font-weight: bold; }
pre.source { font-family: monospace; white-space: pre; overflow: hidden; text-overflow: ellipsis; }
span.lineNum { background-color: #EFE383; }
span.lineNumLegend { background-color: #EFE383; width: 96px; font-weight: bold ;}
span.lineCov { background-color: #adff9a; }
span.linePartCov { background-color: #fffe80; }
span.lineNoCov { background-color: #ffbbbb; }
span.orderNum { background-color: #e0b373; float: right; width:5em; text-align: left; }
span.orderNumLegend { background-color: #e0b373; width: 96px; font-weight: bold ;}
span.coverHits { background-color: #DFE383; padding-left: 3px; padding-right: 1px; text-align: right; list-style-type: none; display: inline-block; width: 5em; }
span.coverHitsLegend { background-color: #DFE383; width: 96px; font-weight: bold; margin: 0 auto;}
td.tableHead { text-align: center; color: #FFFFFF; background-color: #6688D4; font-family: sans-serif; font-size: 120%; font-weight: bold; }
td.coverFile { text-align: left; padding-left: 10px; padding-right: 20px; color: #284FA8; font-family: monospace; }
td.coverBar { padding-left: 10px; padding-right: 10px; background-color: #DAE7FE; }
td.coverBarOutline { background-color: #000000; }
td.coverPer { text-align: left; padding-left: 10px; padding-right: 10px; font-weight: bold; }
td.coverPerLeftMed { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #fffe80; font-weight: bold; }
td.coverPerLeftLo { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #ffbbbb; font-weight: bold; }
td.coverPerLeftHi { text-align: left; padding-left: 10px; padding-right: 10px; background-color: #adff9a; font-weight: bold; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }
td.coverNum { text-align: right; padding-left: 10px; padding-right: 10px; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,78 @@
window.onload = function () {
// http://stackoverflow.com/questions/8853396/logical-operator-in-a-handlebars-js-if-conditional
Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
switch (operator) {
case '==':
return (v1 == v2) ? options.fn(this) : options.inverse(this);
case '===':
return (v1 === v2) ? options.fn(this) : options.inverse(this);
case '<':
return (v1 < v2) ? options.fn(this) : options.inverse(this);
case '<=':
return (v1 <= v2) ? options.fn(this) : options.inverse(this);
case '>':
return (v1 > v2) ? options.fn(this) : options.inverse(this);
case '>=':
return (v1 >= v2) ? options.fn(this) : options.inverse(this);
case '&&':
return (v1 && v2) ? options.fn(this) : options.inverse(this);
case '||':
return (v1 || v2) ? options.fn(this) : options.inverse(this);
default:
return options.inverse(this);
}
});
// http://stackoverflow.com/questions/17095813/handlebars-if-and-numeric-zeroes
Handlebars.registerHelper('exists', function(variable, options) {
if (typeof variable !== 'undefined') {
return options.fn(this);
} else {
return options.inverse(this);
}
});
var filesElement = document.getElementById("files-template")
if (filesElement) {
var source = filesElement.innerHTML;
var template = Handlebars.compile(source);
document.getElementById('files-placeholder').innerHTML = template(data);
}
var linesElement = document.getElementById("lines-template")
if (linesElement) {
var source = linesElement.innerHTML;
var template = Handlebars.compile(source);
document.getElementById('lines-placeholder').innerHTML = template(data);
}
elem = document.getElementById('header-percent-covered')
elem.className = toCoverPercentString(header.covered, header.instrumented);
elem.innerHTML = ((header.covered / header.instrumented) * 100).toFixed(1) + "%";
document.getElementById('header-command').innerHTML = header.command;
document.getElementById('window-title').innerHTML = "Coverage report - " + header.command;
document.getElementById('header-date').innerHTML = header.date;
document.getElementById('header-covered').innerHTML = header.covered
document.getElementById('header-instrumented').innerHTML = header.instrumented
$("#index-table").tablesorter({
theme : 'blue',
sortList : [[1,0]],
cssInfoBlock : "tablesorter-no-sort",
widgets: ["saveSort"],
});
}
function toCoverPercentString (covered, instrumented) {
perc = (covered / instrumented) * 100;
if (perc <= percent_low)
return "coverPerLeftLo";
else if (perc >= percent_high)
return "coverPerLeftHi";
return "coverPerLeftMed";
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,221 @@
/*************
Blue Theme
*************/
/* overall */
.tablesorter-blue {
width: 100%;
background-color: #fff;
margin: 10px 0 15px;
text-align: left;
border-spacing: 0;
border: #cdcdcd 1px solid;
border-width: 1px 0 0 1px;
}
.tablesorter-blue th,
.tablesorter-blue td {
border: #cdcdcd 1px solid;
border-width: 0 1px 1px 0;
}
/* header */
.tablesorter-blue th,
.tablesorter-blue thead td {
font: bold 12px/18px Arial, Sans-serif;
color: #000;
background-color: #99bfe6;
border-collapse: collapse;
padding: 4px;
text-shadow: 0 1px 0 rgba(204, 204, 204, 0.7);
}
.tablesorter-blue tbody td,
.tablesorter-blue tfoot th,
.tablesorter-blue tfoot td {
padding: 4px;
vertical-align: top;
}
.tablesorter-blue .header,
.tablesorter-blue .tablesorter-header {
/* black (unsorted) double arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);
/* white (unsorted) double arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); */
/* image */
/* background-image: url(images/black-unsorted.gif); */
background-repeat: no-repeat;
background-position: center right;
padding: 4px 18px 4px 4px;
white-space: normal;
cursor: pointer;
}
.tablesorter-blue .headerSortUp,
.tablesorter-blue .tablesorter-headerSortUp,
.tablesorter-blue .tablesorter-headerAsc {
background-color: #9fbfdf;
/* black asc arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);
/* white asc arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); */
/* image */
/* background-image: url(images/black-asc.gif); */
}
.tablesorter-blue .headerSortDown,
.tablesorter-blue .tablesorter-headerSortDown,
.tablesorter-blue .tablesorter-headerDesc {
background-color: #8cb3d9;
/* black desc arrow */
background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);
/* white desc arrow */
/* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); */
/* image */
/* background-image: url(images/black-desc.gif); */
}
.tablesorter-blue thead .sorter-false {
background-image: none;
cursor: default;
padding: 4px;
}
/* tfoot */
.tablesorter-blue tfoot .tablesorter-headerSortUp,
.tablesorter-blue tfoot .tablesorter-headerSortDown,
.tablesorter-blue tfoot .tablesorter-headerAsc,
.tablesorter-blue tfoot .tablesorter-headerDesc {
/* remove sort arrows from footer */
background-image: none;
}
/* tbody */
.tablesorter-blue td {
color: #3d3d3d;
background-color: #fff;
padding: 4px;
vertical-align: top;
}
/* hovered row colors
you'll need to add additional lines for
rows with more than 2 child rows
*/
.tablesorter-blue tbody > tr:hover > td,
.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.even:hover > td,
.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
background: #d9d9d9;
}
.tablesorter-blue tbody > tr.odd:hover > td,
.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow > td,
.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
background: #bfbfbf;
}
/* table processing indicator */
.tablesorter-blue .tablesorter-processing {
background-position: center center !important;
background-repeat: no-repeat !important;
/* background-image: url(../addons/pager/icons/loading.gif) !important; */
background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important;
}
/* Zebra Widget - row alternating colors */
.tablesorter-blue tbody tr.odd td {
background-color: #ebf2fa;
}
.tablesorter-blue tbody tr.even td {
background-color: #fff;
}
/* Column Widget - column sort colors */
.tablesorter-blue td.primary,
.tablesorter-blue tr.odd td.primary {
background-color: #99b3e6;
}
.tablesorter-blue tr.even td.primary {
background-color: #c2d1f0;
}
.tablesorter-blue td.secondary,
.tablesorter-blue tr.odd td.secondary {
background-color: #c2d1f0;
}
.tablesorter-blue tr.even td.secondary {
background-color: #d6e0f5;
}
.tablesorter-blue td.tertiary,
.tablesorter-blue tr.odd td.tertiary {
background-color: #d6e0f5;
}
.tablesorter-blue tr.even td.tertiary {
background-color: #ebf0fa;
}
/* caption */
caption {
background: #fff;
}
/* filter widget */
.tablesorter-blue .tablesorter-filter-row td {
background: #eee;
line-height: normal;
text-align: center; /* center the input */
-webkit-transition: line-height 0.1s ease;
-moz-transition: line-height 0.1s ease;
-o-transition: line-height 0.1s ease;
transition: line-height 0.1s ease;
}
/* optional disabled input styling */
.tablesorter-blue .tablesorter-filter-row .disabled {
opacity: 0.5;
filter: alpha(opacity=50);
cursor: not-allowed;
}
/* hidden filter row */
.tablesorter-blue .tablesorter-filter-row.hideme td {
/*** *********************************************** ***/
/*** change this padding to modify the thickness ***/
/*** of the closed filter row (height = padding x 2) ***/
padding: 2px;
/*** *********************************************** ***/
margin: 0;
line-height: 0;
cursor: pointer;
}
.tablesorter-blue .tablesorter-filter-row.hideme .tablesorter-filter {
height: 1px;
min-height: 0;
border: 0;
padding: 0;
margin: 0;
/* don't use visibility: hidden because it disables tabbing */
opacity: 0;
filter: alpha(opacity=0);
}
/* filters */
.tablesorter-blue .tablesorter-filter {
width: 98%;
height: auto;
margin: 0;
padding: 4px;
background-color: #fff;
border: 1px solid #bbb;
color: #333;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-transition: height 0.1s ease;
-moz-transition: height 0.1s ease;
-o-transition: height 0.1s ease;
transition: height 0.1s ease;
}
/* rows hidden by filtering (needed for child rows) */
.tablesorter .filtered {
display: none;
}
/* ajax error row */
.tablesorter .tablesorter-errorRow td {
text-align: center;
cursor: pointer;
background-color: #e6bf99;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

@ -0,0 +1,102 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title id="window-title">???</title>
<link rel="stylesheet" href="data/tablesorter-theme.css">
<link rel="stylesheet" type="text/css" href="data/bcov.css"/>
</head>
<noscript>
<font color=red><B>ERROR:</B></font> JavaScript need to be enabled for the coverage report to work.
</noscript>
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/tablesorter.min.js"></script>
<script type="text/javascript" src="data/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="80%" colspan=6>???</td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="15%"></td>
<td width="5%"></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="10%">???</td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="15%">???</td>
<td width="5%"></td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="10%">???</td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="files-template" type="text/x-handlebars-template">
<center>
<table width="80%" cellpadding="2" cellspacing="1" border="0" id="index-table" class="tablesorter">
<thead>
<tr>
<th class="tableHead" width="50%">Filename</th>
<th width="20%">Coverage percent</th>
<th width="10%">Covered lines</th>
<th width="10%">Uncovered lines</th>
<th width="10%">Executable lines</th>
</tr>
</thead>
<tbody id="main-data">
{{#each files}}
<tr>
<td class="coverFile"><a href="{{link}}" title="{{title}}">{{summary_name}}</a></td>
<td class="coverPer"><span style="display:block;width:{{covered}}%" class="{{covered_class}}">{{covered}}%</td>
<td class="coverNum">{{covered_lines}}</td>
<td class="coverNum">{{uncovered_lines}}</td>
<td class="coverNum">{{total_lines}}</td>
</tr>
{{/each}}
</tbody>
{{#each merged_files}}
<tbody tablesorter-no-sort id="merged-data">
<tr>
<td class="coverFile"><a href="{{link}}" title="{{title}}">{{summary_name}}</a></td>
<td class="coverPer"><span style="display:block;width:{{covered}}%" class="{{covered_class}}">{{covered}}%</td>
<td class="coverNum">{{covered_lines}}</td>
<td class="coverNum">{{uncovered_lines}}</td>
<td class="coverNum">{{total_lines}}</td>
</tr>
</tbody>
{{/each}}
</table>
</center>
</script>
<div id="files-placeholder"></div>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
<table width='100%' class='shellspecVersionInfo'>
<tr><td class='versionInfo'>
Tested by: <a href='https://shellspec.info'>ShellSpec</a> 0.29.0-dev (with bash 4.4.20(1)-release and kcov v37-4-gbd3a)
</td></tr>
</table>
</body>
</html>

@ -0,0 +1,5 @@
var data = {files:[
{"link":"json [specfiles]/index.html","title":"json [specfiles]","summary_name":"json [specfiles]","covered_class":"linePartCov","covered":"68.9","covered_lines":"82","uncovered_lines":"37","total_lines" : "119"},
], merged_files:[]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec spec", "date" : "2021-03-28 23:32:24", "instrumented" : 119, "covered" : 82,};

@ -0,0 +1,72 @@
<script type="text/javascript" src="JSON.sh.703d91c7.js"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title id="window-title">???</title>
<link rel="stylesheet" type="text/css" href="../data/bcov.css"/>
</head>
<script type="text/javascript" src="data/js/jquery.min.js"></script>
<script type="text/javascript" src="data/js/handlebars.js"></script>
<script type="text/javascript" src="data/js/kcov.js"></script>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Coverage Report</td></tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr id="command">
<td class="headerItem" width="20%">Command:</td>
<td id="header-command" class="headerValue" width="60%" colspan=4>???</td>
<td><span class="lineNumLegend">Line number</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Date: </td>
<td id="header-date" class="headerValue" width="20%" colspan=2></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td id="header-instrumented" class="headerValue" width="20%">???</td>
<td><span class="coverHitsLegend">Hits</span></td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td id="header-percent-covered" width="20%" colspan=2>???</td>
<td class="headerItem" width="20%">Executed lines:</td>
<td id="header-covered" class="headerValue" width="20%">???</td>
<td><span class="orderNumLegend">Order</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="data/glass.png" width="3" height="3" alt=""/></td></tr>
</table>
<script id="lines-template" type="text/x-handlebars-template">
<pre class="source" id="main-data">
{{#each lines}}
{{#ifCond possible_hits "==" "0"}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} </span><span class="{{class}}"> {{line}}</span></span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists possible_hits}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">{{hits}} / {{possible_hits}}</span><span class="{{class}}"> {{line}}</span><span class="orderNum"> {{order}}</span></source-line>
{{else}}
{{#exists class}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span></span><span class="orderNum">&nbsp;</span></source-line>
{{else}}
<source-line><span class="lineNum">{{lineNum}}</span><span class="coverHits">&nbsp;</span><span class="{{class}}"> {{line}}</span><span class="orderNum">&nbsp;</span></source-line>
{{/exists}}
{{/exists}}
{{/ifCond}}
{{/each}}
</pre>
</script>
<div id="lines-placeholder"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="merged-data">
<tr><td class="ruler"><img src="data/amber.png" width="3" height="3" alt=""/></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://simonkagstrom.github.com/kcov/index.html">Kcov</a></td></tr>
</table>
</body>
</html>

@ -0,0 +1,196 @@
var data = {lines:[
{"lineNum":" 1","line":"#!/usr/bin/env bash"},
{"lineNum":" 2","line":""},
{"lineNum":" 3","line":"throw () {"},
{"lineNum":" 4","line":" echo \"$*\" >&2","class":"lineCov","hits":"22","order":"28","possible_hits":"0",},
{"lineNum":" 5","line":" exit 1","class":"lineCov","hits":"22","order":"29","possible_hits":"0",},
{"lineNum":" 6","line":"}"},
{"lineNum":" 7","line":""},
{"lineNum":" 8","line":"BRIEF=0","class":"lineCov","hits":"37","order":"1","possible_hits":"0",},
{"lineNum":" 9","line":"LEAFONLY=0","class":"lineCov","hits":"37","order":"2","possible_hits":"0",},
{"lineNum":" 10","line":"PRUNE=0","class":"lineCov","hits":"37","order":"3","possible_hits":"0",},
{"lineNum":" 11","line":""},
{"lineNum":" 12","line":"usage() {"},
{"lineNum":" 13","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 14","line":" echo \"Usage: JSON.sh [-b] [-l] [-p] [-h]\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 15","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 16","line":" echo \"-p - Prune empty. Exclude fields with empty values.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 17","line":" echo \"-l - Leaf only. Only show leaf nodes, which stops data duplication.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 18","line":" echo \"-b - Brief. Combines \'Leaf only\' and \'Prune empty\' options.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 19","line":" echo \"-h - This help text.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 20","line":" echo","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 21","line":"}"},
{"lineNum":" 22","line":""},
{"lineNum":" 23","line":"parse_options() {"},
{"lineNum":" 24","line":" set -- \"$@\"","class":"lineCov","hits":"37","order":"5","possible_hits":"0",},
{"lineNum":" 25","line":" local ARGN=$#","class":"lineCov","hits":"37","order":"6","possible_hits":"0",},
{"lineNum":" 26","line":" while [ $ARGN -ne 0 ]","class":"lineCov","hits":"37","order":"7","possible_hits":"0",},
{"lineNum":" 27","line":" do"},
{"lineNum":" 28","line":" case $1 in","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 29","line":" -h) usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 30","line":" exit 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 31","line":" ;;"},
{"lineNum":" 32","line":" -b) BRIEF=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 33","line":" LEAFONLY=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 34","line":" PRUNE=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 35","line":" ;;"},
{"lineNum":" 36","line":" -l) LEAFONLY=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 37","line":" ;;"},
{"lineNum":" 38","line":" -p) PRUNE=1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 39","line":" ;;"},
{"lineNum":" 40","line":" ?*) echo \"ERROR: Unknown option.\"","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 41","line":" usage","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 42","line":" exit 0","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 43","line":" ;;"},
{"lineNum":" 44","line":" esac"},
{"lineNum":" 45","line":" shift 1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 46","line":" ARGN=$((ARGN-1))","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 47","line":" done"},
{"lineNum":" 48","line":"}"},
{"lineNum":" 49","line":""},
{"lineNum":" 50","line":"awk_egrep () {"},
{"lineNum":" 51","line":" local pattern_string=$1","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 52","line":""},
{"lineNum":" 53","line":" gawk \'{","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 54","line":" while ($0) {","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 55","line":" start=match($0, pattern);","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 56","line":" token=substr($0, start, RLENGTH);","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 57","line":" print token;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 58","line":" $0=substr($0, start+RLENGTH);","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 59","line":" }"},
{"lineNum":" 60","line":" }\' pattern=$pattern_string","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 61","line":"}"},
{"lineNum":" 62","line":""},
{"lineNum":" 63","line":"tokenize () {"},
{"lineNum":" 64","line":" local GREP","class":"lineCov","hits":"60","order":"10","possible_hits":"0",},
{"lineNum":" 65","line":" local ESCAPE","class":"lineCov","hits":"60","order":"11","possible_hits":"0",},
{"lineNum":" 66","line":" local CHAR","class":"lineCov","hits":"60","order":"12","possible_hits":"0",},
{"lineNum":" 67","line":""},
{"lineNum":" 68","line":" if echo \"test string\" | egrep -ao --color=never \"test\" &>/dev/null","class":"lineCov","hits":"120","order":"13","possible_hits":"0",},
{"lineNum":" 69","line":" then"},
{"lineNum":" 70","line":" GREP=\'egrep -ao --color=never\'","class":"lineCov","hits":"60","order":"15","possible_hits":"0",},
{"lineNum":" 71","line":" else"},
{"lineNum":" 72","line":" GREP=\'egrep -ao\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 73","line":" fi"},
{"lineNum":" 74","line":""},
{"lineNum":" 75","line":" if echo \"test string\" | egrep -o \"test\" &>/dev/null","class":"lineCov","hits":"120","order":"16","possible_hits":"0",},
{"lineNum":" 76","line":" then"},
{"lineNum":" 77","line":" ESCAPE=\'(\\\\[^u[:cntrl:]]|\\\\u[0-9a-fA-F]{4})\'","class":"lineCov","hits":"60","order":"17","possible_hits":"0",},
{"lineNum":" 78","line":" CHAR=\'[^[:cntrl:]\"\\\\]\'","class":"lineCov","hits":"60","order":"18","possible_hits":"0",},
{"lineNum":" 79","line":" else"},
{"lineNum":" 80","line":" GREP=awk_egrep","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 81","line":" ESCAPE=\'(\\\\\\\\[^u[:cntrl:]]|\\\\u[0-9a-fA-F]{4})\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 82","line":" CHAR=\'[^[:cntrl:]\"\\\\\\\\]\'","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 83","line":" fi"},
{"lineNum":" 84","line":""},
{"lineNum":" 85","line":" local STRING=\"\\\"$CHAR*($ESCAPE$CHAR*)*\\\"\"","class":"lineCov","hits":"60","order":"19","possible_hits":"0",},
{"lineNum":" 86","line":" local NUMBER=\'-?(0|[1-9][0-9]*)([.][0-9]*)?([eE][+-]?[0-9]*)?\'","class":"lineCov","hits":"60","order":"20","possible_hits":"0",},
{"lineNum":" 87","line":" local KEYWORD=\'null|false|true\'","class":"lineCov","hits":"60","order":"21","possible_hits":"0",},
{"lineNum":" 88","line":" local SPACE=\'[[:space:]]+\'","class":"lineCov","hits":"60","order":"22","possible_hits":"0",},
{"lineNum":" 89","line":""},
{"lineNum":" 90","line":" $GREP \"$STRING|$NUMBER|$KEYWORD|$SPACE|.\" | egrep -v \"^$SPACE$\"","class":"lineCov","hits":"120","order":"23","possible_hits":"0",},
{"lineNum":" 91","line":"}"},
{"lineNum":" 92","line":""},
{"lineNum":" 93","line":"parse_array () {"},
{"lineNum":" 94","line":" local index=0","class":"lineCov","hits":"13","order":"44","possible_hits":"0",},
{"lineNum":" 95","line":" local ary=\'\'","class":"lineCov","hits":"13","order":"45","possible_hits":"0",},
{"lineNum":" 96","line":" read -r token","class":"lineCov","hits":"13","order":"46","possible_hits":"0",},
{"lineNum":" 97","line":" case \"$token\" in","class":"lineCov","hits":"13","order":"47","possible_hits":"0",},
{"lineNum":" 98","line":" \']\') ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 99","line":" *)"},
{"lineNum":" 100","line":" while :","class":"lineCov","hits":"28","order":"48","possible_hits":"0",},
{"lineNum":" 101","line":" do"},
{"lineNum":" 102","line":" parse_value \"$1\" \"$index\"","class":"lineCov","hits":"28","order":"49","possible_hits":"0",},
{"lineNum":" 103","line":" index=$((index+1))","class":"lineCov","hits":"26","order":"61","possible_hits":"0",},
{"lineNum":" 104","line":" ary=\"$ary\"\"$value\"","class":"lineCov","hits":"26","order":"62","possible_hits":"0",},
{"lineNum":" 105","line":" read -r token","class":"lineCov","hits":"26","order":"63","possible_hits":"0",},
{"lineNum":" 106","line":" case \"$token\" in","class":"lineCov","hits":"26","order":"64","possible_hits":"0",},
{"lineNum":" 107","line":" \']\') break ;;","class":"lineCov","hits":"7","order":"67","possible_hits":"0",},
{"lineNum":" 108","line":" \',\') ary=\"$ary,\" ;;","class":"lineCov","hits":"18","order":"65","possible_hits":"0",},
{"lineNum":" 109","line":" *) throw \"EXPECTED , or ] GOT ${token:-EOF}\" ;;","class":"lineCov","hits":"1","order":"78","possible_hits":"0",},
{"lineNum":" 110","line":" esac"},
{"lineNum":" 111","line":" read -r token","class":"lineCov","hits":"18","order":"66","possible_hits":"0",},
{"lineNum":" 112","line":" done"},
{"lineNum":" 113","line":" ;;"},
{"lineNum":" 114","line":" esac"},
{"lineNum":" 115","line":" [ \"$BRIEF\" -eq 0 ] && value=`printf \'[%s]\' \"$ary\"` || value=","class":"lineCov","hits":"30","order":"68","possible_hits":"0",},
{"lineNum":" 116","line":" :","class":"lineCov","hits":"10","order":"69","possible_hits":"0",},
{"lineNum":" 117","line":"}"},
{"lineNum":" 118","line":""},
{"lineNum":" 119","line":"parse_object () {"},
{"lineNum":" 120","line":" local key","class":"lineCov","hits":"28","order":"31","possible_hits":"0",},
{"lineNum":" 121","line":" local obj=\'\'","class":"lineCov","hits":"28","order":"32","possible_hits":"0",},
{"lineNum":" 122","line":" read -r token","class":"lineCov","hits":"28","order":"33","possible_hits":"0",},
{"lineNum":" 123","line":" case \"$token\" in","class":"lineCov","hits":"28","order":"34","possible_hits":"0",},
{"lineNum":" 124","line":" \'}\') ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 125","line":" *)"},
{"lineNum":" 126","line":" while :","class":"lineCov","hits":"38","order":"35","possible_hits":"0",},
{"lineNum":" 127","line":" do"},
{"lineNum":" 128","line":" case \"$token\" in","class":"lineCov","hits":"38","order":"36","possible_hits":"0",},
{"lineNum":" 129","line":" \'\"\'*\'\"\') key=$token ;;","class":"lineCov","hits":"31","order":"38","possible_hits":"0",},
{"lineNum":" 130","line":" *) throw \"EXPECTED string GOT ${token:-EOF}\" ;;","class":"lineCov","hits":"7","order":"37","possible_hits":"0",},
{"lineNum":" 131","line":" esac"},
{"lineNum":" 132","line":" read -r token","class":"lineCov","hits":"31","order":"39","possible_hits":"0",},
{"lineNum":" 133","line":" case \"$token\" in","class":"lineCov","hits":"31","order":"40","possible_hits":"0",},
{"lineNum":" 134","line":" \':\') ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 135","line":" *) throw \"EXPECTED : GOT ${token:-EOF}\" ;;","class":"lineCov","hits":"1","order":"50","possible_hits":"0",},
{"lineNum":" 136","line":" esac"},
{"lineNum":" 137","line":" read -r token","class":"lineCov","hits":"30","order":"41","possible_hits":"0",},
{"lineNum":" 138","line":" parse_value \"$1\" \"$key\"","class":"lineCov","hits":"30","order":"42","possible_hits":"0",},
{"lineNum":" 139","line":" obj=\"$obj$key:$value\"","class":"lineCov","hits":"29","order":"73","possible_hits":"0",},
{"lineNum":" 140","line":" read -r token","class":"lineCov","hits":"29","order":"74","possible_hits":"0",},
{"lineNum":" 141","line":" case \"$token\" in","class":"lineCov","hits":"29","order":"75","possible_hits":"0",},
{"lineNum":" 142","line":" \'}\') break ;;","class":"lineCov","hits":"12","order":"82","possible_hits":"0",},
{"lineNum":" 143","line":" \',\') obj=\"$obj,\" ;;","class":"lineCov","hits":"16","order":"76","possible_hits":"0",},
{"lineNum":" 144","line":" *) throw \"EXPECTED , or } GOT ${token:-EOF}\" ;;","class":"lineCov","hits":"1","order":"79","possible_hits":"0",},
{"lineNum":" 145","line":" esac"},
{"lineNum":" 146","line":" read -r token","class":"lineCov","hits":"16","order":"77","possible_hits":"0",},
{"lineNum":" 147","line":" done"},
{"lineNum":" 148","line":" ;;"},
{"lineNum":" 149","line":" esac"},
{"lineNum":" 150","line":" [ \"$BRIEF\" -eq 0 ] && value=`printf \'{%s}\' \"$obj\"` || value=","class":"lineCov","hits":"54","order":"80","possible_hits":"0",},
{"lineNum":" 151","line":" :","class":"lineCov","hits":"18","order":"81","possible_hits":"0",},
{"lineNum":" 152","line":"}"},
{"lineNum":" 153","line":""},
{"lineNum":" 154","line":"parse_value () {"},
{"lineNum":" 155","line":" local jpath=\"${1:+$1,}$2\" isleaf=0 isempty=0 print=0","class":"lineCov","hits":"97","order":"25","possible_hits":"0",},
{"lineNum":" 156","line":" case \"$token\" in","class":"lineCov","hits":"97","order":"26","possible_hits":"0",},
{"lineNum":" 157","line":" \'{\') parse_object \"$jpath\" ;;","class":"lineCov","hits":"28","order":"30","possible_hits":"0",},
{"lineNum":" 158","line":" \'[\') parse_array \"$jpath\" ;;","class":"lineCov","hits":"13","order":"43","possible_hits":"0",},
{"lineNum":" 159","line":" # At this point, the only valid single-character tokens are digits."},
{"lineNum":" 160","line":" \'\'|[!0-9]) throw \"EXPECTED value GOT ${token:-EOF}\" ;;","class":"lineCov","hits":"11","order":"27","possible_hits":"0",},
{"lineNum":" 161","line":" *) value=$token","class":"lineCov","hits":"45","order":"51","possible_hits":"0",},
{"lineNum":" 162","line":" isleaf=1","class":"lineCov","hits":"45","order":"52","possible_hits":"0",},
{"lineNum":" 163","line":" [ \"$value\" = \'\"\"\' ] && isempty=1","class":"lineCov","hits":"45","order":"53","possible_hits":"0",},
{"lineNum":" 164","line":" ;;"},
{"lineNum":" 165","line":" esac"},
{"lineNum":" 166","line":" [ \"$value\" = \'\' ] && return","class":"lineCov","hits":"73","order":"54","possible_hits":"0",},
{"lineNum":" 167","line":" [ \"$LEAFONLY\" -eq 0 ] && [ \"$PRUNE\" -eq 0 ] && print=1","class":"lineCov","hits":"219","order":"55","possible_hits":"0",},
{"lineNum":" 168","line":" [ \"$LEAFONLY\" -eq 1 ] && [ \"$isleaf\" -eq 1 ] && [ $PRUNE -eq 0 ] && print=1","class":"lineCov","hits":"73","order":"56","possible_hits":"0",},
{"lineNum":" 169","line":" [ \"$LEAFONLY\" -eq 0 ] && [ \"$PRUNE\" -eq 1 ] && [ \"$isempty\" -eq 0 ] && print=1","class":"lineCov","hits":"146","order":"57","possible_hits":"0",},
{"lineNum":" 170","line":" [ \"$LEAFONLY\" -eq 1 ] && [ \"$isleaf\" -eq 1 ] && \\","class":"lineCov","hits":"73","order":"58","possible_hits":"0",},
{"lineNum":" 171","line":" [ $PRUNE -eq 1 ] && [ $isempty -eq 0 ] && print=1"},
{"lineNum":" 172","line":" [ \"$print\" -eq 1 ] && printf \"[%s]\\t%s\\n\" \"$jpath\" \"$value\"","class":"lineCov","hits":"146","order":"59","possible_hits":"0",},
{"lineNum":" 173","line":" :","class":"lineCov","hits":"73","order":"60","possible_hits":"0",},
{"lineNum":" 174","line":"}"},
{"lineNum":" 175","line":""},
{"lineNum":" 176","line":"parse () {"},
{"lineNum":" 177","line":" read -r token","class":"lineCov","hits":"39","order":"14","possible_hits":"0",},
{"lineNum":" 178","line":" parse_value","class":"lineCov","hits":"39","order":"24","possible_hits":"0",},
{"lineNum":" 179","line":" read -r token","class":"lineCov","hits":"18","order":"70","possible_hits":"0",},
{"lineNum":" 180","line":" case \"$token\" in","class":"lineCov","hits":"18","order":"71","possible_hits":"0",},
{"lineNum":" 181","line":" \'\') ;;","class":"lineNoCov","hits":"0","possible_hits":"0",},
{"lineNum":" 182","line":" *) throw \"EXPECTED EOF GOT $token\" ;;","class":"lineCov","hits":"1","order":"72","possible_hits":"0",},
{"lineNum":" 183","line":" esac"},
{"lineNum":" 184","line":"}"},
{"lineNum":" 185","line":""},
{"lineNum":" 186","line":"parse_options \"$@\"","class":"lineCov","hits":"37","order":"4","possible_hits":"0",},
{"lineNum":" 187","line":""},
{"lineNum":" 188","line":"if ([ \"$0\" = \"$BASH_SOURCE\" ] || ! [ -n \"$BASH_SOURCE\" ]);","class":"lineCov","hits":"39","order":"8","possible_hits":"0",},
{"lineNum":" 189","line":"then"},
{"lineNum":" 190","line":" tokenize | parse","class":"lineCov","hits":"70","order":"9","possible_hits":"0",},
{"lineNum":" 191","line":"fi"},
]};
var percent_low = 25;var percent_high = 75;
var header = { "command" : "shellspec spec", "date" : "2021-03-28 23:32:24", "instrumented" : 119, "covered" : 82,};
var merged_data = [];

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save