aboutsummaryrefslogtreecommitdiffstats
path: root/tools/node_modules/expresso/deps/jscoverage/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/expresso/deps/jscoverage/tests')
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/asprintf.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/encoding.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/encodings.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/gethostbyname.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/highlight.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-bad-body.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-bad-url.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-close-after-request.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-host.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-bad-body.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-bad-headers.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-charset.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-chunked.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-close-immediately.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-url.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/instrument-js.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/json.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/mkdirs.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/recursive-dir-list.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/resource-manager.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/stream.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/streams.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/.deps/util.Po1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/Makefile846
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/Makefile.am130
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/Makefile.in846
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/asprintf.c42
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/asprintf.sh19
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/charset.sh110
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/chunked.sh74
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/common.sh7
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/destination-is-existing-directory.expected.err2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/destination-is-file.expected.err2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/encoding-requires-argument.expected.err2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/encodings.c223
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/encodings.sh19
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/exclude-requires-argument.expected.err2
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/fatal.sh110
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/gethostbyname.c53
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/gethostbyname.sh25
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/help.sh35
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/http-client-bad-body.c98
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/http-client-bad-url.c77
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/http-client-close-after-request.c57
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/http-server-bad-body.c97
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/http-server-bad-headers.c97
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/http-server-charset.c144
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/http-server-chunked.c196
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/http-server-close-immediately.c60
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/invalid-option.expected.err2
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/invalid-option.sh29
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore.expected/ignore.js106
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore.sh28
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore/ignore.js44
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-invalid.expected.err2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-invalid/javascript-invalid.js1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-setter.expected.err1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-setter/javascript-setter.js3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8.expected/javascript-utf-8.js15
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8.sh43
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8/javascript-utf-8.js2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-xml.expected.err1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript-xml/javascript-xml.js8
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-array-comprehension.js32
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-assign.js51
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-colon.js24
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-comma.js12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-cr.js12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-crlf.js12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-debugger.js21
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-dec.js15
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-delete.js12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-destructuring.js96
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-do.js28
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-dot.js30
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-empty.js9
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-for.js51
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-foreach.js16
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-function.js79
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-generator-expression.js45
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-generator.js32
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-getter-setter.js31
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-hook.js15
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-if.js71
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-in.js19
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-inc.js15
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-iso-8859-1.js15
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-lambda.js14
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-let.js148
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-lf.js12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-new.js22
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-number.js57
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-object.js15
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-op.js108
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-primary.js21
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rb.js24
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rc.js15
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rp.js12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-special-characters.js30
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-string.js36
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-switch.js55
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-throw.js21
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-try.js66
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-unaryop.js27
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-var.js15
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-while.js79
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-with.js30
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/javascript.sh53
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-array-comprehension.js14
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-assign.js14
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-colon.js7
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-comma.js1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-cr.js1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-crlf.js4
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-debugger.js6
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-dec.js2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-delete.js1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-destructuring.js42
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-do.js10
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-dot.js8
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-empty.js0
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-for.js22
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-foreach.js8
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-function.js38
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-generator-expression.js18
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-generator.js11
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-getter-setter.js19
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-hook.js2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-if.js30
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-in.js4
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-inc.js2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-iso-8859-1.js2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-lambda.js3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-let.js79
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-lf.js4
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-new.js4
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-number.js19
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-object.js2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-op.js55
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-primary.js4
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rb.js5
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rc.js7
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rp.js1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-special-characters.js11
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-string.js11
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-switch.js21
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-throw.js6
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-try.js32
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-unaryop.js6
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-var.js2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-while.js35
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-with.js9
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/json-cmp.js65
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/json.c48
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/json.sh19
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/mkdirs.c42
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/mkdirs.sh19
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/netcat.pl35
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/no-arguments.expected.err2
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/no-arguments.sh29
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/no-instrument-requires-argument.expected.err2
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-request-body.sh58
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body-javascript.sh53
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body.expected.err1
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body.sh54
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-headers.sh53
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/proxy-no-server.sh49
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/proxy-url.sh67
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/proxy.sh143
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/recursive-crlf.sh59
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive-dir-list.c93
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/recursive-dir-list.sh19
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/recursive-exclude.sh41
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/recursive-fatal.sh40
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/recursive-no-instrument.sh41
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.css3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.html12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.js12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.css3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.html11
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.js12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/image.pngbin0 -> 67 bytes
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/index.html12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/script.js19
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/style.css3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/unix.txt3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/windows.txt3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/x1
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/recursive.sh55
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.css3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.html12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.js1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.css3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.html11
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.js1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/image.pngbin0 -> 67 bytes
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/index.html12
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/script.js6
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/style.css3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/unix.txt3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/windows.txt3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/recursive/x1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/same-directory.expected.err1
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/same-directory.sh30
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-bad-requests.sh104
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-close-after-request.sh47
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-content-types.sh68
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/server-directory-listing.expected4
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-directory-listing.sh57
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-directory-redirect.sh50
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-encoded-url.sh57
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-error.sh61
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-help.sh26
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/server-ip-address.expected.out4
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-ip-address.sh68
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-shutdown-bad-method.sh49
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown.expected.err1
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-shutdown.sh42
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-special-file.sh62
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-unreadable-directory.sh61
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-unreadable-file.sh62
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/server-verbose.expected.err4
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-verbose.sh54
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server-version.sh25
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/server.pl61
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/server.sh216
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/source-does-not-exist.expected.err2
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/source-is-file.expected.err2
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store-bad-json.sh50
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store-bad-request-body.sh48
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store-bad-response-headers.sh56
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-bad-source-urls.expected.err3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-bad-source-urls.expected.json14
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.expected.json6
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.js11
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.json3
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.sh52
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store-server-bad-body.sh59
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store-server-closes-immediately.sh58
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.expected.err1
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.expected.json6
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.json3
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.sh50
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-source-urls.expected.err3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-source-urls.expected.json14
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-unreachable-source-urls.expected.err3
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store-unreachable-source-urls.expected.json14
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store-unreadable-json.sh66
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store-unwritable-json.sh58
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store.expected.json14
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/store.json5
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/store.sh137
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/streams.c107
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/streams.sh19
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/too-many-arguments.expected.err2
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/valgrind.sh7
-rw-r--r--tools/node_modules/expresso/deps/jscoverage/tests/verbose.expected.out13
-rwxr-xr-xtools/node_modules/expresso/deps/jscoverage/tests/version.sh29
258 files changed, 9235 insertions, 0 deletions
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/asprintf.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/asprintf.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/asprintf.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/encoding.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/encoding.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/encoding.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/encodings.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/encodings.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/encodings.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/gethostbyname.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/gethostbyname.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/gethostbyname.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/highlight.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/highlight.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/highlight.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-bad-body.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-bad-body.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-bad-body.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-bad-url.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-bad-url.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-bad-url.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-close-after-request.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-close-after-request.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-client-close-after-request.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-host.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-host.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-host.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-bad-body.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-bad-body.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-bad-body.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-bad-headers.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-bad-headers.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-bad-headers.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-charset.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-charset.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-charset.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-chunked.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-chunked.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-chunked.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-close-immediately.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-close-immediately.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-server-close-immediately.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-url.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-url.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/http-url.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/instrument-js.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/instrument-js.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/instrument-js.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/json.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/json.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/json.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/mkdirs.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/mkdirs.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/mkdirs.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/recursive-dir-list.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/recursive-dir-list.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/recursive-dir-list.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/resource-manager.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/resource-manager.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/resource-manager.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/stream.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/stream.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/stream.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/streams.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/streams.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/streams.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/.deps/util.Po b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/util.Po
new file mode 100644
index 0000000..9ce06a8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/.deps/util.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/Makefile b/tools/node_modules/expresso/deps/jscoverage/tests/Makefile
new file mode 100644
index 0000000..9f6d1fc
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/Makefile
@@ -0,0 +1,846 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# tests/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+# Makefile.am - build tests
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+pkgdatadir = $(datadir)/jscoverage
+pkglibdir = $(libdir)/jscoverage
+pkgincludedir = $(includedir)/jscoverage
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+noinst_PROGRAMS = asprintf$(EXEEXT) encodings$(EXEEXT) \
+ gethostbyname$(EXEEXT) http-client-bad-body$(EXEEXT) \
+ http-client-bad-url$(EXEEXT) \
+ http-client-close-after-request$(EXEEXT) \
+ http-server-bad-body$(EXEEXT) http-server-bad-headers$(EXEEXT) \
+ http-server-charset$(EXEEXT) http-server-chunked$(EXEEXT) \
+ http-server-close-immediately$(EXEEXT) json$(EXEEXT) \
+ mkdirs$(EXEEXT) recursive-dir-list$(EXEEXT) streams$(EXEEXT)
+subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_asprintf_OBJECTS = asprintf.$(OBJEXT) util.$(OBJEXT)
+asprintf_OBJECTS = $(am_asprintf_OBJECTS)
+asprintf_LDADD = $(LDADD)
+am_encodings_OBJECTS = encodings.$(OBJEXT) encoding.$(OBJEXT) \
+ util.$(OBJEXT)
+encodings_OBJECTS = $(am_encodings_OBJECTS)
+encodings_DEPENDENCIES =
+am_gethostbyname_OBJECTS = gethostbyname.$(OBJEXT) http-host.$(OBJEXT) \
+ util.$(OBJEXT)
+gethostbyname_OBJECTS = $(am_gethostbyname_OBJECTS)
+gethostbyname_DEPENDENCIES =
+am_http_client_bad_body_OBJECTS = http-client-bad-body.$(OBJEXT) \
+ http-url.$(OBJEXT) util.$(OBJEXT)
+http_client_bad_body_OBJECTS = $(am_http_client_bad_body_OBJECTS)
+http_client_bad_body_DEPENDENCIES =
+am_http_client_bad_url_OBJECTS = http-client-bad-url.$(OBJEXT) \
+ util.$(OBJEXT)
+http_client_bad_url_OBJECTS = $(am_http_client_bad_url_OBJECTS)
+http_client_bad_url_DEPENDENCIES =
+http_client_close_after_request_SOURCES = \
+ http-client-close-after-request.c
+http_client_close_after_request_OBJECTS = \
+ http-client-close-after-request.$(OBJEXT)
+http_client_close_after_request_DEPENDENCIES =
+http_server_bad_body_SOURCES = http-server-bad-body.c
+http_server_bad_body_OBJECTS = http-server-bad-body.$(OBJEXT)
+http_server_bad_body_DEPENDENCIES =
+http_server_bad_headers_SOURCES = http-server-bad-headers.c
+http_server_bad_headers_OBJECTS = http-server-bad-headers.$(OBJEXT)
+http_server_bad_headers_DEPENDENCIES =
+am_http_server_charset_OBJECTS = http-server-charset.$(OBJEXT) \
+ stream.$(OBJEXT) util.$(OBJEXT)
+http_server_charset_OBJECTS = $(am_http_server_charset_OBJECTS)
+http_server_charset_DEPENDENCIES =
+am_http_server_chunked_OBJECTS = http-server-chunked.$(OBJEXT) \
+ stream.$(OBJEXT) util.$(OBJEXT)
+http_server_chunked_OBJECTS = $(am_http_server_chunked_OBJECTS)
+http_server_chunked_DEPENDENCIES =
+http_server_close_immediately_SOURCES = \
+ http-server-close-immediately.c
+http_server_close_immediately_OBJECTS = \
+ http-server-close-immediately.$(OBJEXT)
+http_server_close_immediately_DEPENDENCIES =
+am_json_OBJECTS = json.$(OBJEXT) encoding.$(OBJEXT) \
+ highlight.$(OBJEXT) instrument-js.$(OBJEXT) \
+ resource-manager.$(OBJEXT) stream.$(OBJEXT) util.$(OBJEXT)
+json_OBJECTS = $(am_json_OBJECTS)
+json_DEPENDENCIES = ../js/obj/libjs.a
+am_mkdirs_OBJECTS = mkdirs.$(OBJEXT) util.$(OBJEXT)
+mkdirs_OBJECTS = $(am_mkdirs_OBJECTS)
+mkdirs_LDADD = $(LDADD)
+am_recursive_dir_list_OBJECTS = recursive-dir-list.$(OBJEXT) \
+ util.$(OBJEXT)
+recursive_dir_list_OBJECTS = $(am_recursive_dir_list_OBJECTS)
+recursive_dir_list_LDADD = $(LDADD)
+am_streams_OBJECTS = streams.$(OBJEXT) stream.$(OBJEXT) util.$(OBJEXT)
+streams_OBJECTS = $(am_streams_OBJECTS)
+streams_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+SOURCES = $(asprintf_SOURCES) $(encodings_SOURCES) \
+ $(gethostbyname_SOURCES) $(http_client_bad_body_SOURCES) \
+ $(http_client_bad_url_SOURCES) \
+ http-client-close-after-request.c http-server-bad-body.c \
+ http-server-bad-headers.c $(http_server_charset_SOURCES) \
+ $(http_server_chunked_SOURCES) http-server-close-immediately.c \
+ $(json_SOURCES) $(mkdirs_SOURCES) \
+ $(recursive_dir_list_SOURCES) $(streams_SOURCES)
+DIST_SOURCES = $(asprintf_SOURCES) $(encodings_SOURCES) \
+ $(gethostbyname_SOURCES) $(http_client_bad_body_SOURCES) \
+ $(http_client_bad_url_SOURCES) \
+ http-client-close-after-request.c http-server-bad-body.c \
+ http-server-bad-headers.c $(http_server_charset_SOURCES) \
+ $(http_server_chunked_SOURCES) http-server-close-immediately.c \
+ $(json_SOURCES) $(mkdirs_SOURCES) \
+ $(recursive_dir_list_SOURCES) $(streams_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage/missing --run aclocal-1.10
+AMTAR = ${SHELL} /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage/missing --run tar
+AUTOCONF = ${SHELL} /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage/missing --run autoconf
+AUTOHEADER = ${SHELL} /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage/missing --run autoheader
+AUTOMAKE = ${SHELL} /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage/missing --run automake-1.10
+AWK = gawk
+CC = gcc -std=gnu99
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -std=gnu99 -E
+CPPFLAGS =
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = /bin/grep -E
+EXEEXT =
+EXTRA_SOCKET_LIBS =
+EXTRA_THREAD_LIBS = -lpthread
+EXTRA_TIMER_LIBS =
+GREP = /bin/grep
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS =
+LIBICONV =
+LIBOBJS =
+LIBS =
+LTLIBICONV =
+LTLIBOBJS =
+MAKEINFO = ${SHELL} /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+PACKAGE = jscoverage
+PACKAGE_BUGREPORT =
+PACKAGE_NAME = jscoverage
+PACKAGE_STRING = jscoverage 0.4
+PACKAGE_TARNAME = jscoverage
+PACKAGE_VERSION = 0.4
+PATH_SEPARATOR = :
+SET_MAKE =
+SHELL = /bin/sh
+STRIP =
+VERSION = 0.4
+XP_DEF = -DXP_UNIX
+abs_builddir = /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage/tests
+abs_srcdir = /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage/tests
+abs_top_builddir = /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage
+abs_top_srcdir = /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias =
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias =
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = $(SHELL) /scratch/oe/oe-admin/tools/node_modules/expresso/deps/jscoverage/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias =
+top_builddir = ..
+top_srcdir = ..
+AM_CFLAGS = -DXP_UNIX -I../js -I../js/obj
+AM_CXXFLAGS = -DXP_UNIX -I../js -I../js/obj
+asprintf_SOURCES = asprintf.c ../util.c
+encodings_SOURCES = encodings.c ../encoding.c ../util.c
+encodings_LDADD =
+gethostbyname_SOURCES = gethostbyname.c ../http-host.c ../util.c
+gethostbyname_LDADD =
+http_client_bad_body_SOURCES = http-client-bad-body.c ../http-url.c ../util.c
+http_client_bad_body_LDADD =
+http_client_bad_url_SOURCES = http-client-bad-url.c ../util.c
+http_client_bad_url_LDADD =
+http_client_close_after_request_LDADD =
+http_server_bad_body_LDADD =
+http_server_bad_headers_LDADD =
+http_server_charset_SOURCES = http-server-charset.c ../stream.c ../util.c
+http_server_charset_LDADD =
+http_server_chunked_SOURCES = http-server-chunked.c ../stream.c ../util.c
+http_server_chunked_LDADD =
+http_server_close_immediately_LDADD =
+json_SOURCES = json.c ../encoding.c ../highlight.c ../instrument-js.cpp ../resource-manager.c ../stream.c ../util.c
+json_LDADD = ../js/obj/libjs.a -lm
+mkdirs_SOURCES = mkdirs.c ../util.c
+recursive_dir_list_SOURCES = recursive-dir-list.c ../util.c
+streams_SOURCES = streams.c ../stream.c ../util.c
+TESTS = encodings.sh \
+ fatal.sh \
+ help.sh \
+ invalid-option.sh \
+ javascript.sh \
+ javascript-ignore.sh \
+ javascript-utf-8.sh \
+ no-arguments.sh \
+ recursive.sh \
+ recursive-crlf.sh \
+ recursive-exclude.sh \
+ recursive-fatal.sh \
+ recursive-no-instrument.sh \
+ same-directory.sh \
+ version.sh \
+ asprintf.sh \
+ mkdirs.sh \
+ recursive-dir-list.sh \
+ streams.sh \
+ charset.sh \
+ chunked.sh \
+ gethostbyname.sh \
+ json.sh \
+ proxy.sh \
+ proxy-bad-request-body.sh \
+ proxy-bad-response-body.sh \
+ proxy-bad-response-body-javascript.sh \
+ proxy-bad-response-headers.sh \
+ proxy-no-server.sh \
+ proxy-url.sh \
+ server.sh \
+ server-bad-requests.sh \
+ server-close-after-request.sh \
+ server-content-types.sh \
+ server-directory-listing.sh \
+ server-directory-redirect.sh \
+ server-encoded-url.sh \
+ server-error.sh \
+ server-help.sh \
+ server-ip-address.sh \
+ server-shutdown.sh \
+ server-shutdown-bad-method.sh \
+ server-special-file.sh \
+ server-unreadable-directory.sh \
+ server-unreadable-file.sh \
+ server-verbose.sh \
+ server-version.sh \
+ store.sh \
+ store-bad-json.sh \
+ store-bad-request-body.sh \
+ store-bad-response-headers.sh \
+ store-escaped-characters.sh \
+ store-server-bad-body.sh \
+ store-server-closes-immediately.sh \
+ store-source-not-found.sh \
+ store-unreadable-json.sh \
+ store-unwritable-json.sh
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+asprintf$(EXEEXT): $(asprintf_OBJECTS) $(asprintf_DEPENDENCIES)
+ @rm -f asprintf$(EXEEXT)
+ $(LINK) $(asprintf_OBJECTS) $(asprintf_LDADD) $(LIBS)
+encodings$(EXEEXT): $(encodings_OBJECTS) $(encodings_DEPENDENCIES)
+ @rm -f encodings$(EXEEXT)
+ $(LINK) $(encodings_OBJECTS) $(encodings_LDADD) $(LIBS)
+gethostbyname$(EXEEXT): $(gethostbyname_OBJECTS) $(gethostbyname_DEPENDENCIES)
+ @rm -f gethostbyname$(EXEEXT)
+ $(LINK) $(gethostbyname_OBJECTS) $(gethostbyname_LDADD) $(LIBS)
+http-client-bad-body$(EXEEXT): $(http_client_bad_body_OBJECTS) $(http_client_bad_body_DEPENDENCIES)
+ @rm -f http-client-bad-body$(EXEEXT)
+ $(LINK) $(http_client_bad_body_OBJECTS) $(http_client_bad_body_LDADD) $(LIBS)
+http-client-bad-url$(EXEEXT): $(http_client_bad_url_OBJECTS) $(http_client_bad_url_DEPENDENCIES)
+ @rm -f http-client-bad-url$(EXEEXT)
+ $(LINK) $(http_client_bad_url_OBJECTS) $(http_client_bad_url_LDADD) $(LIBS)
+http-client-close-after-request$(EXEEXT): $(http_client_close_after_request_OBJECTS) $(http_client_close_after_request_DEPENDENCIES)
+ @rm -f http-client-close-after-request$(EXEEXT)
+ $(LINK) $(http_client_close_after_request_OBJECTS) $(http_client_close_after_request_LDADD) $(LIBS)
+http-server-bad-body$(EXEEXT): $(http_server_bad_body_OBJECTS) $(http_server_bad_body_DEPENDENCIES)
+ @rm -f http-server-bad-body$(EXEEXT)
+ $(LINK) $(http_server_bad_body_OBJECTS) $(http_server_bad_body_LDADD) $(LIBS)
+http-server-bad-headers$(EXEEXT): $(http_server_bad_headers_OBJECTS) $(http_server_bad_headers_DEPENDENCIES)
+ @rm -f http-server-bad-headers$(EXEEXT)
+ $(LINK) $(http_server_bad_headers_OBJECTS) $(http_server_bad_headers_LDADD) $(LIBS)
+http-server-charset$(EXEEXT): $(http_server_charset_OBJECTS) $(http_server_charset_DEPENDENCIES)
+ @rm -f http-server-charset$(EXEEXT)
+ $(LINK) $(http_server_charset_OBJECTS) $(http_server_charset_LDADD) $(LIBS)
+http-server-chunked$(EXEEXT): $(http_server_chunked_OBJECTS) $(http_server_chunked_DEPENDENCIES)
+ @rm -f http-server-chunked$(EXEEXT)
+ $(LINK) $(http_server_chunked_OBJECTS) $(http_server_chunked_LDADD) $(LIBS)
+http-server-close-immediately$(EXEEXT): $(http_server_close_immediately_OBJECTS) $(http_server_close_immediately_DEPENDENCIES)
+ @rm -f http-server-close-immediately$(EXEEXT)
+ $(LINK) $(http_server_close_immediately_OBJECTS) $(http_server_close_immediately_LDADD) $(LIBS)
+json$(EXEEXT): $(json_OBJECTS) $(json_DEPENDENCIES)
+ @rm -f json$(EXEEXT)
+ $(CXXLINK) $(json_OBJECTS) $(json_LDADD) $(LIBS)
+mkdirs$(EXEEXT): $(mkdirs_OBJECTS) $(mkdirs_DEPENDENCIES)
+ @rm -f mkdirs$(EXEEXT)
+ $(LINK) $(mkdirs_OBJECTS) $(mkdirs_LDADD) $(LIBS)
+recursive-dir-list$(EXEEXT): $(recursive_dir_list_OBJECTS) $(recursive_dir_list_DEPENDENCIES)
+ @rm -f recursive-dir-list$(EXEEXT)
+ $(LINK) $(recursive_dir_list_OBJECTS) $(recursive_dir_list_LDADD) $(LIBS)
+streams$(EXEEXT): $(streams_OBJECTS) $(streams_DEPENDENCIES)
+ @rm -f streams$(EXEEXT)
+ $(LINK) $(streams_OBJECTS) $(streams_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/asprintf.Po
+include ./$(DEPDIR)/encoding.Po
+include ./$(DEPDIR)/encodings.Po
+include ./$(DEPDIR)/gethostbyname.Po
+include ./$(DEPDIR)/highlight.Po
+include ./$(DEPDIR)/http-client-bad-body.Po
+include ./$(DEPDIR)/http-client-bad-url.Po
+include ./$(DEPDIR)/http-client-close-after-request.Po
+include ./$(DEPDIR)/http-host.Po
+include ./$(DEPDIR)/http-server-bad-body.Po
+include ./$(DEPDIR)/http-server-bad-headers.Po
+include ./$(DEPDIR)/http-server-charset.Po
+include ./$(DEPDIR)/http-server-chunked.Po
+include ./$(DEPDIR)/http-server-close-immediately.Po
+include ./$(DEPDIR)/http-url.Po
+include ./$(DEPDIR)/instrument-js.Po
+include ./$(DEPDIR)/json.Po
+include ./$(DEPDIR)/mkdirs.Po
+include ./$(DEPDIR)/recursive-dir-list.Po
+include ./$(DEPDIR)/resource-manager.Po
+include ./$(DEPDIR)/stream.Po
+include ./$(DEPDIR)/streams.Po
+include ./$(DEPDIR)/util.Po
+
+.c.o:
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(COMPILE) -c $<
+
+.c.obj:
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+util.o: ../util.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT util.o -MD -MP -MF $(DEPDIR)/util.Tpo -c -o util.o `test -f '../util.c' || echo '$(srcdir)/'`../util.c
+ mv -f $(DEPDIR)/util.Tpo $(DEPDIR)/util.Po
+# source='../util.c' object='util.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o util.o `test -f '../util.c' || echo '$(srcdir)/'`../util.c
+
+util.obj: ../util.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT util.obj -MD -MP -MF $(DEPDIR)/util.Tpo -c -o util.obj `if test -f '../util.c'; then $(CYGPATH_W) '../util.c'; else $(CYGPATH_W) '$(srcdir)/../util.c'; fi`
+ mv -f $(DEPDIR)/util.Tpo $(DEPDIR)/util.Po
+# source='../util.c' object='util.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o util.obj `if test -f '../util.c'; then $(CYGPATH_W) '../util.c'; else $(CYGPATH_W) '$(srcdir)/../util.c'; fi`
+
+encoding.o: ../encoding.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT encoding.o -MD -MP -MF $(DEPDIR)/encoding.Tpo -c -o encoding.o `test -f '../encoding.c' || echo '$(srcdir)/'`../encoding.c
+ mv -f $(DEPDIR)/encoding.Tpo $(DEPDIR)/encoding.Po
+# source='../encoding.c' object='encoding.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o encoding.o `test -f '../encoding.c' || echo '$(srcdir)/'`../encoding.c
+
+encoding.obj: ../encoding.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT encoding.obj -MD -MP -MF $(DEPDIR)/encoding.Tpo -c -o encoding.obj `if test -f '../encoding.c'; then $(CYGPATH_W) '../encoding.c'; else $(CYGPATH_W) '$(srcdir)/../encoding.c'; fi`
+ mv -f $(DEPDIR)/encoding.Tpo $(DEPDIR)/encoding.Po
+# source='../encoding.c' object='encoding.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o encoding.obj `if test -f '../encoding.c'; then $(CYGPATH_W) '../encoding.c'; else $(CYGPATH_W) '$(srcdir)/../encoding.c'; fi`
+
+http-host.o: ../http-host.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT http-host.o -MD -MP -MF $(DEPDIR)/http-host.Tpo -c -o http-host.o `test -f '../http-host.c' || echo '$(srcdir)/'`../http-host.c
+ mv -f $(DEPDIR)/http-host.Tpo $(DEPDIR)/http-host.Po
+# source='../http-host.c' object='http-host.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o http-host.o `test -f '../http-host.c' || echo '$(srcdir)/'`../http-host.c
+
+http-host.obj: ../http-host.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT http-host.obj -MD -MP -MF $(DEPDIR)/http-host.Tpo -c -o http-host.obj `if test -f '../http-host.c'; then $(CYGPATH_W) '../http-host.c'; else $(CYGPATH_W) '$(srcdir)/../http-host.c'; fi`
+ mv -f $(DEPDIR)/http-host.Tpo $(DEPDIR)/http-host.Po
+# source='../http-host.c' object='http-host.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o http-host.obj `if test -f '../http-host.c'; then $(CYGPATH_W) '../http-host.c'; else $(CYGPATH_W) '$(srcdir)/../http-host.c'; fi`
+
+http-url.o: ../http-url.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT http-url.o -MD -MP -MF $(DEPDIR)/http-url.Tpo -c -o http-url.o `test -f '../http-url.c' || echo '$(srcdir)/'`../http-url.c
+ mv -f $(DEPDIR)/http-url.Tpo $(DEPDIR)/http-url.Po
+# source='../http-url.c' object='http-url.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o http-url.o `test -f '../http-url.c' || echo '$(srcdir)/'`../http-url.c
+
+http-url.obj: ../http-url.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT http-url.obj -MD -MP -MF $(DEPDIR)/http-url.Tpo -c -o http-url.obj `if test -f '../http-url.c'; then $(CYGPATH_W) '../http-url.c'; else $(CYGPATH_W) '$(srcdir)/../http-url.c'; fi`
+ mv -f $(DEPDIR)/http-url.Tpo $(DEPDIR)/http-url.Po
+# source='../http-url.c' object='http-url.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o http-url.obj `if test -f '../http-url.c'; then $(CYGPATH_W) '../http-url.c'; else $(CYGPATH_W) '$(srcdir)/../http-url.c'; fi`
+
+stream.o: ../stream.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stream.o -MD -MP -MF $(DEPDIR)/stream.Tpo -c -o stream.o `test -f '../stream.c' || echo '$(srcdir)/'`../stream.c
+ mv -f $(DEPDIR)/stream.Tpo $(DEPDIR)/stream.Po
+# source='../stream.c' object='stream.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stream.o `test -f '../stream.c' || echo '$(srcdir)/'`../stream.c
+
+stream.obj: ../stream.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stream.obj -MD -MP -MF $(DEPDIR)/stream.Tpo -c -o stream.obj `if test -f '../stream.c'; then $(CYGPATH_W) '../stream.c'; else $(CYGPATH_W) '$(srcdir)/../stream.c'; fi`
+ mv -f $(DEPDIR)/stream.Tpo $(DEPDIR)/stream.Po
+# source='../stream.c' object='stream.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stream.obj `if test -f '../stream.c'; then $(CYGPATH_W) '../stream.c'; else $(CYGPATH_W) '$(srcdir)/../stream.c'; fi`
+
+highlight.o: ../highlight.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT highlight.o -MD -MP -MF $(DEPDIR)/highlight.Tpo -c -o highlight.o `test -f '../highlight.c' || echo '$(srcdir)/'`../highlight.c
+ mv -f $(DEPDIR)/highlight.Tpo $(DEPDIR)/highlight.Po
+# source='../highlight.c' object='highlight.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o highlight.o `test -f '../highlight.c' || echo '$(srcdir)/'`../highlight.c
+
+highlight.obj: ../highlight.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT highlight.obj -MD -MP -MF $(DEPDIR)/highlight.Tpo -c -o highlight.obj `if test -f '../highlight.c'; then $(CYGPATH_W) '../highlight.c'; else $(CYGPATH_W) '$(srcdir)/../highlight.c'; fi`
+ mv -f $(DEPDIR)/highlight.Tpo $(DEPDIR)/highlight.Po
+# source='../highlight.c' object='highlight.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o highlight.obj `if test -f '../highlight.c'; then $(CYGPATH_W) '../highlight.c'; else $(CYGPATH_W) '$(srcdir)/../highlight.c'; fi`
+
+resource-manager.o: ../resource-manager.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT resource-manager.o -MD -MP -MF $(DEPDIR)/resource-manager.Tpo -c -o resource-manager.o `test -f '../resource-manager.c' || echo '$(srcdir)/'`../resource-manager.c
+ mv -f $(DEPDIR)/resource-manager.Tpo $(DEPDIR)/resource-manager.Po
+# source='../resource-manager.c' object='resource-manager.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o resource-manager.o `test -f '../resource-manager.c' || echo '$(srcdir)/'`../resource-manager.c
+
+resource-manager.obj: ../resource-manager.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT resource-manager.obj -MD -MP -MF $(DEPDIR)/resource-manager.Tpo -c -o resource-manager.obj `if test -f '../resource-manager.c'; then $(CYGPATH_W) '../resource-manager.c'; else $(CYGPATH_W) '$(srcdir)/../resource-manager.c'; fi`
+ mv -f $(DEPDIR)/resource-manager.Tpo $(DEPDIR)/resource-manager.Po
+# source='../resource-manager.c' object='resource-manager.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o resource-manager.obj `if test -f '../resource-manager.c'; then $(CYGPATH_W) '../resource-manager.c'; else $(CYGPATH_W) '$(srcdir)/../resource-manager.c'; fi`
+
+.cpp.o:
+ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+instrument-js.o: ../instrument-js.cpp
+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT instrument-js.o -MD -MP -MF $(DEPDIR)/instrument-js.Tpo -c -o instrument-js.o `test -f '../instrument-js.cpp' || echo '$(srcdir)/'`../instrument-js.cpp
+ mv -f $(DEPDIR)/instrument-js.Tpo $(DEPDIR)/instrument-js.Po
+# source='../instrument-js.cpp' object='instrument-js.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o instrument-js.o `test -f '../instrument-js.cpp' || echo '$(srcdir)/'`../instrument-js.cpp
+
+instrument-js.obj: ../instrument-js.cpp
+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT instrument-js.obj -MD -MP -MF $(DEPDIR)/instrument-js.Tpo -c -o instrument-js.obj `if test -f '../instrument-js.cpp'; then $(CYGPATH_W) '../instrument-js.cpp'; else $(CYGPATH_W) '$(srcdir)/../instrument-js.cpp'; fi`
+ mv -f $(DEPDIR)/instrument-js.Tpo $(DEPDIR)/instrument-js.Po
+# source='../instrument-js.cpp' object='instrument-js.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o instrument-js.obj `if test -f '../instrument-js.cpp'; then $(CYGPATH_W) '../instrument-js.cpp'; else $(CYGPATH_W) '$(srcdir)/../instrument-js.cpp'; fi`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-generic clean-noinstPROGRAMS ctags distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/Makefile.am b/tools/node_modules/expresso/deps/jscoverage/tests/Makefile.am
new file mode 100644
index 0000000..c58d2a3
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/Makefile.am
@@ -0,0 +1,130 @@
+# Makefile.am - build tests
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+noinst_PROGRAMS = asprintf \
+ encodings \
+ gethostbyname \
+ http-client-bad-body \
+ http-client-bad-url \
+ http-client-close-after-request \
+ http-server-bad-body \
+ http-server-bad-headers \
+ http-server-charset \
+ http-server-chunked \
+ http-server-close-immediately \
+ json \
+ mkdirs \
+ recursive-dir-list \
+ streams
+
+AM_CFLAGS = @XP_DEF@ -I../js -I../js/obj
+AM_CXXFLAGS = @XP_DEF@ -I../js -I../js/obj
+
+asprintf_SOURCES = asprintf.c ../util.c
+
+encodings_SOURCES = encodings.c ../encoding.c ../util.c
+encodings_LDADD = @LIBICONV@
+
+gethostbyname_SOURCES = gethostbyname.c ../http-host.c ../util.c
+gethostbyname_LDADD = @EXTRA_SOCKET_LIBS@
+
+http_client_bad_body_SOURCES = http-client-bad-body.c ../http-url.c ../util.c
+http_client_bad_body_LDADD = @EXTRA_SOCKET_LIBS@
+
+http_client_bad_url_SOURCES = http-client-bad-url.c ../util.c
+http_client_bad_url_LDADD = @EXTRA_SOCKET_LIBS@
+
+http_client_close_after_request_LDADD = @EXTRA_SOCKET_LIBS@
+
+http_server_bad_body_LDADD = @EXTRA_SOCKET_LIBS@
+
+http_server_bad_headers_LDADD = @EXTRA_SOCKET_LIBS@
+
+http_server_charset_SOURCES = http-server-charset.c ../stream.c ../util.c
+http_server_charset_LDADD = @EXTRA_SOCKET_LIBS@
+
+http_server_chunked_SOURCES = http-server-chunked.c ../stream.c ../util.c
+http_server_chunked_LDADD = @EXTRA_SOCKET_LIBS@
+
+http_server_close_immediately_LDADD = @EXTRA_SOCKET_LIBS@
+
+json_SOURCES = json.c ../encoding.c ../highlight.c ../instrument-js.cpp ../resource-manager.c ../stream.c ../util.c
+json_LDADD = ../js/obj/libjs.a -lm @LIBICONV@ @EXTRA_TIMER_LIBS@
+
+mkdirs_SOURCES = mkdirs.c ../util.c
+
+recursive_dir_list_SOURCES = recursive-dir-list.c ../util.c
+
+streams_SOURCES = streams.c ../stream.c ../util.c
+
+TESTS = encodings.sh \
+ fatal.sh \
+ help.sh \
+ invalid-option.sh \
+ javascript.sh \
+ javascript-ignore.sh \
+ javascript-utf-8.sh \
+ no-arguments.sh \
+ recursive.sh \
+ recursive-crlf.sh \
+ recursive-exclude.sh \
+ recursive-fatal.sh \
+ recursive-no-instrument.sh \
+ same-directory.sh \
+ version.sh \
+ asprintf.sh \
+ mkdirs.sh \
+ recursive-dir-list.sh \
+ streams.sh \
+ charset.sh \
+ chunked.sh \
+ gethostbyname.sh \
+ json.sh \
+ proxy.sh \
+ proxy-bad-request-body.sh \
+ proxy-bad-response-body.sh \
+ proxy-bad-response-body-javascript.sh \
+ proxy-bad-response-headers.sh \
+ proxy-no-server.sh \
+ proxy-url.sh \
+ server.sh \
+ server-bad-requests.sh \
+ server-close-after-request.sh \
+ server-content-types.sh \
+ server-directory-listing.sh \
+ server-directory-redirect.sh \
+ server-encoded-url.sh \
+ server-error.sh \
+ server-help.sh \
+ server-ip-address.sh \
+ server-shutdown.sh \
+ server-shutdown-bad-method.sh \
+ server-special-file.sh \
+ server-unreadable-directory.sh \
+ server-unreadable-file.sh \
+ server-verbose.sh \
+ server-version.sh \
+ store.sh \
+ store-bad-json.sh \
+ store-bad-request-body.sh \
+ store-bad-response-headers.sh \
+ store-escaped-characters.sh \
+ store-server-bad-body.sh \
+ store-server-closes-immediately.sh \
+ store-source-not-found.sh \
+ store-unreadable-json.sh \
+ store-unwritable-json.sh
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/Makefile.in b/tools/node_modules/expresso/deps/jscoverage/tests/Makefile.in
new file mode 100644
index 0000000..bbe0402
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/Makefile.in
@@ -0,0 +1,846 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile.am - build tests
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+noinst_PROGRAMS = asprintf$(EXEEXT) encodings$(EXEEXT) \
+ gethostbyname$(EXEEXT) http-client-bad-body$(EXEEXT) \
+ http-client-bad-url$(EXEEXT) \
+ http-client-close-after-request$(EXEEXT) \
+ http-server-bad-body$(EXEEXT) http-server-bad-headers$(EXEEXT) \
+ http-server-charset$(EXEEXT) http-server-chunked$(EXEEXT) \
+ http-server-close-immediately$(EXEEXT) json$(EXEEXT) \
+ mkdirs$(EXEEXT) recursive-dir-list$(EXEEXT) streams$(EXEEXT)
+subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_asprintf_OBJECTS = asprintf.$(OBJEXT) util.$(OBJEXT)
+asprintf_OBJECTS = $(am_asprintf_OBJECTS)
+asprintf_LDADD = $(LDADD)
+am_encodings_OBJECTS = encodings.$(OBJEXT) encoding.$(OBJEXT) \
+ util.$(OBJEXT)
+encodings_OBJECTS = $(am_encodings_OBJECTS)
+encodings_DEPENDENCIES =
+am_gethostbyname_OBJECTS = gethostbyname.$(OBJEXT) http-host.$(OBJEXT) \
+ util.$(OBJEXT)
+gethostbyname_OBJECTS = $(am_gethostbyname_OBJECTS)
+gethostbyname_DEPENDENCIES =
+am_http_client_bad_body_OBJECTS = http-client-bad-body.$(OBJEXT) \
+ http-url.$(OBJEXT) util.$(OBJEXT)
+http_client_bad_body_OBJECTS = $(am_http_client_bad_body_OBJECTS)
+http_client_bad_body_DEPENDENCIES =
+am_http_client_bad_url_OBJECTS = http-client-bad-url.$(OBJEXT) \
+ util.$(OBJEXT)
+http_client_bad_url_OBJECTS = $(am_http_client_bad_url_OBJECTS)
+http_client_bad_url_DEPENDENCIES =
+http_client_close_after_request_SOURCES = \
+ http-client-close-after-request.c
+http_client_close_after_request_OBJECTS = \
+ http-client-close-after-request.$(OBJEXT)
+http_client_close_after_request_DEPENDENCIES =
+http_server_bad_body_SOURCES = http-server-bad-body.c
+http_server_bad_body_OBJECTS = http-server-bad-body.$(OBJEXT)
+http_server_bad_body_DEPENDENCIES =
+http_server_bad_headers_SOURCES = http-server-bad-headers.c
+http_server_bad_headers_OBJECTS = http-server-bad-headers.$(OBJEXT)
+http_server_bad_headers_DEPENDENCIES =
+am_http_server_charset_OBJECTS = http-server-charset.$(OBJEXT) \
+ stream.$(OBJEXT) util.$(OBJEXT)
+http_server_charset_OBJECTS = $(am_http_server_charset_OBJECTS)
+http_server_charset_DEPENDENCIES =
+am_http_server_chunked_OBJECTS = http-server-chunked.$(OBJEXT) \
+ stream.$(OBJEXT) util.$(OBJEXT)
+http_server_chunked_OBJECTS = $(am_http_server_chunked_OBJECTS)
+http_server_chunked_DEPENDENCIES =
+http_server_close_immediately_SOURCES = \
+ http-server-close-immediately.c
+http_server_close_immediately_OBJECTS = \
+ http-server-close-immediately.$(OBJEXT)
+http_server_close_immediately_DEPENDENCIES =
+am_json_OBJECTS = json.$(OBJEXT) encoding.$(OBJEXT) \
+ highlight.$(OBJEXT) instrument-js.$(OBJEXT) \
+ resource-manager.$(OBJEXT) stream.$(OBJEXT) util.$(OBJEXT)
+json_OBJECTS = $(am_json_OBJECTS)
+json_DEPENDENCIES = ../js/obj/libjs.a
+am_mkdirs_OBJECTS = mkdirs.$(OBJEXT) util.$(OBJEXT)
+mkdirs_OBJECTS = $(am_mkdirs_OBJECTS)
+mkdirs_LDADD = $(LDADD)
+am_recursive_dir_list_OBJECTS = recursive-dir-list.$(OBJEXT) \
+ util.$(OBJEXT)
+recursive_dir_list_OBJECTS = $(am_recursive_dir_list_OBJECTS)
+recursive_dir_list_LDADD = $(LDADD)
+am_streams_OBJECTS = streams.$(OBJEXT) stream.$(OBJEXT) util.$(OBJEXT)
+streams_OBJECTS = $(am_streams_OBJECTS)
+streams_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+SOURCES = $(asprintf_SOURCES) $(encodings_SOURCES) \
+ $(gethostbyname_SOURCES) $(http_client_bad_body_SOURCES) \
+ $(http_client_bad_url_SOURCES) \
+ http-client-close-after-request.c http-server-bad-body.c \
+ http-server-bad-headers.c $(http_server_charset_SOURCES) \
+ $(http_server_chunked_SOURCES) http-server-close-immediately.c \
+ $(json_SOURCES) $(mkdirs_SOURCES) \
+ $(recursive_dir_list_SOURCES) $(streams_SOURCES)
+DIST_SOURCES = $(asprintf_SOURCES) $(encodings_SOURCES) \
+ $(gethostbyname_SOURCES) $(http_client_bad_body_SOURCES) \
+ $(http_client_bad_url_SOURCES) \
+ http-client-close-after-request.c http-server-bad-body.c \
+ http-server-bad-headers.c $(http_server_charset_SOURCES) \
+ $(http_server_chunked_SOURCES) http-server-close-immediately.c \
+ $(json_SOURCES) $(mkdirs_SOURCES) \
+ $(recursive_dir_list_SOURCES) $(streams_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_SOCKET_LIBS = @EXTRA_SOCKET_LIBS@
+EXTRA_THREAD_LIBS = @EXTRA_THREAD_LIBS@
+EXTRA_TIMER_LIBS = @EXTRA_TIMER_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XP_DEF = @XP_DEF@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = @XP_DEF@ -I../js -I../js/obj
+AM_CXXFLAGS = @XP_DEF@ -I../js -I../js/obj
+asprintf_SOURCES = asprintf.c ../util.c
+encodings_SOURCES = encodings.c ../encoding.c ../util.c
+encodings_LDADD = @LIBICONV@
+gethostbyname_SOURCES = gethostbyname.c ../http-host.c ../util.c
+gethostbyname_LDADD = @EXTRA_SOCKET_LIBS@
+http_client_bad_body_SOURCES = http-client-bad-body.c ../http-url.c ../util.c
+http_client_bad_body_LDADD = @EXTRA_SOCKET_LIBS@
+http_client_bad_url_SOURCES = http-client-bad-url.c ../util.c
+http_client_bad_url_LDADD = @EXTRA_SOCKET_LIBS@
+http_client_close_after_request_LDADD = @EXTRA_SOCKET_LIBS@
+http_server_bad_body_LDADD = @EXTRA_SOCKET_LIBS@
+http_server_bad_headers_LDADD = @EXTRA_SOCKET_LIBS@
+http_server_charset_SOURCES = http-server-charset.c ../stream.c ../util.c
+http_server_charset_LDADD = @EXTRA_SOCKET_LIBS@
+http_server_chunked_SOURCES = http-server-chunked.c ../stream.c ../util.c
+http_server_chunked_LDADD = @EXTRA_SOCKET_LIBS@
+http_server_close_immediately_LDADD = @EXTRA_SOCKET_LIBS@
+json_SOURCES = json.c ../encoding.c ../highlight.c ../instrument-js.cpp ../resource-manager.c ../stream.c ../util.c
+json_LDADD = ../js/obj/libjs.a -lm @LIBICONV@ @EXTRA_TIMER_LIBS@
+mkdirs_SOURCES = mkdirs.c ../util.c
+recursive_dir_list_SOURCES = recursive-dir-list.c ../util.c
+streams_SOURCES = streams.c ../stream.c ../util.c
+TESTS = encodings.sh \
+ fatal.sh \
+ help.sh \
+ invalid-option.sh \
+ javascript.sh \
+ javascript-ignore.sh \
+ javascript-utf-8.sh \
+ no-arguments.sh \
+ recursive.sh \
+ recursive-crlf.sh \
+ recursive-exclude.sh \
+ recursive-fatal.sh \
+ recursive-no-instrument.sh \
+ same-directory.sh \
+ version.sh \
+ asprintf.sh \
+ mkdirs.sh \
+ recursive-dir-list.sh \
+ streams.sh \
+ charset.sh \
+ chunked.sh \
+ gethostbyname.sh \
+ json.sh \
+ proxy.sh \
+ proxy-bad-request-body.sh \
+ proxy-bad-response-body.sh \
+ proxy-bad-response-body-javascript.sh \
+ proxy-bad-response-headers.sh \
+ proxy-no-server.sh \
+ proxy-url.sh \
+ server.sh \
+ server-bad-requests.sh \
+ server-close-after-request.sh \
+ server-content-types.sh \
+ server-directory-listing.sh \
+ server-directory-redirect.sh \
+ server-encoded-url.sh \
+ server-error.sh \
+ server-help.sh \
+ server-ip-address.sh \
+ server-shutdown.sh \
+ server-shutdown-bad-method.sh \
+ server-special-file.sh \
+ server-unreadable-directory.sh \
+ server-unreadable-file.sh \
+ server-verbose.sh \
+ server-version.sh \
+ store.sh \
+ store-bad-json.sh \
+ store-bad-request-body.sh \
+ store-bad-response-headers.sh \
+ store-escaped-characters.sh \
+ store-server-bad-body.sh \
+ store-server-closes-immediately.sh \
+ store-source-not-found.sh \
+ store-unreadable-json.sh \
+ store-unwritable-json.sh
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+asprintf$(EXEEXT): $(asprintf_OBJECTS) $(asprintf_DEPENDENCIES)
+ @rm -f asprintf$(EXEEXT)
+ $(LINK) $(asprintf_OBJECTS) $(asprintf_LDADD) $(LIBS)
+encodings$(EXEEXT): $(encodings_OBJECTS) $(encodings_DEPENDENCIES)
+ @rm -f encodings$(EXEEXT)
+ $(LINK) $(encodings_OBJECTS) $(encodings_LDADD) $(LIBS)
+gethostbyname$(EXEEXT): $(gethostbyname_OBJECTS) $(gethostbyname_DEPENDENCIES)
+ @rm -f gethostbyname$(EXEEXT)
+ $(LINK) $(gethostbyname_OBJECTS) $(gethostbyname_LDADD) $(LIBS)
+http-client-bad-body$(EXEEXT): $(http_client_bad_body_OBJECTS) $(http_client_bad_body_DEPENDENCIES)
+ @rm -f http-client-bad-body$(EXEEXT)
+ $(LINK) $(http_client_bad_body_OBJECTS) $(http_client_bad_body_LDADD) $(LIBS)
+http-client-bad-url$(EXEEXT): $(http_client_bad_url_OBJECTS) $(http_client_bad_url_DEPENDENCIES)
+ @rm -f http-client-bad-url$(EXEEXT)
+ $(LINK) $(http_client_bad_url_OBJECTS) $(http_client_bad_url_LDADD) $(LIBS)
+http-client-close-after-request$(EXEEXT): $(http_client_close_after_request_OBJECTS) $(http_client_close_after_request_DEPENDENCIES)
+ @rm -f http-client-close-after-request$(EXEEXT)
+ $(LINK) $(http_client_close_after_request_OBJECTS) $(http_client_close_after_request_LDADD) $(LIBS)
+http-server-bad-body$(EXEEXT): $(http_server_bad_body_OBJECTS) $(http_server_bad_body_DEPENDENCIES)
+ @rm -f http-server-bad-body$(EXEEXT)
+ $(LINK) $(http_server_bad_body_OBJECTS) $(http_server_bad_body_LDADD) $(LIBS)
+http-server-bad-headers$(EXEEXT): $(http_server_bad_headers_OBJECTS) $(http_server_bad_headers_DEPENDENCIES)
+ @rm -f http-server-bad-headers$(EXEEXT)
+ $(LINK) $(http_server_bad_headers_OBJECTS) $(http_server_bad_headers_LDADD) $(LIBS)
+http-server-charset$(EXEEXT): $(http_server_charset_OBJECTS) $(http_server_charset_DEPENDENCIES)
+ @rm -f http-server-charset$(EXEEXT)
+ $(LINK) $(http_server_charset_OBJECTS) $(http_server_charset_LDADD) $(LIBS)
+http-server-chunked$(EXEEXT): $(http_server_chunked_OBJECTS) $(http_server_chunked_DEPENDENCIES)
+ @rm -f http-server-chunked$(EXEEXT)
+ $(LINK) $(http_server_chunked_OBJECTS) $(http_server_chunked_LDADD) $(LIBS)
+http-server-close-immediately$(EXEEXT): $(http_server_close_immediately_OBJECTS) $(http_server_close_immediately_DEPENDENCIES)
+ @rm -f http-server-close-immediately$(EXEEXT)
+ $(LINK) $(http_server_close_immediately_OBJECTS) $(http_server_close_immediately_LDADD) $(LIBS)
+json$(EXEEXT): $(json_OBJECTS) $(json_DEPENDENCIES)
+ @rm -f json$(EXEEXT)
+ $(CXXLINK) $(json_OBJECTS) $(json_LDADD) $(LIBS)
+mkdirs$(EXEEXT): $(mkdirs_OBJECTS) $(mkdirs_DEPENDENCIES)
+ @rm -f mkdirs$(EXEEXT)
+ $(LINK) $(mkdirs_OBJECTS) $(mkdirs_LDADD) $(LIBS)
+recursive-dir-list$(EXEEXT): $(recursive_dir_list_OBJECTS) $(recursive_dir_list_DEPENDENCIES)
+ @rm -f recursive-dir-list$(EXEEXT)
+ $(LINK) $(recursive_dir_list_OBJECTS) $(recursive_dir_list_LDADD) $(LIBS)
+streams$(EXEEXT): $(streams_OBJECTS) $(streams_DEPENDENCIES)
+ @rm -f streams$(EXEEXT)
+ $(LINK) $(streams_OBJECTS) $(streams_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoding.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encodings.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gethostbyname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/highlight.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-client-bad-body.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-client-bad-url.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-client-close-after-request.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-host.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-server-bad-body.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-server-bad-headers.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-server-charset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-server-chunked.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-server-close-immediately.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-url.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/instrument-js.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/json.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdirs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recursive-dir-list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resource-manager.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/streams.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+util.o: ../util.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT util.o -MD -MP -MF $(DEPDIR)/util.Tpo -c -o util.o `test -f '../util.c' || echo '$(srcdir)/'`../util.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/util.Tpo $(DEPDIR)/util.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../util.c' object='util.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o util.o `test -f '../util.c' || echo '$(srcdir)/'`../util.c
+
+util.obj: ../util.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT util.obj -MD -MP -MF $(DEPDIR)/util.Tpo -c -o util.obj `if test -f '../util.c'; then $(CYGPATH_W) '../util.c'; else $(CYGPATH_W) '$(srcdir)/../util.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/util.Tpo $(DEPDIR)/util.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../util.c' object='util.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o util.obj `if test -f '../util.c'; then $(CYGPATH_W) '../util.c'; else $(CYGPATH_W) '$(srcdir)/../util.c'; fi`
+
+encoding.o: ../encoding.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT encoding.o -MD -MP -MF $(DEPDIR)/encoding.Tpo -c -o encoding.o `test -f '../encoding.c' || echo '$(srcdir)/'`../encoding.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/encoding.Tpo $(DEPDIR)/encoding.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../encoding.c' object='encoding.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o encoding.o `test -f '../encoding.c' || echo '$(srcdir)/'`../encoding.c
+
+encoding.obj: ../encoding.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT encoding.obj -MD -MP -MF $(DEPDIR)/encoding.Tpo -c -o encoding.obj `if test -f '../encoding.c'; then $(CYGPATH_W) '../encoding.c'; else $(CYGPATH_W) '$(srcdir)/../encoding.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/encoding.Tpo $(DEPDIR)/encoding.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../encoding.c' object='encoding.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o encoding.obj `if test -f '../encoding.c'; then $(CYGPATH_W) '../encoding.c'; else $(CYGPATH_W) '$(srcdir)/../encoding.c'; fi`
+
+http-host.o: ../http-host.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT http-host.o -MD -MP -MF $(DEPDIR)/http-host.Tpo -c -o http-host.o `test -f '../http-host.c' || echo '$(srcdir)/'`../http-host.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/http-host.Tpo $(DEPDIR)/http-host.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../http-host.c' object='http-host.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o http-host.o `test -f '../http-host.c' || echo '$(srcdir)/'`../http-host.c
+
+http-host.obj: ../http-host.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT http-host.obj -MD -MP -MF $(DEPDIR)/http-host.Tpo -c -o http-host.obj `if test -f '../http-host.c'; then $(CYGPATH_W) '../http-host.c'; else $(CYGPATH_W) '$(srcdir)/../http-host.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/http-host.Tpo $(DEPDIR)/http-host.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../http-host.c' object='http-host.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o http-host.obj `if test -f '../http-host.c'; then $(CYGPATH_W) '../http-host.c'; else $(CYGPATH_W) '$(srcdir)/../http-host.c'; fi`
+
+http-url.o: ../http-url.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT http-url.o -MD -MP -MF $(DEPDIR)/http-url.Tpo -c -o http-url.o `test -f '../http-url.c' || echo '$(srcdir)/'`../http-url.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/http-url.Tpo $(DEPDIR)/http-url.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../http-url.c' object='http-url.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o http-url.o `test -f '../http-url.c' || echo '$(srcdir)/'`../http-url.c
+
+http-url.obj: ../http-url.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT http-url.obj -MD -MP -MF $(DEPDIR)/http-url.Tpo -c -o http-url.obj `if test -f '../http-url.c'; then $(CYGPATH_W) '../http-url.c'; else $(CYGPATH_W) '$(srcdir)/../http-url.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/http-url.Tpo $(DEPDIR)/http-url.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../http-url.c' object='http-url.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o http-url.obj `if test -f '../http-url.c'; then $(CYGPATH_W) '../http-url.c'; else $(CYGPATH_W) '$(srcdir)/../http-url.c'; fi`
+
+stream.o: ../stream.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stream.o -MD -MP -MF $(DEPDIR)/stream.Tpo -c -o stream.o `test -f '../stream.c' || echo '$(srcdir)/'`../stream.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/stream.Tpo $(DEPDIR)/stream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../stream.c' object='stream.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stream.o `test -f '../stream.c' || echo '$(srcdir)/'`../stream.c
+
+stream.obj: ../stream.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stream.obj -MD -MP -MF $(DEPDIR)/stream.Tpo -c -o stream.obj `if test -f '../stream.c'; then $(CYGPATH_W) '../stream.c'; else $(CYGPATH_W) '$(srcdir)/../stream.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/stream.Tpo $(DEPDIR)/stream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../stream.c' object='stream.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stream.obj `if test -f '../stream.c'; then $(CYGPATH_W) '../stream.c'; else $(CYGPATH_W) '$(srcdir)/../stream.c'; fi`
+
+highlight.o: ../highlight.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT highlight.o -MD -MP -MF $(DEPDIR)/highlight.Tpo -c -o highlight.o `test -f '../highlight.c' || echo '$(srcdir)/'`../highlight.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/highlight.Tpo $(DEPDIR)/highlight.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../highlight.c' object='highlight.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o highlight.o `test -f '../highlight.c' || echo '$(srcdir)/'`../highlight.c
+
+highlight.obj: ../highlight.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT highlight.obj -MD -MP -MF $(DEPDIR)/highlight.Tpo -c -o highlight.obj `if test -f '../highlight.c'; then $(CYGPATH_W) '../highlight.c'; else $(CYGPATH_W) '$(srcdir)/../highlight.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/highlight.Tpo $(DEPDIR)/highlight.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../highlight.c' object='highlight.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o highlight.obj `if test -f '../highlight.c'; then $(CYGPATH_W) '../highlight.c'; else $(CYGPATH_W) '$(srcdir)/../highlight.c'; fi`
+
+resource-manager.o: ../resource-manager.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT resource-manager.o -MD -MP -MF $(DEPDIR)/resource-manager.Tpo -c -o resource-manager.o `test -f '../resource-manager.c' || echo '$(srcdir)/'`../resource-manager.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/resource-manager.Tpo $(DEPDIR)/resource-manager.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../resource-manager.c' object='resource-manager.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o resource-manager.o `test -f '../resource-manager.c' || echo '$(srcdir)/'`../resource-manager.c
+
+resource-manager.obj: ../resource-manager.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT resource-manager.obj -MD -MP -MF $(DEPDIR)/resource-manager.Tpo -c -o resource-manager.obj `if test -f '../resource-manager.c'; then $(CYGPATH_W) '../resource-manager.c'; else $(CYGPATH_W) '$(srcdir)/../resource-manager.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/resource-manager.Tpo $(DEPDIR)/resource-manager.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../resource-manager.c' object='resource-manager.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o resource-manager.obj `if test -f '../resource-manager.c'; then $(CYGPATH_W) '../resource-manager.c'; else $(CYGPATH_W) '$(srcdir)/../resource-manager.c'; fi`
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+instrument-js.o: ../instrument-js.cpp
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT instrument-js.o -MD -MP -MF $(DEPDIR)/instrument-js.Tpo -c -o instrument-js.o `test -f '../instrument-js.cpp' || echo '$(srcdir)/'`../instrument-js.cpp
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/instrument-js.Tpo $(DEPDIR)/instrument-js.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../instrument-js.cpp' object='instrument-js.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o instrument-js.o `test -f '../instrument-js.cpp' || echo '$(srcdir)/'`../instrument-js.cpp
+
+instrument-js.obj: ../instrument-js.cpp
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT instrument-js.obj -MD -MP -MF $(DEPDIR)/instrument-js.Tpo -c -o instrument-js.obj `if test -f '../instrument-js.cpp'; then $(CYGPATH_W) '../instrument-js.cpp'; else $(CYGPATH_W) '$(srcdir)/../instrument-js.cpp'; fi`
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/instrument-js.Tpo $(DEPDIR)/instrument-js.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='../instrument-js.cpp' object='instrument-js.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o instrument-js.obj `if test -f '../instrument-js.cpp'; then $(CYGPATH_W) '../instrument-js.cpp'; else $(CYGPATH_W) '$(srcdir)/../instrument-js.cpp'; fi`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-generic clean-noinstPROGRAMS ctags distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/asprintf.c b/tools/node_modules/expresso/deps/jscoverage/tests/asprintf.c
new file mode 100644
index 0000000..7f8246b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/asprintf.c
@@ -0,0 +1,42 @@
+/*
+ asprintf.c - test `asprintf' function
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "util.h"
+
+int main(void) {
+ int result;
+ char * s;
+
+ result = asprintf(&s, "%s %d %c", "abc", 123, 'x');
+ assert(result == 9);
+ assert(strcmp("abc 123 x", s) == 0);
+ free(s);
+
+ char * long_string = "abcdefghijklmnopqrstuvwxyz";
+ result = asprintf(&s, "%s %s %s %s", long_string, long_string, long_string, long_string);
+ assert(result == 107);
+ assert(strcmp("abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz", s) == 0);
+ free(s);
+
+ exit(EXIT_SUCCESS);
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/asprintf.sh b/tools/node_modules/expresso/deps/jscoverage/tests/asprintf.sh
new file mode 100755
index 0000000..c7843e4
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/asprintf.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# asprintf.sh - test `asprintf' function
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+$VALGRIND ./asprintf
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/charset.sh b/tools/node_modules/expresso/deps/jscoverage/tests/charset.sh
new file mode 100755
index 0000000..9fb07eb
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/charset.sh
@@ -0,0 +1,110 @@
+#!/bin/sh
+# charset.sh - test jscoverage-server with different charset values
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${proxy_server_port}/jscoverage-shutdown" > /dev/null
+ wait $proxy_server_pid
+}
+
+cleanup() {
+ shutdown
+ kill -9 $origin_server_pid
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+if jscoverage-server --version | grep -q 'iconv\|MultiByteToWideChar'
+then
+ character_encoding_support=yes
+else
+ character_encoding_support=no
+fi
+
+$VALGRIND jscoverage-server --proxy --no-highlight > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+./http-server-charset &
+origin_server_pid=$!
+
+sleep $delay
+
+case "$character_encoding_support" in
+ yes)
+ cat ../report.js > EXPECTED
+ cat javascript-utf-8.expected/javascript-utf-8.js | sed 's/javascript-utf-8.js/http:\/\/127.0.0.1:8000\/utf-8.js/g' >> EXPECTED
+ curl -s -x 127.0.0.1:8080 http://127.0.0.1:8000/utf-8.js > ACTUAL
+ diff EXPECTED ACTUAL
+ ;;
+ *)
+ echo 500 > EXPECTED
+ ! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:8000/utf-8.js 2> /dev/null > ACTUAL
+ diff EXPECTED ACTUAL
+ ;;
+esac
+
+shutdown
+
+$VALGRIND jscoverage-server --proxy > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+sleep $delay
+
+case "$character_encoding_support" in
+ yes)
+ cat ../report.js > EXPECTED
+ cat javascript.expected/javascript-iso-8859-1.js | sed 's/javascript-iso-8859-1.js/http:\/\/127.0.0.1:8000\/iso-8859-1.js/g' >> EXPECTED
+ curl -s -x 127.0.0.1:8080 http://127.0.0.1:8000/iso-8859-1.js > ACTUAL
+ diff EXPECTED ACTUAL
+ ;;
+ *)
+ echo 500 > EXPECTED
+ ! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:8000/iso-8859-1.js 2> /dev/null > ACTUAL
+ diff EXPECTED ACTUAL
+ ;;
+esac
+
+# bogus charset
+echo 500 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:8000/bogus.js 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+
+# malformed encoding
+case "$character_encoding_support" in
+ yes)
+ status=502
+ ;;
+ *)
+ status=500
+ ;;
+esac
+echo $status > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:8000/malformed.js 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/chunked.sh b/tools/node_modules/expresso/deps/jscoverage/tests/chunked.sh
new file mode 100755
index 0000000..2986552
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/chunked.sh
@@ -0,0 +1,74 @@
+#!/bin/sh
+# chunked.sh - test jscoverage-server with Transfer-Encoding: chunked
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${proxy_server_port}/jscoverage-shutdown" > /dev/null
+ wait $proxy_server_pid
+}
+
+cleanup() {
+ shutdown
+ kill -9 $origin_server_pid
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+$VALGRIND jscoverage-server --proxy > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+./http-server-chunked &
+origin_server_pid=$!
+
+sleep $delay
+
+echo 'hello world' > EXPECTED
+curl -s -x 127.0.0.1:8080 http://127.0.0.1:8000/lower > ACTUAL
+diff EXPECTED ACTUAL
+
+echo 'HELLO WORLD' > EXPECTED
+curl -s -x 127.0.0.1:8080 http://127.0.0.1:8000/upper > ACTUAL
+diff EXPECTED ACTUAL
+
+# curl doesn't understand trailers ???
+# echo 'hello world' > EXPECTED
+# curl -s -x 127.0.0.1:8080 http://127.0.0.1:8000/trailer > ACTUAL
+# diff EXPECTED ACTUAL
+
+echo 200 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:8000/overflow 2> /dev/null > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
+
+echo 200 > EXPECTED
+! curl -f -w '%{http_code}\n' -o /dev/null -x 127.0.0.1:8080 http://127.0.0.1:8000/javascript 2> /dev/null > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
+
+echo 200 > EXPECTED
+! curl -f -w '%{http_code}\n' -o /dev/null -x 127.0.0.1:8080 http://127.0.0.1:8000/multiple 2> /dev/null > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/common.sh b/tools/node_modules/expresso/deps/jscoverage/tests/common.sh
new file mode 100644
index 0000000..e55b342
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/common.sh
@@ -0,0 +1,7 @@
+export PATH=.:..:../js/obj:$PATH
+
+json_cmp() {
+ echo 'EXPECTED = ' | cat - $1 > EXPECTED
+ echo 'ACTUAL = ' | cat - $2 > ACTUAL
+ js -f EXPECTED -f ACTUAL -f json-cmp.js
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/destination-is-existing-directory.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/destination-is-existing-directory.expected.err
new file mode 100644
index 0000000..8a59e6b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/destination-is-existing-directory.expected.err
@@ -0,0 +1,2 @@
+jscoverage: refusing to overwrite directory: bar
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/destination-is-file.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/destination-is-file.expected.err
new file mode 100644
index 0000000..bb3778d
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/destination-is-file.expected.err
@@ -0,0 +1,2 @@
+jscoverage: not a directory: bar
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/encoding-requires-argument.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/encoding-requires-argument.expected.err
new file mode 100644
index 0000000..4b3fd0c
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/encoding-requires-argument.expected.err
@@ -0,0 +1,2 @@
+jscoverage: --encoding: option requires an argument
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/encodings.c b/tools/node_modules/expresso/deps/jscoverage/tests/encodings.c
new file mode 100644
index 0000000..26f8707
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/encodings.c
@@ -0,0 +1,223 @@
+/*
+ encodings.c - test handling different character encodings
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <string.h>
+
+#include "encoding.h"
+#include "stream.h"
+
+int main(void) {
+ jschar * characters;
+ size_t num_characters;
+ int result;
+
+ /* e, e grave, e acute, e circumflex */
+ uint8_t utf8[] = {
+ 'e',
+ 0xc3,
+ 0xa8,
+ 0xc3,
+ 0xa9,
+ 0xc3,
+ 0xaa,
+ };
+
+ result = jscoverage_bytes_to_characters("UTF-8", utf8, 7, &characters, &num_characters);
+
+#if HAVE_ICONV || HAVE_MULTIBYTETOWIDECHAR
+ assert(result == 0);
+ assert(num_characters == 4);
+ assert(characters[0] == 'e');
+ assert(characters[1] == 0xe8);
+ assert(characters[2] == 0xe9);
+ assert(characters[3] == 0xea);
+
+ free(characters);
+#else
+ assert(result == JSCOVERAGE_ERROR_ENCODING_NOT_SUPPORTED);
+#endif
+
+ /*
+ BOM is 0xfeff
+ = 1111 1110 1111 1111
+ UTF: 1110---- 10------ 10------
+ = 11101111 10111011 10111111
+ = EF BB BF
+ */
+ uint8_t utf8_with_bom[] = {
+ 0xef,
+ 0xbb,
+ 0xbf,
+ 'e',
+ 0xc3,
+ 0xa8,
+ 0xc3,
+ 0xa9,
+ 0xc3,
+ 0xaa,
+ };
+
+ result = jscoverage_bytes_to_characters("UTF-8", utf8_with_bom, 10, &characters, &num_characters);
+
+#if HAVE_ICONV || HAVE_MULTIBYTETOWIDECHAR
+ assert(result == 0);
+ assert(num_characters == 4);
+ assert(characters[0] == 'e');
+ assert(characters[1] == 0xe8);
+ assert(characters[2] == 0xe9);
+ assert(characters[3] == 0xea);
+
+ free(characters);
+#else
+ assert(result == JSCOVERAGE_ERROR_ENCODING_NOT_SUPPORTED);
+#endif
+
+ uint8_t utf16be[] = {
+ 0, 'e',
+ 0, 0xe8,
+ 0, 0xe9,
+ 0, 0xea,
+ };
+
+ result = jscoverage_bytes_to_characters("UTF-16BE", utf16be, 8, &characters, &num_characters);
+
+#ifdef HAVE_ICONV
+ assert(result == 0);
+ assert(num_characters == 4);
+ assert(characters[0] == 'e');
+ assert(characters[1] == 0xe8);
+ assert(characters[2] == 0xe9);
+ assert(characters[3] == 0xea);
+
+ free(characters);
+#else
+ assert(result == JSCOVERAGE_ERROR_ENCODING_NOT_SUPPORTED);
+#endif
+
+ uint8_t utf16be_with_bom[] = {
+ 0xfe, 0xff,
+ 0, 'e',
+ 0, 0xe8,
+ 0, 0xe9,
+ 0, 0xea,
+ };
+
+ result = jscoverage_bytes_to_characters("UTF-16BE", utf16be_with_bom, 10, &characters, &num_characters);
+
+#ifdef HAVE_ICONV
+ assert(result == 0);
+ assert(num_characters == 4);
+ assert(characters[0] == 'e');
+ assert(characters[1] == 0xe8);
+ assert(characters[2] == 0xe9);
+ assert(characters[3] == 0xea);
+
+ free(characters);
+#else
+ assert(result == JSCOVERAGE_ERROR_ENCODING_NOT_SUPPORTED);
+#endif
+
+ uint8_t utf16le[] = {
+ 'e', 0,
+ 0xe8, 0,
+ 0xe9, 0,
+ 0xea, 0,
+ };
+
+ result = jscoverage_bytes_to_characters("UTF-16LE", utf16le, 8, &characters, &num_characters);
+
+#ifdef HAVE_ICONV
+ assert(result == 0);
+ assert(num_characters == 4);
+ assert(characters[0] == 'e');
+ assert(characters[1] == 0xe8);
+ assert(characters[2] == 0xe9);
+ assert(characters[3] == 0xea);
+
+ free(characters);
+#else
+ assert(result == JSCOVERAGE_ERROR_ENCODING_NOT_SUPPORTED);
+#endif
+
+ uint8_t utf16le_with_bom[] = {
+ 0xff, 0xfe,
+ 'e', 0,
+ 0xe8, 0,
+ 0xe9, 0,
+ 0xea, 0,
+ };
+
+ result = jscoverage_bytes_to_characters("UTF-16LE", utf16le_with_bom, 10, &characters, &num_characters);
+
+#ifdef HAVE_ICONV
+ assert(result == 0);
+ assert(num_characters == 4);
+ assert(characters[0] == 'e');
+ assert(characters[1] == 0xe8);
+ assert(characters[2] == 0xe9);
+ assert(characters[3] == 0xea);
+
+ free(characters);
+#else
+ assert(result == JSCOVERAGE_ERROR_ENCODING_NOT_SUPPORTED);
+#endif
+
+ /* bogus encoding */
+ uint8_t bogus[] = {'b', 'o', 'g', 'u', 's'};
+
+ result = jscoverage_bytes_to_characters("BOGUS", bogus, 5, &characters, &num_characters);
+
+ assert(result == JSCOVERAGE_ERROR_ENCODING_NOT_SUPPORTED);
+
+#ifdef HAVE_ICONV
+ /* malformed US-ASCII */
+ /* NOTE: Windows simply discards the high bit */
+ uint8_t malformed_ascii[] = {
+ 'e',
+ 0xe8,
+ 0xe9,
+ 0xea,
+ };
+
+ result = jscoverage_bytes_to_characters("US-ASCII", malformed_ascii, 4, &characters, &num_characters);
+
+ assert(result == JSCOVERAGE_ERROR_INVALID_BYTE_SEQUENCE);
+#endif
+
+ /* malformed UTF-8 */
+ uint8_t malformed_utf8[] = {
+ 'e',
+ 0xe8,
+ 0xe9,
+ 0xea,
+ };
+
+ result = jscoverage_bytes_to_characters("UTF-8", malformed_utf8, 4, &characters, &num_characters);
+
+#if HAVE_ICONV || HAVE_MULTIBYTETOWIDECHAR
+ assert(result == JSCOVERAGE_ERROR_INVALID_BYTE_SEQUENCE);
+#else
+ assert(result == JSCOVERAGE_ERROR_ENCODING_NOT_SUPPORTED);
+#endif
+
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/encodings.sh b/tools/node_modules/expresso/deps/jscoverage/tests/encodings.sh
new file mode 100755
index 0000000..5db0f13
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/encodings.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# encodings.sh - test handling different character encodings
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+$VALGRIND ./encodings
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/exclude-requires-argument.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/exclude-requires-argument.expected.err
new file mode 100644
index 0000000..6feb597
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/exclude-requires-argument.expected.err
@@ -0,0 +1,2 @@
+jscoverage: --exclude: option requires an argument
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/fatal.sh b/tools/node_modules/expresso/deps/jscoverage/tests/fatal.sh
new file mode 100755
index 0000000..90b8d94
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/fatal.sh
@@ -0,0 +1,110 @@
+#!/bin/sh
+# fatal.sh - test various fatal errors
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr DIR DIR2 OUT ERR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+rm -fr DIR DIR2
+
+$VALGRIND jscoverage javascript-xml DIR > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+diff --strip-trailing-cr javascript-xml.expected.err ERR
+
+rm -fr DIR
+
+$VALGRIND jscoverage javascript-invalid DIR > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+diff --strip-trailing-cr javascript-invalid.expected.err ERR
+
+rm -fr DIR
+
+$VALGRIND jscoverage javascript-setter DIR > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+diff --strip-trailing-cr javascript-setter.expected.err ERR
+
+rm -fr DIR
+
+$VALGRIND jscoverage 1 2 3 > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+diff --strip-trailing-cr too-many-arguments.expected.err ERR
+
+rm -fr DIR
+
+$VALGRIND jscoverage --no-instrument > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+diff --strip-trailing-cr no-instrument-requires-argument.expected.err ERR
+
+$VALGRIND jscoverage --exclude > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+diff --strip-trailing-cr exclude-requires-argument.expected.err ERR
+
+$VALGRIND jscoverage --encoding > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+diff --strip-trailing-cr encoding-requires-argument.expected.err ERR
+
+# first arg does not exist
+rm -f foo
+$VALGRIND jscoverage foo bar > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+# diff --strip-trailing-cr source-does-not-exist.expected.err ERR
+
+# first arg is file
+touch foo
+$VALGRIND jscoverage foo bar > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+# diff --strip-trailing-cr source-is-file.expected.err ERR
+rm foo
+
+# second arg is file
+rm -fr bar
+touch bar
+$VALGRIND jscoverage javascript bar > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+# diff --strip-trailing-cr destination-is-file.expected.err ERR
+rm bar
+
+# second arg is directory, but not from previous run
+rm -fr bar
+mkdir bar
+touch bar/foo
+$VALGRIND jscoverage javascript bar > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+# diff --strip-trailing-cr destination-is-existing-directory.expected.err ERR
+rm -fr bar
+
+# huge JavaScript file
+mkdir -p DIR
+perl -e 'for (1 .. 65536) {print "x = $_\n";}' > DIR/big.js
+$VALGRIND jscoverage DIR DIR2 > OUT 2> ERR && exit 1
+echo 'jscoverage: file big.js contains more than 65,535 lines' | diff --strip-trailing-cr - ERR
+
+rm -fr DIR DIR2 OUT ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/gethostbyname.c b/tools/node_modules/expresso/deps/jscoverage/tests/gethostbyname.c
new file mode 100644
index 0000000..ef5d7b3
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/gethostbyname.c
@@ -0,0 +1,53 @@
+/*
+ gethostbyname.c - test host lookup
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#include "http-server.h"
+
+int main(int argc, char ** argv) {
+#ifdef __MINGW32__
+ WSADATA data;
+ if (WSAStartup(MAKEWORD(1, 1), &data) != 0) {
+ return 1;
+ }
+#endif
+
+ if (argc < 2) {
+ exit(EXIT_FAILURE);
+ }
+
+ struct in_addr a;
+ if (xgethostbyname(argv[1], &a) != 0) {
+ exit(EXIT_FAILURE);
+ }
+ char * result = inet_ntoa(a);
+ printf("%s\n", result);
+
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/gethostbyname.sh b/tools/node_modules/expresso/deps/jscoverage/tests/gethostbyname.sh
new file mode 100755
index 0000000..eae74e3
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/gethostbyname.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+# gethostbyname.sh - test host lookup
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+echo 127.0.0.1 > EXPECTED
+./gethostbyname localhost > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
+
+! ./gethostbyname foo
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/help.sh b/tools/node_modules/expresso/deps/jscoverage/tests/help.sh
new file mode 100755
index 0000000..5aaa31a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/help.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+# help.sh - test `--help' option
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr OUT ERR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+$VALGRIND jscoverage --help > OUT 2> ERR
+test -s OUT
+test ! -s ERR
+diff --strip-trailing-cr ../jscoverage-help.txt OUT
+
+$VALGRIND jscoverage -h > OUT 2> ERR
+test -s OUT
+test ! -s ERR
+diff --strip-trailing-cr ../jscoverage-help.txt OUT
+
+rm -fr OUT ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/http-client-bad-body.c b/tools/node_modules/expresso/deps/jscoverage/tests/http-client-bad-body.c
new file mode 100644
index 0000000..9985c62
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/http-client-bad-body.c
@@ -0,0 +1,98 @@
+/*
+ http-client-bad-body.c - HTTP client that outputs a bad body
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#include <unistd.h>
+
+#include "http-server.h"
+#include "util.h"
+
+int main(int argc, char ** argv) {
+#ifdef __MINGW32__
+ WSADATA data;
+ if (WSAStartup(MAKEWORD(1, 1), &data) != 0) {
+ return 1;
+ }
+#endif
+
+ int result;
+
+ if (argc < 3) {
+ fprintf(stderr, "Usage: %s PORT URL\n", argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ uint16_t connect_port = atoi(argv[1]);
+ char * url = argv[2];
+ char * host;
+ uint16_t port;
+ char * abs_path;
+ char * query;
+ result = URL_parse(url, &host, &port, &abs_path, &query);
+ assert(result == 0);
+
+ struct sockaddr_in a;
+ a.sin_family = AF_INET;
+ a.sin_port = htons(connect_port);
+ a.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+
+ SOCKET s = socket(PF_INET, SOCK_STREAM, 0);
+ assert(s != INVALID_SOCKET);
+
+ result = connect(s, (struct sockaddr *) &a, sizeof(a));
+ assert(result == 0);
+
+ /* send request */
+ char * message;
+ xasprintf(&message, "POST %s HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\nHello\n", url);
+ size_t message_length = strlen(message);
+ ssize_t bytes_sent = send(s, message, message_length, 0);
+ assert(bytes_sent == (ssize_t) message_length);
+
+ /* read response */
+ for (;;) {
+ uint8_t buffer[8192];
+ ssize_t bytes_read = recv(s, buffer, 8192, 0);
+ assert(bytes_read >= 0);
+ if (bytes_read == 0) {
+ break;
+ }
+ }
+
+ closesocket(s);
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/http-client-bad-url.c b/tools/node_modules/expresso/deps/jscoverage/tests/http-client-bad-url.c
new file mode 100644
index 0000000..fdb917b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/http-client-bad-url.c
@@ -0,0 +1,77 @@
+/*
+ http-client-bad-url.c - HTTP client that sends bad URLs
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "http-server.h"
+#include "util.h"
+
+int main(int argc, char ** argv) {
+#ifdef __MINGW32__
+ WSADATA data;
+ if (WSAStartup(MAKEWORD(1, 1), &data) != 0) {
+ return 1;
+ }
+#endif
+
+ int result;
+
+ if (argc < 3) {
+ fprintf(stderr, "Usage: %s PORT URL\n", argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ uint16_t connect_port = atoi(argv[1]);
+ char * url = argv[2];
+
+ struct sockaddr_in a;
+ a.sin_family = AF_INET;
+ a.sin_port = htons(connect_port);
+ a.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+
+ SOCKET s = socket(PF_INET, SOCK_STREAM, 0);
+ assert(s != INVALID_SOCKET);
+
+ result = connect(s, (struct sockaddr *) &a, sizeof(a));
+ assert(result == 0);
+
+ /* send request */
+ char * message;
+ xasprintf(&message, "GET %s HTTP/1.1\r\nConnection: close\r\n\r\n", url);
+ size_t message_length = strlen(message);
+ ssize_t bytes_sent = send(s, message, message_length, 0);
+ assert(bytes_sent == (ssize_t) message_length);
+
+ /* read response */
+ for (;;) {
+ uint8_t buffer[8192];
+ ssize_t bytes_read = recv(s, buffer, 8192, 0);
+ assert(bytes_read >= 0);
+ if (bytes_read == 0) {
+ break;
+ }
+ }
+
+ closesocket(s);
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/http-client-close-after-request.c b/tools/node_modules/expresso/deps/jscoverage/tests/http-client-close-after-request.c
new file mode 100644
index 0000000..e67431a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/http-client-close-after-request.c
@@ -0,0 +1,57 @@
+/*
+ http-client-close-after-request.c - HTTP client that closes connection after sending request
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "http-server.h"
+
+int main(void) {
+#ifdef __MINGW32__
+ WSADATA data;
+ if (WSAStartup(MAKEWORD(1, 1), &data) != 0) {
+ return 1;
+ }
+#endif
+
+ int result;
+
+ struct sockaddr_in a;
+ a.sin_family = AF_INET;
+ a.sin_port = htons(8000);
+ a.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+
+ SOCKET s = socket(PF_INET, SOCK_STREAM, 0);
+ assert(s != INVALID_SOCKET);
+
+ result = connect(s, (struct sockaddr *) &a, sizeof(a));
+ assert(result == 0);
+
+ /* send request */
+ char * message = "GET http://127.0.0.1:8000/ HTTP/1.1\r\nConnection: close\r\nHost: 127.0.0.1:8000\r\n\r\n";
+ size_t message_length = strlen(message);
+ ssize_t bytes_sent = send(s, message, message_length, 0);
+ assert(bytes_sent == (ssize_t) message_length);
+
+ closesocket(s);
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/http-server-bad-body.c b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-bad-body.c
new file mode 100644
index 0000000..f8c362d
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-bad-body.c
@@ -0,0 +1,97 @@
+/*
+ http-server-bad-body.c - HTTP server that outputs a bad body
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <string.h>
+
+#include "http-server.h"
+
+int main(void) {
+#ifdef __MINGW32__
+ WSADATA data;
+ if (WSAStartup(MAKEWORD(1, 1), &data) != 0) {
+ return 1;
+ }
+#endif
+
+ SOCKET s = socket(PF_INET, SOCK_STREAM, 0);
+ assert(s != INVALID_SOCKET);
+
+ int optval = 1;
+ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *) &optval, sizeof(optval));
+
+ struct sockaddr_in a;
+ a.sin_family = AF_INET;
+ a.sin_port = htons(8000);
+ a.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ int result = bind(s, (struct sockaddr *) &a, sizeof(a));
+ assert(result == 0);
+
+ result = listen(s, 5);
+ assert(result == 0);
+
+ for (;;) {
+ struct sockaddr_in client_address;
+ size_t size = sizeof(client_address);
+ int client_socket = accept(s, (struct sockaddr *) &client_address, &size);
+ assert(client_socket > 0);
+
+ /* read request */
+ int state = 0;
+ while (state != 2) {
+ uint8_t buffer[8192];
+ ssize_t bytes_read = recv(client_socket, buffer, 8192, 0);
+ assert(bytes_read > 0);
+ for (int i = 0; i < bytes_read && state != 2; i++) {
+ uint8_t byte = buffer[i];
+ switch (state) {
+ case 0:
+ if (byte == '\n') {
+ state = 1;
+ }
+ else {
+ state = 0;
+ }
+ break;
+ case 1:
+ if (byte == '\n') {
+ state = 2;
+ }
+ else if (byte == '\r') {
+ state = 1;
+ }
+ else {
+ state = 0;
+ }
+ }
+ }
+ }
+
+ /* send response */
+ char * message = "HTTP/1.1 200 OK\r\nConnection: close\r\nContent-type: text/html\r\nTransfer-Encoding: chunked\r\n\r\nHello\n";
+ size_t message_length = strlen(message);
+ ssize_t bytes_sent = send(client_socket, message, message_length, 0);
+ assert(bytes_sent == (ssize_t) message_length);
+
+ closesocket(client_socket);
+ }
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/http-server-bad-headers.c b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-bad-headers.c
new file mode 100644
index 0000000..bbef80f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-bad-headers.c
@@ -0,0 +1,97 @@
+/*
+ http-server-bad-headers.c - HTTP server that outputs bad headers
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <string.h>
+
+#include "http-server.h"
+
+int main(void) {
+#ifdef __MINGW32__
+ WSADATA data;
+ if (WSAStartup(MAKEWORD(1, 1), &data) != 0) {
+ return 1;
+ }
+#endif
+
+ SOCKET s = socket(PF_INET, SOCK_STREAM, 0);
+ assert(s != INVALID_SOCKET);
+
+ int optval = 1;
+ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *) &optval, sizeof(optval));
+
+ struct sockaddr_in a;
+ a.sin_family = AF_INET;
+ a.sin_port = htons(8000);
+ a.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ int result = bind(s, (struct sockaddr *) &a, sizeof(a));
+ assert(result == 0);
+
+ result = listen(s, 5);
+ assert(result == 0);
+
+ for (;;) {
+ struct sockaddr_in client_address;
+ size_t size = sizeof(client_address);
+ int client_socket = accept(s, (struct sockaddr *) &client_address, &size);
+ assert(client_socket > 0);
+
+ /* read request */
+ int state = 0;
+ while (state != 2) {
+ uint8_t buffer[8192];
+ ssize_t bytes_read = recv(client_socket, buffer, 8192, 0);
+ assert(bytes_read > 0);
+ for (int i = 0; i < bytes_read && state != 2; i++) {
+ uint8_t byte = buffer[i];
+ switch (state) {
+ case 0:
+ if (byte == '\n') {
+ state = 1;
+ }
+ else {
+ state = 0;
+ }
+ break;
+ case 1:
+ if (byte == '\n') {
+ state = 2;
+ }
+ else if (byte == '\r') {
+ state = 1;
+ }
+ else {
+ state = 0;
+ }
+ }
+ }
+ }
+
+ /* send response */
+ char * message = "HTTP/1.1 200 OK\r\nHere is some bogosity!\r\nConnection: close\r\nContent-type: text/html\r\n\r\nHello\n";
+ size_t message_length = strlen(message);
+ ssize_t bytes_sent = send(client_socket, message, message_length, 0);
+ assert(bytes_sent == (ssize_t) message_length);
+
+ closesocket(client_socket);
+ }
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/http-server-charset.c b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-charset.c
new file mode 100644
index 0000000..7ea7bb8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-charset.c
@@ -0,0 +1,144 @@
+/*
+ http-server-charset.c - HTTP server that outputs different charset values
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <string.h>
+
+#include "http-server.h"
+#include "stream.h"
+#include "util.h"
+
+int main(void) {
+#ifdef __MINGW32__
+ WSADATA data;
+ if (WSAStartup(MAKEWORD(1, 1), &data) != 0) {
+ return 1;
+ }
+#endif
+
+ SOCKET s = socket(PF_INET, SOCK_STREAM, 0);
+ assert(s != INVALID_SOCKET);
+
+ int optval = 1;
+ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *) &optval, sizeof(optval));
+
+ struct sockaddr_in a;
+ a.sin_family = AF_INET;
+ a.sin_port = htons(8000);
+ a.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ int result = bind(s, (struct sockaddr *) &a, sizeof(a));
+ assert(result == 0);
+
+ result = listen(s, 5);
+ assert(result == 0);
+
+ for (;;) {
+ struct sockaddr_in client_address;
+ size_t size = sizeof(client_address);
+ int client_socket = accept(s, (struct sockaddr *) &client_address, &size);
+ assert(client_socket > 0);
+
+ /* read request */
+ Stream * stream = Stream_new(0);
+ int state = 0;
+ while (state != 2) {
+ uint8_t buffer[8192];
+ ssize_t bytes_read = recv(client_socket, buffer, 8192, 0);
+ assert(bytes_read > 0);
+ Stream_write(stream, buffer, bytes_read);
+ for (int i = 0; i < bytes_read && state != 2; i++) {
+ uint8_t byte = buffer[i];
+ switch (state) {
+ case 0:
+ if (byte == '\n') {
+ state = 1;
+ }
+ break;
+ case 1:
+ if (byte == '\n') {
+ state = 2;
+ }
+ else if (byte == '\r') {
+ state = 1;
+ }
+ else {
+ state = 0;
+ }
+ break;
+ }
+ }
+ }
+
+ char * method;
+ char * url;
+ char * request_line = (char *) stream->data;
+ char * first_space = strchr(request_line, ' ');
+ assert(first_space != NULL);
+ char * second_space = strchr(first_space + 1, ' ');
+ assert(second_space != NULL);
+ method = xstrndup(request_line, first_space - request_line);
+ url = xstrndup(first_space + 1, second_space - (first_space + 1));
+
+ /* send response */
+ char * message;
+ if (strcmp(url, "http://127.0.0.1:8000/utf-8.js") == 0 || strcmp(url, "/utf-8.js") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-type: text/javascript; charset=UTF-8\r\n"
+ "\r\n"
+ "var s = 'eèéê';\n"
+ "var r = /eèéê/;\n";
+ }
+ else if (strcmp(url, "http://127.0.0.1:8000/iso-8859-1.js") == 0 || strcmp(url, "/iso-8859-1.js") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-type: text/javascript; charset=ISO-8859-1\r\n"
+ "\r\n"
+ "var s = 'eèéê';\n"
+ "var r = /eèéê/;\n";
+ }
+ else if (strcmp(url, "http://127.0.0.1:8000/bogus.js") == 0 || strcmp(url, "/bogus.js") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-type: text/javascript; charset=BOGUS\r\n"
+ "\r\n"
+ "var s = 'eèéê';\n"
+ "var r = /eèéê/;\n";
+ }
+ else if (strcmp(url, "http://127.0.0.1:8000/malformed.js") == 0 || strcmp(url, "/malformed.js") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-type: text/javascript; charset=UTF-8\r\n"
+ "\r\n"
+ "var s = 'eèéê';\n"
+ "var r = /eèéê/;\n";
+ }
+ else {
+ abort();
+ }
+ size_t message_length = strlen(message);
+ ssize_t bytes_sent = send(client_socket, message, message_length, 0);
+ assert(bytes_sent == (ssize_t) message_length);
+
+ closesocket(client_socket);
+ }
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/http-server-chunked.c b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-chunked.c
new file mode 100644
index 0000000..909cb07
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-chunked.c
@@ -0,0 +1,196 @@
+/*
+ http-server-chunked.c - HTTP server that outputs chunked response
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <string.h>
+
+#include "http-server.h"
+#include "stream.h"
+#include "util.h"
+
+int main(void) {
+#ifdef __MINGW32__
+ WSADATA data;
+ if (WSAStartup(MAKEWORD(1, 1), &data) != 0) {
+ return 1;
+ }
+#endif
+
+ SOCKET s = socket(PF_INET, SOCK_STREAM, 0);
+ assert(s != INVALID_SOCKET);
+
+ int optval = 1;
+ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *) &optval, sizeof(optval));
+
+ struct sockaddr_in a;
+ a.sin_family = AF_INET;
+ a.sin_port = htons(8000);
+ a.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ int result = bind(s, (struct sockaddr *) &a, sizeof(a));
+ assert(result == 0);
+
+ result = listen(s, 5);
+ assert(result == 0);
+
+ for (;;) {
+ struct sockaddr_in client_address;
+ size_t size = sizeof(client_address);
+ int client_socket = accept(s, (struct sockaddr *) &client_address, &size);
+ assert(client_socket > 0);
+
+ /* read request */
+ Stream * stream = Stream_new(0);
+ int state = 0;
+ while (state != 2) {
+ uint8_t buffer[8192];
+ ssize_t bytes_read = recv(client_socket, buffer, 8192, 0);
+ assert(bytes_read > 0);
+ Stream_write(stream, buffer, bytes_read);
+ for (int i = 0; i < bytes_read && state != 2; i++) {
+ uint8_t byte = buffer[i];
+ switch (state) {
+ case 0:
+ if (byte == '\n') {
+ state = 1;
+ }
+ else {
+ state = 0;
+ }
+ break;
+ case 1:
+ if (byte == '\n') {
+ state = 2;
+ }
+ else if (byte == '\r') {
+ state = 1;
+ }
+ else {
+ state = 0;
+ }
+ break;
+ }
+ }
+ }
+
+ char * method;
+ char * url;
+ char * request_line = (char *) stream->data;
+ char * first_space = strchr(request_line, ' ');
+ assert(first_space != NULL);
+ char * second_space = strchr(first_space + 1, ' ');
+ assert(second_space != NULL);
+ method = xstrndup(request_line, first_space - request_line);
+ url = xstrndup(first_space + 1, second_space - (first_space + 1));
+
+ /* send response */
+ char * message;
+ if (strcmp(url, "http://127.0.0.1:8000/lower") == 0 || strcmp(url, "/lower") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-type: text/html\r\n"
+ "Transfer-Encoding: chunked\r\n"
+ "\r\n"
+ "b\r\n"
+ "hello world\r\n"
+ "1\r\n"
+ "\n\r\n"
+ "0\r\n"
+ "\r\n";
+ }
+ else if (strcmp(url, "http://127.0.0.1:8000/upper") == 0 || strcmp(url, "/upper") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-type: text/html\r\n"
+ "Transfer-Encoding: chunked\r\n"
+ "\r\n"
+ "B\r\n"
+ "HELLO WORLD\r\n"
+ "1\r\n"
+ "\n\r\n"
+ "0\r\n"
+ "\r\n";
+ }
+ else if (strcmp(url, "http://127.0.0.1:8000/javascript") == 0 || strcmp(url, "/javascript") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-Type: text/javascript\r\n"
+ "Transfer-Encoding: chunked\r\n"
+ "\r\n"
+ "B\r\n"
+ "hello = 10;\r\n"
+ "1\r\n"
+ "\n\r\n"
+ "0\r\n"
+ "\r\n";
+ }
+ else if (strcmp(url, "http://127.0.0.1:8000/trailer") == 0 || strcmp(url, "/trailer") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-type: text/html\r\n"
+ "Transfer-Encoding: chunked\r\n"
+ "\r\n"
+ "b\r\n"
+ "hello world\r\n"
+ "1\r\n"
+ "\n\r\n"
+ "0\r\n"
+ "X-Foo: bar\r\n"
+ "X-Bar: foo\r\n"
+ "\r\n";
+ }
+ else if (strcmp(url, "http://127.0.0.1:8000/overflow") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-type: text/html\r\n"
+ "Transfer-Encoding: chunked\r\n"
+ "\r\n"
+ "100000000\r\n"
+ "hello world\r\n"
+ "1\r\n"
+ "\n\r\n"
+ "0\r\n"
+ "\r\n";
+ }
+ else if (strcmp(url, "http://127.0.0.1:8000/multiple") == 0) {
+ message = "HTTP/1.1 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-type: text/html\r\n"
+ "Transfer-Encoding: foo; foo = bar, bar; foo = \"bar\"\r\n"
+ "Transfer-Encoding: foobar; foo = \"\\\"bar\\\"\", chunked\r\n"
+ "\r\n"
+ "b\r\n"
+ "hello world\r\n"
+ "1\r\n"
+ "\n\r\n"
+ "0\r\n"
+ "\r\n";
+ }
+ else {
+ abort();
+ }
+ size_t message_length = strlen(message);
+ ssize_t bytes_sent = send(client_socket, message, message_length, 0);
+ assert(bytes_sent == (ssize_t) message_length);
+
+ closesocket(client_socket);
+ }
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/http-server-close-immediately.c b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-close-immediately.c
new file mode 100644
index 0000000..b8c7176
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/http-server-close-immediately.c
@@ -0,0 +1,60 @@
+/*
+ http-server-close-immediately.c - HTTP server that closes connection immediately
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <config.h>
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "http-server.h"
+
+int main(void) {
+#ifdef __MINGW32__
+ WSADATA data;
+ if (WSAStartup(MAKEWORD(1, 1), &data) != 0) {
+ return 1;
+ }
+#endif
+
+ SOCKET s = socket(PF_INET, SOCK_STREAM, 0);
+ assert(s != INVALID_SOCKET);
+
+ int optval = 1;
+ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *) &optval, sizeof(optval));
+
+ struct sockaddr_in a;
+ a.sin_family = AF_INET;
+ a.sin_port = htons(8000);
+ a.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ int result = bind(s, (struct sockaddr *) &a, sizeof(a));
+ assert(result == 0);
+
+ result = listen(s, 5);
+ assert(result == 0);
+
+ for (;;) {
+ struct sockaddr_in client_address;
+ size_t size = sizeof(client_address);
+ int client_socket = accept(s, (struct sockaddr *) &client_address, &size);
+ assert(client_socket > 0);
+ closesocket(client_socket);
+ }
+ return 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/invalid-option.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/invalid-option.expected.err
new file mode 100644
index 0000000..91538d9
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/invalid-option.expected.err
@@ -0,0 +1,2 @@
+jscoverage: unrecognized option `--foo'
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/invalid-option.sh b/tools/node_modules/expresso/deps/jscoverage/tests/invalid-option.sh
new file mode 100755
index 0000000..bf9607c
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/invalid-option.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# invalid-option.sh - test invalid option
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr OUT ERR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+$VALGRIND jscoverage --foo > OUT 2> ERR && exit 1
+test ! -s OUT
+diff --strip-trailing-cr invalid-option.expected.err ERR
+
+rm -fr OUT ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore.expected/ignore.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore.expected/ignore.js
new file mode 100644
index 0000000..824f204
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore.expected/ignore.js
@@ -0,0 +1,106 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['ignore.js']) {
+ _$jscoverage['ignore.js'] = [];
+ _$jscoverage['ignore.js'][1] = 0;
+ _$jscoverage['ignore.js'][3] = 0;
+ _$jscoverage['ignore.js'][4] = 0;
+ _$jscoverage['ignore.js'][6] = 0;
+ _$jscoverage['ignore.js'][7] = 0;
+ _$jscoverage['ignore.js'][10] = 0;
+ _$jscoverage['ignore.js'][14] = 0;
+ _$jscoverage['ignore.js'][16] = 0;
+ _$jscoverage['ignore.js'][17] = 0;
+ _$jscoverage['ignore.js'][22] = 0;
+ _$jscoverage['ignore.js'][23] = 0;
+ _$jscoverage['ignore.js'][27] = 0;
+ _$jscoverage['ignore.js'][32] = 0;
+ _$jscoverage['ignore.js'][34] = 0;
+ _$jscoverage['ignore.js'][35] = 0;
+ _$jscoverage['ignore.js'][37] = 0;
+ _$jscoverage['ignore.js'][38] = 0;
+ _$jscoverage['ignore.js'][42] = 0;
+ _$jscoverage['ignore.js'][43] = 0;
+ _$jscoverage['ignore.js'][44] = 0;
+}
+_$jscoverage['ignore.js'].conditionals = [];
+_$jscoverage['ignore.js'][1]++;
+function createRequest() {
+ _$jscoverage['ignore.js'][3]++;
+ if (window.XMLHttpRequest) {
+ _$jscoverage['ignore.js'].conditionals[6] = 11;
+ _$jscoverage['ignore.js'][4]++;
+ return new XMLHttpRequest();
+ }
+ else {
+ _$jscoverage['ignore.js'].conditionals[4] = 5;
+ _$jscoverage['ignore.js'][6]++;
+ if (window.ActiveXObject) {
+ _$jscoverage['ignore.js'].conditionals[9] = 11;
+ _$jscoverage['ignore.js'][7]++;
+ return new ActiveXObject("Msxml2.XMLHTTP");
+ }
+ else {
+ _$jscoverage['ignore.js'].conditionals[7] = 8;
+ _$jscoverage['ignore.js'][10]++;
+ throw "no XMLHttpRequest implementation available";
+ }
+ }
+}
+_$jscoverage['ignore.js'][14]++;
+function createRequest2() {
+ _$jscoverage['ignore.js'][16]++;
+ if (window.XMLHttpRequest) {
+ _$jscoverage['ignore.js'][17]++;
+ return new XMLHttpRequest();
+ }
+ else {
+ _$jscoverage['ignore.js'].conditionals[17] = 18;
+ }
+ _$jscoverage['ignore.js'][22]++;
+ if (window.ActiveXObject) {
+ _$jscoverage['ignore.js'][23]++;
+ return new ActiveXObject("Msxml2.XMLHTTP");
+ }
+ else {
+ _$jscoverage['ignore.js'].conditionals[23] = 24;
+ }
+ _$jscoverage['ignore.js'][27]++;
+ throw "no XMLHttpRequest implementation available";
+}
+_$jscoverage['ignore.js'][32]++;
+function log(s) {
+ _$jscoverage['ignore.js'][34]++;
+ if (window.console && window.console.log) {
+ _$jscoverage['ignore.js'].conditionals[37] = 39;
+ _$jscoverage['ignore.js'][35]++;
+ console.log(s);
+ }
+ else {
+ _$jscoverage['ignore.js'].conditionals[35] = 36;
+ _$jscoverage['ignore.js'][37]++;
+ if (window.opera && window.opera.postError) {
+ _$jscoverage['ignore.js'][38]++;
+ opera.postError(s);
+ }
+ else {
+ _$jscoverage['ignore.js'].conditionals[38] = 39;
+ }
+ }
+}
+_$jscoverage['ignore.js'][42]++;
+var request = createRequest();
+_$jscoverage['ignore.js'][43]++;
+var request2 = createRequest2();
+_$jscoverage['ignore.js'][44]++;
+log("created requests");
+if (!( 0)) {
+ _$jscoverage['ignore.js'].conditionals[26] = 28;
+}
+if (!( ! window.XMLHttpRequest)) {
+ _$jscoverage['ignore.js'].conditionals[20] = 29;
+}
+_$jscoverage['ignore.js'].source = ["function createRequest() {","//#JSCOVERAGE_IF"," if (window.XMLHttpRequest) {"," return new XMLHttpRequest();"," }"," else if (window.ActiveXObject) {"," return new ActiveXObject('Msxml2.XMLHTTP');"," }"," else {"," throw 'no XMLHttpRequest implementation available';"," }","}","","function createRequest2() {","//#JSCOVERAGE_IF"," if (window.XMLHttpRequest) {"," return new XMLHttpRequest();"," }","","//#JSCOVERAGE_IF ! window.XMLHttpRequest","//#JSCOVERAGE_IF"," if (window.ActiveXObject) {"," return new ActiveXObject('Msxml2.XMLHTTP');"," }","","//#JSCOVERAGE_IF 0"," throw 'no XMLHttpRequest implementation available';","//#JSCOVERAGE_ENDIF","//#JSCOVERAGE_ENDIF","}","","function log(s) {","//#JSCOVERAGE_IF"," if (window.console &amp;&amp; window.console.log) {"," console.log(s);"," }"," else if (window.opera &amp;&amp; window.opera.postError) {"," opera.postError(s);"," }","}","","var request = createRequest();","var request2 = createRequest2();","log('created requests');"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore.sh b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore.sh
new file mode 100755
index 0000000..ec1edbd
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+# javascript-ignore.sh - test ignoring lines of code
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr DIR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+rm -fr DIR
+$VALGRIND jscoverage --no-highlight javascript-ignore DIR
+diff -u --strip-trailing-cr javascript-ignore.expected/ignore.js DIR/ignore.js
+rm -fr DIR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore/ignore.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore/ignore.js
new file mode 100644
index 0000000..8579ff0
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-ignore/ignore.js
@@ -0,0 +1,44 @@
+function createRequest() {
+//#JSCOVERAGE_IF
+ if (window.XMLHttpRequest) {
+ return new XMLHttpRequest();
+ }
+ else if (window.ActiveXObject) {
+ return new ActiveXObject('Msxml2.XMLHTTP');
+ }
+ else {
+ throw 'no XMLHttpRequest implementation available';
+ }
+}
+
+function createRequest2() {
+//#JSCOVERAGE_IF
+ if (window.XMLHttpRequest) {
+ return new XMLHttpRequest();
+ }
+
+//#JSCOVERAGE_IF ! window.XMLHttpRequest
+//#JSCOVERAGE_IF
+ if (window.ActiveXObject) {
+ return new ActiveXObject('Msxml2.XMLHTTP');
+ }
+
+//#JSCOVERAGE_IF 0
+ throw 'no XMLHttpRequest implementation available';
+//#JSCOVERAGE_ENDIF
+//#JSCOVERAGE_ENDIF
+}
+
+function log(s) {
+//#JSCOVERAGE_IF
+ if (window.console && window.console.log) {
+ console.log(s);
+ }
+ else if (window.opera && window.opera.postError) {
+ opera.postError(s);
+ }
+}
+
+var request = createRequest();
+var request2 = createRequest2();
+log('created requests');
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-invalid.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-invalid.expected.err
new file mode 100644
index 0000000..bd39cb1
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-invalid.expected.err
@@ -0,0 +1,2 @@
+jscoverage:javascript-invalid.js:1: SyntaxError: missing ; before statement
+jscoverage: parse error in file javascript-invalid.js
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-invalid/javascript-invalid.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-invalid/javascript-invalid.js
new file mode 100644
index 0000000..74b863c
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-invalid/javascript-invalid.js
@@ -0,0 +1 @@
+x y
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-setter.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-setter.expected.err
new file mode 100644
index 0000000..d353089
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-setter.expected.err
@@ -0,0 +1 @@
+jscoverage:javascript-setter.js:2: expected function
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-setter/javascript-setter.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-setter/javascript-setter.js
new file mode 100644
index 0000000..715bc1e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-setter/javascript-setter.js
@@ -0,0 +1,3 @@
+var obj = {
+ x setter: 3
+};
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8.expected/javascript-utf-8.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8.expected/javascript-utf-8.js
new file mode 100644
index 0000000..fa04a2c
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8.expected/javascript-utf-8.js
@@ -0,0 +1,15 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-utf-8.js']) {
+ _$jscoverage['javascript-utf-8.js'] = [];
+ _$jscoverage['javascript-utf-8.js'][1] = 0;
+ _$jscoverage['javascript-utf-8.js'][2] = 0;
+}
+_$jscoverage['javascript-utf-8.js'][1]++;
+var s = "e\u00e8\u00e9\u00ea";
+_$jscoverage['javascript-utf-8.js'][2]++;
+var r = /e\u00e8\u00e9\u00ea/;
+_$jscoverage['javascript-utf-8.js'].source = ["var s = 'e&#232;&#233;&#234;';","var r = /e&#232;&#233;&#234;/;"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8.sh b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8.sh
new file mode 100755
index 0000000..bada1bc
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+# javascript-utf-8.sh - test a JavaScript file with UTF-8 encoding
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr DIR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if jscoverage-server --version | grep -q 'iconv\|MultiByteToWideChar'
+then
+ character_encoding_support=yes
+else
+ character_encoding_support=no
+fi
+
+rm -fr DIR
+case "$character_encoding_support" in
+ yes)
+ $VALGRIND jscoverage --no-highlight --encoding=UTF-8 javascript-utf-8 DIR
+ diff -u --strip-trailing-cr javascript-utf-8.expected/javascript-utf-8.js DIR/javascript-utf-8.js
+ ;;
+ *)
+ ! $VALGRIND jscoverage --no-highlight --encoding=UTF-8 javascript-utf-8 DIR > OUT 2> ERR
+ echo "jscoverage: encoding UTF-8 not supported" | diff - ERR
+ ;;
+esac
+rm -fr DIR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8/javascript-utf-8.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8/javascript-utf-8.js
new file mode 100644
index 0000000..799cd6e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-utf-8/javascript-utf-8.js
@@ -0,0 +1,2 @@
+var s = 'eèéê';
+var r = /eèéê/;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-xml.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-xml.expected.err
new file mode 100644
index 0000000..017c45e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-xml.expected.err
@@ -0,0 +1 @@
+jscoverage:javascript-xml.js:3: unsupported node type (75)
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript-xml/javascript-xml.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-xml/javascript-xml.js
new file mode 100644
index 0000000..a802d93
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript-xml/javascript-xml.js
@@ -0,0 +1,8 @@
+// ECMA 357 11.1.4
+// an XML object representing a person with a name and age
+var person = <person><name>John</name><age>25</age></person>;
+// a variable containing an XML object representing two employees
+var e = <employees>
+ <employee id="1"><name>Joe</name><age>20</age></employee>
+ <employee id="2"><name>Sue</name><age>30</age></employee>
+</employees>;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-array-comprehension.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-array-comprehension.js
new file mode 100644
index 0000000..4ecdc1f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-array-comprehension.js
@@ -0,0 +1,32 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-array-comprehension.js']) {
+ _$jscoverage['javascript-array-comprehension.js'] = [];
+ _$jscoverage['javascript-array-comprehension.js'][3] = 0;
+ _$jscoverage['javascript-array-comprehension.js'][4] = 0;
+ _$jscoverage['javascript-array-comprehension.js'][5] = 0;
+ _$jscoverage['javascript-array-comprehension.js'][8] = 0;
+ _$jscoverage['javascript-array-comprehension.js'][9] = 0;
+ _$jscoverage['javascript-array-comprehension.js'][12] = 0;
+ _$jscoverage['javascript-array-comprehension.js'][14] = 0;
+}
+_$jscoverage['javascript-array-comprehension.js'][3]++;
+function range(begin, end) {
+ _$jscoverage['javascript-array-comprehension.js'][4]++;
+ for (let i = begin; i < end; ++i) {
+ _$jscoverage['javascript-array-comprehension.js'][5]++;
+ yield i;
+}
+}
+_$jscoverage['javascript-array-comprehension.js'][8]++;
+var ten_squares = [i * i for each (i in range(0, 10))];
+_$jscoverage['javascript-array-comprehension.js'][9]++;
+var evens = [i for each (i in range(0, 21)) if (i % 2 == 0)];
+_$jscoverage['javascript-array-comprehension.js'][12]++;
+var optimized = [1 for each (i in x) if (0)];
+_$jscoverage['javascript-array-comprehension.js'][14]++;
+[i for each (a in x) for each (b in y)];
+_$jscoverage['javascript-array-comprehension.js'].source = ["<span class=\"c\">// https://developer.mozilla.org/en/New_in_JavaScript_1.7</span>","","<span class=\"k\">function</span> range<span class=\"k\">(</span>begin<span class=\"k\">,</span> end<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">let</span> i <span class=\"k\">=</span> begin<span class=\"k\">;</span> i <span class=\"k\">&lt;</span> end<span class=\"k\">;</span> <span class=\"k\">++</span>i<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">yield</span> i<span class=\"k\">;</span>"," <span class=\"k\">}</span>","<span class=\"k\">}</span>","<span class=\"k\">var</span> ten_squares <span class=\"k\">=</span> <span class=\"k\">[</span>i <span class=\"k\">*</span> i <span class=\"k\">for</span> each <span class=\"k\">(</span>i <span class=\"k\">in</span> range<span class=\"k\">(</span><span class=\"s\">0</span><span class=\"k\">,</span> <span class=\"s\">10</span><span class=\"k\">))];</span>","<span class=\"k\">var</span> evens <span class=\"k\">=</span> <span class=\"k\">[</span>i <span class=\"k\">for</span> each <span class=\"k\">(</span>i <span class=\"k\">in</span> range<span class=\"k\">(</span><span class=\"s\">0</span><span class=\"k\">,</span> <span class=\"s\">21</span><span class=\"k\">))</span> <span class=\"k\">if</span> <span class=\"k\">(</span>i <span class=\"k\">%</span> <span class=\"s\">2</span> <span class=\"k\">==</span> <span class=\"s\">0</span><span class=\"k\">)];</span>","","<span class=\"c\">// test optimization</span>","<span class=\"k\">var</span> optimized <span class=\"k\">=</span> <span class=\"k\">[</span>i <span class=\"k\">for</span> each <span class=\"k\">(</span>i <span class=\"k\">in</span> x<span class=\"k\">)</span> <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">0</span><span class=\"k\">)];</span>","","<span class=\"k\">[</span>i <span class=\"k\">for</span> each <span class=\"k\">(</span>a <span class=\"k\">in</span> x<span class=\"k\">)</span> <span class=\"k\">for</span> each <span class=\"k\">(</span>b <span class=\"k\">in</span> y<span class=\"k\">)]</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-assign.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-assign.js
new file mode 100644
index 0000000..fc3a7ec
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-assign.js
@@ -0,0 +1,51 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-assign.js']) {
+ _$jscoverage['javascript-assign.js'] = [];
+ _$jscoverage['javascript-assign.js'][1] = 0;
+ _$jscoverage['javascript-assign.js'][2] = 0;
+ _$jscoverage['javascript-assign.js'][3] = 0;
+ _$jscoverage['javascript-assign.js'][4] = 0;
+ _$jscoverage['javascript-assign.js'][5] = 0;
+ _$jscoverage['javascript-assign.js'][6] = 0;
+ _$jscoverage['javascript-assign.js'][7] = 0;
+ _$jscoverage['javascript-assign.js'][8] = 0;
+ _$jscoverage['javascript-assign.js'][9] = 0;
+ _$jscoverage['javascript-assign.js'][10] = 0;
+ _$jscoverage['javascript-assign.js'][11] = 0;
+ _$jscoverage['javascript-assign.js'][12] = 0;
+ _$jscoverage['javascript-assign.js'][13] = 0;
+ _$jscoverage['javascript-assign.js'][14] = 0;
+}
+_$jscoverage['javascript-assign.js'][1]++;
+var x = 1;
+_$jscoverage['javascript-assign.js'][2]++;
+var y = 1;
+_$jscoverage['javascript-assign.js'][3]++;
+x = y;
+_$jscoverage['javascript-assign.js'][4]++;
+x += y;
+_$jscoverage['javascript-assign.js'][5]++;
+x -= y;
+_$jscoverage['javascript-assign.js'][6]++;
+x *= y;
+_$jscoverage['javascript-assign.js'][7]++;
+x %= y;
+_$jscoverage['javascript-assign.js'][8]++;
+x <<= y;
+_$jscoverage['javascript-assign.js'][9]++;
+x >>= y;
+_$jscoverage['javascript-assign.js'][10]++;
+x >>>= y;
+_$jscoverage['javascript-assign.js'][11]++;
+x &= y;
+_$jscoverage['javascript-assign.js'][12]++;
+x |= y;
+_$jscoverage['javascript-assign.js'][13]++;
+x ^= y;
+_$jscoverage['javascript-assign.js'][14]++;
+x /= y;
+_$jscoverage['javascript-assign.js'].source = ["<span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>","<span class=\"k\">var</span> y <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> y<span class=\"k\">;</span>","x <span class=\"k\">+=</span> y<span class=\"k\">;</span>","x <span class=\"k\">-=</span> y<span class=\"k\">;</span>","x <span class=\"k\">*=</span> y<span class=\"k\">;</span>","x <span class=\"k\">%=</span> y<span class=\"k\">;</span>","x <span class=\"k\">&lt;&lt;=</span> y<span class=\"k\">;</span>","x <span class=\"k\">&gt;&gt;=</span> y<span class=\"k\">;</span>","x <span class=\"k\">&gt;&gt;&gt;=</span> y<span class=\"k\">;</span>","x <span class=\"k\">&amp;=</span> y<span class=\"k\">;</span>","x <span class=\"k\">|=</span> y<span class=\"k\">;</span>","x <span class=\"k\">^=</span> y<span class=\"k\">;</span>","x <span class=\"k\">/=</span> y<span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-colon.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-colon.js
new file mode 100644
index 0000000..c99da2b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-colon.js
@@ -0,0 +1,24 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-colon.js']) {
+ _$jscoverage['javascript-colon.js'] = [];
+ _$jscoverage['javascript-colon.js'][1] = 0;
+ _$jscoverage['javascript-colon.js'][4] = 0;
+ _$jscoverage['javascript-colon.js'][5] = 0;
+ _$jscoverage['javascript-colon.js'][6] = 0;
+}
+_$jscoverage['javascript-colon.js'][1]++;
+x:
+y = 0;
+_$jscoverage['javascript-colon.js'][4]++;
+y:
+{
+ _$jscoverage['javascript-colon.js'][5]++;
+ let y = 1;
+ _$jscoverage['javascript-colon.js'][6]++;
+ print(y);
+}
+_$jscoverage['javascript-colon.js'].source = ["x<span class=\"k\">:</span>"," y <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","","y<span class=\"k\">:</span> <span class=\"k\">{</span>"," <span class=\"k\">let</span> y <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>"," print<span class=\"k\">(</span>y<span class=\"k\">);</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-comma.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-comma.js
new file mode 100644
index 0000000..5912427
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-comma.js
@@ -0,0 +1,12 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-comma.js']) {
+ _$jscoverage['javascript-comma.js'] = [];
+ _$jscoverage['javascript-comma.js'][1] = 0;
+}
+_$jscoverage['javascript-comma.js'][1]++;
+x = y, y = x;
+_$jscoverage['javascript-comma.js'].source = ["x <span class=\"k\">=</span> y<span class=\"k\">,</span> y <span class=\"k\">=</span> x<span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-cr.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-cr.js
new file mode 100644
index 0000000..38d52fb
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-cr.js
@@ -0,0 +1,12 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-cr.js']) {
+ _$jscoverage['javascript-cr.js'] = [];
+ _$jscoverage['javascript-cr.js'][4] = 0;
+}
+_$jscoverage['javascript-cr.js'][4]++;
+var x = 1;
+_$jscoverage['javascript-cr.js'].source = ["<span class=\"c\">/*</span>","<span class=\"c\">This file has CR line endings.</span>","<span class=\"c\">*/</span>","<span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-crlf.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-crlf.js
new file mode 100644
index 0000000..82a2d12
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-crlf.js
@@ -0,0 +1,12 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-crlf.js']) {
+ _$jscoverage['javascript-crlf.js'] = [];
+ _$jscoverage['javascript-crlf.js'][4] = 0;
+}
+_$jscoverage['javascript-crlf.js'][4]++;
+var x = 1;
+_$jscoverage['javascript-crlf.js'].source = ["<span class=\"c\">/*</span>","<span class=\"c\">This file has CRLF line endings.</span>","<span class=\"c\">*/</span>","<span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-debugger.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-debugger.js
new file mode 100644
index 0000000..a78516e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-debugger.js
@@ -0,0 +1,21 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-debugger.js']) {
+ _$jscoverage['javascript-debugger.js'] = [];
+ _$jscoverage['javascript-debugger.js'][1] = 0;
+ _$jscoverage['javascript-debugger.js'][2] = 0;
+ _$jscoverage['javascript-debugger.js'][5] = 0;
+}
+_$jscoverage['javascript-debugger.js'][1]++;
+try {
+ _$jscoverage['javascript-debugger.js'][2]++;
+ f();
+}
+catch (e) {
+ _$jscoverage['javascript-debugger.js'][5]++;
+ debugger;
+}
+_$jscoverage['javascript-debugger.js'].source = ["<span class=\"k\">try</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","<span class=\"k\">catch</span> <span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">debugger</span><span class=\"k\">;</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-dec.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-dec.js
new file mode 100644
index 0000000..4ba2323
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-dec.js
@@ -0,0 +1,15 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-dec.js']) {
+ _$jscoverage['javascript-dec.js'] = [];
+ _$jscoverage['javascript-dec.js'][1] = 0;
+ _$jscoverage['javascript-dec.js'][2] = 0;
+}
+_$jscoverage['javascript-dec.js'][1]++;
+x--;
+_$jscoverage['javascript-dec.js'][2]++;
+--x;
+_$jscoverage['javascript-dec.js'].source = ["x<span class=\"k\">--;</span>","<span class=\"k\">--</span>x<span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-delete.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-delete.js
new file mode 100644
index 0000000..bc96a8f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-delete.js
@@ -0,0 +1,12 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-delete.js']) {
+ _$jscoverage['javascript-delete.js'] = [];
+ _$jscoverage['javascript-delete.js'][1] = 0;
+}
+_$jscoverage['javascript-delete.js'][1]++;
+delete x;
+_$jscoverage['javascript-delete.js'].source = ["<span class=\"k\">delete</span> x<span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-destructuring.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-destructuring.js
new file mode 100644
index 0000000..ac3d0eb
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-destructuring.js
@@ -0,0 +1,96 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-destructuring.js']) {
+ _$jscoverage['javascript-destructuring.js'] = [];
+ _$jscoverage['javascript-destructuring.js'][3] = 0;
+ _$jscoverage['javascript-destructuring.js'][5] = 0;
+ _$jscoverage['javascript-destructuring.js'][6] = 0;
+ _$jscoverage['javascript-destructuring.js'][8] = 0;
+ _$jscoverage['javascript-destructuring.js'][10] = 0;
+ _$jscoverage['javascript-destructuring.js'][11] = 0;
+ _$jscoverage['javascript-destructuring.js'][12] = 0;
+ _$jscoverage['javascript-destructuring.js'][15] = 0;
+ _$jscoverage['javascript-destructuring.js'][16] = 0;
+ _$jscoverage['javascript-destructuring.js'][17] = 0;
+ _$jscoverage['javascript-destructuring.js'][20] = 0;
+ _$jscoverage['javascript-destructuring.js'][21] = 0;
+ _$jscoverage['javascript-destructuring.js'][23] = 0;
+ _$jscoverage['javascript-destructuring.js'][24] = 0;
+ _$jscoverage['javascript-destructuring.js'][25] = 0;
+ _$jscoverage['javascript-destructuring.js'][26] = 0;
+ _$jscoverage['javascript-destructuring.js'][27] = 0;
+ _$jscoverage['javascript-destructuring.js'][30] = 0;
+ _$jscoverage['javascript-destructuring.js'][31] = 0;
+ _$jscoverage['javascript-destructuring.js'][32] = 0;
+ _$jscoverage['javascript-destructuring.js'][35] = 0;
+ _$jscoverage['javascript-destructuring.js'][37] = 0;
+ _$jscoverage['javascript-destructuring.js'][38] = 0;
+ _$jscoverage['javascript-destructuring.js'][39] = 0;
+ _$jscoverage['javascript-destructuring.js'][40] = 0;
+ _$jscoverage['javascript-destructuring.js'][41] = 0;
+}
+_$jscoverage['javascript-destructuring.js'][3]++;
+[a, b] = [b, a];
+_$jscoverage['javascript-destructuring.js'][5]++;
+function f() {
+ _$jscoverage['javascript-destructuring.js'][6]++;
+ return [1, 2];
+}
+_$jscoverage['javascript-destructuring.js'][8]++;
+[a, b] = f();
+_$jscoverage['javascript-destructuring.js'][10]++;
+for (let [name, value] in Iterator(obj)) {
+ _$jscoverage['javascript-destructuring.js'][11]++;
+ print(name);
+ _$jscoverage['javascript-destructuring.js'][12]++;
+ print(value);
+}
+_$jscoverage['javascript-destructuring.js'][15]++;
+for each (let {name: n, family: {father: f}} in people) {
+ _$jscoverage['javascript-destructuring.js'][16]++;
+ print(n);
+ _$jscoverage['javascript-destructuring.js'][17]++;
+ print(f);
+}
+_$jscoverage['javascript-destructuring.js'][20]++;
+var [a, , b] = f();
+_$jscoverage['javascript-destructuring.js'][21]++;
+[, , ,] = f();
+_$jscoverage['javascript-destructuring.js'][23]++;
+function g() {
+ _$jscoverage['javascript-destructuring.js'][24]++;
+ var parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url);
+ _$jscoverage['javascript-destructuring.js'][25]++;
+ if (! parsedURL) {
+ _$jscoverage['javascript-destructuring.js'][26]++;
+ return null;
+ }
+ _$jscoverage['javascript-destructuring.js'][27]++;
+ var [, protocol, fullhost, fullpath] = parsedURL;
+}
+_$jscoverage['javascript-destructuring.js'][30]++;
+function h(a, [b, c], {foo: d, "bar": e}) {
+ _$jscoverage['javascript-destructuring.js'][31]++;
+ f();
+ _$jscoverage['javascript-destructuring.js'][32]++;
+ g();
+}
+_$jscoverage['javascript-destructuring.js'][35]++;
+x = (function ([a, b]) {
+ return a + b;
+});
+_$jscoverage['javascript-destructuring.js'][37]++;
+({x: x0, y: y0}) = point;
+_$jscoverage['javascript-destructuring.js'][38]++;
+var {x: x0, y: y0} = point;
+_$jscoverage['javascript-destructuring.js'][39]++;
+let ({x: x0, y: y0} = point) {
+ _$jscoverage['javascript-destructuring.js'][40]++;
+ print(x0);
+ _$jscoverage['javascript-destructuring.js'][41]++;
+ print(y0);
+}
+_$jscoverage['javascript-destructuring.js'].source = ["<span class=\"c\">// https://developer.mozilla.org/en/New_in_JavaScript_1.7</span>","","<span class=\"k\">[</span>a<span class=\"k\">,</span> b<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"k\">[</span>b<span class=\"k\">,</span> a<span class=\"k\">];</span>","","<span class=\"k\">function</span> f<span class=\"k\">()</span> <span class=\"k\">{</span>"," <span class=\"k\">return</span> <span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">,</span> <span class=\"s\">2</span><span class=\"k\">];</span>","<span class=\"k\">}</span>","<span class=\"k\">[</span>a<span class=\"k\">,</span> b<span class=\"k\">]</span> <span class=\"k\">=</span> f<span class=\"k\">();</span>","","<span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">let</span> <span class=\"k\">[</span>name<span class=\"k\">,</span> value<span class=\"k\">]</span> <span class=\"k\">in</span> Iterator<span class=\"k\">(</span>obj<span class=\"k\">))</span> <span class=\"k\">{</span>"," print<span class=\"k\">(</span>name<span class=\"k\">);</span>"," print<span class=\"k\">(</span>value<span class=\"k\">);</span>","<span class=\"k\">}</span>","","<span class=\"k\">for</span> each <span class=\"k\">(</span><span class=\"k\">let</span> <span class=\"k\">{</span>name<span class=\"k\">:</span> n<span class=\"k\">,</span> family<span class=\"k\">:</span> <span class=\"k\">{</span> father<span class=\"k\">:</span> f <span class=\"k\">}</span> <span class=\"k\">}</span> <span class=\"k\">in</span> people<span class=\"k\">)</span> <span class=\"k\">{</span>"," print<span class=\"k\">(</span>n<span class=\"k\">);</span>"," print<span class=\"k\">(</span>f<span class=\"k\">);</span>","<span class=\"k\">}</span>","","<span class=\"k\">var</span> <span class=\"k\">[</span>a<span class=\"k\">,</span> <span class=\"k\">,</span> b<span class=\"k\">]</span> <span class=\"k\">=</span> f<span class=\"k\">();</span>","<span class=\"k\">[,,,]</span> <span class=\"k\">=</span> f<span class=\"k\">();</span>","","<span class=\"k\">function</span> g<span class=\"k\">()</span> <span class=\"k\">{</span>"," <span class=\"k\">var</span> parsedURL <span class=\"k\">=</span> <span class=\"s\">/^(\\w+)\\:\\/\\/([^\\/]+)\\/(.*)$/</span><span class=\"k\">.</span>exec<span class=\"k\">(</span>url<span class=\"k\">);</span>"," <span class=\"k\">if</span> <span class=\"k\">(!</span>parsedURL<span class=\"k\">)</span>"," <span class=\"k\">return</span> <span class=\"k\">null</span><span class=\"k\">;</span>"," <span class=\"k\">var</span> <span class=\"k\">[,</span> protocol<span class=\"k\">,</span> fullhost<span class=\"k\">,</span> fullpath<span class=\"k\">]</span> <span class=\"k\">=</span> parsedURL<span class=\"k\">;</span>","<span class=\"k\">}</span>","","<span class=\"k\">function</span> h<span class=\"k\">(</span>a<span class=\"k\">,</span> <span class=\"k\">[</span>b<span class=\"k\">,</span> c<span class=\"k\">],</span> <span class=\"k\">{</span>foo<span class=\"k\">:</span> d<span class=\"k\">,</span> <span class=\"s\">'bar'</span><span class=\"k\">:</span> e<span class=\"k\">}</span><span class=\"k\">)</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>"," g<span class=\"k\">();</span>","<span class=\"k\">}</span>","","x <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">([</span>a<span class=\"k\">,</span> b<span class=\"k\">])</span> a <span class=\"k\">+</span> b<span class=\"k\">;</span>","","<span class=\"k\">(</span><span class=\"k\">{</span>x<span class=\"k\">:</span> x0<span class=\"k\">,</span> y<span class=\"k\">:</span> y0<span class=\"k\">}</span><span class=\"k\">)</span> <span class=\"k\">=</span> point<span class=\"k\">;</span>","<span class=\"k\">var</span> <span class=\"k\">{</span>x<span class=\"k\">:</span> x0<span class=\"k\">,</span> y<span class=\"k\">:</span> y0<span class=\"k\">}</span> <span class=\"k\">=</span> point<span class=\"k\">;</span>","<span class=\"k\">let</span> <span class=\"k\">(</span><span class=\"k\">{</span>x<span class=\"k\">:</span> x0<span class=\"k\">,</span> y<span class=\"k\">:</span> y0<span class=\"k\">}</span> <span class=\"k\">=</span> point<span class=\"k\">)</span> <span class=\"k\">{</span>"," print<span class=\"k\">(</span>x0<span class=\"k\">);</span>"," print<span class=\"k\">(</span>y0<span class=\"k\">);</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-do.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-do.js
new file mode 100644
index 0000000..23d4557
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-do.js
@@ -0,0 +1,28 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-do.js']) {
+ _$jscoverage['javascript-do.js'] = [];
+ _$jscoverage['javascript-do.js'][1] = 0;
+ _$jscoverage['javascript-do.js'][3] = 0;
+ _$jscoverage['javascript-do.js'][4] = 0;
+ _$jscoverage['javascript-do.js'][8] = 0;
+ _$jscoverage['javascript-do.js'][9] = 0;
+}
+_$jscoverage['javascript-do.js'][1]++;
+var x;
+_$jscoverage['javascript-do.js'][3]++;
+do {
+ _$jscoverage['javascript-do.js'][4]++;
+ x = false;
+}
+while (x);
+_$jscoverage['javascript-do.js'][8]++;
+do {
+ _$jscoverage['javascript-do.js'][9]++;
+ x = false;
+}
+while (x);
+_$jscoverage['javascript-do.js'].source = ["<span class=\"k\">var</span> x<span class=\"k\">;</span>","","<span class=\"k\">do</span> <span class=\"k\">{</span>"," x <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","<span class=\"k\">while</span> <span class=\"k\">(</span>x<span class=\"k\">);</span>","","<span class=\"k\">do</span>"," x <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","<span class=\"k\">while</span> <span class=\"k\">(</span>x<span class=\"k\">);</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-dot.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-dot.js
new file mode 100644
index 0000000..ca91faa
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-dot.js
@@ -0,0 +1,30 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-dot.js']) {
+ _$jscoverage['javascript-dot.js'] = [];
+ _$jscoverage['javascript-dot.js'][1] = 0;
+ _$jscoverage['javascript-dot.js'][2] = 0;
+ _$jscoverage['javascript-dot.js'][3] = 0;
+ _$jscoverage['javascript-dot.js'][4] = 0;
+ _$jscoverage['javascript-dot.js'][5] = 0;
+ _$jscoverage['javascript-dot.js'][7] = 0;
+ _$jscoverage['javascript-dot.js'][8] = 0;
+}
+_$jscoverage['javascript-dot.js'][1]++;
+x.y = y.x;
+_$jscoverage['javascript-dot.js'][2]++;
+x.y = y.x;
+_$jscoverage['javascript-dot.js'][3]++;
+x[y] = y[x];
+_$jscoverage['javascript-dot.js'][4]++;
+x["2y"] = y["var"];
+_$jscoverage['javascript-dot.js'][5]++;
+x[""] = y[""];
+_$jscoverage['javascript-dot.js'][7]++;
+print((123).toString());
+_$jscoverage['javascript-dot.js'][8]++;
+({}).toString();
+_$jscoverage['javascript-dot.js'].source = ["x<span class=\"k\">.</span>y <span class=\"k\">=</span> y<span class=\"k\">.</span>x<span class=\"k\">;</span>","x<span class=\"k\">[</span><span class=\"s\">\"y\"</span><span class=\"k\">]</span> <span class=\"k\">=</span> y<span class=\"k\">[</span><span class=\"s\">\"x\"</span><span class=\"k\">];</span>","x<span class=\"k\">[</span>y<span class=\"k\">]</span> <span class=\"k\">=</span> y<span class=\"k\">[</span>x<span class=\"k\">];</span>","x<span class=\"k\">[</span><span class=\"s\">'2y'</span><span class=\"k\">]</span> <span class=\"k\">=</span> y<span class=\"k\">[</span><span class=\"s\">'var'</span><span class=\"k\">];</span>","x<span class=\"k\">[</span><span class=\"s\">''</span><span class=\"k\">]</span> <span class=\"k\">=</span> y<span class=\"k\">[</span><span class=\"s\">\"\"</span><span class=\"k\">];</span>","","print<span class=\"k\">(</span><span class=\"s\">123.0</span><span class=\"k\">.</span>toString<span class=\"k\">());</span>","<span class=\"k\">(</span><span class=\"k\">{}</span><span class=\"k\">.</span>toString<span class=\"k\">());</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-empty.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-empty.js
new file mode 100644
index 0000000..646be4b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-empty.js
@@ -0,0 +1,9 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-empty.js']) {
+ _$jscoverage['javascript-empty.js'] = [];
+}
+_$jscoverage['javascript-empty.js'].source = [];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-for.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-for.js
new file mode 100644
index 0000000..07b9fc2
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-for.js
@@ -0,0 +1,51 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-for.js']) {
+ _$jscoverage['javascript-for.js'] = [];
+ _$jscoverage['javascript-for.js'][1] = 0;
+ _$jscoverage['javascript-for.js'][2] = 0;
+ _$jscoverage['javascript-for.js'][5] = 0;
+ _$jscoverage['javascript-for.js'][6] = 0;
+ _$jscoverage['javascript-for.js'][9] = 0;
+ _$jscoverage['javascript-for.js'][10] = 0;
+ _$jscoverage['javascript-for.js'][13] = 0;
+ _$jscoverage['javascript-for.js'][14] = 0;
+ _$jscoverage['javascript-for.js'][17] = 0;
+ _$jscoverage['javascript-for.js'][18] = 0;
+ _$jscoverage['javascript-for.js'][20] = 0;
+ _$jscoverage['javascript-for.js'][21] = 0;
+}
+_$jscoverage['javascript-for.js'][1]++;
+for (i in x) {
+ _$jscoverage['javascript-for.js'][2]++;
+ x();
+}
+_$jscoverage['javascript-for.js'][5]++;
+for (var i in x) {
+ _$jscoverage['javascript-for.js'][6]++;
+ x();
+}
+_$jscoverage['javascript-for.js'][9]++;
+for (i = 0; i < x; i++) {
+ _$jscoverage['javascript-for.js'][10]++;
+ x();
+}
+_$jscoverage['javascript-for.js'][13]++;
+for (var j = 0; j < x; j++) {
+ _$jscoverage['javascript-for.js'][14]++;
+ x();
+}
+_$jscoverage['javascript-for.js'][17]++;
+for (i in x) {
+ _$jscoverage['javascript-for.js'][18]++;
+ x();
+}
+_$jscoverage['javascript-for.js'][20]++;
+for (i.value in x) {
+ _$jscoverage['javascript-for.js'][21]++;
+ x();
+}
+_$jscoverage['javascript-for.js'].source = ["<span class=\"k\">for</span> <span class=\"k\">(</span>i <span class=\"k\">in</span> x<span class=\"k\">)</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i <span class=\"k\">in</span> x<span class=\"k\">)</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">for</span> <span class=\"k\">(</span>i <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> x<span class=\"k\">;</span> i<span class=\"k\">++)</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> j <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span> j <span class=\"k\">&lt;</span> x<span class=\"k\">;</span> j<span class=\"k\">++)</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">for</span> <span class=\"k\">(</span>i <span class=\"k\">in</span> x<span class=\"k\">)</span>"," x<span class=\"k\">();</span>","","<span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">.</span>value <span class=\"k\">in</span> x<span class=\"k\">)</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-foreach.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-foreach.js
new file mode 100644
index 0000000..2c63a81
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-foreach.js
@@ -0,0 +1,16 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-foreach.js']) {
+ _$jscoverage['javascript-foreach.js'] = [];
+ _$jscoverage['javascript-foreach.js'][6] = 0;
+ _$jscoverage['javascript-foreach.js'][7] = 0;
+}
+_$jscoverage['javascript-foreach.js'][6]++;
+for each (var item in obj) {
+ _$jscoverage['javascript-foreach.js'][7]++;
+ sum += item;
+}
+_$jscoverage['javascript-foreach.js'].source = ["<span class=\"c\">/*</span>","<span class=\"c\">https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Object_Manipulation_Statements</span>","<span class=\"c\">https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/for_each...in</span>","<span class=\"c\">*/</span>","","<span class=\"k\">for</span> each <span class=\"k\">(</span><span class=\"k\">var</span> item <span class=\"k\">in</span> obj<span class=\"k\">)</span> <span class=\"k\">{</span>"," sum <span class=\"k\">+=</span> item<span class=\"k\">;</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-function.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-function.js
new file mode 100644
index 0000000..5adada1
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-function.js
@@ -0,0 +1,79 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-function.js']) {
+ _$jscoverage['javascript-function.js'] = [];
+ _$jscoverage['javascript-function.js'][1] = 0;
+ _$jscoverage['javascript-function.js'][3] = 0;
+ _$jscoverage['javascript-function.js'][4] = 0;
+ _$jscoverage['javascript-function.js'][7] = 0;
+ _$jscoverage['javascript-function.js'][8] = 0;
+ _$jscoverage['javascript-function.js'][9] = 0;
+ _$jscoverage['javascript-function.js'][12] = 0;
+ _$jscoverage['javascript-function.js'][13] = 0;
+ _$jscoverage['javascript-function.js'][16] = 0;
+ _$jscoverage['javascript-function.js'][17] = 0;
+ _$jscoverage['javascript-function.js'][20] = 0;
+ _$jscoverage['javascript-function.js'][21] = 0;
+ _$jscoverage['javascript-function.js'][24] = 0;
+ _$jscoverage['javascript-function.js'][25] = 0;
+ _$jscoverage['javascript-function.js'][28] = 0;
+ _$jscoverage['javascript-function.js'][29] = 0;
+ _$jscoverage['javascript-function.js'][32] = 0;
+ _$jscoverage['javascript-function.js'][33] = 0;
+ _$jscoverage['javascript-function.js'][36] = 0;
+ _$jscoverage['javascript-function.js'][37] = 0;
+}
+_$jscoverage['javascript-function.js'][1]++;
+function x() {
+}
+_$jscoverage['javascript-function.js'][3]++;
+function x() {
+ _$jscoverage['javascript-function.js'][4]++;
+ ;
+}
+_$jscoverage['javascript-function.js'][7]++;
+function x() {
+ _$jscoverage['javascript-function.js'][8]++;
+ x();
+ _$jscoverage['javascript-function.js'][9]++;
+ return "x";
+}
+_$jscoverage['javascript-function.js'][12]++;
+function x(a) {
+ _$jscoverage['javascript-function.js'][13]++;
+ x();
+}
+_$jscoverage['javascript-function.js'][16]++;
+function x(a, b) {
+ _$jscoverage['javascript-function.js'][17]++;
+ x();
+}
+_$jscoverage['javascript-function.js'][20]++;
+x = (function () {
+ _$jscoverage['javascript-function.js'][21]++;
+ x();
+});
+_$jscoverage['javascript-function.js'][24]++;
+(function () {
+ _$jscoverage['javascript-function.js'][25]++;
+ print("x");
+})();
+_$jscoverage['javascript-function.js'][28]++;
+(function (a) {
+ _$jscoverage['javascript-function.js'][29]++;
+ print("x");
+})(1);
+_$jscoverage['javascript-function.js'][32]++;
+(function (a, b) {
+ _$jscoverage['javascript-function.js'][33]++;
+ print("x");
+})(1, 2);
+_$jscoverage['javascript-function.js'][36]++;
+(function () {
+ _$jscoverage['javascript-function.js'][37]++;
+ print("x");
+}).call(window);
+_$jscoverage['javascript-function.js'].source = ["<span class=\"k\">function</span> x<span class=\"k\">()</span> <span class=\"k\">{}</span>","","<span class=\"k\">function</span> x<span class=\"k\">()</span> <span class=\"k\">{</span>"," <span class=\"k\">;</span>","<span class=\"k\">}</span>","","<span class=\"k\">function</span> x<span class=\"k\">()</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>"," <span class=\"k\">return</span> <span class=\"s\">'x'</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","","<span class=\"k\">function</span> x<span class=\"k\">(</span>a<span class=\"k\">)</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">function</span> x<span class=\"k\">(</span>a<span class=\"k\">,</span> b<span class=\"k\">)</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>","<span class=\"k\">}</span>","","x <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"k\">(</span><span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"k\">{</span>"," print<span class=\"k\">(</span><span class=\"s\">'x'</span><span class=\"k\">);</span>","<span class=\"k\">}</span><span class=\"k\">)();</span>","","<span class=\"k\">(</span><span class=\"k\">function</span> <span class=\"k\">(</span>a<span class=\"k\">)</span> <span class=\"k\">{</span>"," print<span class=\"k\">(</span><span class=\"s\">'x'</span><span class=\"k\">);</span>","<span class=\"k\">}</span><span class=\"k\">)(</span><span class=\"s\">1</span><span class=\"k\">);</span>","","<span class=\"k\">(</span><span class=\"k\">function</span> <span class=\"k\">(</span>a<span class=\"k\">,</span> b<span class=\"k\">)</span> <span class=\"k\">{</span>"," print<span class=\"k\">(</span><span class=\"s\">'x'</span><span class=\"k\">);</span>","<span class=\"k\">}</span><span class=\"k\">)(</span><span class=\"s\">1</span><span class=\"k\">,</span> <span class=\"s\">2</span><span class=\"k\">);</span>","","<span class=\"k\">(</span><span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"k\">{</span>"," print<span class=\"k\">(</span><span class=\"s\">'x'</span><span class=\"k\">);</span>","<span class=\"k\">}</span><span class=\"k\">).</span>call<span class=\"k\">(</span>window<span class=\"k\">);</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-generator-expression.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-generator-expression.js
new file mode 100644
index 0000000..6ef1f11
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-generator-expression.js
@@ -0,0 +1,45 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-generator-expression.js']) {
+ _$jscoverage['javascript-generator-expression.js'] = [];
+ _$jscoverage['javascript-generator-expression.js'][3] = 0;
+ _$jscoverage['javascript-generator-expression.js'][4] = 0;
+ _$jscoverage['javascript-generator-expression.js'][5] = 0;
+ _$jscoverage['javascript-generator-expression.js'][6] = 0;
+ _$jscoverage['javascript-generator-expression.js'][9] = 0;
+ _$jscoverage['javascript-generator-expression.js'][12] = 0;
+ _$jscoverage['javascript-generator-expression.js'][13] = 0;
+ _$jscoverage['javascript-generator-expression.js'][14] = 0;
+ _$jscoverage['javascript-generator-expression.js'][16] = 0;
+ _$jscoverage['javascript-generator-expression.js'][18] = 0;
+}
+_$jscoverage['javascript-generator-expression.js'][3]++;
+var it = (i + 3 for (i in someObj));
+_$jscoverage['javascript-generator-expression.js'][4]++;
+try {
+ _$jscoverage['javascript-generator-expression.js'][5]++;
+ while (true) {
+ _$jscoverage['javascript-generator-expression.js'][6]++;
+ document.write(it.next() + "<br>\n");
+}
+}
+catch (err if err instanceof StopIteration) {
+ _$jscoverage['javascript-generator-expression.js'][9]++;
+ document.write("End of record.<br>\n");
+}
+_$jscoverage['javascript-generator-expression.js'][12]++;
+function handleResults(results) {
+ _$jscoverage['javascript-generator-expression.js'][13]++;
+ for (let i in results) {
+ _$jscoverage['javascript-generator-expression.js'][14]++;
+ ;
+}
+}
+_$jscoverage['javascript-generator-expression.js'][16]++;
+handleResults((i for (i in obj) if (i > 3)));
+_$jscoverage['javascript-generator-expression.js'][18]++;
+it = (1 for (a in x) for (b in y));
+_$jscoverage['javascript-generator-expression.js'].source = ["<span class=\"c\">// https://developer.mozilla.org/en/New_in_JavaScript_1.8</span>","","<span class=\"k\">let</span> it <span class=\"k\">=</span> <span class=\"k\">(</span>i <span class=\"k\">+</span> <span class=\"s\">3</span> <span class=\"k\">for</span> <span class=\"k\">(</span>i <span class=\"k\">in</span> someObj<span class=\"k\">));</span>","<span class=\"k\">try</span> <span class=\"k\">{</span>"," <span class=\"k\">while</span> <span class=\"k\">(</span><span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">{</span>"," document<span class=\"k\">.</span>write<span class=\"k\">(</span>it<span class=\"k\">.</span>next<span class=\"k\">()</span> <span class=\"k\">+</span> <span class=\"s\">\"&lt;br&gt;</span><span class=\"t\">\\n</span><span class=\"s\">\"</span><span class=\"k\">);</span>"," <span class=\"k\">}</span>","<span class=\"k\">}</span> <span class=\"k\">catch</span> <span class=\"k\">(</span>err <span class=\"k\">if</span> err <span class=\"k\">instanceof</span> StopIteration<span class=\"k\">)</span> <span class=\"k\">{</span>"," document<span class=\"k\">.</span>write<span class=\"k\">(</span><span class=\"s\">\"End of record.&lt;br&gt;</span><span class=\"t\">\\n</span><span class=\"s\">\"</span><span class=\"k\">);</span>","<span class=\"k\">}</span>","","<span class=\"k\">function</span> handleResults<span class=\"k\">(</span> results <span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">for</span> <span class=\"k\">(</span> <span class=\"k\">let</span> i <span class=\"k\">in</span> results <span class=\"k\">)</span>"," <span class=\"k\">;</span>","<span class=\"k\">}</span>","handleResults<span class=\"k\">(</span> i <span class=\"k\">for</span> <span class=\"k\">(</span> i <span class=\"k\">in</span> obj <span class=\"k\">)</span> <span class=\"k\">if</span> <span class=\"k\">(</span> i <span class=\"k\">&gt;</span> <span class=\"s\">3</span> <span class=\"k\">)</span> <span class=\"k\">);</span>","","it <span class=\"k\">=</span> <span class=\"k\">(</span><span class=\"s\">1</span> <span class=\"k\">for</span><span class=\"k\">(</span>a <span class=\"k\">in</span> x<span class=\"k\">)</span> <span class=\"k\">for</span><span class=\"k\">(</span>b <span class=\"k\">in</span> y<span class=\"k\">));</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-generator.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-generator.js
new file mode 100644
index 0000000..fa9cece
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-generator.js
@@ -0,0 +1,32 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-generator.js']) {
+ _$jscoverage['javascript-generator.js'] = [];
+ _$jscoverage['javascript-generator.js'][3] = 0;
+ _$jscoverage['javascript-generator.js'][4] = 0;
+ _$jscoverage['javascript-generator.js'][5] = 0;
+ _$jscoverage['javascript-generator.js'][6] = 0;
+ _$jscoverage['javascript-generator.js'][7] = 0;
+ _$jscoverage['javascript-generator.js'][8] = 0;
+ _$jscoverage['javascript-generator.js'][9] = 0;
+}
+_$jscoverage['javascript-generator.js'][3]++;
+function fib() {
+ _$jscoverage['javascript-generator.js'][4]++;
+ var i = 0, j = 1;
+ _$jscoverage['javascript-generator.js'][5]++;
+ while (true) {
+ _$jscoverage['javascript-generator.js'][6]++;
+ yield i;
+ _$jscoverage['javascript-generator.js'][7]++;
+ var t = i;
+ _$jscoverage['javascript-generator.js'][8]++;
+ i = j;
+ _$jscoverage['javascript-generator.js'][9]++;
+ j += t;
+}
+}
+_$jscoverage['javascript-generator.js'].source = ["<span class=\"c\">// https://developer.mozilla.org/en/New_in_JavaScript_1.7</span>","","<span class=\"k\">function</span> fib<span class=\"k\">()</span> <span class=\"k\">{</span>"," <span class=\"k\">var</span> i <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">,</span> j <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>"," <span class=\"k\">while</span> <span class=\"k\">(</span><span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">yield</span> i<span class=\"k\">;</span>"," <span class=\"k\">var</span> t <span class=\"k\">=</span> i<span class=\"k\">;</span>"," i <span class=\"k\">=</span> j<span class=\"k\">;</span>"," j <span class=\"k\">+=</span> t<span class=\"k\">;</span>"," <span class=\"k\">}</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-getter-setter.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-getter-setter.js
new file mode 100644
index 0000000..cffc83f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-getter-setter.js
@@ -0,0 +1,31 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-getter-setter.js']) {
+ _$jscoverage['javascript-getter-setter.js'] = [];
+ _$jscoverage['javascript-getter-setter.js'][1] = 0;
+ _$jscoverage['javascript-getter-setter.js'][4] = 0;
+ _$jscoverage['javascript-getter-setter.js'][7] = 0;
+ _$jscoverage['javascript-getter-setter.js'][11] = 0;
+ _$jscoverage['javascript-getter-setter.js'][14] = 0;
+ _$jscoverage['javascript-getter-setter.js'][17] = 0;
+}
+_$jscoverage['javascript-getter-setter.js'][1]++;
+var o = {_x: 123, get x () {
+ _$jscoverage['javascript-getter-setter.js'][4]++;
+ return this._x;
+}, set x (value) {
+ _$jscoverage['javascript-getter-setter.js'][7]++;
+ this._x = value;
+}};
+_$jscoverage['javascript-getter-setter.js'][11]++;
+o = {_x: 123, get x get_x() {
+ _$jscoverage['javascript-getter-setter.js'][14]++;
+ return this._x;
+}, set x set_x(value) {
+ _$jscoverage['javascript-getter-setter.js'][17]++;
+ this._x = value;
+}};
+_$jscoverage['javascript-getter-setter.js'].source = ["<span class=\"k\">var</span> o <span class=\"k\">=</span> <span class=\"k\">{</span>"," _x<span class=\"k\">:</span> <span class=\"s\">123</span><span class=\"k\">,</span>"," get x<span class=\"k\">()</span> <span class=\"k\">{</span>"," <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>_x<span class=\"k\">;</span>"," <span class=\"k\">}</span><span class=\"k\">,</span>"," set x<span class=\"k\">(</span>value<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">this</span><span class=\"k\">.</span>_x <span class=\"k\">=</span> value<span class=\"k\">;</span>"," <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","o <span class=\"k\">=</span> <span class=\"k\">{</span>"," _x<span class=\"k\">:</span> <span class=\"s\">123</span><span class=\"k\">,</span>"," get x get_x<span class=\"k\">()</span> <span class=\"k\">{</span>"," <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>_x<span class=\"k\">;</span>"," <span class=\"k\">}</span><span class=\"k\">,</span>"," set x set_x<span class=\"k\">(</span>value<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">this</span><span class=\"k\">.</span>_x <span class=\"k\">=</span> value<span class=\"k\">;</span>"," <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-hook.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-hook.js
new file mode 100644
index 0000000..08f33d0
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-hook.js
@@ -0,0 +1,15 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-hook.js']) {
+ _$jscoverage['javascript-hook.js'] = [];
+ _$jscoverage['javascript-hook.js'][1] = 0;
+ _$jscoverage['javascript-hook.js'][2] = 0;
+}
+_$jscoverage['javascript-hook.js'][1]++;
+var x = 1;
+_$jscoverage['javascript-hook.js'][2]++;
+var y = x === 1? "x": "y";
+_$jscoverage['javascript-hook.js'].source = ["<span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>","<span class=\"k\">var</span> y <span class=\"k\">=</span> x <span class=\"k\">===</span> <span class=\"s\">1</span><span class=\"k\">?</span> <span class=\"s\">\"x\"</span><span class=\"k\">:</span> <span class=\"s\">\"y\"</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-if.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-if.js
new file mode 100644
index 0000000..8559e59
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-if.js
@@ -0,0 +1,71 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-if.js']) {
+ _$jscoverage['javascript-if.js'] = [];
+ _$jscoverage['javascript-if.js'][1] = 0;
+ _$jscoverage['javascript-if.js'][3] = 0;
+ _$jscoverage['javascript-if.js'][4] = 0;
+ _$jscoverage['javascript-if.js'][6] = 0;
+ _$jscoverage['javascript-if.js'][7] = 0;
+ _$jscoverage['javascript-if.js'][10] = 0;
+ _$jscoverage['javascript-if.js'][11] = 0;
+ _$jscoverage['javascript-if.js'][13] = 0;
+ _$jscoverage['javascript-if.js'][15] = 0;
+ _$jscoverage['javascript-if.js'][16] = 0;
+ _$jscoverage['javascript-if.js'][19] = 0;
+ _$jscoverage['javascript-if.js'][22] = 0;
+ _$jscoverage['javascript-if.js'][23] = 0;
+ _$jscoverage['javascript-if.js'][25] = 0;
+ _$jscoverage['javascript-if.js'][26] = 0;
+ _$jscoverage['javascript-if.js'][29] = 0;
+}
+_$jscoverage['javascript-if.js'][1]++;
+var x = 0;
+_$jscoverage['javascript-if.js'][3]++;
+if (x) {
+ _$jscoverage['javascript-if.js'][4]++;
+ x = 0;
+}
+_$jscoverage['javascript-if.js'][6]++;
+if (x) {
+ _$jscoverage['javascript-if.js'][7]++;
+ x = 0;
+}
+_$jscoverage['javascript-if.js'][10]++;
+if (x) {
+ _$jscoverage['javascript-if.js'][11]++;
+ x = 0;
+}
+else {
+ _$jscoverage['javascript-if.js'][13]++;
+ x = 0;
+}
+_$jscoverage['javascript-if.js'][15]++;
+if (x) {
+ _$jscoverage['javascript-if.js'][16]++;
+ x = 0;
+}
+else {
+ _$jscoverage['javascript-if.js'][19]++;
+ x = 0;
+}
+_$jscoverage['javascript-if.js'][22]++;
+if (x) {
+ _$jscoverage['javascript-if.js'][23]++;
+ x = 0;
+}
+else {
+ _$jscoverage['javascript-if.js'][25]++;
+ if (x) {
+ _$jscoverage['javascript-if.js'][26]++;
+ x = 0;
+ }
+ else {
+ _$jscoverage['javascript-if.js'][29]++;
+ x = 0;
+ }
+}
+_$jscoverage['javascript-if.js'].source = ["<span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","","<span class=\"k\">if</span> <span class=\"k\">(</span>x<span class=\"k\">)</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","","<span class=\"k\">if</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","","<span class=\"k\">if</span> <span class=\"k\">(</span>x<span class=\"k\">)</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","<span class=\"k\">else</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","","<span class=\"k\">if</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","<span class=\"k\">else</span> <span class=\"k\">{</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","","<span class=\"k\">if</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","<span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","<span class=\"k\">else</span> <span class=\"k\">{</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-in.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-in.js
new file mode 100644
index 0000000..5f6b35a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-in.js
@@ -0,0 +1,19 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-in.js']) {
+ _$jscoverage['javascript-in.js'] = [];
+ _$jscoverage['javascript-in.js'][1] = 0;
+ _$jscoverage['javascript-in.js'][2] = 0;
+ _$jscoverage['javascript-in.js'][3] = 0;
+}
+_$jscoverage['javascript-in.js'][1]++;
+var x = {};
+_$jscoverage['javascript-in.js'][2]++;
+if ("a" in x) {
+ _$jscoverage['javascript-in.js'][3]++;
+ x = null;
+}
+_$jscoverage['javascript-in.js'].source = ["<span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","<span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">'a'</span> <span class=\"k\">in</span> x<span class=\"k\">)</span> <span class=\"k\">{</span>"," x <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-inc.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-inc.js
new file mode 100644
index 0000000..7c1730f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-inc.js
@@ -0,0 +1,15 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-inc.js']) {
+ _$jscoverage['javascript-inc.js'] = [];
+ _$jscoverage['javascript-inc.js'][1] = 0;
+ _$jscoverage['javascript-inc.js'][2] = 0;
+}
+_$jscoverage['javascript-inc.js'][1]++;
+x++;
+_$jscoverage['javascript-inc.js'][2]++;
+++x;
+_$jscoverage['javascript-inc.js'].source = ["x<span class=\"k\">++;</span>","<span class=\"k\">++</span>x<span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-iso-8859-1.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-iso-8859-1.js
new file mode 100644
index 0000000..e4650a9
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-iso-8859-1.js
@@ -0,0 +1,15 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-iso-8859-1.js']) {
+ _$jscoverage['javascript-iso-8859-1.js'] = [];
+ _$jscoverage['javascript-iso-8859-1.js'][1] = 0;
+ _$jscoverage['javascript-iso-8859-1.js'][2] = 0;
+}
+_$jscoverage['javascript-iso-8859-1.js'][1]++;
+var s = "e\u00e8\u00e9\u00ea";
+_$jscoverage['javascript-iso-8859-1.js'][2]++;
+var r = /e\u00e8\u00e9\u00ea/;
+_$jscoverage['javascript-iso-8859-1.js'].source = ["<span class=\"k\">var</span> s <span class=\"k\">=</span> <span class=\"s\">'e&#232;&#233;&#234;'</span><span class=\"k\">;</span>","<span class=\"k\">var</span> r <span class=\"k\">=</span> <span class=\"s\">/e&#232;&#233;&#234;/</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-lambda.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-lambda.js
new file mode 100644
index 0000000..9681cd9
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-lambda.js
@@ -0,0 +1,14 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-lambda.js']) {
+ _$jscoverage['javascript-lambda.js'] = [];
+ _$jscoverage['javascript-lambda.js'][3] = 0;
+}
+_$jscoverage['javascript-lambda.js'][3]++;
+var square = (function (x) {
+ return x * x;
+});
+_$jscoverage['javascript-lambda.js'].source = ["<span class=\"c\">// https://developer.mozilla.org/en/New_in_JavaScript_1.8</span>","","<span class=\"k\">var</span> square <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>x<span class=\"k\">)</span> x <span class=\"k\">*</span> x<span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-let.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-let.js
new file mode 100644
index 0000000..b726ff7
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-let.js
@@ -0,0 +1,148 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-let.js']) {
+ _$jscoverage['javascript-let.js'] = [];
+ _$jscoverage['javascript-let.js'][5] = 0;
+ _$jscoverage['javascript-let.js'][6] = 0;
+ _$jscoverage['javascript-let.js'][11] = 0;
+ _$jscoverage['javascript-let.js'][15] = 0;
+ _$jscoverage['javascript-let.js'][16] = 0;
+ _$jscoverage['javascript-let.js'][17] = 0;
+ _$jscoverage['javascript-let.js'][20] = 0;
+ _$jscoverage['javascript-let.js'][22] = 0;
+ _$jscoverage['javascript-let.js'][23] = 0;
+ _$jscoverage['javascript-let.js'][24] = 0;
+ _$jscoverage['javascript-let.js'][26] = 0;
+ _$jscoverage['javascript-let.js'][27] = 0;
+ _$jscoverage['javascript-let.js'][28] = 0;
+ _$jscoverage['javascript-let.js'][30] = 0;
+ _$jscoverage['javascript-let.js'][33] = 0;
+ _$jscoverage['javascript-let.js'][34] = 0;
+ _$jscoverage['javascript-let.js'][35] = 0;
+ _$jscoverage['javascript-let.js'][36] = 0;
+ _$jscoverage['javascript-let.js'][37] = 0;
+ _$jscoverage['javascript-let.js'][39] = 0;
+ _$jscoverage['javascript-let.js'][42] = 0;
+ _$jscoverage['javascript-let.js'][43] = 0;
+ _$jscoverage['javascript-let.js'][45] = 0;
+ _$jscoverage['javascript-let.js'][46] = 0;
+ _$jscoverage['javascript-let.js'][48] = 0;
+ _$jscoverage['javascript-let.js'][51] = 0;
+ _$jscoverage['javascript-let.js'][52] = 0;
+ _$jscoverage['javascript-let.js'][55] = 0;
+ _$jscoverage['javascript-let.js'][56] = 0;
+ _$jscoverage['javascript-let.js'][60] = 0;
+ _$jscoverage['javascript-let.js'][64] = 0;
+ _$jscoverage['javascript-let.js'][65] = 0;
+ _$jscoverage['javascript-let.js'][69] = 0;
+ _$jscoverage['javascript-let.js'][70] = 0;
+ _$jscoverage['javascript-let.js'][71] = 0;
+ _$jscoverage['javascript-let.js'][74] = 0;
+ _$jscoverage['javascript-let.js'][75] = 0;
+ _$jscoverage['javascript-let.js'][76] = 0;
+ _$jscoverage['javascript-let.js'][78] = 0;
+ _$jscoverage['javascript-let.js'][79] = 0;
+}
+_$jscoverage['javascript-let.js'][5]++;
+let (x = x + 10, y = 12) {
+ _$jscoverage['javascript-let.js'][6]++;
+ print(x + y + "\n");
+}
+_$jscoverage['javascript-let.js'][11]++;
+print(let(x = x + 10, y = 12) x + y + "<br>\n");
+_$jscoverage['javascript-let.js'][15]++;
+if (x > y) {
+ {
+ _$jscoverage['javascript-let.js'][16]++;
+ let gamma = 12.7 + y;
+ _$jscoverage['javascript-let.js'][17]++;
+ i = gamma * x;
+ }
+}
+_$jscoverage['javascript-let.js'][20]++;
+var list = document.getElementById("list");
+_$jscoverage['javascript-let.js'][22]++;
+for (var i = 1; i <= 5; i++) {
+ {
+ _$jscoverage['javascript-let.js'][23]++;
+ var item = document.createElement("LI");
+ _$jscoverage['javascript-let.js'][24]++;
+ item.appendChild(document.createTextNode("Item " + i));
+ _$jscoverage['javascript-let.js'][26]++;
+ let j = i;
+ _$jscoverage['javascript-let.js'][27]++;
+ item.onclick = (function (ev) {
+ _$jscoverage['javascript-let.js'][28]++;
+ alert("Item " + j + " is clicked.");
+});
+ _$jscoverage['javascript-let.js'][30]++;
+ list.appendChild(item);
+ }
+}
+_$jscoverage['javascript-let.js'][33]++;
+function varTest() {
+ _$jscoverage['javascript-let.js'][34]++;
+ var x = 31;
+ _$jscoverage['javascript-let.js'][35]++;
+ if (true) {
+ _$jscoverage['javascript-let.js'][36]++;
+ var x = 71;
+ _$jscoverage['javascript-let.js'][37]++;
+ alert(x);
+ }
+ _$jscoverage['javascript-let.js'][39]++;
+ alert(x);
+}
+_$jscoverage['javascript-let.js'][42]++;
+function letTest() {
+ _$jscoverage['javascript-let.js'][43]++;
+ var x = 31;
+ {
+ _$jscoverage['javascript-let.js'][45]++;
+ let x = 71;
+ _$jscoverage['javascript-let.js'][46]++;
+ alert(x);
+ }
+ _$jscoverage['javascript-let.js'][48]++;
+ alert(x);
+}
+_$jscoverage['javascript-let.js'][51]++;
+function letTests() {
+ _$jscoverage['javascript-let.js'][52]++;
+ var x = 10;
+ _$jscoverage['javascript-let.js'][55]++;
+ let (x = x + 20) {
+ _$jscoverage['javascript-let.js'][56]++;
+ alert(x);
+ }
+ _$jscoverage['javascript-let.js'][60]++;
+ alert(let(x = x + 20) x);
+ {
+ _$jscoverage['javascript-let.js'][64]++;
+ let x = x + 20;
+ _$jscoverage['javascript-let.js'][65]++;
+ alert(x);
+ }
+}
+_$jscoverage['javascript-let.js'][69]++;
+var x = "global";
+_$jscoverage['javascript-let.js'][70]++;
+var x = 42;
+_$jscoverage['javascript-let.js'][71]++;
+document.write(this.x + "<br>\n");
+_$jscoverage['javascript-let.js'][74]++;
+var i = 0;
+_$jscoverage['javascript-let.js'][75]++;
+for (let i = i; i < 10; i++) {
+ _$jscoverage['javascript-let.js'][76]++;
+ document.write(i + "<br>\n");
+}
+_$jscoverage['javascript-let.js'][78]++;
+for (let [name, value] in obj) {
+ _$jscoverage['javascript-let.js'][79]++;
+ document.write("Name: " + name + ", Value: " + value + "<br>\n");
+}
+_$jscoverage['javascript-let.js'].source = ["<span class=\"c\">// https://developer.mozilla.org/en/New_in_JavaScript_1.7</span>","","<span class=\"c\">// let statement</span>","","<span class=\"k\">let</span> <span class=\"k\">(</span>x <span class=\"k\">=</span> x<span class=\"k\">+</span><span class=\"s\">10</span><span class=\"k\">,</span> y <span class=\"k\">=</span> <span class=\"s\">12</span><span class=\"k\">)</span> <span class=\"k\">{</span>"," print<span class=\"k\">(</span>x<span class=\"k\">+</span>y <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\n</span><span class=\"s\">\"</span><span class=\"k\">);</span>","<span class=\"k\">}</span>","","<span class=\"c\">// let expressions</span>","","print<span class=\"k\">(</span> <span class=\"k\">let</span><span class=\"k\">(</span>x <span class=\"k\">=</span> x <span class=\"k\">+</span> <span class=\"s\">10</span><span class=\"k\">,</span> y <span class=\"k\">=</span> <span class=\"s\">12</span><span class=\"k\">)</span> x<span class=\"k\">+</span>y <span class=\"k\">+</span> <span class=\"s\">\"&lt;br&gt;</span><span class=\"t\">\\n</span><span class=\"s\">\"</span><span class=\"k\">);</span>","","<span class=\"c\">// let definitions</span>","","<span class=\"k\">if</span> <span class=\"k\">(</span>x <span class=\"k\">&gt;</span> y<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">let</span> gamma <span class=\"k\">=</span> <span class=\"s\">12.7</span> <span class=\"k\">+</span> y<span class=\"k\">;</span>"," i <span class=\"k\">=</span> gamma <span class=\"k\">*</span> x<span class=\"k\">;</span>","<span class=\"k\">}</span>","","<span class=\"k\">var</span> list <span class=\"k\">=</span> document<span class=\"k\">.</span>getElementById<span class=\"k\">(</span><span class=\"s\">\"list\"</span><span class=\"k\">);</span>","","<span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span> i <span class=\"k\">&lt;=</span> <span class=\"s\">5</span><span class=\"k\">;</span> i<span class=\"k\">++)</span> <span class=\"k\">{</span>"," <span class=\"k\">var</span> item <span class=\"k\">=</span> document<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">\"LI\"</span><span class=\"k\">);</span>"," item<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>document<span class=\"k\">.</span>createTextNode<span class=\"k\">(</span><span class=\"s\">\"Item \"</span> <span class=\"k\">+</span> i<span class=\"k\">));</span>",""," <span class=\"k\">let</span> j <span class=\"k\">=</span> i<span class=\"k\">;</span>"," item<span class=\"k\">.</span>onclick <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>"," alert<span class=\"k\">(</span><span class=\"s\">\"Item \"</span> <span class=\"k\">+</span> j <span class=\"k\">+</span> <span class=\"s\">\" is clicked.\"</span><span class=\"k\">);</span>"," <span class=\"k\">}</span><span class=\"k\">;</span>"," list<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>item<span class=\"k\">);</span>","<span class=\"k\">}</span>","","<span class=\"k\">function</span> varTest<span class=\"k\">()</span> <span class=\"k\">{</span>"," <span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">31</span><span class=\"k\">;</span>"," <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">71</span><span class=\"k\">;</span> <span class=\"c\">// same variable!</span>"," alert<span class=\"k\">(</span>x<span class=\"k\">);</span> <span class=\"c\">// 71</span>"," <span class=\"k\">}</span>"," alert<span class=\"k\">(</span>x<span class=\"k\">);</span> <span class=\"c\">// 71</span>","<span class=\"k\">}</span>","","<span class=\"k\">function</span> letTest<span class=\"k\">()</span> <span class=\"k\">{</span>"," <span class=\"k\">let</span> x <span class=\"k\">=</span> <span class=\"s\">31</span><span class=\"k\">;</span>"," <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">let</span> x <span class=\"k\">=</span> <span class=\"s\">71</span><span class=\"k\">;</span> <span class=\"c\">// different variable</span>"," alert<span class=\"k\">(</span>x<span class=\"k\">);</span> <span class=\"c\">// 71</span>"," <span class=\"k\">}</span>"," alert<span class=\"k\">(</span>x<span class=\"k\">);</span> <span class=\"c\">// 31</span>","<span class=\"k\">}</span>","","<span class=\"k\">function</span> letTests<span class=\"k\">()</span> <span class=\"k\">{</span>"," <span class=\"k\">let</span> x <span class=\"k\">=</span> <span class=\"s\">10</span><span class=\"k\">;</span>",""," <span class=\"c\">// let-statement</span>"," <span class=\"k\">let</span> <span class=\"k\">(</span>x <span class=\"k\">=</span> x <span class=\"k\">+</span> <span class=\"s\">20</span><span class=\"k\">)</span> <span class=\"k\">{</span>"," alert<span class=\"k\">(</span>x<span class=\"k\">);</span> <span class=\"c\">// 30</span>"," <span class=\"k\">}</span>",""," <span class=\"c\">// let-expression</span>"," alert<span class=\"k\">(</span><span class=\"k\">let</span> <span class=\"k\">(</span>x <span class=\"k\">=</span> x <span class=\"k\">+</span> <span class=\"s\">20</span><span class=\"k\">)</span> x<span class=\"k\">);</span> <span class=\"c\">// 30</span>",""," <span class=\"c\">// let-definition</span>"," <span class=\"k\">{</span>"," <span class=\"k\">let</span> x <span class=\"k\">=</span> x <span class=\"k\">+</span> <span class=\"s\">20</span><span class=\"k\">;</span> <span class=\"c\">// x here evaluates to undefined</span>"," alert<span class=\"k\">(</span>x<span class=\"k\">);</span> <span class=\"c\">// undefined + 20 ==&gt; NaN</span>"," <span class=\"k\">}</span>","<span class=\"k\">}</span>","","<span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">'global'</span><span class=\"k\">;</span>","<span class=\"k\">let</span> x <span class=\"k\">=</span> <span class=\"s\">42</span><span class=\"k\">;</span>","document<span class=\"k\">.</span>write<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>x <span class=\"k\">+</span> <span class=\"s\">\"&lt;br&gt;</span><span class=\"t\">\\n</span><span class=\"s\">\"</span><span class=\"k\">);</span>","","<span class=\"c\">// let-scoped variables in for loops</span>","<span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span>","<span class=\"k\">for</span> <span class=\"k\">(</span> <span class=\"k\">let</span> i<span class=\"k\">=</span>i <span class=\"k\">;</span> i <span class=\"k\">&lt;</span> <span class=\"s\">10</span> <span class=\"k\">;</span> i<span class=\"k\">++</span> <span class=\"k\">)</span>"," document<span class=\"k\">.</span>write<span class=\"k\">(</span>i <span class=\"k\">+</span> <span class=\"s\">\"&lt;br&gt;</span><span class=\"t\">\\n</span><span class=\"s\">\"</span><span class=\"k\">);</span>","","<span class=\"k\">for</span> <span class=\"k\">(</span> <span class=\"k\">let</span> <span class=\"k\">[</span>name<span class=\"k\">,</span>value<span class=\"k\">]</span> <span class=\"k\">in</span> obj <span class=\"k\">)</span>"," document<span class=\"k\">.</span>write<span class=\"k\">(</span><span class=\"s\">\"Name: \"</span> <span class=\"k\">+</span> name <span class=\"k\">+</span> <span class=\"s\">\", Value: \"</span> <span class=\"k\">+</span> value <span class=\"k\">+</span> <span class=\"s\">\"&lt;br&gt;</span><span class=\"t\">\\n</span><span class=\"s\">\"</span><span class=\"k\">);</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-lf.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-lf.js
new file mode 100644
index 0000000..c698ede
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-lf.js
@@ -0,0 +1,12 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-lf.js']) {
+ _$jscoverage['javascript-lf.js'] = [];
+ _$jscoverage['javascript-lf.js'][4] = 0;
+}
+_$jscoverage['javascript-lf.js'][4]++;
+var x = 1;
+_$jscoverage['javascript-lf.js'].source = ["<span class=\"c\">/*</span>","<span class=\"c\">This file has LF line endings.</span>","<span class=\"c\">*/</span>","<span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-new.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-new.js
new file mode 100644
index 0000000..417227a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-new.js
@@ -0,0 +1,22 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-new.js']) {
+ _$jscoverage['javascript-new.js'] = [];
+ _$jscoverage['javascript-new.js'][1] = 0;
+ _$jscoverage['javascript-new.js'][2] = 0;
+ _$jscoverage['javascript-new.js'][3] = 0;
+ _$jscoverage['javascript-new.js'][4] = 0;
+}
+_$jscoverage['javascript-new.js'][1]++;
+function X() {
+}
+_$jscoverage['javascript-new.js'][2]++;
+x = new X();
+_$jscoverage['javascript-new.js'][3]++;
+x = new X(1);
+_$jscoverage['javascript-new.js'][4]++;
+x = new X(1, 2);
+_$jscoverage['javascript-new.js'].source = ["<span class=\"k\">function</span> X<span class=\"k\">()</span> <span class=\"k\">{}</span>","x <span class=\"k\">=</span> <span class=\"k\">new</span> X<span class=\"k\">();</span>","x <span class=\"k\">=</span> <span class=\"k\">new</span> X<span class=\"k\">(</span><span class=\"s\">1</span><span class=\"k\">);</span>","x <span class=\"k\">=</span> <span class=\"k\">new</span> X<span class=\"k\">(</span><span class=\"s\">1</span><span class=\"k\">,</span> <span class=\"s\">2</span><span class=\"k\">);</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-number.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-number.js
new file mode 100644
index 0000000..45a9b77
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-number.js
@@ -0,0 +1,57 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-number.js']) {
+ _$jscoverage['javascript-number.js'] = [];
+ _$jscoverage['javascript-number.js'][1] = 0;
+ _$jscoverage['javascript-number.js'][2] = 0;
+ _$jscoverage['javascript-number.js'][3] = 0;
+ _$jscoverage['javascript-number.js'][5] = 0;
+ _$jscoverage['javascript-number.js'][6] = 0;
+ _$jscoverage['javascript-number.js'][8] = 0;
+ _$jscoverage['javascript-number.js'][9] = 0;
+ _$jscoverage['javascript-number.js'][11] = 0;
+ _$jscoverage['javascript-number.js'][12] = 0;
+ _$jscoverage['javascript-number.js'][13] = 0;
+ _$jscoverage['javascript-number.js'][14] = 0;
+ _$jscoverage['javascript-number.js'][15] = 0;
+ _$jscoverage['javascript-number.js'][16] = 0;
+ _$jscoverage['javascript-number.js'][17] = 0;
+ _$jscoverage['javascript-number.js'][18] = 0;
+ _$jscoverage['javascript-number.js'][19] = 0;
+}
+_$jscoverage['javascript-number.js'][1]++;
+x = 1;
+_$jscoverage['javascript-number.js'][2]++;
+y = 2;
+_$jscoverage['javascript-number.js'][3]++;
+z = 10.5;
+_$jscoverage['javascript-number.js'][5]++;
+a = Number.POSITIVE_INFINITY;
+_$jscoverage['javascript-number.js'][6]++;
+a = Number.NEGATIVE_INFINITY;
+_$jscoverage['javascript-number.js'][8]++;
+a = 0;
+_$jscoverage['javascript-number.js'][9]++;
+a = -0;
+_$jscoverage['javascript-number.js'][11]++;
+a = Number.NaN;
+_$jscoverage['javascript-number.js'][12]++;
+a = Number.NaN;
+_$jscoverage['javascript-number.js'][13]++;
+a = 0 / (-0);
+_$jscoverage['javascript-number.js'][14]++;
+a = Number.NaN;
+_$jscoverage['javascript-number.js'][15]++;
+a = (-0) / 0;
+_$jscoverage['javascript-number.js'][16]++;
+a = Number.NaN;
+_$jscoverage['javascript-number.js'][17]++;
+a = -0 / (-0);
+_$jscoverage['javascript-number.js'][18]++;
+a = (-0) / -0;
+_$jscoverage['javascript-number.js'][19]++;
+a = (-0) / (-0);
+_$jscoverage['javascript-number.js'].source = ["x <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>","y <span class=\"k\">=</span> <span class=\"s\">2</span><span class=\"k\">;</span>","z <span class=\"k\">=</span> <span class=\"s\">10.5</span><span class=\"k\">;</span>","","a <span class=\"k\">=</span> <span class=\"s\">1</span> <span class=\"k\">/</span> <span class=\"s\">0</span><span class=\"k\">;</span>","a <span class=\"k\">=</span> <span class=\"k\">-</span><span class=\"s\">1</span> <span class=\"k\">/</span> <span class=\"s\">0</span><span class=\"k\">;</span>","","a <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","a <span class=\"k\">=</span> <span class=\"k\">-</span><span class=\"s\">0</span><span class=\"k\">;</span>","","a <span class=\"k\">=</span> <span class=\"s\">0</span> <span class=\"k\">/</span> <span class=\"s\">0</span><span class=\"k\">;</span>","a <span class=\"k\">=</span> <span class=\"s\">0</span> <span class=\"k\">/</span> <span class=\"k\">-</span><span class=\"s\">0</span><span class=\"k\">;</span>","a <span class=\"k\">=</span> <span class=\"s\">0</span> <span class=\"k\">/</span> <span class=\"k\">(-</span><span class=\"s\">0</span><span class=\"k\">);</span>","a <span class=\"k\">=</span> <span class=\"k\">-</span><span class=\"s\">0</span> <span class=\"k\">/</span> <span class=\"s\">0</span><span class=\"k\">;</span>","a <span class=\"k\">=</span> <span class=\"k\">(-</span><span class=\"s\">0</span><span class=\"k\">)</span> <span class=\"k\">/</span> <span class=\"s\">0</span><span class=\"k\">;</span>","a <span class=\"k\">=</span> <span class=\"k\">-</span><span class=\"s\">0</span> <span class=\"k\">/</span> <span class=\"k\">-</span><span class=\"s\">0</span><span class=\"k\">;</span>","a <span class=\"k\">=</span> <span class=\"k\">-</span><span class=\"s\">0</span> <span class=\"k\">/</span> <span class=\"k\">(-</span><span class=\"s\">0</span><span class=\"k\">);</span>","a <span class=\"k\">=</span> <span class=\"k\">(-</span><span class=\"s\">0</span><span class=\"k\">)</span> <span class=\"k\">/</span> <span class=\"k\">-</span><span class=\"s\">0</span><span class=\"k\">;</span>","a <span class=\"k\">=</span> <span class=\"k\">(-</span><span class=\"s\">0</span><span class=\"k\">)</span> <span class=\"k\">/</span> <span class=\"k\">(-</span><span class=\"s\">0</span><span class=\"k\">);</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-object.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-object.js
new file mode 100644
index 0000000..b3cf03f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-object.js
@@ -0,0 +1,15 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-object.js']) {
+ _$jscoverage['javascript-object.js'] = [];
+ _$jscoverage['javascript-object.js'][1] = 0;
+ _$jscoverage['javascript-object.js'][2] = 0;
+}
+_$jscoverage['javascript-object.js'][1]++;
+x = /x\(\)\\\//i;
+_$jscoverage['javascript-object.js'][2]++;
+y = /\u0001\u002f/gm;
+_$jscoverage['javascript-object.js'].source = ["x <span class=\"k\">=</span> <span class=\"s\">/x\\(\\)\\\\\\//i</span><span class=\"k\">;</span>","y <span class=\"k\">=</span> <span class=\"s\">/\\u0001\\u002f/gm</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-op.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-op.js
new file mode 100644
index 0000000..b6966aa
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-op.js
@@ -0,0 +1,108 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-op.js']) {
+ _$jscoverage['javascript-op.js'] = [];
+ _$jscoverage['javascript-op.js'][1] = 0;
+ _$jscoverage['javascript-op.js'][4] = 0;
+ _$jscoverage['javascript-op.js'][5] = 0;
+ _$jscoverage['javascript-op.js'][8] = 0;
+ _$jscoverage['javascript-op.js'][9] = 0;
+ _$jscoverage['javascript-op.js'][11] = 0;
+ _$jscoverage['javascript-op.js'][13] = 0;
+ _$jscoverage['javascript-op.js'][16] = 0;
+ _$jscoverage['javascript-op.js'][17] = 0;
+ _$jscoverage['javascript-op.js'][20] = 0;
+ _$jscoverage['javascript-op.js'][21] = 0;
+ _$jscoverage['javascript-op.js'][24] = 0;
+ _$jscoverage['javascript-op.js'][25] = 0;
+ _$jscoverage['javascript-op.js'][28] = 0;
+ _$jscoverage['javascript-op.js'][29] = 0;
+ _$jscoverage['javascript-op.js'][30] = 0;
+ _$jscoverage['javascript-op.js'][31] = 0;
+ _$jscoverage['javascript-op.js'][34] = 0;
+ _$jscoverage['javascript-op.js'][35] = 0;
+ _$jscoverage['javascript-op.js'][36] = 0;
+ _$jscoverage['javascript-op.js'][37] = 0;
+ _$jscoverage['javascript-op.js'][40] = 0;
+ _$jscoverage['javascript-op.js'][41] = 0;
+ _$jscoverage['javascript-op.js'][42] = 0;
+ _$jscoverage['javascript-op.js'][45] = 0;
+ _$jscoverage['javascript-op.js'][46] = 0;
+ _$jscoverage['javascript-op.js'][47] = 0;
+ _$jscoverage['javascript-op.js'][48] = 0;
+ _$jscoverage['javascript-op.js'][51] = 0;
+ _$jscoverage['javascript-op.js'][52] = 0;
+ _$jscoverage['javascript-op.js'][53] = 0;
+ _$jscoverage['javascript-op.js'][54] = 0;
+ _$jscoverage['javascript-op.js'][55] = 0;
+}
+_$jscoverage['javascript-op.js'][1]++;
+var a = 1, b = 1, c = 1, d = 1;
+_$jscoverage['javascript-op.js'][4]++;
+x = a || b || c;
+_$jscoverage['javascript-op.js'][5]++;
+x = a || b || c || d;
+_$jscoverage['javascript-op.js'][8]++;
+x = a && b && c;
+_$jscoverage['javascript-op.js'][9]++;
+x = a && b && c && d;
+_$jscoverage['javascript-op.js'][11]++;
+x = a && b || c;
+_$jscoverage['javascript-op.js'][13]++;
+x = a || b && c;
+_$jscoverage['javascript-op.js'][16]++;
+x = a | b | c;
+_$jscoverage['javascript-op.js'][17]++;
+x = a | b | c | d;
+_$jscoverage['javascript-op.js'][20]++;
+x = a ^ b ^ c;
+_$jscoverage['javascript-op.js'][21]++;
+x = a ^ b ^ c ^ d;
+_$jscoverage['javascript-op.js'][24]++;
+x = a & b & c;
+_$jscoverage['javascript-op.js'][25]++;
+x = a & b & c & d;
+_$jscoverage['javascript-op.js'][28]++;
+x = a == b;
+_$jscoverage['javascript-op.js'][29]++;
+x = a != b;
+_$jscoverage['javascript-op.js'][30]++;
+x = a === b;
+_$jscoverage['javascript-op.js'][31]++;
+x = a !== b;
+_$jscoverage['javascript-op.js'][34]++;
+x = a < b;
+_$jscoverage['javascript-op.js'][35]++;
+x = a <= b;
+_$jscoverage['javascript-op.js'][36]++;
+x = a > b;
+_$jscoverage['javascript-op.js'][37]++;
+x = a >= b;
+_$jscoverage['javascript-op.js'][40]++;
+x = a << b;
+_$jscoverage['javascript-op.js'][41]++;
+x = a >> b;
+_$jscoverage['javascript-op.js'][42]++;
+x = a >>> b;
+_$jscoverage['javascript-op.js'][45]++;
+x = a + b;
+_$jscoverage['javascript-op.js'][46]++;
+x = a + b + c;
+_$jscoverage['javascript-op.js'][47]++;
+x = a + b + c + d;
+_$jscoverage['javascript-op.js'][48]++;
+x = a - b;
+_$jscoverage['javascript-op.js'][51]++;
+x = a * b;
+_$jscoverage['javascript-op.js'][52]++;
+x = a * b * c;
+_$jscoverage['javascript-op.js'][53]++;
+x = a * b * c * d;
+_$jscoverage['javascript-op.js'][54]++;
+x = a / b;
+_$jscoverage['javascript-op.js'][55]++;
+x = a % b;
+_$jscoverage['javascript-op.js'].source = ["<span class=\"k\">var</span> a <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">,</span> b <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">,</span> c <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">,</span> d <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>","","<span class=\"c\">/* TOK_OR */</span>","x <span class=\"k\">=</span> a <span class=\"k\">||</span> b <span class=\"k\">||</span> c<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">||</span> b <span class=\"k\">||</span> c <span class=\"k\">||</span> d<span class=\"k\">;</span>","","<span class=\"c\">/* TOK_AND */</span>","x <span class=\"k\">=</span> a <span class=\"k\">&amp;&amp;</span> b <span class=\"k\">&amp;&amp;</span> c<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">&amp;&amp;</span> b <span class=\"k\">&amp;&amp;</span> c <span class=\"k\">&amp;&amp;</span> d<span class=\"k\">;</span>","","x <span class=\"k\">=</span> a <span class=\"k\">&amp;&amp;</span> b <span class=\"k\">||</span> c<span class=\"k\">;</span>","","x <span class=\"k\">=</span> a <span class=\"k\">||</span> b <span class=\"k\">&amp;&amp;</span> c<span class=\"k\">;</span>","","<span class=\"c\">// TOK_BITOR</span>","x <span class=\"k\">=</span> a <span class=\"k\">|</span> b <span class=\"k\">|</span> c<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">|</span> b <span class=\"k\">|</span> c <span class=\"k\">|</span> d<span class=\"k\">;</span>","","<span class=\"c\">// TOK_BITXOR</span>","x <span class=\"k\">=</span> a <span class=\"k\">^</span> b <span class=\"k\">^</span> c<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">^</span> b <span class=\"k\">^</span> c <span class=\"k\">^</span> d<span class=\"k\">;</span>","","<span class=\"c\">// TOK_BITAND</span>","x <span class=\"k\">=</span> a <span class=\"k\">&amp;</span> b <span class=\"k\">&amp;</span> c<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">&amp;</span> b <span class=\"k\">&amp;</span> c <span class=\"k\">&amp;</span> d<span class=\"k\">;</span>","","<span class=\"c\">// TOK_EQUOP</span>","x <span class=\"k\">=</span> a <span class=\"k\">==</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">!=</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">===</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">!==</span> b<span class=\"k\">;</span>","","<span class=\"c\">// TOK_RELOP</span>","x <span class=\"k\">=</span> a <span class=\"k\">&lt;</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">&lt;=</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">&gt;</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">&gt;=</span> b<span class=\"k\">;</span>","","<span class=\"c\">// TOK_SHOP</span>","x <span class=\"k\">=</span> a <span class=\"k\">&lt;&lt;</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">&gt;&gt;</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">&gt;&gt;&gt;</span> b<span class=\"k\">;</span>","","<span class=\"c\">/* TOK_PLUS, TOK_MINUS */</span>","x <span class=\"k\">=</span> a <span class=\"k\">+</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">+</span> b <span class=\"k\">+</span> c<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">+</span> b <span class=\"k\">+</span> c <span class=\"k\">+</span> d<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">-</span> b<span class=\"k\">;</span>","","<span class=\"c\">// TOK_STAR, TOK_DIVOP</span>","x <span class=\"k\">=</span> a <span class=\"k\">*</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">*</span> b <span class=\"k\">*</span> c<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">*</span> b <span class=\"k\">*</span> c <span class=\"k\">*</span> d<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">/</span> b<span class=\"k\">;</span>","x <span class=\"k\">=</span> a <span class=\"k\">%</span> b<span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-primary.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-primary.js
new file mode 100644
index 0000000..c6e46d9
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-primary.js
@@ -0,0 +1,21 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-primary.js']) {
+ _$jscoverage['javascript-primary.js'] = [];
+ _$jscoverage['javascript-primary.js'][1] = 0;
+ _$jscoverage['javascript-primary.js'][2] = 0;
+ _$jscoverage['javascript-primary.js'][3] = 0;
+ _$jscoverage['javascript-primary.js'][4] = 0;
+}
+_$jscoverage['javascript-primary.js'][1]++;
+x = true;
+_$jscoverage['javascript-primary.js'][2]++;
+x = false;
+_$jscoverage['javascript-primary.js'][3]++;
+x = null;
+_$jscoverage['javascript-primary.js'][4]++;
+x = this;
+_$jscoverage['javascript-primary.js'].source = ["x <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rb.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rb.js
new file mode 100644
index 0000000..df807b1
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rb.js
@@ -0,0 +1,24 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-rb.js']) {
+ _$jscoverage['javascript-rb.js'] = [];
+ _$jscoverage['javascript-rb.js'][1] = 0;
+ _$jscoverage['javascript-rb.js'][2] = 0;
+ _$jscoverage['javascript-rb.js'][3] = 0;
+ _$jscoverage['javascript-rb.js'][4] = 0;
+ _$jscoverage['javascript-rb.js'][5] = 0;
+}
+_$jscoverage['javascript-rb.js'][1]++;
+x = [];
+_$jscoverage['javascript-rb.js'][2]++;
+x = [x];
+_$jscoverage['javascript-rb.js'][3]++;
+x = [x, y];
+_$jscoverage['javascript-rb.js'][4]++;
+x = [x, y,];
+_$jscoverage['javascript-rb.js'][5]++;
+x = [x, , y];
+_$jscoverage['javascript-rb.js'].source = ["x <span class=\"k\">=</span> <span class=\"k\">[];</span>","x <span class=\"k\">=</span> <span class=\"k\">[</span>x<span class=\"k\">];</span>","x <span class=\"k\">=</span> <span class=\"k\">[</span>x<span class=\"k\">,</span> y<span class=\"k\">];</span>","x <span class=\"k\">=</span> <span class=\"k\">[</span>x<span class=\"k\">,</span> y<span class=\"k\">,];</span>","x <span class=\"k\">=</span> <span class=\"k\">[</span>x<span class=\"k\">,,</span> y<span class=\"k\">];</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rc.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rc.js
new file mode 100644
index 0000000..e3108d0
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rc.js
@@ -0,0 +1,15 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-rc.js']) {
+ _$jscoverage['javascript-rc.js'] = [];
+ _$jscoverage['javascript-rc.js'][1] = 0;
+ _$jscoverage['javascript-rc.js'][4] = 0;
+}
+_$jscoverage['javascript-rc.js'][1]++;
+x = {x: y};
+_$jscoverage['javascript-rc.js'][4]++;
+x = {x: y, y: x};
+_$jscoverage['javascript-rc.js'].source = ["x <span class=\"k\">=</span> <span class=\"k\">{</span>"," x<span class=\"k\">:</span> y","<span class=\"k\">}</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">{</span>"," x<span class=\"k\">:</span> y<span class=\"k\">,</span>"," y<span class=\"k\">:</span> x","<span class=\"k\">}</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rp.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rp.js
new file mode 100644
index 0000000..47df295
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-rp.js
@@ -0,0 +1,12 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-rp.js']) {
+ _$jscoverage['javascript-rp.js'] = [];
+ _$jscoverage['javascript-rp.js'][1] = 0;
+}
+_$jscoverage['javascript-rp.js'][1]++;
+x = a + (b - c);
+_$jscoverage['javascript-rp.js'].source = ["x <span class=\"k\">=</span> a <span class=\"k\">+</span> <span class=\"k\">(</span>b <span class=\"k\">-</span> c<span class=\"k\">);</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-special-characters.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-special-characters.js
new file mode 100644
index 0000000..0154e86
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-special-characters.js
@@ -0,0 +1,30 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-special-characters.js']) {
+ _$jscoverage['javascript-special-characters.js'] = [];
+ _$jscoverage['javascript-special-characters.js'][1] = 0;
+ _$jscoverage['javascript-special-characters.js'][2] = 0;
+ _$jscoverage['javascript-special-characters.js'][5] = 0;
+ _$jscoverage['javascript-special-characters.js'][6] = 0;
+ _$jscoverage['javascript-special-characters.js'][9] = 0;
+ _$jscoverage['javascript-special-characters.js'][10] = 0;
+}
+_$jscoverage['javascript-special-characters.js'][1]++;
+function f() {
+ _$jscoverage['javascript-special-characters.js'][2]++;
+ return "'";
+}
+_$jscoverage['javascript-special-characters.js'][5]++;
+function g() {
+ _$jscoverage['javascript-special-characters.js'][6]++;
+ return "\"";
+}
+_$jscoverage['javascript-special-characters.js'][9]++;
+function h() {
+ _$jscoverage['javascript-special-characters.js'][10]++;
+ return "\\";
+}
+_$jscoverage['javascript-special-characters.js'].source = ["<span class=\"k\">function</span> f<span class=\"k\">()</span> <span class=\"k\">{</span>","\t<span class=\"k\">return</span> <span class=\"s\">'</span><span class=\"t\">\\'</span><span class=\"s\">'</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","&#11;","<span class=\"k\">function</span> g<span class=\"k\">()</span> <span class=\"k\">{</span>","\t<span class=\"k\">return</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","&#12;","<span class=\"k\">function</span> h<span class=\"k\">()</span> <span class=\"k\">{</span>","\t<span class=\"k\">return</span> <span class=\"s\">'</span><span class=\"t\">\\\\</span><span class=\"s\">'</span><span class=\"k\">;</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-string.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-string.js
new file mode 100644
index 0000000..3dbacc8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-string.js
@@ -0,0 +1,36 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-string.js']) {
+ _$jscoverage['javascript-string.js'] = [];
+ _$jscoverage['javascript-string.js'][1] = 0;
+ _$jscoverage['javascript-string.js'][2] = 0;
+ _$jscoverage['javascript-string.js'][3] = 0;
+ _$jscoverage['javascript-string.js'][4] = 0;
+ _$jscoverage['javascript-string.js'][5] = 0;
+ _$jscoverage['javascript-string.js'][6] = 0;
+ _$jscoverage['javascript-string.js'][7] = 0;
+ _$jscoverage['javascript-string.js'][8] = 0;
+ _$jscoverage['javascript-string.js'][10] = 0;
+}
+_$jscoverage['javascript-string.js'][1]++;
+x = "";
+_$jscoverage['javascript-string.js'][2]++;
+x = "";
+_$jscoverage['javascript-string.js'][3]++;
+x = "x";
+_$jscoverage['javascript-string.js'][4]++;
+x = "x";
+_$jscoverage['javascript-string.js'][5]++;
+x = "\"";
+_$jscoverage['javascript-string.js'][6]++;
+x = "'";
+_$jscoverage['javascript-string.js'][7]++;
+x = "\b\t\n\u000b\f\r\"'\\";
+_$jscoverage['javascript-string.js'][8]++;
+x = new RegExp("x\\(\\)\\\\\\/");
+_$jscoverage['javascript-string.js'][10]++;
+x = "foobar";
+_$jscoverage['javascript-string.js'].source = ["x <span class=\"k\">=</span> <span class=\"s\">\"\"</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"s\">''</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"s\">\"x\"</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"s\">'x'</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"s\">'</span><span class=\"t\">\\'</span><span class=\"s\">'</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"s\">\"</span><span class=\"t\">\\b\\t\\n\\v\\f\\r\\\"\\'\\\\</span><span class=\"s\">\"</span><span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">new</span> RegExp<span class=\"k\">(</span><span class=\"s\">'x</span><span class=\"t\">\\\\</span><span class=\"s\">(</span><span class=\"t\">\\\\</span><span class=\"s\">)</span><span class=\"t\">\\\\\\\\\\\\</span><span class=\"s\">/'</span><span class=\"k\">);</span>","","x <span class=\"k\">=</span> <span class=\"s\">'foo</span><span class=\"t\">\\</span>","<span class=\"s\">bar'</span><span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-switch.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-switch.js
new file mode 100644
index 0000000..e198d7f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-switch.js
@@ -0,0 +1,55 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-switch.js']) {
+ _$jscoverage['javascript-switch.js'] = [];
+ _$jscoverage['javascript-switch.js'][1] = 0;
+ _$jscoverage['javascript-switch.js'][3] = 0;
+ _$jscoverage['javascript-switch.js'][4] = 0;
+ _$jscoverage['javascript-switch.js'][6] = 0;
+ _$jscoverage['javascript-switch.js'][7] = 0;
+ _$jscoverage['javascript-switch.js'][8] = 0;
+ _$jscoverage['javascript-switch.js'][10] = 0;
+ _$jscoverage['javascript-switch.js'][11] = 0;
+ _$jscoverage['javascript-switch.js'][14] = 0;
+ _$jscoverage['javascript-switch.js'][16] = 0;
+ _$jscoverage['javascript-switch.js'][17] = 0;
+ _$jscoverage['javascript-switch.js'][18] = 0;
+ _$jscoverage['javascript-switch.js'][20] = 0;
+}
+_$jscoverage['javascript-switch.js'][1]++;
+switch (x) {
+case x:
+ _$jscoverage['javascript-switch.js'][3]++;
+ x = 0;
+ _$jscoverage['javascript-switch.js'][4]++;
+ break;
+case y:
+ _$jscoverage['javascript-switch.js'][6]++;
+ x = 0;
+ _$jscoverage['javascript-switch.js'][7]++;
+ y = 0;
+ _$jscoverage['javascript-switch.js'][8]++;
+ break;
+default:
+ _$jscoverage['javascript-switch.js'][10]++;
+ x = 0;
+ _$jscoverage['javascript-switch.js'][11]++;
+ break;
+}
+_$jscoverage['javascript-switch.js'][14]++;
+switch (x) {
+case 1:
+ _$jscoverage['javascript-switch.js'][16]++;
+ let y = 1;
+ _$jscoverage['javascript-switch.js'][17]++;
+ f(y);
+ _$jscoverage['javascript-switch.js'][18]++;
+ break;
+case 2:
+ _$jscoverage['javascript-switch.js'][20]++;
+ break;
+}
+_$jscoverage['javascript-switch.js'].source = ["<span class=\"k\">switch</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>","<span class=\"k\">case</span> x<span class=\"k\">:</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>"," <span class=\"k\">break</span><span class=\"k\">;</span>","<span class=\"k\">case</span> y<span class=\"k\">:</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>"," y <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>"," <span class=\"k\">break</span><span class=\"k\">;</span>","<span class=\"k\">default</span><span class=\"k\">:</span>"," x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>"," <span class=\"k\">break</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","","<span class=\"k\">switch</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>","<span class=\"k\">case</span> <span class=\"s\">1</span><span class=\"k\">:</span>"," <span class=\"k\">let</span> y <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>"," f<span class=\"k\">(</span>y<span class=\"k\">);</span>"," <span class=\"k\">break</span><span class=\"k\">;</span>","<span class=\"k\">case</span> <span class=\"s\">2</span><span class=\"k\">:</span>"," <span class=\"k\">break</span><span class=\"k\">;</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-throw.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-throw.js
new file mode 100644
index 0000000..2acaa17
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-throw.js
@@ -0,0 +1,21 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-throw.js']) {
+ _$jscoverage['javascript-throw.js'] = [];
+ _$jscoverage['javascript-throw.js'][1] = 0;
+ _$jscoverage['javascript-throw.js'][2] = 0;
+ _$jscoverage['javascript-throw.js'][5] = 0;
+}
+_$jscoverage['javascript-throw.js'][1]++;
+try {
+ _$jscoverage['javascript-throw.js'][2]++;
+ throw "x";
+}
+catch (e) {
+ _$jscoverage['javascript-throw.js'][5]++;
+ ;
+}
+_$jscoverage['javascript-throw.js'].source = ["<span class=\"k\">try</span> <span class=\"k\">{</span>"," <span class=\"k\">throw</span> <span class=\"s\">\"x\"</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","<span class=\"k\">catch</span> <span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">;</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-try.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-try.js
new file mode 100644
index 0000000..8111f17
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-try.js
@@ -0,0 +1,66 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-try.js']) {
+ _$jscoverage['javascript-try.js'] = [];
+ _$jscoverage['javascript-try.js'][1] = 0;
+ _$jscoverage['javascript-try.js'][3] = 0;
+ _$jscoverage['javascript-try.js'][4] = 0;
+ _$jscoverage['javascript-try.js'][7] = 0;
+ _$jscoverage['javascript-try.js'][10] = 0;
+ _$jscoverage['javascript-try.js'][11] = 0;
+ _$jscoverage['javascript-try.js'][14] = 0;
+ _$jscoverage['javascript-try.js'][17] = 0;
+ _$jscoverage['javascript-try.js'][18] = 0;
+ _$jscoverage['javascript-try.js'][21] = 0;
+ _$jscoverage['javascript-try.js'][24] = 0;
+ _$jscoverage['javascript-try.js'][25] = 0;
+ _$jscoverage['javascript-try.js'][28] = 0;
+ _$jscoverage['javascript-try.js'][31] = 0;
+}
+_$jscoverage['javascript-try.js'][1]++;
+function f() {
+}
+_$jscoverage['javascript-try.js'][3]++;
+try {
+ _$jscoverage['javascript-try.js'][4]++;
+ f();
+}
+catch (e) {
+ _$jscoverage['javascript-try.js'][7]++;
+ f();
+}
+_$jscoverage['javascript-try.js'][10]++;
+try {
+ _$jscoverage['javascript-try.js'][11]++;
+ f();
+}
+catch (e if e instanceof E) {
+ _$jscoverage['javascript-try.js'][14]++;
+ f();
+}
+_$jscoverage['javascript-try.js'][17]++;
+try {
+ _$jscoverage['javascript-try.js'][18]++;
+ f();
+}
+finally {
+ _$jscoverage['javascript-try.js'][21]++;
+ f();
+}
+_$jscoverage['javascript-try.js'][24]++;
+try {
+ _$jscoverage['javascript-try.js'][25]++;
+ f();
+}
+catch (e) {
+ _$jscoverage['javascript-try.js'][28]++;
+ f();
+}
+finally {
+ _$jscoverage['javascript-try.js'][31]++;
+ f();
+}
+_$jscoverage['javascript-try.js'].source = ["<span class=\"k\">function</span> f<span class=\"k\">()</span> <span class=\"k\">{}</span>","","<span class=\"k\">try</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","<span class=\"k\">catch</span> <span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">try</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","<span class=\"k\">catch</span> <span class=\"k\">(</span>e <span class=\"k\">if</span> e <span class=\"k\">instanceof</span> E<span class=\"k\">)</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">try</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","<span class=\"k\">finally</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">try</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","<span class=\"k\">catch</span> <span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","<span class=\"k\">finally</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-unaryop.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-unaryop.js
new file mode 100644
index 0000000..ca06e39
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-unaryop.js
@@ -0,0 +1,27 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-unaryop.js']) {
+ _$jscoverage['javascript-unaryop.js'] = [];
+ _$jscoverage['javascript-unaryop.js'][1] = 0;
+ _$jscoverage['javascript-unaryop.js'][2] = 0;
+ _$jscoverage['javascript-unaryop.js'][3] = 0;
+ _$jscoverage['javascript-unaryop.js'][4] = 0;
+ _$jscoverage['javascript-unaryop.js'][5] = 0;
+ _$jscoverage['javascript-unaryop.js'][6] = 0;
+}
+_$jscoverage['javascript-unaryop.js'][1]++;
+x = - x;
+_$jscoverage['javascript-unaryop.js'][2]++;
+x = + x;
+_$jscoverage['javascript-unaryop.js'][3]++;
+x = ! x;
+_$jscoverage['javascript-unaryop.js'][4]++;
+x = ~ x;
+_$jscoverage['javascript-unaryop.js'][5]++;
+x = typeof x;
+_$jscoverage['javascript-unaryop.js'][6]++;
+x = void x;
+_$jscoverage['javascript-unaryop.js'].source = ["x <span class=\"k\">=</span> <span class=\"k\">-</span>x<span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">+</span>x<span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">!</span>x<span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">~</span>x<span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">typeof</span> x<span class=\"k\">;</span>","x <span class=\"k\">=</span> <span class=\"k\">void</span> x<span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-var.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-var.js
new file mode 100644
index 0000000..904bbcf
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-var.js
@@ -0,0 +1,15 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-var.js']) {
+ _$jscoverage['javascript-var.js'] = [];
+ _$jscoverage['javascript-var.js'][1] = 0;
+ _$jscoverage['javascript-var.js'][2] = 0;
+}
+_$jscoverage['javascript-var.js'][1]++;
+var x;
+_$jscoverage['javascript-var.js'][2]++;
+var y = x, z = x;
+_$jscoverage['javascript-var.js'].source = ["<span class=\"k\">var</span> x<span class=\"k\">;</span>","<span class=\"k\">var</span> y <span class=\"k\">=</span> x<span class=\"k\">,</span> z <span class=\"k\">=</span> x<span class=\"k\">;</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-while.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-while.js
new file mode 100644
index 0000000..b15afa2
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-while.js
@@ -0,0 +1,79 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-while.js']) {
+ _$jscoverage['javascript-while.js'] = [];
+ _$jscoverage['javascript-while.js'][1] = 0;
+ _$jscoverage['javascript-while.js'][2] = 0;
+ _$jscoverage['javascript-while.js'][5] = 0;
+ _$jscoverage['javascript-while.js'][6] = 0;
+ _$jscoverage['javascript-while.js'][9] = 0;
+ _$jscoverage['javascript-while.js'][10] = 0;
+ _$jscoverage['javascript-while.js'][12] = 0;
+ _$jscoverage['javascript-while.js'][13] = 0;
+ _$jscoverage['javascript-while.js'][15] = 0;
+ _$jscoverage['javascript-while.js'][16] = 0;
+ _$jscoverage['javascript-while.js'][17] = 0;
+ _$jscoverage['javascript-while.js'][21] = 0;
+ _$jscoverage['javascript-while.js'][23] = 0;
+ _$jscoverage['javascript-while.js'][24] = 0;
+ _$jscoverage['javascript-while.js'][28] = 0;
+ _$jscoverage['javascript-while.js'][29] = 0;
+ _$jscoverage['javascript-while.js'][30] = 0;
+ _$jscoverage['javascript-while.js'][31] = 0;
+ _$jscoverage['javascript-while.js'][32] = 0;
+}
+_$jscoverage['javascript-while.js'][1]++;
+while (x) {
+ _$jscoverage['javascript-while.js'][2]++;
+ x();
+}
+_$jscoverage['javascript-while.js'][5]++;
+while (x) {
+ _$jscoverage['javascript-while.js'][6]++;
+ ;
+}
+_$jscoverage['javascript-while.js'][9]++;
+while (x) {
+ _$jscoverage['javascript-while.js'][10]++;
+ x();
+}
+_$jscoverage['javascript-while.js'][12]++;
+while (x) {
+ _$jscoverage['javascript-while.js'][13]++;
+ ;
+}
+_$jscoverage['javascript-while.js'][15]++;
+while (x) {
+ _$jscoverage['javascript-while.js'][16]++;
+ if (x) {
+ _$jscoverage['javascript-while.js'][17]++;
+ continue;
+ }
+}
+_$jscoverage['javascript-while.js'][21]++;
+label:
+while (x) {
+ _$jscoverage['javascript-while.js'][23]++;
+ if (x) {
+ _$jscoverage['javascript-while.js'][24]++;
+ continue label;
+ }
+}
+_$jscoverage['javascript-while.js'][28]++;
+label2:
+{
+ _$jscoverage['javascript-while.js'][29]++;
+ f();
+ _$jscoverage['javascript-while.js'][30]++;
+ while (x) {
+ _$jscoverage['javascript-while.js'][31]++;
+ if (x) {
+ _$jscoverage['javascript-while.js'][32]++;
+ break label2;
+ }
+}
+}
+_$jscoverage['javascript-while.js'].source = ["<span class=\"k\">while</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," x<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">while</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">;</span>","<span class=\"k\">}</span>","","<span class=\"k\">while</span> <span class=\"k\">(</span>x<span class=\"k\">)</span>"," x<span class=\"k\">();</span>","","<span class=\"k\">while</span> <span class=\"k\">(</span>x<span class=\"k\">)</span>"," <span class=\"k\">;</span>","","<span class=\"k\">while</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">if</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">continue</span><span class=\"k\">;</span>"," <span class=\"k\">}</span>","<span class=\"k\">}</span>","","label<span class=\"k\">:</span>","<span class=\"k\">while</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">if</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">continue</span> label<span class=\"k\">;</span>"," <span class=\"k\">}</span>","<span class=\"k\">}</span>","","label2<span class=\"k\">:</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>"," <span class=\"k\">while</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">if</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," <span class=\"k\">break</span> label2<span class=\"k\">;</span>"," <span class=\"k\">}</span>"," <span class=\"k\">}</span>","<span class=\"k\">}</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-with.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-with.js
new file mode 100644
index 0000000..52aea68
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.expected/javascript-with.js
@@ -0,0 +1,30 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['javascript-with.js']) {
+ _$jscoverage['javascript-with.js'] = [];
+ _$jscoverage['javascript-with.js'][1] = 0;
+ _$jscoverage['javascript-with.js'][2] = 0;
+ _$jscoverage['javascript-with.js'][4] = 0;
+ _$jscoverage['javascript-with.js'][5] = 0;
+ _$jscoverage['javascript-with.js'][8] = 0;
+ _$jscoverage['javascript-with.js'][9] = 0;
+}
+_$jscoverage['javascript-with.js'][1]++;
+function f() {
+}
+_$jscoverage['javascript-with.js'][2]++;
+var x = {};
+_$jscoverage['javascript-with.js'][4]++;
+with (x) {
+ _$jscoverage['javascript-with.js'][5]++;
+ f();
+}
+_$jscoverage['javascript-with.js'][8]++;
+with (x) {
+ _$jscoverage['javascript-with.js'][9]++;
+ f();
+}
+_$jscoverage['javascript-with.js'].source = ["<span class=\"k\">function</span> f<span class=\"k\">()</span> <span class=\"k\">{}</span>","<span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","","<span class=\"k\">with</span> <span class=\"k\">(</span>x<span class=\"k\">)</span> <span class=\"k\">{</span>"," f<span class=\"k\">();</span>","<span class=\"k\">}</span>","","<span class=\"k\">with</span> <span class=\"k\">(</span>x<span class=\"k\">)</span>"," f<span class=\"k\">();</span>"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript.sh b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.sh
new file mode 100755
index 0000000..6209a0f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+# javascript.sh - test various JavaScript constructs
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr DIR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if jscoverage-server --version | grep -q 'iconv\|MultiByteToWideChar'
+then
+ character_encoding_support=yes
+else
+ character_encoding_support=no
+fi
+
+rm -fr DIR
+case "$character_encoding_support" in
+ yes)
+ $VALGRIND jscoverage --js-version 180 --encoding ISO-8859-1 javascript DIR
+ ;;
+ *)
+ $VALGRIND jscoverage --js-version=180 --exclude=javascript-iso-8859-1.js javascript DIR
+ ;;
+esac
+for i in javascript/*.js
+do
+ if [ $character_encoding_support = no -a $i = javascript/javascript-iso-8859-1.js ]
+ then
+ continue
+ fi
+ FILE=${i##javascript/}
+ EXPECTED=javascript.expected/${FILE}
+ ACTUAL=DIR/${FILE}
+ diff -u -r --strip-trailing-cr $EXPECTED $ACTUAL
+done
+
+# rm -fr DIR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-array-comprehension.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-array-comprehension.js
new file mode 100644
index 0000000..2d9b048
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-array-comprehension.js
@@ -0,0 +1,14 @@
+// https://developer.mozilla.org/en/New_in_JavaScript_1.7
+
+function range(begin, end) {
+ for (let i = begin; i < end; ++i) {
+ yield i;
+ }
+}
+var ten_squares = [i * i for each (i in range(0, 10))];
+var evens = [i for each (i in range(0, 21)) if (i % 2 == 0)];
+
+// test optimization
+var optimized = [i for each (i in x) if (0)];
+
+[i for each (a in x) for each (b in y)]
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-assign.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-assign.js
new file mode 100644
index 0000000..d17bdd1
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-assign.js
@@ -0,0 +1,14 @@
+var x = 1;
+var y = 1;
+x = y;
+x += y;
+x -= y;
+x *= y;
+x %= y;
+x <<= y;
+x >>= y;
+x >>>= y;
+x &= y;
+x |= y;
+x ^= y;
+x /= y;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-colon.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-colon.js
new file mode 100644
index 0000000..69bade1
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-colon.js
@@ -0,0 +1,7 @@
+x:
+ y = 0;
+
+y: {
+ let y = 1;
+ print(y);
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-comma.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-comma.js
new file mode 100644
index 0000000..15c162c
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-comma.js
@@ -0,0 +1 @@
+x = y, y = x;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-cr.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-cr.js
new file mode 100644
index 0000000..fad02c7
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-cr.js
@@ -0,0 +1 @@
+/* This file has CR line endings. */ var x = 1; \ No newline at end of file
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-crlf.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-crlf.js
new file mode 100644
index 0000000..53dcd0e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-crlf.js
@@ -0,0 +1,4 @@
+/*
+This file has CRLF line endings.
+*/
+var x = 1;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-debugger.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-debugger.js
new file mode 100644
index 0000000..dc33421
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-debugger.js
@@ -0,0 +1,6 @@
+try {
+ f();
+}
+catch (e) {
+ debugger;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-dec.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-dec.js
new file mode 100644
index 0000000..46d5bc3
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-dec.js
@@ -0,0 +1,2 @@
+x--;
+--x;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-delete.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-delete.js
new file mode 100644
index 0000000..ae9a3d0
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-delete.js
@@ -0,0 +1 @@
+delete x;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-destructuring.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-destructuring.js
new file mode 100644
index 0000000..c8cf4c9
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-destructuring.js
@@ -0,0 +1,42 @@
+// https://developer.mozilla.org/en/New_in_JavaScript_1.7
+
+[a, b] = [b, a];
+
+function f() {
+ return [1, 2];
+}
+[a, b] = f();
+
+for (let [name, value] in Iterator(obj)) {
+ print(name);
+ print(value);
+}
+
+for each (let {name: n, family: { father: f } } in people) {
+ print(n);
+ print(f);
+}
+
+var [a, , b] = f();
+[,,,] = f();
+
+function g() {
+ var parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url);
+ if (!parsedURL)
+ return null;
+ var [, protocol, fullhost, fullpath] = parsedURL;
+}
+
+function h(a, [b, c], {foo: d, 'bar': e}) {
+ f();
+ g();
+}
+
+x = function([a, b]) a + b;
+
+({x: x0, y: y0}) = point;
+var {x: x0, y: y0} = point;
+let ({x: x0, y: y0} = point) {
+ print(x0);
+ print(y0);
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-do.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-do.js
new file mode 100644
index 0000000..e6bbee9
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-do.js
@@ -0,0 +1,10 @@
+var x;
+
+do {
+ x = false;
+}
+while (x);
+
+do
+ x = false;
+while (x);
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-dot.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-dot.js
new file mode 100644
index 0000000..0b35cdc
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-dot.js
@@ -0,0 +1,8 @@
+x.y = y.x;
+x["y"] = y["x"];
+x[y] = y[x];
+x['2y'] = y['var'];
+x[''] = y[""];
+
+print(123.0.toString());
+({}.toString());
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-empty.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-empty.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-empty.js
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-for.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-for.js
new file mode 100644
index 0000000..166b586
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-for.js
@@ -0,0 +1,22 @@
+for (i in x) {
+ x();
+}
+
+for (var i in x) {
+ x();
+}
+
+for (i = 0; i < x; i++) {
+ x();
+}
+
+for (var j = 0; j < x; j++) {
+ x();
+}
+
+for (i in x)
+ x();
+
+for (i.value in x) {
+ x();
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-foreach.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-foreach.js
new file mode 100644
index 0000000..52cb266
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-foreach.js
@@ -0,0 +1,8 @@
+/*
+https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Object_Manipulation_Statements
+https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/for_each...in
+*/
+
+for each (var item in obj) {
+ sum += item;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-function.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-function.js
new file mode 100644
index 0000000..94fc8bd
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-function.js
@@ -0,0 +1,38 @@
+function x() {}
+
+function x() {
+ ;
+}
+
+function x() {
+ x();
+ return 'x';
+}
+
+function x(a) {
+ x();
+}
+
+function x(a, b) {
+ x();
+}
+
+x = function() {
+ x();
+};
+
+(function () {
+ print('x');
+})();
+
+(function (a) {
+ print('x');
+})(1);
+
+(function (a, b) {
+ print('x');
+})(1, 2);
+
+(function () {
+ print('x');
+}).call(window);
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-generator-expression.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-generator-expression.js
new file mode 100644
index 0000000..cafec77
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-generator-expression.js
@@ -0,0 +1,18 @@
+// https://developer.mozilla.org/en/New_in_JavaScript_1.8
+
+let it = (i + 3 for (i in someObj));
+try {
+ while (true) {
+ document.write(it.next() + "<br>\n");
+ }
+} catch (err if err instanceof StopIteration) {
+ document.write("End of record.<br>\n");
+}
+
+function handleResults( results ) {
+ for ( let i in results )
+ ;
+}
+handleResults( i for ( i in obj ) if ( i > 3 ) );
+
+it = (1 for(a in x) for(b in y));
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-generator.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-generator.js
new file mode 100644
index 0000000..6c1f32a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-generator.js
@@ -0,0 +1,11 @@
+// https://developer.mozilla.org/en/New_in_JavaScript_1.7
+
+function fib() {
+ var i = 0, j = 1;
+ while (true) {
+ yield i;
+ var t = i;
+ i = j;
+ j += t;
+ }
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-getter-setter.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-getter-setter.js
new file mode 100644
index 0000000..31fca86
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-getter-setter.js
@@ -0,0 +1,19 @@
+var o = {
+ _x: 123,
+ get x() {
+ return this._x;
+ },
+ set x(value) {
+ this._x = value;
+ }
+};
+
+o = {
+ _x: 123,
+ get x get_x() {
+ return this._x;
+ },
+ set x set_x(value) {
+ this._x = value;
+ }
+};
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-hook.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-hook.js
new file mode 100644
index 0000000..0e690f8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-hook.js
@@ -0,0 +1,2 @@
+var x = 1;
+var y = x === 1? "x": "y";
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-if.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-if.js
new file mode 100644
index 0000000..43d489e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-if.js
@@ -0,0 +1,30 @@
+var x = 0;
+
+if (x)
+ x = 0;
+
+if (x) {
+ x = 0;
+}
+
+if (x)
+ x = 0;
+else
+ x = 0;
+
+if (x) {
+ x = 0;
+}
+else {
+ x = 0;
+}
+
+if (x) {
+ x = 0;
+}
+else if (x) {
+ x = 0;
+}
+else {
+ x = 0;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-in.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-in.js
new file mode 100644
index 0000000..75ba66e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-in.js
@@ -0,0 +1,4 @@
+var x = {};
+if ('a' in x) {
+ x = null;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-inc.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-inc.js
new file mode 100644
index 0000000..065c7bf
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-inc.js
@@ -0,0 +1,2 @@
+x++;
+++x;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-iso-8859-1.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-iso-8859-1.js
new file mode 100644
index 0000000..2658cee
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-iso-8859-1.js
@@ -0,0 +1,2 @@
+var s = 'eèéê';
+var r = /eèéê/;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-lambda.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-lambda.js
new file mode 100644
index 0000000..0e5062f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-lambda.js
@@ -0,0 +1,3 @@
+// https://developer.mozilla.org/en/New_in_JavaScript_1.8
+
+var square = function(x) x * x;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-let.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-let.js
new file mode 100644
index 0000000..7bb777b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-let.js
@@ -0,0 +1,79 @@
+// https://developer.mozilla.org/en/New_in_JavaScript_1.7
+
+// let statement
+
+let (x = x+10, y = 12) {
+ print(x+y + "\n");
+}
+
+// let expressions
+
+print( let(x = x + 10, y = 12) x+y + "<br>\n");
+
+// let definitions
+
+if (x > y) {
+ let gamma = 12.7 + y;
+ i = gamma * x;
+}
+
+var list = document.getElementById("list");
+
+for (var i = 1; i <= 5; i++) {
+ var item = document.createElement("LI");
+ item.appendChild(document.createTextNode("Item " + i));
+
+ let j = i;
+ item.onclick = function (ev) {
+ alert("Item " + j + " is clicked.");
+ };
+ list.appendChild(item);
+}
+
+function varTest() {
+ var x = 31;
+ if (true) {
+ var x = 71; // same variable!
+ alert(x); // 71
+ }
+ alert(x); // 71
+}
+
+function letTest() {
+ let x = 31;
+ if (true) {
+ let x = 71; // different variable
+ alert(x); // 71
+ }
+ alert(x); // 31
+}
+
+function letTests() {
+ let x = 10;
+
+ // let-statement
+ let (x = x + 20) {
+ alert(x); // 30
+ }
+
+ // let-expression
+ alert(let (x = x + 20) x); // 30
+
+ // let-definition
+ {
+ let x = x + 20; // x here evaluates to undefined
+ alert(x); // undefined + 20 ==> NaN
+ }
+}
+
+var x = 'global';
+let x = 42;
+document.write(this.x + "<br>\n");
+
+// let-scoped variables in for loops
+var i=0;
+for ( let i=i ; i < 10 ; i++ )
+ document.write(i + "<br>\n");
+
+for ( let [name,value] in obj )
+ document.write("Name: " + name + ", Value: " + value + "<br>\n");
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-lf.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-lf.js
new file mode 100644
index 0000000..2741068
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-lf.js
@@ -0,0 +1,4 @@
+/*
+This file has LF line endings.
+*/
+var x = 1;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-new.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-new.js
new file mode 100644
index 0000000..6801585
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-new.js
@@ -0,0 +1,4 @@
+function X() {}
+x = new X();
+x = new X(1);
+x = new X(1, 2);
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-number.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-number.js
new file mode 100644
index 0000000..95603d7
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-number.js
@@ -0,0 +1,19 @@
+x = 1;
+y = 2;
+z = 10.5;
+
+a = 1 / 0;
+a = -1 / 0;
+
+a = 0;
+a = -0;
+
+a = 0 / 0;
+a = 0 / -0;
+a = 0 / (-0);
+a = -0 / 0;
+a = (-0) / 0;
+a = -0 / -0;
+a = -0 / (-0);
+a = (-0) / -0;
+a = (-0) / (-0);
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-object.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-object.js
new file mode 100644
index 0000000..83ce7be
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-object.js
@@ -0,0 +1,2 @@
+x = /x\(\)\\\//i;
+y = /\u0001\u002f/gm;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-op.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-op.js
new file mode 100644
index 0000000..9c6e8bb
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-op.js
@@ -0,0 +1,55 @@
+var a = 1, b = 1, c = 1, d = 1;
+
+/* TOK_OR */
+x = a || b || c;
+x = a || b || c || d;
+
+/* TOK_AND */
+x = a && b && c;
+x = a && b && c && d;
+
+x = a && b || c;
+
+x = a || b && c;
+
+// TOK_BITOR
+x = a | b | c;
+x = a | b | c | d;
+
+// TOK_BITXOR
+x = a ^ b ^ c;
+x = a ^ b ^ c ^ d;
+
+// TOK_BITAND
+x = a & b & c;
+x = a & b & c & d;
+
+// TOK_EQUOP
+x = a == b;
+x = a != b;
+x = a === b;
+x = a !== b;
+
+// TOK_RELOP
+x = a < b;
+x = a <= b;
+x = a > b;
+x = a >= b;
+
+// TOK_SHOP
+x = a << b;
+x = a >> b;
+x = a >>> b;
+
+/* TOK_PLUS, TOK_MINUS */
+x = a + b;
+x = a + b + c;
+x = a + b + c + d;
+x = a - b;
+
+// TOK_STAR, TOK_DIVOP
+x = a * b;
+x = a * b * c;
+x = a * b * c * d;
+x = a / b;
+x = a % b;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-primary.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-primary.js
new file mode 100644
index 0000000..9a7bc4e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-primary.js
@@ -0,0 +1,4 @@
+x = true;
+x = false;
+x = null;
+x = this;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rb.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rb.js
new file mode 100644
index 0000000..57e897c
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rb.js
@@ -0,0 +1,5 @@
+x = [];
+x = [x];
+x = [x, y];
+x = [x, y,];
+x = [x,, y];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rc.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rc.js
new file mode 100644
index 0000000..f654a9a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rc.js
@@ -0,0 +1,7 @@
+x = {
+ x: y
+};
+x = {
+ x: y,
+ y: x
+};
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rp.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rp.js
new file mode 100644
index 0000000..2e17573
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-rp.js
@@ -0,0 +1 @@
+x = a + (b - c);
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-special-characters.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-special-characters.js
new file mode 100644
index 0000000..dc8ec36
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-special-characters.js
@@ -0,0 +1,11 @@
+function f() {
+ return '\'';
+}
+
+function g() {
+ return "\"";
+}
+
+function h() {
+ return '\\';
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-string.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-string.js
new file mode 100644
index 0000000..463824a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-string.js
@@ -0,0 +1,11 @@
+x = "";
+x = '';
+x = "x";
+x = 'x';
+x = "\"";
+x = '\'';
+x = "\b\t\n\v\f\r\"\'\\";
+x = new RegExp('x\\(\\)\\\\\\/');
+
+x = 'foo\
+bar';
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-switch.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-switch.js
new file mode 100644
index 0000000..bb6e01e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-switch.js
@@ -0,0 +1,21 @@
+switch (x) {
+case x:
+ x = 0;
+ break;
+case y:
+ x = 0;
+ y = 0;
+ break;
+default:
+ x = 0;
+ break;
+}
+
+switch (x) {
+case 1:
+ let y = 1;
+ f(y);
+ break;
+case 2:
+ break;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-throw.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-throw.js
new file mode 100644
index 0000000..1fc73c4
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-throw.js
@@ -0,0 +1,6 @@
+try {
+ throw "x";
+}
+catch (e) {
+ ;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-try.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-try.js
new file mode 100644
index 0000000..47a5de4
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-try.js
@@ -0,0 +1,32 @@
+function f() {}
+
+try {
+ f();
+}
+catch (e) {
+ f();
+}
+
+try {
+ f();
+}
+catch (e if e instanceof E) {
+ f();
+}
+
+try {
+ f();
+}
+finally {
+ f();
+}
+
+try {
+ f();
+}
+catch (e) {
+ f();
+}
+finally {
+ f();
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-unaryop.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-unaryop.js
new file mode 100644
index 0000000..0173913
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-unaryop.js
@@ -0,0 +1,6 @@
+x = -x;
+x = +x;
+x = !x;
+x = ~x;
+x = typeof x;
+x = void x;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-var.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-var.js
new file mode 100644
index 0000000..4902a44
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-var.js
@@ -0,0 +1,2 @@
+var x;
+var y = x, z = x;
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-while.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-while.js
new file mode 100644
index 0000000..f1ec6b5
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-while.js
@@ -0,0 +1,35 @@
+while (x) {
+ x();
+}
+
+while (x) {
+ ;
+}
+
+while (x)
+ x();
+
+while (x)
+ ;
+
+while (x) {
+ if (x) {
+ continue;
+ }
+}
+
+label:
+while (x) {
+ if (x) {
+ continue label;
+ }
+}
+
+label2: {
+ f();
+ while (x) {
+ if (x) {
+ break label2;
+ }
+ }
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-with.js b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-with.js
new file mode 100644
index 0000000..58fd1ac
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/javascript/javascript-with.js
@@ -0,0 +1,9 @@
+function f() {}
+var x = {};
+
+with (x) {
+ f();
+}
+
+with (x)
+ f();
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/json-cmp.js b/tools/node_modules/expresso/deps/jscoverage/tests/json-cmp.js
new file mode 100644
index 0000000..37e9144
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/json-cmp.js
@@ -0,0 +1,65 @@
+/*
+ json-cmp.js - compare JSON files
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+function json_equals(json1, json2) {
+ if (json1 === null || json2 === null) {
+ return json1 === json2;
+ }
+ else if (json1.constructor === Array && json2.constructor === Array) {
+ if (json1.length !== json2.length) {
+ return false;
+ }
+ var length = json1.length;
+ for (var i = 0; i < length; i++) {
+ if (! json_equals(json1[i], json2[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+ else if (typeof(json1) === 'object' && typeof(json2) === 'object') {
+ var i;
+ for (i in json1) {
+ if (! (i in json2)) {
+ return false;
+ }
+ if (! json_equals(json1[i], json2[i])) {
+ return false;
+ }
+ }
+ for (i in json2) {
+ if (! (i in json1)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ else {
+ return json1 === json2;
+ }
+}
+
+if (json_equals(EXPECTED, ACTUAL)) {
+ quit(0);
+}
+else {
+ print(EXPECTED.toSource());
+ print(ACTUAL.toSource());
+ quit(1);
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/json.c b/tools/node_modules/expresso/deps/jscoverage/tests/json.c
new file mode 100644
index 0000000..3522d86
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/json.c
@@ -0,0 +1,48 @@
+/*
+ json.c - test JSON manipulation
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "instrument-js.h"
+#include "stream.h"
+#include "util.h"
+
+bool jscoverage_highlight = true;
+
+int main(void) {
+ jscoverage_init();
+
+ Stream * stream = Stream_new(0);
+
+ FILE * f = xfopen("store.json", "r");
+ Stream_write_file_contents(stream, f);
+ fclose(f);
+
+ Coverage * coverage = Coverage_new();
+ int result = jscoverage_parse_json(coverage, stream->data, stream->length);
+ assert(result == 0);
+
+ Coverage_delete(coverage);
+ Stream_delete(stream);
+ jscoverage_cleanup();
+
+ exit(EXIT_SUCCESS);
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/json.sh b/tools/node_modules/expresso/deps/jscoverage/tests/json.sh
new file mode 100755
index 0000000..2f84d4d
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/json.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# json.sh - test JSON parsing
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+$VALGRIND ./json
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/mkdirs.c b/tools/node_modules/expresso/deps/jscoverage/tests/mkdirs.c
new file mode 100644
index 0000000..027cff6
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/mkdirs.c
@@ -0,0 +1,42 @@
+/*
+ mkdirs.c - test `mkdirs' function
+ Copyright (C) 2007, 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "util.h"
+
+void cleanup(void) {
+ system("rm -fr DIR");
+}
+
+int main(void) {
+ atexit(cleanup);
+
+ system("rm -fr DIR");
+
+ mkdirs("DIR/a/b");
+
+ struct stat buf;
+ xstat("DIR/a/b", &buf);
+ assert(S_ISDIR(buf.st_mode));
+
+ exit(EXIT_SUCCESS);
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/mkdirs.sh b/tools/node_modules/expresso/deps/jscoverage/tests/mkdirs.sh
new file mode 100755
index 0000000..f1dc922
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/mkdirs.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# mkdirs.sh - test `mkdirs' function
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+$VALGRIND ./mkdirs
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/netcat.pl b/tools/node_modules/expresso/deps/jscoverage/tests/netcat.pl
new file mode 100644
index 0000000..5df75be
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/netcat.pl
@@ -0,0 +1,35 @@
+use strict;
+use warnings;
+
+use Socket;
+
+binmode(STDIN);
+$| = 1;
+binmode(STDOUT);
+
+if (@ARGV != 2) {
+ die "Usage: netcat.pl HOST PORT\n";
+}
+
+my $host = shift;
+my $port = shift;
+
+my $address = inet_aton($host) or die;
+my $address_and_port = sockaddr_in($port, $address);
+my $protocol = getprotobyname('tcp');
+socket(SOCKET, PF_INET, SOCK_STREAM, $protocol) or die;
+
+my $old = select(SOCKET);
+$| = 1;
+select($old);
+binmode(SOCKET);
+
+connect(SOCKET, $address_and_port) or die;
+while (<STDIN>) {
+ print SOCKET $_;
+}
+while (<SOCKET>) {
+ print;
+}
+close(SOCKET);
+exit 0; \ No newline at end of file
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/no-arguments.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/no-arguments.expected.err
new file mode 100644
index 0000000..c6e2707
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/no-arguments.expected.err
@@ -0,0 +1,2 @@
+jscoverage: missing argument
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/no-arguments.sh b/tools/node_modules/expresso/deps/jscoverage/tests/no-arguments.sh
new file mode 100755
index 0000000..73eb586
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/no-arguments.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# no-arguments.sh - test jscoverage with no arguments
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+export PATH=.:..:$PATH
+
+trap 'rm -fr OUT ERR' 1 2 3 15
+
+$VALGRIND jscoverage > OUT 2> ERR && exit 1
+test ! -s OUT
+diff --strip-trailing-cr no-arguments.expected.err ERR
+
+rm -fr OUT ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/no-instrument-requires-argument.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/no-instrument-requires-argument.expected.err
new file mode 100644
index 0000000..fdceb30
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/no-instrument-requires-argument.expected.err
@@ -0,0 +1,2 @@
+jscoverage: --no-instrument: option requires an argument
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-request-body.sh b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-request-body.sh
new file mode 100755
index 0000000..0532f38
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-request-body.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+# proxy-bad-request-body.sh - test jscoverage-server --proxy with a bad request body
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${proxy_server_port}/jscoverage-shutdown" > /dev/null
+ wait $proxy_server_pid
+}
+
+shutdown_perl() {
+ wget -q -O- --post-data= http://127.0.0.1:8000/perl-shutdown > /dev/null
+ wait $origin_server_pid
+}
+
+cleanup() {
+ shutdown
+ shutdown_perl
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+cd recursive
+perl ../server.pl > /dev/null 2> /dev/null &
+origin_server_pid=$!
+cd ..
+
+$VALGRIND jscoverage-server --proxy > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+sleep $delay
+
+./http-client-bad-body 8080 http://127.0.0.1:8000/
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body-javascript.sh b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body-javascript.sh
new file mode 100755
index 0000000..df63686
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body-javascript.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+# proxy-bad-response-body-javascript.sh - test jscoverage-server --proxy with bad JavaScript response body
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${proxy_server_port}/jscoverage-shutdown" > /dev/null
+ wait $proxy_server_pid
+ kill -9 $origin_server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+./http-server-bad-body &
+origin_server_pid=$!
+
+$VALGRIND jscoverage-server --proxy > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+sleep $delay
+
+echo 200 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:8000/script.js 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body.expected.err
new file mode 100644
index 0000000..9dd02ee
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body.expected.err
@@ -0,0 +1 @@
+Warning: error copying response body from server to client
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body.sh b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body.sh
new file mode 100755
index 0000000..aace044
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-body.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# proxy-bad-response-body.sh - test jscoverage-server --proxy with bad response body
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${proxy_server_port}/jscoverage-shutdown" > /dev/null
+ wait $proxy_server_pid
+ kill -9 $origin_server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+./http-server-bad-body &
+origin_server_pid=$!
+
+$VALGRIND jscoverage-server --proxy > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+sleep $delay
+
+echo 200 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:8000/index.html 2> /dev/null > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
+diff --strip-trailing-cr proxy-bad-response-body.expected.err ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-headers.sh b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-headers.sh
new file mode 100755
index 0000000..e21e22a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-bad-response-headers.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+# proxy-bad-response-headers.sh - test jscoverage-server --proxy with bad response headers
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${proxy_server_port}/jscoverage-shutdown" > /dev/null
+ wait $proxy_server_pid
+ kill -9 $origin_server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+./http-server-bad-headers &
+origin_server_pid=$!
+
+$VALGRIND jscoverage-server --proxy > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+sleep $delay
+
+echo 502 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:8000/index.html 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/proxy-no-server.sh b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-no-server.sh
new file mode 100755
index 0000000..75f34f6
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-no-server.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+# proxy-no-server.sh - test jscoverage-server --proxy without origin server
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${proxy_server_port}/jscoverage-shutdown" > /dev/null
+ wait $proxy_server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+$VALGRIND jscoverage-server --proxy > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+sleep $delay
+
+echo 504 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:1/index.html 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/proxy-url.sh b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-url.sh
new file mode 100755
index 0000000..413f116
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/proxy-url.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+# proxy-url.sh - test jscoverage-server --proxy with different URLs
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${proxy_server_port}/jscoverage-shutdown" > /dev/null
+ wait $proxy_server_pid
+ if [ "$origin_server_pid" != "" ]
+ then
+ kill -9 $origin_server_pid
+ fi
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+$VALGRIND jscoverage-server --proxy > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+sleep $delay
+
+echo 504 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:/index.html 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+
+./http-client-bad-url 8080 http://127.0.0.1:123456/index.html
+./http-client-bad-url 8080 http://127.0.0.1:xyz/index.html
+
+cd recursive
+perl ../server.pl > /dev/null 2> /dev/null &
+origin_server_pid=$!
+cd ..
+
+sleep $delay
+
+./http-client-bad-url 8080 http://127.0.0.1:8000
+./http-client-bad-url 8080 'http://127.0.0.1:8000?foo'
+./http-client-bad-url 8080 'foo'
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/proxy.sh b/tools/node_modules/expresso/deps/jscoverage/tests/proxy.sh
new file mode 100755
index 0000000..903ab62
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/proxy.sh
@@ -0,0 +1,143 @@
+#!/bin/sh
+# proxy.sh - test jscoverage-server --proxy
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${proxy_server_port}/jscoverage-shutdown" > /dev/null
+ wait $proxy_server_pid
+}
+
+shutdown_perl() {
+ wget -q -O- --post-data= http://127.0.0.1:8000/perl-shutdown > /dev/null
+ wait $origin_server_pid
+}
+
+cleanup() {
+ rm -fr EXPECTED ACTUAL DIR OUT
+ shutdown
+ shutdown_perl
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+cd recursive
+perl ../server.pl > /dev/null 2> /dev/null &
+origin_server_pid=$!
+cd ..
+
+rm -fr DIR
+mkdir DIR
+$VALGRIND jscoverage-server --no-highlight --proxy --report-dir=DIR > OUT 2> ERR &
+proxy_server_pid=$!
+proxy_server_port=8080
+
+sleep $delay
+
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/index.html | diff recursive/index.html -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/style.css | diff recursive/style.css -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/unix.txt | diff recursive/unix.txt -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/windows.txt | diff recursive/windows.txt -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/image.png | diff recursive/image.png -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/x | diff recursive/x -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/1/1.html | diff recursive/1/1.html -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/1/1.css | diff recursive/1/1.css -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/1/2/2.html | diff recursive/1/2/2.html -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/1/2/2.css | diff recursive/1/2/2.css -
+
+# test localhost
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://localhost:8000/index.html | diff recursive/index.html -
+
+# test actual hostname
+h=`hostname`
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://${h}:8000/index.html | diff recursive/index.html -
+
+# test query string
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/index.html?foo | diff recursive/index.html -
+
+# test POST
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' --post-file=recursive/index.html http://127.0.0.1:8000/ | diff recursive/index.html -
+
+# test javascript
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/script.js > OUT
+cat ../report.js recursive.expected/script.js | sed 's/@PREFIX@/http:\/\/127.0.0.1:8000\//g' | diff --strip-trailing-cr - OUT
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/1/1.js > OUT
+cat ../report.js recursive.expected/1/1.js | sed 's/@PREFIX@/http:\/\/127.0.0.1:8000\//g' | diff --strip-trailing-cr - OUT
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/1/2/2.js > OUT
+cat ../report.js recursive.expected/1/2/2.js | sed 's/@PREFIX@/http:\/\/127.0.0.1:8000\//g' | diff --strip-trailing-cr - OUT
+
+## test jscoverage
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://siliconforks.com/jscoverage.html | diff ../jscoverage.html -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://siliconforks.com/jscoverage.css | diff ../jscoverage.css -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://siliconforks.com/jscoverage-throbber.gif | diff ../jscoverage-throbber.gif -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://siliconforks.com/jscoverage.js > OUT
+echo -e 'jscoverage_isServer = true;\r' | cat ../jscoverage.js - | diff - OUT
+
+# load/store
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8080/' --post-data='{}' http://siliconforks.com/jscoverage-store > /dev/null
+echo -n '{}' | diff - DIR/jscoverage.json
+diff ../jscoverage.html DIR/jscoverage.html
+diff ../jscoverage.css DIR/jscoverage.css
+diff ../jscoverage-throbber.gif DIR/jscoverage-throbber.gif
+echo -e 'jscoverage_isReport = true;\r' | cat ../jscoverage.js - | diff - DIR/jscoverage.js
+
+# send it an FTP request
+echo 400 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 ftp://ftp.example.com 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+
+# nonexistent domain
+echo 504 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://nonexistent 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+
+# 404 not found
+echo 404 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://127.0.0.1:8000/missing 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+echo 404 > EXPECTED
+! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://siliconforks.com/jscoverage-missing 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+
+## send it a server request
+#echo 400 > EXPECTED
+#! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/ 2> /dev/null > ACTUAL
+#diff EXPECTED ACTUAL
+
+# kill $proxy_server_pid
+shutdown
+
+$VALGRIND jscoverage-server --no-highlight --port=8081 --proxy --report-dir=DIR --no-instrument=http://127.0.0.1:8000/1/ &
+proxy_server_pid=$!
+proxy_server_port=8081
+
+sleep $delay
+
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8081/' http://127.0.0.1:8000/script.js > OUT
+cat ../report.js recursive.expected/script.js | sed 's/@PREFIX@/http:\/\/127.0.0.1:8000\//g' | diff --strip-trailing-cr - OUT
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8081/' http://127.0.0.1:8000/1/1.js | diff --strip-trailing-cr recursive/1/1.js -
+wget -q -O- -e 'http_proxy=http://127.0.0.1:8081/' http://127.0.0.1:8000/1/2/2.js | diff --strip-trailing-cr recursive/1/2/2.js -
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive-crlf.sh b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-crlf.sh
new file mode 100755
index 0000000..c95ee81
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-crlf.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+# recursive-crlf.sh - test recursive directory instrumentation, CRLF line endings
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr TMP EXPECTED DIR OUT' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+rm -fr TMP EXPECTED DIR OUT
+
+mkdir -p TMP/1/2
+cd recursive
+cp *.html *.js *.css *.png *.txt x ../TMP
+cp 1/1.html 1/1.js 1/1.css ../TMP/1
+cp 1/2/2.html 1/2/2.js 1/2/2.css ../TMP/1/2
+cd ..
+unix2dos TMP/script.js > /dev/null 2> /dev/null
+unix2dos TMP/1/1.js > /dev/null 2> /dev/null
+unix2dos TMP/1/2/2.js > /dev/null 2> /dev/null
+
+mkdir -p EXPECTED/1/2
+cd recursive.expected
+cp *.html *.js *.css *.png *.txt x ../EXPECTED
+cp 1/1.html 1/1.js 1/1.css ../EXPECTED/1
+cp 1/2/2.html 1/2/2.js 1/2/2.css ../EXPECTED/1/2
+cd ..
+cat recursive.expected/script.js | sed 's/@PREFIX@//g' > EXPECTED/script.js
+cat recursive.expected/1/1.js | sed 's/@PREFIX@//g' > EXPECTED/1/1.js
+cat recursive.expected/1/2/2.js | sed 's/@PREFIX@//g' > EXPECTED/1/2/2.js
+cp ../jscoverage.css ../jscoverage-highlight.css ../jscoverage-ie.css \
+ ../jscoverage-throbber.gif \
+ ../jscoverage.html \
+ ../jscoverage.js EXPECTED
+
+$VALGRIND jscoverage --no-highlight TMP DIR
+test -d DIR
+diff --strip-trailing-cr -r EXPECTED DIR
+
+$VALGRIND jscoverage --no-highlight --verbose TMP DIR > OUT
+test -d DIR
+sort OUT -o OUT
+diff --strip-trailing-cr verbose.expected.out OUT
+diff --strip-trailing-cr -r EXPECTED DIR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive-dir-list.c b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-dir-list.c
new file mode 100644
index 0000000..2f1a7bf
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-dir-list.c
@@ -0,0 +1,93 @@
+/*
+ recursive-dir-list.c - test `make_recursive_dir_list' function
+ Copyright (C) 2007, 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "util.h"
+
+struct Expected {
+ int count;
+ const char * name;
+};
+
+void cleanup(void) {
+ system("rm -fr DIR");
+}
+
+void touch(const char * file) {
+ FILE * f = fopen(file, "w");
+ if (f == NULL) {
+ fatal("cannot open file: %s", file);
+ }
+ fclose(f);
+}
+
+void verify(struct Expected * expected, struct DirListEntry * actual, int length) {
+ struct DirListEntry * p = actual;
+ while (p != NULL) {
+ char * name = p->name;
+ for (int i = 0; i < length; i++) {
+ if (strcmp(expected[i].name, name) == 0) {
+ expected[i].count++;
+ break;
+ }
+ }
+ p = p->next;
+ }
+
+ /* now verify the totals */
+ for (int i = 0; i < length; i++) {
+ assert(expected[i].count == 1);
+ }
+}
+
+int main(void) {
+ atexit(cleanup);
+
+ system("rm -fr DIR");
+
+ /* simple case */
+ xmkdir("DIR");
+ xmkdir("DIR/a");
+ xmkdir("DIR/a/b");
+ xmkdir("DIR/c");
+ xmkdir("DIR/d");
+ touch("DIR/0");
+ touch("DIR/a/1");
+ touch("DIR/a/b/2");
+ touch("DIR/c/3");
+ touch("DIR/c/4");
+ /* DIR/d is empty */
+
+ struct Expected expected[] = {
+ {0, "c/4"},
+ {0, "c/3"},
+ {0, "a/b/2"},
+ {0, "a/1"},
+ {0, "0"},
+ };
+
+ struct DirListEntry * list = make_recursive_dir_list("DIR");
+ verify(expected, list, sizeof(expected) / sizeof(expected[0]));
+ free_dir_list(list);
+
+ exit(EXIT_SUCCESS);
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive-dir-list.sh b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-dir-list.sh
new file mode 100755
index 0000000..d232a0a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-dir-list.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# recursive-dir-list.sh - test `make_recursive_dir_list' function
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+$VALGRIND ./recursive-dir-list
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive-exclude.sh b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-exclude.sh
new file mode 100755
index 0000000..4e5d42e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-exclude.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+# recursive-exclude.sh - test `--exclude' option
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr EXPECTED DIR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+rm -fr DIR
+rm -fr EXPECTED
+cp -r recursive.expected EXPECTED
+find EXPECTED -name .svn | xargs rm -fr
+rm EXPECTED/script.js
+cat recursive.expected/1/1.js | sed 's/@PREFIX@//g' > EXPECTED/1/1.js
+rm -fr EXPECTED/1/2
+cp ../jscoverage.css ../jscoverage-highlight.css ../jscoverage-ie.css \
+ ../jscoverage-throbber.gif \
+ ../jscoverage.html \
+ ../jscoverage.js EXPECTED
+
+$VALGRIND jscoverage --no-highlight --exclude=.svn --exclude=1/.svn --exclude=1/2/.svn --exclude 1/2 --exclude=script.js recursive DIR
+test -d DIR
+diff --strip-trailing-cr -r EXPECTED DIR
+
+rm -fr EXPECTED DIR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive-fatal.sh b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-fatal.sh
new file mode 100755
index 0000000..7fdd151
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-fatal.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+# recursive-fatal.sh - test various fatal errors
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr DIR DIR2 SYM ERR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+rm -fr DIR DIR2 SYM ERR
+
+mkdir DIR
+$VALGRIND jscoverage DIR DIR 2>ERR && exit 1
+
+$VALGRIND jscoverage DIR DIR/1 2>ERR && exit 1
+
+mkdir DIR/1
+$VALGRIND jscoverage DIR/1 DIR 2>ERR && exit 1
+
+cp -r DIR SYM
+$VALGRIND jscoverage DIR SYM 2>ERR && exit 1
+
+$VALGRIND jscoverage SYM DIR 2>ERR && exit 1
+
+rm -fr DIR DIR2 SYM ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive-no-instrument.sh b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-no-instrument.sh
new file mode 100755
index 0000000..1203bec
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive-no-instrument.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+# recursive-no-instrument.sh - test `--no-instrument' option
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr EXPECTED DIR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+rm -fr DIR
+rm -fr EXPECTED
+cp -r recursive.expected EXPECTED
+find EXPECTED -name .svn | xargs rm -fr
+cat recursive/script.js | sed 's/@PREFIX@//g' > EXPECTED/script.js
+cat recursive.expected/1/1.js | sed 's/@PREFIX@//g' > EXPECTED/1/1.js
+cat recursive/1/2/2.js | sed 's/@PREFIX@//g' > EXPECTED/1/2/2.js
+cp ../jscoverage.css ../jscoverage-highlight.css ../jscoverage-ie.css \
+ ../jscoverage-throbber.gif \
+ ../jscoverage.html \
+ ../jscoverage.js EXPECTED
+
+$VALGRIND jscoverage --no-highlight --exclude=.svn --exclude=1/.svn --exclude=1/2/.svn --no-instrument 1/2 --no-instrument=script.js recursive DIR
+test -d DIR
+diff --strip-trailing-cr -r EXPECTED DIR
+
+rm -fr EXPECTED DIR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.css b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.css
new file mode 100644
index 0000000..563d20e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.css
@@ -0,0 +1,3 @@
+body {
+ color: green;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.html b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.html
new file mode 100644
index 0000000..e292b54
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>1</title>
+<script type="text/javascript" src="1.js"></script>
+<link rel="stylesheet" type="text/css" href="1.css">
+</head>
+<body>
+1<br>
+<a href="2/2.html">Next</a>
+</body>
+</html>
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.js b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.js
new file mode 100644
index 0000000..e237b0f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/1.js
@@ -0,0 +1,12 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['@PREFIX@1/1.js']) {
+ _$jscoverage['@PREFIX@1/1.js'] = [];
+ _$jscoverage['@PREFIX@1/1.js'][1] = 0;
+}
+_$jscoverage['@PREFIX@1/1.js'][1]++;
+alert("This is 1");
+_$jscoverage['@PREFIX@1/1.js'].source = ["alert(\"This is 1\");"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.css b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.css
new file mode 100644
index 0000000..7cfe2bf
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.css
@@ -0,0 +1,3 @@
+body {
+ color: blue;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.html b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.html
new file mode 100644
index 0000000..bb83ca6
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>2</title>
+<script type="text/javascript" src="2.js"></script>
+<link rel="stylesheet" type="text/css" href="2.css">
+</head>
+<body>
+2
+</body>
+</html>
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.js b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.js
new file mode 100644
index 0000000..09184a3
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/1/2/2.js
@@ -0,0 +1,12 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['@PREFIX@1/2/2.js']) {
+ _$jscoverage['@PREFIX@1/2/2.js'] = [];
+ _$jscoverage['@PREFIX@1/2/2.js'][1] = 0;
+}
+_$jscoverage['@PREFIX@1/2/2.js'][1]++;
+alert("This is 2");
+_$jscoverage['@PREFIX@1/2/2.js'].source = ["alert(\"This is 2\");"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/image.png b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/image.png
new file mode 100644
index 0000000..da5ef5d
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/image.png
Binary files differ
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/index.html b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/index.html
new file mode 100644
index 0000000..90b7789
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/index.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Test</title>
+<script type="text/javascript" src="script.js"></script>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+Test<br>
+<a href="1/1.html">Next</a>
+</body>
+</html>
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/script.js b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/script.js
new file mode 100644
index 0000000..d9bf48b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/script.js
@@ -0,0 +1,19 @@
+/* automatically generated by JSCoverage - do not edit */
+if (! top._$jscoverage) {
+ top._$jscoverage = {};
+}
+var _$jscoverage = top._$jscoverage;
+if (! _$jscoverage['@PREFIX@script.js']) {
+ _$jscoverage['@PREFIX@script.js'] = [];
+ _$jscoverage['@PREFIX@script.js'][1] = 0;
+ _$jscoverage['@PREFIX@script.js'][4] = 0;
+ _$jscoverage['@PREFIX@script.js'][5] = 0;
+}
+_$jscoverage['@PREFIX@script.js'][1]++;
+alert("hello");
+_$jscoverage['@PREFIX@script.js'][4]++;
+if ("a" < "b" && "a" > "b") {
+ _$jscoverage['@PREFIX@script.js'][5]++;
+ alert("?");
+}
+_$jscoverage['@PREFIX@script.js'].source = ["alert(\"hello\");","","// test formatting &amp;lt; &amp;gt; &amp;amp;","if ('a' &lt; 'b' &amp;&amp; 'a' &gt; 'b') {"," alert(\"?\");","}"];
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/style.css b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/style.css
new file mode 100644
index 0000000..60f1eab
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/style.css
@@ -0,0 +1,3 @@
+body {
+ color: red;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/unix.txt b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/unix.txt
new file mode 100644
index 0000000..01e79c3
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/unix.txt
@@ -0,0 +1,3 @@
+1
+2
+3
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/windows.txt b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/windows.txt
new file mode 100644
index 0000000..294d779
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/windows.txt
@@ -0,0 +1,3 @@
+1
+2
+3
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/x b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/x
new file mode 100644
index 0000000..587be6b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.expected/x
@@ -0,0 +1 @@
+x
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive.sh b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.sh
new file mode 100755
index 0000000..f7c0d09
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+# recursive.sh - test recursive directory instrumentation
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr EXPECTED DIR OUT' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+rm -fr DIR
+rm -fr EXPECTED
+cp -r recursive.expected EXPECTED
+find EXPECTED -name .svn | xargs rm -fr
+cat recursive.expected/script.js | sed 's/@PREFIX@//g' > EXPECTED/script.js
+cat recursive.expected/1/1.js | sed 's/@PREFIX@//g' > EXPECTED/1/1.js
+cat recursive.expected/1/2/2.js | sed 's/@PREFIX@//g' > EXPECTED/1/2/2.js
+cp ../jscoverage.css ../jscoverage-highlight.css ../jscoverage-ie.css \
+ ../jscoverage-throbber.gif \
+ ../jscoverage.html \
+ ../jscoverage.js EXPECTED
+
+$VALGRIND jscoverage --no-highlight --exclude=.svn --exclude=1/.svn --exclude=1/2/.svn recursive DIR
+test -d DIR
+diff --strip-trailing-cr -r EXPECTED DIR
+
+$VALGRIND jscoverage --no-highlight --verbose --exclude .svn --exclude 1/.svn --exclude 1/2/.svn recursive DIR >OUT
+test -d DIR
+sort OUT -o OUT
+diff --strip-trailing-cr verbose.expected.out OUT
+diff --strip-trailing-cr -r EXPECTED DIR
+
+# does it handle an argument with a slash at the end?
+$VALGRIND jscoverage --no-highlight --exclude=.svn --exclude=1/.svn --exclude=1/2/.svn recursive/ DIR
+diff --strip-trailing-cr -r EXPECTED DIR
+$VALGRIND jscoverage --no-highlight --exclude=.svn --exclude=1/.svn --exclude=1/2/.svn recursive DIR/
+diff --strip-trailing-cr -r EXPECTED DIR
+$VALGRIND jscoverage --no-highlight --exclude=.svn --exclude=1/.svn --exclude=1/2/.svn recursive/ DIR/
+diff --strip-trailing-cr -r EXPECTED DIR
+
+rm -fr EXPECTED DIR OUT
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.css b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.css
new file mode 100644
index 0000000..563d20e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.css
@@ -0,0 +1,3 @@
+body {
+ color: green;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.html b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.html
new file mode 100644
index 0000000..e292b54
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>1</title>
+<script type="text/javascript" src="1.js"></script>
+<link rel="stylesheet" type="text/css" href="1.css">
+</head>
+<body>
+1<br>
+<a href="2/2.html">Next</a>
+</body>
+</html>
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.js b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.js
new file mode 100644
index 0000000..5f73e02
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/1.js
@@ -0,0 +1 @@
+alert("This is 1");
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.css b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.css
new file mode 100644
index 0000000..7cfe2bf
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.css
@@ -0,0 +1,3 @@
+body {
+ color: blue;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.html b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.html
new file mode 100644
index 0000000..bb83ca6
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>2</title>
+<script type="text/javascript" src="2.js"></script>
+<link rel="stylesheet" type="text/css" href="2.css">
+</head>
+<body>
+2
+</body>
+</html>
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.js b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.js
new file mode 100644
index 0000000..e0f7496
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/1/2/2.js
@@ -0,0 +1 @@
+alert("This is 2");
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/image.png b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/image.png
new file mode 100644
index 0000000..da5ef5d
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/image.png
Binary files differ
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/index.html b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/index.html
new file mode 100644
index 0000000..90b7789
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/index.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Test</title>
+<script type="text/javascript" src="script.js"></script>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+Test<br>
+<a href="1/1.html">Next</a>
+</body>
+</html>
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/script.js b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/script.js
new file mode 100644
index 0000000..1671f23
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/script.js
@@ -0,0 +1,6 @@
+alert("hello");
+
+// test formatting &lt; &gt; &amp;
+if ('a' < 'b' && 'a' > 'b') {
+ alert("?");
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/style.css b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/style.css
new file mode 100644
index 0000000..60f1eab
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/style.css
@@ -0,0 +1,3 @@
+body {
+ color: red;
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/unix.txt b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/unix.txt
new file mode 100644
index 0000000..01e79c3
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/unix.txt
@@ -0,0 +1,3 @@
+1
+2
+3
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/windows.txt b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/windows.txt
new file mode 100644
index 0000000..294d779
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/windows.txt
@@ -0,0 +1,3 @@
+1
+2
+3
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/recursive/x b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/x
new file mode 100644
index 0000000..587be6b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/recursive/x
@@ -0,0 +1 @@
+x
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/same-directory.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/same-directory.expected.err
new file mode 100644
index 0000000..4f9362a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/same-directory.expected.err
@@ -0,0 +1 @@
+jscoverage: source and destination are the same
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/same-directory.sh b/tools/node_modules/expresso/deps/jscoverage/tests/same-directory.sh
new file mode 100755
index 0000000..e07867b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/same-directory.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+# same-directory.sh - test with source and destination same directory
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr OUT ERR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+$VALGRIND jscoverage javascript javascript > OUT 2> ERR && exit 1
+test ! -s OUT
+test -s ERR
+diff --strip-trailing-cr same-directory.expected.err ERR
+
+rm -fr OUT ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-bad-requests.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-bad-requests.sh
new file mode 100755
index 0000000..e85a18d
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-bad-requests.sh
@@ -0,0 +1,104 @@
+#!/bin/sh
+# server-bad-requests.sh - test jscoverage-server with bad requests
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+ rm -fr EXPECTED ACTUAL OUT ERR
+}
+
+bad_request() {
+ /bin/echo -ne "$1" | $NETCAT 127.0.0.1 $server_port > OUT 2> ERR
+ echo 'HTTP/1.1 400 Bad Request' > EXPECTED
+ head -n 1 OUT > ACTUAL
+ diff --strip-trailing-cr EXPECTED ACTUAL
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+if which netcat > /dev/null 2> /dev/null
+then
+ NETCAT=netcat
+elif which nc > /dev/null 2> /dev/null
+then
+ NETCAT=nc
+else
+ NETCAT='perl netcat.pl';
+fi
+
+rm -fr EXPECTED ACTUAL OUT ERR
+$VALGRIND jscoverage-server --port 8000 > /dev/null 2> /dev/null &
+server_pid=$!
+server_port=8000
+
+sleep $delay
+
+# send NUL in Request-Line
+bad_request 'GET \0000 HTTP/1.1\r\n\r\n'
+
+# send empty Request-Line
+bad_request '\r\n\r\n'
+
+# send bad Request-Line
+bad_request ' \r\n\r\n'
+bad_request 'GET\r\n\r\n'
+bad_request 'GET \r\n\r\n'
+bad_request 'GET \r\n\r\n'
+bad_request 'GET /\r\n\r\n'
+bad_request 'GET / \r\n\r\n'
+
+# bad Host header
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nHost: foo:bar\r\n\r\n'
+
+# NUL in header
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nFoo: \0000\r\n\r\n'
+
+# missing header
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\n: bar\r\n\r\n'
+
+# missing header value
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nFoo:\r\n\r\n'
+
+# bad Transfer-Encoding
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo;\r\n\r\n'
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar\r\n\r\n'
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\r\n\r\n'
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\r\n\r\n'
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\\\0200"\r\n\r\n'
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = "\0177"\r\n\r\n'
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: foo; bar = ;\r\n\r\n'
+
+# bad Content-Length
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 4294967296\r\n\r\n'
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 4294967300\r\n\r\n'
+bad_request 'GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: foo\r\n\r\n'
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-close-after-request.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-close-after-request.sh
new file mode 100755
index 0000000..4a27b33
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-close-after-request.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+# server-close-after-request.sh - test jscoverage-server with client that closes connection after request
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+$VALGRIND jscoverage-server --port 8000 > OUT 2> ERR &
+server_pid=$!
+server_port=8000
+
+sleep $delay
+
+./http-client-close-after-request
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-content-types.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-content-types.sh
new file mode 100755
index 0000000..69e6b6a
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-content-types.sh
@@ -0,0 +1,68 @@
+#!/bin/sh
+# server-content-types.sh - test jscoverage-server Content-Type headers
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+ rm -f x x.y
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+$VALGRIND jscoverage-server > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+echo text/html > EXPECTED
+! curl -f -w '%{content_type}\n' -o /dev/null http://127.0.0.1:8080/recursive/index.html 2> /dev/null > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
+
+echo text/plain > EXPECTED
+! curl -f -w '%{content_type}\n' -o /dev/null http://127.0.0.1:8080/recursive/unix.txt 2> /dev/null > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
+
+echo text/plain > EXPECTED
+! curl -f -w '%{content_type}\n' -o /dev/null http://127.0.0.1:8080/recursive/windows.txt 2> /dev/null > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
+
+touch x
+echo application/octet-stream > EXPECTED
+! curl -f -w '%{content_type}\n' -o /dev/null http://127.0.0.1:8080/x 2> /dev/null > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
+
+touch x.y
+echo application/octet-stream > EXPECTED
+! curl -f -w '%{content_type}\n' -o /dev/null http://127.0.0.1:8080/x.y 2> /dev/null > ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-directory-listing.expected b/tools/node_modules/expresso/deps/jscoverage/tests/server-directory-listing.expected
new file mode 100644
index 0000000..2a9fdd3
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-directory-listing.expected
@@ -0,0 +1,4 @@
+<a href=".">.</a><br>
+<a href="..">..</a><br>
+<a href="1&amp;2.txt">1&amp;2.txt</a><br>
+<a href="1%202.txt">1 2.txt</a><br>
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-directory-listing.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-directory-listing.sh
new file mode 100755
index 0000000..fca3c2f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-directory-listing.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# server-directory-listing.sh - test jscoverage-server directory listings
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+mkdir DIR
+$VALGRIND jscoverage-server --document-root=DIR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+# make some funny files
+echo x > 'DIR/1&2.txt'
+echo x > 'DIR/1 2.txt'
+
+sort server-directory-listing.expected -o EXPECTED
+wget -q -O- http://127.0.0.1:8080/ > ACTUAL
+sort ACTUAL -o ACTUAL
+diff --strip-trailing-cr EXPECTED ACTUAL
+
+rm -fr DIR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-directory-redirect.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-directory-redirect.sh
new file mode 100755
index 0000000..179cefd
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-directory-redirect.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+# server-directory-redirect.sh - test jscoverage-server directory redirect
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+$VALGRIND jscoverage-server --document-root=recursive > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+echo 'HTTP/1.1 301 Moved Permanently' > EXPECTED
+# curl -f doesn't seem to work with 3xx
+! curl -D ACTUAL http://127.0.0.1:8080/1 2> /dev/null > /dev/null
+cat ACTUAL | tr -d '\r' | head -1 | diff EXPECTED -
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-encoded-url.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-encoded-url.sh
new file mode 100755
index 0000000..e205c18
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-encoded-url.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# server-encoded-url.sh - test jscoverage-server with encoded URL
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+}
+
+cleanup() {
+ shutdown
+ # rm -fr DIR
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+mkdir DIR
+$VALGRIND jscoverage-server --document-root=DIR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+# make some funny files
+echo x > 'DIR/1+2.txt'
+echo x > 'DIR/1&2.txt'
+echo x > 'DIR/1 2.txt'
+
+wget -q -O- 'http://127.0.0.1:8080/1%2B2.txt' | diff 'DIR/1+2.txt' -
+wget -q -O- 'http://127.0.0.1:8080/1%2b2.txt' | diff 'DIR/1+2.txt' -
+wget -q -O- 'http://127.0.0.1:8080/1%262.txt' | diff 'DIR/1&2.txt' -
+wget -q -O- 'http://127.0.0.1:8080/1%202.txt' | diff 'DIR/1 2.txt' -
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-error.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-error.sh
new file mode 100755
index 0000000..c2a47c4
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-error.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+# server-error.sh - test jscoverage-server with invalid options
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+export PATH=.:..:$PATH
+
+! jscoverage-server --report-dir > OUT 2> ERR
+test ! -s OUT
+test -s ERR
+
+! jscoverage-server --document-root > OUT 2> ERR
+test ! -s OUT
+test -s ERR
+
+! jscoverage-server --ip-address > OUT 2> ERR
+test ! -s OUT
+test -s ERR
+
+! jscoverage-server --no-instrument > OUT 2> ERR
+test ! -s OUT
+test -s ERR
+
+! jscoverage-server --port > OUT 2> ERR
+test ! -s OUT
+test -s ERR
+
+! jscoverage-server --foo > OUT 2> ERR
+test ! -s OUT
+test -s ERR
+
+! jscoverage-server foo > OUT 2> ERR
+test ! -s OUT
+test -s ERR
+
+! jscoverage-server --port x > OUT 2> ERR
+test ! -s OUT
+test -s ERR
+
+! jscoverage-server --port 123456 > OUT 2> ERR
+test ! -s OUT
+test -s ERR
+
+! jscoverage-server --encoding > OUT 2> ERR
+test ! -s OUT
+test -s ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-help.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-help.sh
new file mode 100755
index 0000000..b644549
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-help.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+# server-help.sh - test jscoverage-server --help
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+export PATH=.:..:$PATH
+
+jscoverage-server --help > OUT 2> ERR
+diff --strip-trailing-cr ../jscoverage-server-help.txt OUT
+> TMP
+diff TMP ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-ip-address.expected.out b/tools/node_modules/expresso/deps/jscoverage/tests/server-ip-address.expected.out
new file mode 100644
index 0000000..b1838fb
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-ip-address.expected.out
@@ -0,0 +1,4 @@
+Starting HTTP server on @ADDRESS@:8080
+GET / HTTP/1.0
+POST /jscoverage-shutdown HTTP/1.0
+Stopping HTTP server
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-ip-address.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-ip-address.sh
new file mode 100755
index 0000000..b4a5770
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-ip-address.sh
@@ -0,0 +1,68 @@
+#!/bin/sh
+# server-ip-address.sh - test jscoverage-server --ip-address
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ # shutdown
+ :
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+$VALGRIND jscoverage-server --verbose --ip-address=0.0.0.0 > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+wget -q -O- http://127.0.0.1:${server_port}/ > /dev/null
+
+shutdown
+
+cat server-ip-address.expected.out | sed 's/@ADDRESS@/0.0.0.0/g' > EXPECTED
+cat OUT | tr -d '\r' > ACTUAL
+diff EXPECTED ACTUAL
+
+$VALGRIND jscoverage-server --verbose --ip-address 127.0.0.1 > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+wget -q -O- http://127.0.0.1:${server_port}/ > /dev/null
+
+shutdown
+
+cat server-ip-address.expected.out | sed 's/@ADDRESS@/127.0.0.1/g' > EXPECTED
+cat OUT | tr -d '\r' > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown-bad-method.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown-bad-method.sh
new file mode 100755
index 0000000..d6fa877
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown-bad-method.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+# server-shutdown-bad-method.sh - test jscoverage-server --shutdown with GET
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+$VALGRIND jscoverage-server > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+echo 405 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/jscoverage-shutdown 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown.expected.err
new file mode 100644
index 0000000..5dd4646
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown.expected.err
@@ -0,0 +1 @@
+POST /jscoverage-shutdown
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown.sh
new file mode 100755
index 0000000..c91e6bd
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-shutdown.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# server-shutdown.sh - test jscoverage-server --shutdown
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+cleanup() {
+ kill -9 $origin_server_pid
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+perl server.pl > OUT 2> ERR &
+origin_server_pid=$!
+
+sleep $delay
+
+$VALGRIND jscoverage-server --port 8000 --shutdown
+cat ERR | cut -d'"' -f2 | diff --strip-trailing-cr server-shutdown.expected.err -
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-special-file.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-special-file.sh
new file mode 100755
index 0000000..76196fb
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-special-file.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+# server-special-file.sh - test jscoverage-server with special file
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+# skip on mingw
+uname=`uname`
+case "$uname" in
+ MINGW*)
+ exit 77
+ ;;
+esac
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ rm -f DIR/foo
+ rm -fr DIR
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+mkdir DIR
+mkfifo DIR/foo
+$VALGRIND jscoverage-server > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+echo 404 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/DIR/foo 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-unreadable-directory.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-unreadable-directory.sh
new file mode 100755
index 0000000..4de4ba8
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-unreadable-directory.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+# server-unreadable-directory.sh - test jscoverage-server with unreadable directory
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+# skip on windows
+uname=`uname`
+case "$uname" in
+ CYGWIN* | MINGW*)
+ exit 77
+ ;;
+esac
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ rmdir DIR
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+mkdir DIR
+chmod 000 DIR
+$VALGRIND jscoverage-server > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+echo 404 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/DIR/ 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-unreadable-file.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-unreadable-file.sh
new file mode 100755
index 0000000..20e1369
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-unreadable-file.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+# server-unreadable-file.sh - test jscoverage-server with unreadable file
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+# skip on windows
+uname=`uname`
+case "$uname" in
+ CYGWIN* | MINGW*)
+ exit 77
+ ;;
+esac
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ rm -fr DIR
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+mkdir DIR
+echo Hello > DIR/index.html
+chmod 000 DIR/index.html
+$VALGRIND jscoverage-server > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+echo 404 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/DIR/index.html 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-verbose.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/server-verbose.expected.err
new file mode 100644
index 0000000..e578f28
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-verbose.expected.err
@@ -0,0 +1,4 @@
+Starting HTTP server on 127.0.0.1:8080
+GET /index.html HTTP/1.0
+POST /jscoverage-shutdown HTTP/1.0
+Stopping HTTP server
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-verbose.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-verbose.sh
new file mode 100755
index 0000000..174692e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-verbose.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# server-verbose.sh - test jscoverage-server --verbose
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ # shutdown
+ :
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+$VALGRIND jscoverage-server --document-root=recursive --verbose > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+wget -q -O- http://127.0.0.1:8080/index.html | diff --strip-trailing-cr recursive/index.html -
+
+shutdown
+
+sleep $delay
+
+cat OUT | tr -d '\r' | diff server-verbose.expected.err -
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server-version.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server-version.sh
new file mode 100755
index 0000000..c2a629f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server-version.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+# server-version.sh - test jscoverage-server --version
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+export PATH=.:..:$PATH
+
+jscoverage-server --version > OUT 2> ERR
+test -s OUT
+test ! -s ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server.pl b/tools/node_modules/expresso/deps/jscoverage/tests/server.pl
new file mode 100644
index 0000000..86064b1
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server.pl
@@ -0,0 +1,61 @@
+use strict;
+use warnings;
+
+use HTTP::Daemon;
+use HTTP::Status;
+
+$|++;
+
+my $d = HTTP::Daemon->new(LocalPort => 8000, ReuseAddr => 1) || die;
+print "Please contact me at: <URL:", $d->url, ">\n";
+my $done = 0;
+while (not $done and my $c = $d->accept) {
+ my $r = $c->get_request;
+ if (not defined($r)) {
+ print "Error: ", $c->reason, "\n";
+ $c->close;
+ undef($c);
+ next;
+ }
+ print STDERR $r->method, ' ', $r->url, "\n";
+ $c->force_last_request;
+ if ($r->method eq 'GET') {
+ my $file = substr($r->url->path, 1);
+ if (open FILE, $file) {
+ undef $/;
+ binmode FILE;
+ my $content = <FILE>;
+ close FILE;
+ my @headers = ('Connection' => 'close');
+ if ($file =~ /\.js$/) {
+ push @headers, 'Content-Type' => 'text/javascript';
+ }
+ elsif ($file =~ /\.[^\/]+$/) {
+ push @headers, 'Content-Type' => 'application/octet-stream';
+ }
+ else {
+ # do nothing - no Content-Type
+ }
+ my $response = HTTP::Response->new(200, 'OK', \@headers, $content);
+ $c->send_response($response);
+ }
+ else {
+ my $response = HTTP::Response->new(404, 'Not found', ['Connection' => 'close'], 'Not found');
+ $c->send_response($response);
+ }
+ }
+ elsif ($r->method eq 'POST') {
+ if ($r->url->path eq '/perl-shutdown') {
+ $done = 1;
+ }
+ my $content = $r->content;
+ my $response = HTTP::Response->new(200, 'OK', ['Connection' => 'close'], $content);
+ $c->send_response($response);
+ }
+ else {
+ $c->send_error(RC_FORBIDDEN);
+ }
+ $c->close;
+ undef($c);
+}
+
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/server.sh b/tools/node_modules/expresso/deps/jscoverage/tests/server.sh
new file mode 100755
index 0000000..e936fa1
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/server.sh
@@ -0,0 +1,216 @@
+#!/bin/sh
+# server.sh - test jscoverage-server
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ rm -fr EXPECTED ACTUAL DIR OUT
+ # kill $server_pid
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+if jscoverage-server --version | grep -q 'iconv\|MultiByteToWideChar'
+then
+ character_encoding_support=yes
+else
+ character_encoding_support=no
+fi
+
+rm -fr EXPECTED ACTUAL DIR OUT
+mkdir DIR
+$VALGRIND jscoverage-server --no-highlight --document-root=recursive --report-dir=DIR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+wget -q -O- http://127.0.0.1:8080/index.html | diff recursive/index.html -
+wget -q -O- http://127.0.0.1:8080/style.css | diff recursive/style.css -
+wget -q -O- http://127.0.0.1:8080/unix.txt | diff recursive/unix.txt -
+wget -q -O- http://127.0.0.1:8080/windows.txt | diff recursive/windows.txt -
+wget -q -O- http://127.0.0.1:8080/image.png | diff recursive/image.png -
+wget -q -O- http://127.0.0.1:8080/x | diff recursive/x -
+wget -q -O- http://127.0.0.1:8080/1/1.html | diff recursive/1/1.html -
+wget -q -O- http://127.0.0.1:8080/1/1.css | diff recursive/1/1.css -
+wget -q -O- http://127.0.0.1:8080/1/2/2.html | diff recursive/1/2/2.html -
+wget -q -O- http://127.0.0.1:8080/1/2/2.css | diff recursive/1/2/2.css -
+
+# test query string
+wget -q -O- http://127.0.0.1:8080/index.html?foo | diff recursive/index.html -
+
+# test javascript
+wget -q -O- http://127.0.0.1:8080/script.js > OUT
+cat ../report.js recursive.expected/script.js | sed 's/@PREFIX@/\//g' | diff --strip-trailing-cr - OUT
+wget -q -O- http://127.0.0.1:8080/1/1.js > OUT
+cat ../report.js recursive.expected/1/1.js | sed 's/@PREFIX@/\//g' | diff --strip-trailing-cr - OUT
+wget -q -O- http://127.0.0.1:8080/1/2/2.js > OUT
+cat ../report.js recursive.expected/1/2/2.js | sed 's/@PREFIX@/\//g' | diff --strip-trailing-cr - OUT
+
+# test jscoverage
+wget -q -O- http://127.0.0.1:8080/jscoverage.html | diff ../jscoverage.html -
+wget -q -O- http://127.0.0.1:8080/jscoverage.css | diff ../jscoverage.css -
+wget -q -O- http://127.0.0.1:8080/jscoverage-throbber.gif | diff ../jscoverage-throbber.gif -
+wget -q -O- http://127.0.0.1:8080/jscoverage.js > OUT
+echo -e 'jscoverage_isServer = true;\r' | cat ../jscoverage.js - | diff - OUT
+
+# load/store
+wget --post-data='{}' -q -O- http://127.0.0.1:8080/jscoverage-store > /dev/null
+echo -n '{}' | diff - DIR/jscoverage.json
+diff ../jscoverage.html DIR/jscoverage.html
+diff ../jscoverage.css DIR/jscoverage.css
+diff ../jscoverage-throbber.gif DIR/jscoverage-throbber.gif
+echo -e 'jscoverage_isReport = true;\r' | cat ../jscoverage.js - | diff - DIR/jscoverage.js
+
+# 404 not found
+echo 404 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/missing 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+echo 404 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/jscoverage-missing 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+
+# 403 forbidden
+echo 403 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/../Makefile.am 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+
+## send it a proxy request
+#echo 400 > EXPECTED
+#! curl -f -w '%{http_code}\n' -x 127.0.0.1:8080 http://siliconforks.com/ 2> /dev/null > ACTUAL
+#diff EXPECTED ACTUAL
+
+# kill $server_pid
+shutdown
+
+rm -fr DIR
+mkdir DIR
+case `uname` in
+ MINGW*)
+ $VALGRIND jscoverage-server --no-highlight --port=8081 --document-root=recursive --report-dir=DIR --no-instrument=1/ &
+ ;;
+ *)
+ $VALGRIND jscoverage-server --no-highlight --port=8081 --document-root=recursive --report-dir=DIR --no-instrument=/1/ &
+ ;;
+esac
+server_pid=$!
+server_port=8081
+
+sleep $delay
+
+wget -q -O- http://127.0.0.1:8081/script.js > OUT
+cat ../report.js recursive.expected/script.js | sed 's/@PREFIX@/\//g' | diff --strip-trailing-cr - OUT
+wget -q -O- http://127.0.0.1:8081/1/1.js | diff --strip-trailing-cr recursive/1/1.js -
+wget -q -O- http://127.0.0.1:8081/1/2/2.js | diff --strip-trailing-cr recursive/1/2/2.js -
+
+# kill $server_pid
+shutdown
+
+$VALGRIND jscoverage-server --no-highlight --port 8082 --document-root recursive --report-dir DIR --no-instrument 1/ &
+server_pid=$!
+server_port=8082
+
+sleep $delay
+
+wget -q -O- http://127.0.0.1:8082/script.js > OUT
+cat ../report.js recursive.expected/script.js | sed 's/@PREFIX@/\//g' | diff --strip-trailing-cr - OUT
+wget -q -O- http://127.0.0.1:8082/1/1.js | diff --strip-trailing-cr recursive/1/1.js -
+wget -q -O- http://127.0.0.1:8082/1/2/2.js | diff --strip-trailing-cr recursive/1/2/2.js -
+
+# kill $server_pid
+shutdown
+
+$VALGRIND jscoverage-server --port 8080 --encoding iso-8859-1 --document-root javascript &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+case "$character_encoding_support" in
+ yes)
+ wget -q -O- http://127.0.0.1:8080/javascript-iso-8859-1.js > OUT
+ cat ../report.js javascript.expected/javascript-iso-8859-1.js | sed 's/javascript-iso-8859-1.js/\/javascript-iso-8859-1.js/g' | diff --strip-trailing-cr - OUT
+ ;;
+ *)
+ echo 500 > EXPECTED
+ ! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/javascript-iso-8859-1.js 2> /dev/null > ACTUAL
+ diff EXPECTED ACTUAL
+ ;;
+esac
+
+# kill $server_pid
+shutdown
+
+$VALGRIND jscoverage-server --no-highlight --port=8080 --encoding=utf-8 --document-root=javascript-utf-8 &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+case "$character_encoding_support" in
+ yes)
+ wget -q -O- http://127.0.0.1:8080/javascript-utf-8.js > OUT
+ cat ../report.js javascript-utf-8.expected/javascript-utf-8.js | sed 's/javascript-utf-8.js/\/javascript-utf-8.js/g' | diff --strip-trailing-cr - OUT
+ ;;
+ *)
+ echo 500 > EXPECTED
+ ! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/javascript-utf-8.js 2> /dev/null > ACTUAL
+ diff EXPECTED ACTUAL
+ ;;
+esac
+
+# kill $server_pid
+shutdown
+
+$VALGRIND jscoverage-server --port 8080 --encoding BOGUS --document-root javascript &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+echo 500 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/javascript-iso-8859-1.js 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+
+# kill $server_pid
+shutdown
+
+$VALGRIND jscoverage-server --port 8080 --encoding utf-8 --document-root javascript &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+echo 500 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/javascript-iso-8859-1.js 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/source-does-not-exist.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/source-does-not-exist.expected.err
new file mode 100644
index 0000000..caf61ca
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/source-does-not-exist.expected.err
@@ -0,0 +1,2 @@
+jscoverage: cannot stat file: foo
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/source-is-file.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/source-is-file.expected.err
new file mode 100644
index 0000000..b3fb0b6
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/source-is-file.expected.err
@@ -0,0 +1,2 @@
+jscoverage: not a directory: foo
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-json.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-json.sh
new file mode 100755
index 0000000..5519514
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-json.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+# store-bad-json.sh - test store with invalid JSON
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --document-root=recursive --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+echo 400 > EXPECTED
+! curl -d '!@#$%^&*()' -f -w '%{http_code}\n' http://127.0.0.1:8080/jscoverage-store 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-request-body.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-request-body.sh
new file mode 100755
index 0000000..ef9883e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-request-body.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+# store-bad-request-body.sh - test store with a bad request body
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+export PATH=.:..:$PATH
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --document-root=recursive --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+./http-client-bad-body 8080 http://127.0.0.1:8080/jscoverage-store
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-response-headers.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-response-headers.sh
new file mode 100755
index 0000000..28747b5
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-response-headers.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+# store-bad-response-headers.sh - test store with bad response headers
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+. common.sh
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+ kill -9 $origin_server_pid
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --proxy --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+./http-server-bad-headers &
+origin_server_pid=$!
+
+sleep $delay
+
+# server sending malformed headers
+cat store.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:8000\\//g" > TMP
+wget --post-file=TMP -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/jscoverage-store > /dev/null
+json_cmp store-source-urls.expected.json DIR/jscoverage.json
+sort ERR -o ERR
+diff --strip-trailing-cr store-source-urls.expected.err ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-source-urls.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-source-urls.expected.err
new file mode 100644
index 0000000..49fb754
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-source-urls.expected.err
@@ -0,0 +1,3 @@
+Warning: cannot retrieve URL: 1/1.js
+Warning: cannot retrieve URL: 1/2/2.js
+Warning: cannot retrieve URL: script.js
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-source-urls.expected.json b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-source-urls.expected.json
new file mode 100644
index 0000000..eb24c47
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-bad-source-urls.expected.json
@@ -0,0 +1,14 @@
+{
+ "script.js":{
+ "coverage":[null,1,null,null,1,0],
+ "source":[]
+ },
+ "1/1.js":{
+ "coverage":[null,1],
+ "source":[]
+ },
+ "1/2/2.js":{
+ "coverage":[null,1],
+ "source":[]
+ }
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.expected.json b/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.expected.json
new file mode 100644
index 0000000..9546103
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.expected.json
@@ -0,0 +1,6 @@
+{
+ "/store-escaped-characters.js":{
+ "coverage":[null,1,0,null,null,1,0,null,null,1,0],
+ "source":["function f() {","\treturn \'\\\'\';","}","&#11;","function g() {","\treturn \"\\\"\";","}","\f","function h() {","\treturn \'\\\\\';","}"]
+ }
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.js b/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.js
new file mode 100644
index 0000000..dc8ec36
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.js
@@ -0,0 +1,11 @@
+function f() {
+ return '\'';
+}
+
+function g() {
+ return "\"";
+}
+
+function h() {
+ return '\\';
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.json b/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.json
new file mode 100644
index 0000000..59cf4de
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.json
@@ -0,0 +1,3 @@
+{
+ "/store-escaped-characters.js":[null,1,0,null,null,1,0,null,null,1,0]
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.sh
new file mode 100755
index 0000000..5eb9180
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-escaped-characters.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+# store-escaped-characters.sh - test storing escaped characters in JavaScript source
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+. common.sh
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --no-highlight --report-dir=DIR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+wget --post-file=store-escaped-characters.json -q -O- http://127.0.0.1:8080/jscoverage-store > /dev/null
+json_cmp store-escaped-characters.expected.json DIR/jscoverage.json
+wget --post-file=store-escaped-characters.json -q -O- http://127.0.0.1:8080/jscoverage-store > /dev/null
+cat store-escaped-characters.expected.json | sed s/1,/2,/g > TMP
+json_cmp TMP DIR/jscoverage.json
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-server-bad-body.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store-server-bad-body.sh
new file mode 100755
index 0000000..b6ae810
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-server-bad-body.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+# store-server-bad-body.sh - test storing when server sends bad response body
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+. common.sh
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+ if [ "$origin_server_pid" != "" ]
+ then
+ kill -9 $origin_server_pid
+ fi
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --proxy --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+./http-server-bad-body &
+origin_server_pid=$!
+
+sleep $delay
+
+# server sending malformed body
+cat store.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:8000\\//g" > TMP
+wget --post-file=TMP -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/jscoverage-store > /dev/null
+json_cmp store-source-urls.expected.json DIR/jscoverage.json
+sort ERR -o ERR
+diff --strip-trailing-cr store-source-urls.expected.err ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-server-closes-immediately.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store-server-closes-immediately.sh
new file mode 100755
index 0000000..a0ef9f9
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-server-closes-immediately.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+# store-server-closes-immediately.sh - test storing when server closes immediately
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+. common.sh
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+ if [ "$origin_server_pid" != "" ]
+ then
+ kill -9 $origin_server_pid
+ fi
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --proxy --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+./http-server-close-immediately &
+origin_server_pid=$!
+
+sleep $delay
+
+cat store.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:8000\\//g" > TMP
+wget --post-file=TMP -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/jscoverage-store > /dev/null
+json_cmp store-source-urls.expected.json DIR/jscoverage.json
+sort ERR -o ERR
+diff --strip-trailing-cr store-source-urls.expected.err ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.expected.err
new file mode 100644
index 0000000..f00a540
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.expected.err
@@ -0,0 +1 @@
+Warning: cannot open file: /missing.js
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.expected.json b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.expected.json
new file mode 100644
index 0000000..3750b51
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.expected.json
@@ -0,0 +1,6 @@
+{
+ "/missing.js":{
+ "coverage":[null,1,0],
+ "source":[]
+ }
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.json b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.json
new file mode 100644
index 0000000..cfad0dd
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.json
@@ -0,0 +1,3 @@
+{
+ "/missing.js":[null, 1, 0]
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.sh
new file mode 100755
index 0000000..aa2a1fa
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-not-found.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+# store-source-not-found.sh - test store with JavaScript source not found
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+. common.sh
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+wget --post-file=store-source-not-found.json -q -O- http://127.0.0.1:8080/jscoverage-store > /dev/null
+json_cmp store-source-not-found.expected.json DIR/jscoverage.json
+diff --strip-trailing-cr store-source-not-found.expected.err ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-source-urls.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-urls.expected.err
new file mode 100644
index 0000000..90a2dd6
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-urls.expected.err
@@ -0,0 +1,3 @@
+Warning: cannot retrieve URL: http://127.0.0.1:8000/1/1.js
+Warning: cannot retrieve URL: http://127.0.0.1:8000/1/2/2.js
+Warning: cannot retrieve URL: http://127.0.0.1:8000/script.js
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-source-urls.expected.json b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-urls.expected.json
new file mode 100644
index 0000000..cb8d058
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-source-urls.expected.json
@@ -0,0 +1,14 @@
+{
+ "http://127.0.0.1:8000/script.js":{
+ "coverage":[null,1,null,null,1,0],
+ "source":[]
+ },
+ "http://127.0.0.1:8000/1/1.js":{
+ "coverage":[null,1],
+ "source":[]
+ },
+ "http://127.0.0.1:8000/1/2/2.js":{
+ "coverage":[null,1],
+ "source":[]
+ }
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-unreachable-source-urls.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/store-unreachable-source-urls.expected.err
new file mode 100644
index 0000000..96781cf
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-unreachable-source-urls.expected.err
@@ -0,0 +1,3 @@
+Warning: cannot retrieve URL: http://127.0.0.1:1/1/1.js
+Warning: cannot retrieve URL: http://127.0.0.1:1/1/2/2.js
+Warning: cannot retrieve URL: http://127.0.0.1:1/script.js
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-unreachable-source-urls.expected.json b/tools/node_modules/expresso/deps/jscoverage/tests/store-unreachable-source-urls.expected.json
new file mode 100644
index 0000000..0885998
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-unreachable-source-urls.expected.json
@@ -0,0 +1,14 @@
+{
+ "http://127.0.0.1:1/script.js":{
+ "coverage":[null,1,null,null,1,0],
+ "source":[]
+ },
+ "http://127.0.0.1:1/1/1.js":{
+ "coverage":[null,1],
+ "source":[]
+ },
+ "http://127.0.0.1:1/1/2/2.js":{
+ "coverage":[null,1],
+ "source":[]
+ }
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-unreadable-json.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store-unreadable-json.sh
new file mode 100755
index 0000000..026512b
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-unreadable-json.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+# store-unreadable-json.sh - test store when jscoverage.json is not readable
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+. common.sh
+
+# skip on windows
+uname=`uname`
+case "$uname" in
+ CYGWIN* | MINGW*)
+ exit 77
+ ;;
+esac
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --no-highlight --document-root=recursive --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+cat store.json | sed "s/@PREFIX@/\\//g" > TMP
+wget --post-file=TMP -q -O- http://127.0.0.1:8080/jscoverage-store > /dev/null
+cat store.expected.json | sed "s/@PREFIX@/\\//g" > TMP
+json_cmp TMP DIR/jscoverage.json
+
+chmod -r DIR/jscoverage.json
+
+cat store.json | sed "s/@PREFIX@/\\//g" > TMP
+echo 500 > EXPECTED
+! curl -d @TMP -f -w '%{http_code}\n' http://127.0.0.1:8080/jscoverage-store 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store-unwritable-json.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store-unwritable-json.sh
new file mode 100755
index 0000000..786e9bc
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store-unwritable-json.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+# store-unwritable-json.sh - test store when jscoverage.json is not writable
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+. common.sh
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ shutdown
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --no-highlight --document-root=recursive --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+cat store.json | sed "s/@PREFIX@/\\//g" > TMP
+wget --post-file=TMP -q -O- http://127.0.0.1:8080/jscoverage-store > /dev/null
+cat store.expected.json | sed "s/@PREFIX@/\\//g" > TMP
+json_cmp TMP DIR/jscoverage.json
+
+chmod -w DIR/jscoverage.json
+
+cat store.json | sed "s/@PREFIX@/\\//g" > TMP
+echo 500 > EXPECTED
+! curl -d @TMP -f -w '%{http_code}\n' http://127.0.0.1:8080/jscoverage-store 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store.expected.json b/tools/node_modules/expresso/deps/jscoverage/tests/store.expected.json
new file mode 100644
index 0000000..2aa393e
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store.expected.json
@@ -0,0 +1,14 @@
+{
+ "@PREFIX@script.js":{
+ "coverage":[null,1,null,null,1,0],
+ "source":["alert(\"hello\");","","// test formatting &amp;lt; &amp;gt; &amp;amp;","if ('a' &lt; 'b' &amp;&amp; 'a' &gt; 'b') {"," alert(\"?\");","}"]
+ },
+ "@PREFIX@1/1.js":{
+ "coverage":[null,1],
+ "source":["alert(\"This is 1\");"]
+ },
+ "@PREFIX@1/2/2.js":{
+ "coverage":[null,1],
+ "source":["alert(\"This is 2\");"]
+ }
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store.json b/tools/node_modules/expresso/deps/jscoverage/tests/store.json
new file mode 100644
index 0000000..942d686
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store.json
@@ -0,0 +1,5 @@
+{
+ "@PREFIX@script.js":[null,1,null,null,1,0],
+ "@PREFIX@1/1.js":[null,1],
+ "@PREFIX@1/2/2.js":[null,1]
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/store.sh b/tools/node_modules/expresso/deps/jscoverage/tests/store.sh
new file mode 100755
index 0000000..fb12574
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/store.sh
@@ -0,0 +1,137 @@
+#!/bin/sh
+# store.sh - test storing coverage reports with jscoverage-server
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+. common.sh
+
+shutdown() {
+ wget -q -O- --post-data= "http://127.0.0.1:${server_port}/jscoverage-shutdown" > /dev/null
+ wait $server_pid
+}
+
+cleanup() {
+ # rm -fr DIR
+ # kill $server_pid
+ shutdown
+ if [ "$origin_server_pid" != "" ]
+ then
+ kill -9 $origin_server_pid
+ fi
+}
+
+trap 'cleanup' 0 1 2 3 15
+
+if [ -z "$VALGRIND" ]
+then
+ delay=0.2
+else
+ delay=2
+fi
+
+rm -fr DIR
+$VALGRIND jscoverage-server --no-highlight --document-root=recursive --report-dir=DIR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+cat store.json | sed "s/@PREFIX@/\\//g" > TMP
+wget --post-file=TMP -q -O- http://127.0.0.1:8080/jscoverage-store > /dev/null
+cat store.expected.json | sed "s/@PREFIX@/\\//g" > TMP
+json_cmp TMP DIR/jscoverage.json
+
+cat store.json | sed "s/@PREFIX@/\\//g" > TMP
+wget --post-file=TMP -q -O- http://127.0.0.1:8080/jscoverage-store > /dev/null
+cat store.expected.json | sed "s/@PREFIX@/\\//g" | sed "s/,1/,2/g" > TMP
+json_cmp TMP DIR/jscoverage.json
+
+# try invalid method
+echo 405 > EXPECTED
+! curl -f -w '%{http_code}\n' http://127.0.0.1:8080/jscoverage-store 2> /dev/null > ACTUAL
+diff EXPECTED ACTUAL
+
+# try with a path
+cat store.json | sed "s/@PREFIX@/\\//g" > TMP
+wget --post-file=TMP -q -O- http://127.0.0.1:8080/jscoverage-store/DIR > /dev/null
+cat store.expected.json | sed "s/@PREFIX@/\\//g" > TMP
+json_cmp TMP DIR/DIR/jscoverage.json
+
+shutdown
+
+cd recursive
+perl ../server.pl > /dev/null 2> /dev/null &
+origin_server_pid=$!
+cd ..
+
+rm -fr DIR
+$VALGRIND jscoverage-server --no-highlight --proxy --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+# test with proxy
+cat store.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:8000\\//g" > TMP
+wget --post-file=TMP -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/jscoverage-store > /dev/null
+cat store.expected.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:8000\\//g" > TMP
+json_cmp TMP DIR/jscoverage.json
+
+cat store.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:8000\\//g" > TMP
+wget --post-file=TMP -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/jscoverage-store > /dev/null
+cat store.expected.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:8000\\//g" | sed "s/,1/,2/g" > TMP
+json_cmp TMP DIR/jscoverage.json
+
+# test cached source
+rm -fr DIR
+cat store.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:8000\\//g" > TMP
+wget --post-file=TMP -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/jscoverage-store > /dev/null
+cat store.expected.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:8000\\//g" > TMP
+json_cmp TMP DIR/jscoverage.json
+
+shutdown
+
+rm -fr DIR
+$VALGRIND jscoverage-server --no-highlight --proxy --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+# store JSON with bad source URLs
+cat store.json | sed "s/@PREFIX@//g" > TMP
+wget --post-file=TMP -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/jscoverage-store > /dev/null
+json_cmp store-bad-source-urls.expected.json DIR/jscoverage.json
+sort ERR -o ERR
+diff --strip-trailing-cr store-bad-source-urls.expected.err ERR
+
+shutdown
+
+rm -fr DIR
+$VALGRIND jscoverage-server --no-highlight --proxy --report-dir=DIR > OUT 2> ERR &
+server_pid=$!
+server_port=8080
+
+sleep $delay
+
+# store JSON with unreachable source URLs
+cat store.json | sed "s/@PREFIX@/http:\\/\\/127.0.0.1:1\\//g" > TMP
+wget --post-file=TMP -q -O- -e 'http_proxy=http://127.0.0.1:8080/' http://127.0.0.1:8000/jscoverage-store > /dev/null
+json_cmp store-unreachable-source-urls.expected.json DIR/jscoverage.json
+sort ERR -o ERR
+diff --strip-trailing-cr store-unreachable-source-urls.expected.err ERR
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/streams.c b/tools/node_modules/expresso/deps/jscoverage/tests/streams.c
new file mode 100644
index 0000000..06389fb
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/streams.c
@@ -0,0 +1,107 @@
+/*
+ streams.c - test `Stream' object
+ Copyright (C) 2008 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include <assert.h>
+#include <string.h>
+
+#include "stream.h"
+#include "util.h"
+
+int main(void) {
+ Stream * stream;
+
+ stream = Stream_new(0);
+ Stream_write_string(stream, "a");
+ Stream_write_string(stream, "bc");
+ assert(stream->length == 3);
+ assert(memcmp(stream->data, "abc", 3) == 0);
+ Stream_delete(stream);
+
+ /* test writing chars to stream */
+ stream = Stream_new(2);
+ Stream_write_char(stream, 'a');
+ Stream_write_char(stream, 'b');
+ Stream_write_char(stream, 'c');
+ assert(stream->length == 3);
+ assert(memcmp(stream->data, "abc", 3) == 0);
+ Stream_reset(stream);
+ Stream_write_char(stream, 'x');
+ Stream_write_char(stream, 'y');
+ assert(stream->length == 2);
+ assert(memcmp(stream->data, "xy", 2) == 0);
+ Stream_delete(stream);
+
+ /* test writing file to stream */
+ stream = Stream_new(0);
+ FILE * f = xfopen("Makefile", "r");
+ fseek(f, 0, SEEK_END);
+ long file_length = ftell(f);
+ fseek(f, 0, SEEK_SET);
+ uint8_t * file_contents = xmalloc(file_length);
+ fread(file_contents, 1, file_length, f);
+ fseek(f, 0, SEEK_SET);
+ Stream_write_file_contents(stream, f);
+ fclose(f);
+ assert(stream->length == (size_t) file_length);
+ assert(memcmp(stream->data, file_contents, file_length) == 0);
+ free(file_contents);
+ Stream_delete(stream);
+
+ stream = Stream_new(0);
+ Stream_printf(stream, "%s %d\n", "abc", 123);
+ assert(stream->length == 8);
+ assert(memcmp(stream->data, "abc 123\n", 8) == 0);
+ Stream_delete(stream);
+
+ stream = Stream_new(10);
+ size_t length = 0;
+ for (int i = 0; i < 100; i++) {
+ Stream_printf(stream, "%s %d\n", "abc", i);
+ if (i < 10) {
+ length += 6;
+ }
+ else {
+ length += 7;
+ }
+ }
+ assert(stream->length == length);
+ length = 0;
+ for (int i = 0; i < 100; i++) {
+ char buffer[8];
+ int result = sprintf(buffer, "%s %d\n", "abc", i);
+ assert(memcmp(stream->data + length, buffer, result) == 0);
+ length += result;
+ }
+ assert(stream->length == length);
+ Stream_delete(stream);
+
+ stream = Stream_new(10);
+ char buffer[100];
+ for (int i = 0; i < 100; i++) {
+ buffer[i] = 'x';
+ }
+ Stream_write(stream, buffer, 100);
+ assert(stream->length == 100);
+ for (int i = 0; i < 100; i++) {
+ assert(stream->data[i] == 'x');
+ }
+ Stream_delete(stream);
+
+ exit(EXIT_SUCCESS);
+}
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/streams.sh b/tools/node_modules/expresso/deps/jscoverage/tests/streams.sh
new file mode 100755
index 0000000..74cfebd
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/streams.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# streams.sh - test `Stream' object
+# Copyright (C) 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+$VALGRIND ./streams
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/too-many-arguments.expected.err b/tools/node_modules/expresso/deps/jscoverage/tests/too-many-arguments.expected.err
new file mode 100644
index 0000000..4ab8b42
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/too-many-arguments.expected.err
@@ -0,0 +1,2 @@
+jscoverage: too many arguments
+Try `jscoverage --help' for more information.
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/valgrind.sh b/tools/node_modules/expresso/deps/jscoverage/tests/valgrind.sh
new file mode 100755
index 0000000..c575324
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/valgrind.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+rm -f VALGRIND.*
+export VALGRIND='valgrind --log-file=VALGRIND.%p'
+make check
+grep --color=always 'ERROR SUMMARY:' VALGRIND.*
+grep --color=always 'definitely lost:' VALGRIND.*
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/verbose.expected.out b/tools/node_modules/expresso/deps/jscoverage/tests/verbose.expected.out
new file mode 100644
index 0000000..c2c147f
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/verbose.expected.out
@@ -0,0 +1,13 @@
+Instrumenting file 1/1.css
+Instrumenting file 1/1.html
+Instrumenting file 1/1.js
+Instrumenting file 1/2/2.css
+Instrumenting file 1/2/2.html
+Instrumenting file 1/2/2.js
+Instrumenting file image.png
+Instrumenting file index.html
+Instrumenting file script.js
+Instrumenting file style.css
+Instrumenting file unix.txt
+Instrumenting file windows.txt
+Instrumenting file x
diff --git a/tools/node_modules/expresso/deps/jscoverage/tests/version.sh b/tools/node_modules/expresso/deps/jscoverage/tests/version.sh
new file mode 100755
index 0000000..da0a26c
--- /dev/null
+++ b/tools/node_modules/expresso/deps/jscoverage/tests/version.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# version.sh - test `--version' option
+# Copyright (C) 2007, 2008 siliconforks.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+trap 'rm -fr OUT ERR' 1 2 3 15
+
+export PATH=.:..:$PATH
+
+$VALGRIND jscoverage --version > OUT 2> ERR
+test -s OUT
+test ! -s ERR
+
+rm -fr OUT ERR