traceur-rb 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +1 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/Gemfile +4 -0
  7. data/Guardfile +8 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +87 -0
  10. data/Rakefile +2 -0
  11. data/lib/js/compile.js +31 -0
  12. data/lib/traceur-rb.rb +1 -0
  13. data/lib/traceur.rb +43 -0
  14. data/lib/traceur/compilation_options.rb +65 -0
  15. data/lib/traceur/compiler.rb +33 -0
  16. data/lib/traceur/configuration.rb +47 -0
  17. data/lib/traceur/node.rb +26 -0
  18. data/lib/traceur/node/command_result.rb +28 -0
  19. data/lib/traceur/node/runner.rb +40 -0
  20. data/lib/traceur/version.rb +3 -0
  21. data/spec/examples/classes.js +12 -0
  22. data/spec/integration/examples_spec.rb +28 -0
  23. data/spec/spec_helper.rb +1 -0
  24. data/spec/traceur/compilation_options_spec.rb +31 -0
  25. data/spec/traceur/configuration_spec.rb +54 -0
  26. data/spec/traceur/node_spec.rb +15 -0
  27. data/traceur-rb.gemspec +25 -0
  28. data/vendor/node_modules/.bin/traceur +3 -0
  29. data/vendor/node_modules/traceur/README.md +40 -0
  30. data/vendor/node_modules/traceur/bin/traceur-runtime.js +2101 -0
  31. data/vendor/node_modules/traceur/bin/traceur.js +23034 -0
  32. data/vendor/node_modules/traceur/node_modules/.bin/semver +125 -0
  33. data/vendor/node_modules/traceur/node_modules/commander/Readme.md +208 -0
  34. data/vendor/node_modules/traceur/node_modules/commander/index.js +852 -0
  35. data/vendor/node_modules/traceur/node_modules/commander/package.json +40 -0
  36. data/vendor/node_modules/traceur/node_modules/q-io/.npmignore +1 -0
  37. data/vendor/node_modules/traceur/node_modules/q-io/.travis.yml +3 -0
  38. data/vendor/node_modules/traceur/node_modules/q-io/CHANGES.md +122 -0
  39. data/vendor/node_modules/traceur/node_modules/q-io/LICENSE +19 -0
  40. data/vendor/node_modules/traceur/node_modules/q-io/README.md +928 -0
  41. data/vendor/node_modules/traceur/node_modules/q-io/buffer-stream.js +59 -0
  42. data/vendor/node_modules/traceur/node_modules/q-io/coverage-report.js +44 -0
  43. data/vendor/node_modules/traceur/node_modules/q-io/deprecate.js +51 -0
  44. data/vendor/node_modules/traceur/node_modules/q-io/fs-boot.js +307 -0
  45. data/vendor/node_modules/traceur/node_modules/q-io/fs-common.js +499 -0
  46. data/vendor/node_modules/traceur/node_modules/q-io/fs-mock.js +547 -0
  47. data/vendor/node_modules/traceur/node_modules/q-io/fs-root.js +105 -0
  48. data/vendor/node_modules/traceur/node_modules/q-io/fs.js +355 -0
  49. data/vendor/node_modules/traceur/node_modules/q-io/fs2http.js +65 -0
  50. data/vendor/node_modules/traceur/node_modules/q-io/http-apps.js +152 -0
  51. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/chain.js +24 -0
  52. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/content.js +93 -0
  53. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/cookie.js +154 -0
  54. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/decorators.js +178 -0
  55. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/fs.js +417 -0
  56. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/html.js +58 -0
  57. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/json.js +78 -0
  58. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/negotiate.js +120 -0
  59. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/proxy.js +27 -0
  60. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/redirect.js +209 -0
  61. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/route.js +125 -0
  62. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/status.js +175 -0
  63. data/vendor/node_modules/traceur/node_modules/q-io/http-cookie.js +75 -0
  64. data/vendor/node_modules/traceur/node_modules/q-io/http.js +378 -0
  65. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/.npmignore +11 -0
  66. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/.travis.yml +4 -0
  67. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/CHANGES.md +78 -0
  68. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/LICENSE.md +21 -0
  69. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/README.md +1285 -0
  70. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/collections.js +22 -0
  71. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/dict.js +142 -0
  72. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/fast-map.js +57 -0
  73. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/fast-set.js +183 -0
  74. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-collection.js +261 -0
  75. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-map.js +186 -0
  76. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-order.js +55 -0
  77. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-set.js +59 -0
  78. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/heap.js +236 -0
  79. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/iterator.js +371 -0
  80. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/list.js +435 -0
  81. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/array-changes.js +247 -0
  82. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/map-changes.js +147 -0
  83. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/property-changes.js +448 -0
  84. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/range-changes.js +139 -0
  85. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/lru-map.js +79 -0
  86. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/lru-set.js +142 -0
  87. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/map.js +60 -0
  88. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/multi-map.js +41 -0
  89. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/package.json +12 -0
  90. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/sync +7 -0
  91. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/sync.patch +48 -0
  92. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/weak-map.js +590 -0
  93. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/package.json +49 -0
  94. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/set.js +173 -0
  95. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-array.js +274 -0
  96. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-function.js +59 -0
  97. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-object.js +538 -0
  98. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-regexp.js +14 -0
  99. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim.js +6 -0
  100. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array-map.js +49 -0
  101. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array-set.js +51 -0
  102. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array.js +269 -0
  103. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-map.js +61 -0
  104. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-set.js +736 -0
  105. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/tree-log.js +40 -0
  106. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/weak-map.js +1 -0
  107. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/LICENSE +19 -0
  108. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/README.md +66 -0
  109. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/mime.js +114 -0
  110. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/package.json +35 -0
  111. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/test.js +84 -0
  112. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/types/mime.types +1588 -0
  113. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/types/node.types +77 -0
  114. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/CHANGES +15 -0
  115. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/LICENSE +19 -0
  116. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/README +96 -0
  117. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/lib/mimeparse.js +166 -0
  118. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/package.json +43 -0
  119. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/CONTRIBUTING.md +40 -0
  120. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/LICENSE +19 -0
  121. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/README.md +813 -0
  122. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/benchmark/compare-with-callbacks.js +71 -0
  123. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/benchmark/scenarios.js +36 -0
  124. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/package.json +93 -0
  125. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/q.js +1937 -0
  126. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/queue.js +35 -0
  127. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/.gitmodules +6 -0
  128. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/History.md +36 -0
  129. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/Makefile +7 -0
  130. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/Readme.md +38 -0
  131. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/benchmark.js +32 -0
  132. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/examples.js +39 -0
  133. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/index.js +2 -0
  134. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/lib/querystring.js +123 -0
  135. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/package.json +19 -0
  136. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/.gitmodules +3 -0
  137. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/.npmignore +3 -0
  138. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/History.md +128 -0
  139. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/Makefile +53 -0
  140. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/Readme.md +61 -0
  141. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/bin/expresso +856 -0
  142. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/api.html +1080 -0
  143. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.html +377 -0
  144. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.md +290 -0
  145. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
  146. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
  147. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/lib/bar.js +4 -0
  148. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/lib/foo.js +16 -0
  149. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/package.json +12 -0
  150. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/assert.test.js +91 -0
  151. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/async.test.js +12 -0
  152. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/bar.test.js +13 -0
  153. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/foo.test.js +14 -0
  154. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/http.test.js +146 -0
  155. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
  156. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
  157. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/.gitmodules +3 -0
  158. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/History.md +22 -0
  159. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/Makefile +6 -0
  160. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/Readme.md +248 -0
  161. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/examples/runner.js +53 -0
  162. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/index.js +2 -0
  163. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/lib/eql.js +91 -0
  164. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/lib/should.js +548 -0
  165. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/package.json +8 -0
  166. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/test/should.test.js +358 -0
  167. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/test/querystring.test.js +133 -0
  168. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/.npmignore +3 -0
  169. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/.travis.yml +4 -0
  170. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/LICENSE.md +20 -0
  171. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/README.md +33 -0
  172. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/package.json +37 -0
  173. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/test/url2-spec.js +125 -0
  174. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/url2.js +151 -0
  175. data/vendor/node_modules/traceur/node_modules/q-io/package.json +51 -0
  176. data/vendor/node_modules/traceur/node_modules/q-io/reader.js +133 -0
  177. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/boot-directory-spec.js +47 -0
  178. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/contains-spec.js +11 -0
  179. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/fixtures/hello.txt +1 -0
  180. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/issues/1-spec.js +33 -0
  181. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/make-tree-spec.js +92 -0
  182. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/append-spec.js +41 -0
  183. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/copy-tree-spec.js +57 -0
  184. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/fixture/hello.txt +1 -0
  185. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/link-spec.js +70 -0
  186. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/make-tree-spec.js +109 -0
  187. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/merge-spec.js +67 -0
  188. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/move-spec.js +219 -0
  189. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/object-spec.js +20 -0
  190. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/range-spec.js +26 -0
  191. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/read-spec.js +40 -0
  192. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/remove-directory-spec.js +37 -0
  193. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/remove-tree-spec.js +39 -0
  194. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/root-spec.js +32 -0
  195. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/stat-spec.js +26 -0
  196. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/symbolic-link-spec.js +86 -0
  197. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/working-directory-spec.js +31 -0
  198. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/write-spec.js +73 -0
  199. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/range-spec.js +23 -0
  200. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/range-spec.txt +1 -0
  201. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/read-spec.js +22 -0
  202. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/relative-spec.js +25 -0
  203. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/reroot-spec.js +45 -0
  204. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/write-spec.js +38 -0
  205. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/cookie-spec.js +52 -0
  206. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/directory-list-spec.js +86 -0
  207. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/01234.txt +1 -0
  208. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/1234.txt +1 -0
  209. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/5678.txt +0 -0
  210. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/9012/3456.txt +0 -0
  211. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/hosts-spec.js +49 -0
  212. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/interpret-range-spec.js +47 -0
  213. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/partial-range-spec.js +186 -0
  214. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/proxy-spec.js +82 -0
  215. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/symbolic-link-spec.js +110 -0
  216. data/vendor/node_modules/traceur/node_modules/q-io/spec/http/agent-spec.js +96 -0
  217. data/vendor/node_modules/traceur/node_modules/q-io/spec/http/basic-spec.js +96 -0
  218. data/vendor/node_modules/traceur/node_modules/q-io/spec/lib/jasmine-promise.js +42 -0
  219. data/vendor/node_modules/traceur/node_modules/q-io/writer.js +111 -0
  220. data/vendor/node_modules/traceur/node_modules/semver/.npmignore +1 -0
  221. data/vendor/node_modules/traceur/node_modules/semver/LICENSE +27 -0
  222. data/vendor/node_modules/traceur/node_modules/semver/Makefile +24 -0
  223. data/vendor/node_modules/traceur/node_modules/semver/README.md +158 -0
  224. data/vendor/node_modules/traceur/node_modules/semver/bin/semver +125 -0
  225. data/vendor/node_modules/traceur/node_modules/semver/foot.js +6 -0
  226. data/vendor/node_modules/traceur/node_modules/semver/head.js +2 -0
  227. data/vendor/node_modules/traceur/node_modules/semver/package.json +31 -0
  228. data/vendor/node_modules/traceur/node_modules/semver/semver.browser.js +1039 -0
  229. data/vendor/node_modules/traceur/node_modules/semver/semver.browser.js.gz +0 -0
  230. data/vendor/node_modules/traceur/node_modules/semver/semver.js +1043 -0
  231. data/vendor/node_modules/traceur/node_modules/semver/semver.min.js +1 -0
  232. data/vendor/node_modules/traceur/node_modules/semver/semver.min.js.gz +0 -0
  233. data/vendor/node_modules/traceur/node_modules/semver/test/amd.js +15 -0
  234. data/vendor/node_modules/traceur/node_modules/semver/test/gtr.js +173 -0
  235. data/vendor/node_modules/traceur/node_modules/semver/test/index.js +584 -0
  236. data/vendor/node_modules/traceur/node_modules/semver/test/ltr.js +174 -0
  237. data/vendor/node_modules/traceur/node_modules/semver/test/no-module.js +19 -0
  238. data/vendor/node_modules/traceur/package.json +64 -0
  239. data/vendor/node_modules/traceur/src/node/System.js +31 -0
  240. data/vendor/node_modules/traceur/src/node/api.js +124 -0
  241. data/vendor/node_modules/traceur/src/node/command.js +141 -0
  242. data/vendor/node_modules/traceur/src/node/compile-single-file.js +69 -0
  243. data/vendor/node_modules/traceur/src/node/compiler.js +116 -0
  244. data/vendor/node_modules/traceur/src/node/deferred.js +110 -0
  245. data/vendor/node_modules/traceur/src/node/file-util.js +73 -0
  246. data/vendor/node_modules/traceur/src/node/getopt.js +147 -0
  247. data/vendor/node_modules/traceur/src/node/inline-module.js +149 -0
  248. data/vendor/node_modules/traceur/src/node/interpreter.js +33 -0
  249. data/vendor/node_modules/traceur/src/node/nodeLoader.js +41 -0
  250. data/vendor/node_modules/traceur/src/node/require.js +85 -0
  251. data/vendor/node_modules/traceur/src/node/to-amd-compiler.js +33 -0
  252. data/vendor/node_modules/traceur/src/node/to-commonjs-compiler.js +33 -0
  253. data/vendor/node_modules/traceur/src/node/traceur.js +32 -0
  254. data/vendor/node_modules/traceur/traceur +3 -0
  255. metadata +359 -0
@@ -0,0 +1,377 @@
1
+ <html>
2
+ <head>
3
+ <title>Expresso - TDD Framework For Node</title>
4
+ <style>
5
+ body {
6
+ font: 13px/1.4 "Helvetica", "Lucida Grande", Arial, sans-serif;
7
+ text-align: center;
8
+ }
9
+ #ribbon {
10
+ position: absolute;
11
+ top: 0;
12
+ right: 0;
13
+ z-index: 10;
14
+ }
15
+ #wrapper {
16
+ margin: 0 auto;
17
+ padding: 50px 80px;
18
+ width: 700px;
19
+ text-align: left;
20
+ }
21
+ h1, h2, h3 {
22
+ margin: 25px 0 15px 0;
23
+ }
24
+ h1 {
25
+ font-size: 35px;
26
+ }
27
+ pre {
28
+ margin: 0 5px;
29
+ padding: 15px;
30
+ border: 1px solid #eee;
31
+ }
32
+ a {
33
+ color: #00aaff;
34
+ }
35
+ </style>
36
+ </head>
37
+ <body>
38
+ <a href="http://github.com/visionmedia/expresso">
39
+ <img alt="Fork me on GitHub" id="ribbon" src="http://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png" />
40
+ </a>
41
+ <div id="wrapper">
42
+ <h1>Expresso</h1>
43
+ <div class='mp'>
44
+ <h2 id="NAME">NAME</h2>
45
+ <p class="man-name">
46
+ <code>index</code>
47
+ </p>
48
+ <p><a href="http://github.com/visionmedia/expresso">Expresso</a> is a JavaScript <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a> framework written for <a href="http://nodejs.org">nodejs</a>. Expresso is extremely fast, and is packed with features such as additional assertion methods, code coverage reporting, CI support, and more.</p>
49
+
50
+ <h2 id="Features">Features</h2>
51
+
52
+ <ul>
53
+ <li>light-weight</li>
54
+ <li>intuitive async support</li>
55
+ <li>intuitive test runner executable</li>
56
+ <li>test coverage support and reporting via <a href="http://github.com/visionmedia/node-jscoverage">node-jscoverage</a></li>
57
+ <li>uses and extends the core <em>assert</em> module</li>
58
+ <li><code>assert.eql()</code> alias of <code>assert.deepEqual()</code></li>
59
+ <li><code>assert.response()</code> http response utility</li>
60
+ <li><code>assert.includes()</code></li>
61
+ <li><code>assert.isNull()</code></li>
62
+ <li><code>assert.isUndefined()</code></li>
63
+ <li><code>assert.isNotNull()</code></li>
64
+ <li><code>assert.isDefined()</code></li>
65
+ <li><code>assert.match()</code></li>
66
+ <li><code>assert.length()</code></li>
67
+ </ul>
68
+
69
+
70
+ <h2 id="Installation">Installation</h2>
71
+
72
+ <p>To install both expresso <em>and</em> node-jscoverage run
73
+ the command below, which will first compile node-jscoverage:</p>
74
+
75
+ <pre><code>$ make install
76
+ </code></pre>
77
+
78
+ <p>To install expresso alone without coverage reporting run:</p>
79
+
80
+ <pre><code>$ make install-expresso
81
+ </code></pre>
82
+
83
+ <p>Install via npm:</p>
84
+
85
+ <pre><code>$ npm install expresso
86
+ </code></pre>
87
+
88
+ <h2 id="Examples">Examples</h2>
89
+
90
+ <p>To define tests we simply export several functions:</p>
91
+
92
+ <pre><code>exports['test String#length'] = function(){
93
+ assert.equal(6, 'foobar'.length);
94
+ };
95
+ </code></pre>
96
+
97
+ <p>Alternatively for large numbers of tests you may want to
98
+ export your own object containing the tests, however this
99
+ is essentially the as above:</p>
100
+
101
+ <pre><code>module.exports = {
102
+ 'test String#length': function(){
103
+ assert.equal(6, 'foobar'.length);
104
+ }
105
+ };
106
+ </code></pre>
107
+
108
+ <p>If you prefer not to use quoted keys:</p>
109
+
110
+ <pre><code>exports.testsStringLength = function(){
111
+ assert.equal(6, 'foobar'.length);
112
+ };
113
+ </code></pre>
114
+
115
+ <p>The argument passed to each callback is <em>beforeExit</em>,
116
+ which is typically used to assert that callbacks have been
117
+ invoked.</p>
118
+
119
+ <pre><code>exports.testAsync = function(beforeExit){
120
+ var n = 0;
121
+ setTimeout(function(){
122
+ ++n;
123
+ assert.ok(true);
124
+ }, 200);
125
+ setTimeout(function(){
126
+ ++n;
127
+ assert.ok(true);
128
+ }, 200);
129
+ beforeExit(function(){
130
+ assert.equal(2, n, 'Ensure both timeouts are called');
131
+ });
132
+ };
133
+ </code></pre>
134
+
135
+ <h2 id="Assert-Utilities">Assert Utilities</h2>
136
+
137
+ <h3 id="assert-isNull-val-msg-">assert.isNull(val[, msg])</h3>
138
+
139
+ <p>Asserts that the given <em>val</em> is <em>null</em>.</p>
140
+
141
+ <pre><code>assert.isNull(null);
142
+ </code></pre>
143
+
144
+ <h3 id="assert-isNotNull-val-msg-">assert.isNotNull(val[, msg])</h3>
145
+
146
+ <p>Asserts that the given <em>val</em> is not <em>null</em>.</p>
147
+
148
+ <pre><code>assert.isNotNull(undefined);
149
+ assert.isNotNull(false);
150
+ </code></pre>
151
+
152
+ <h3 id="assert-isUndefined-val-msg-">assert.isUndefined(val[, msg])</h3>
153
+
154
+ <p>Asserts that the given <em>val</em> is <em>undefined</em>.</p>
155
+
156
+ <pre><code>assert.isUndefined(undefined);
157
+ </code></pre>
158
+
159
+ <h3 id="assert-isDefined-val-msg-">assert.isDefined(val[, msg])</h3>
160
+
161
+ <p>Asserts that the given <em>val</em> is not <em>undefined</em>.</p>
162
+
163
+ <pre><code>assert.isDefined(null);
164
+ assert.isDefined(false);
165
+ </code></pre>
166
+
167
+ <h3 id="assert-match-str-regexp-msg-">assert.match(str, regexp[, msg])</h3>
168
+
169
+ <p>Asserts that the given <em>str</em> matches <em>regexp</em>.</p>
170
+
171
+ <pre><code>assert.match('foobar', /^foo(bar)?/);
172
+ assert.match('foo', /^foo(bar)?/);
173
+ </code></pre>
174
+
175
+ <h3 id="assert-length-val-n-msg-">assert.length(val, n[, msg])</h3>
176
+
177
+ <p>Assert that the given <em>val</em> has a length of <em>n</em>.</p>
178
+
179
+ <pre><code>assert.length([1,2,3], 3);
180
+ assert.length('foo', 3);
181
+ </code></pre>
182
+
183
+ <h3 id="assert-type-obj-type-msg-">assert.type(obj, type[, msg])</h3>
184
+
185
+ <p>Assert that the given <em>obj</em> is typeof <em>type</em>.</p>
186
+
187
+ <pre><code>assert.type(3, 'number');
188
+ </code></pre>
189
+
190
+ <h3 id="assert-eql-a-b-msg-">assert.eql(a, b[, msg])</h3>
191
+
192
+ <p>Assert that object <em>b</em> is equal to object <em>a</em>. This is an
193
+ alias for the core <em>assert.deepEqual()</em> method which does complex
194
+ comparisons, opposed to <em>assert.equal()</em> which uses <em>==</em>.</p>
195
+
196
+ <pre><code>assert.eql('foo', 'foo');
197
+ assert.eql([1,2], [1,2]);
198
+ assert.eql({ foo: 'bar' }, { foo: 'bar' });
199
+ </code></pre>
200
+
201
+ <h3 id="assert-includes-obj-val-msg-">assert.includes(obj, val[, msg])</h3>
202
+
203
+ <p>Assert that <em>obj</em> is within <em>val</em>. This method supports <em>Array_s
204
+ and </em>Strings_s.</p>
205
+
206
+ <pre><code>assert.includes([1,2,3], 3);
207
+ assert.includes('foobar', 'foo');
208
+ assert.includes('foobar', 'bar');
209
+ </code></pre>
210
+
211
+ <h3 id="assert-response-server-req-res-fn-msg-fn-">assert.response(server, req, res|fn[, msg|fn])</h3>
212
+
213
+ <p>Performs assertions on the given <em>server</em>, which should <em>not</em> call
214
+ listen(), as this is handled internally by expresso and the server
215
+ is killed after all responses have completed. This method works with
216
+ any <em>http.Server</em> instance, so <em>Connect</em> and <em>Express</em> servers will work
217
+ as well.</p>
218
+
219
+ <p>The <em>req</em> object may contain:</p>
220
+
221
+ <ul>
222
+ <li><em>url</em> request url</li>
223
+ <li><em>timeout</em> timeout in milliseconds</li>
224
+ <li><em>method</em> HTTP method</li>
225
+ <li><em>data</em> request body</li>
226
+ <li><em>headers</em> headers object</li>
227
+ </ul>
228
+
229
+
230
+ <p>The <em>res</em> object may be a callback function which
231
+ receives the response for assertions, or an object
232
+ which is then used to perform several assertions
233
+ on the response with the following properties:</p>
234
+
235
+ <ul>
236
+ <li><em>body</em> assert response body (regexp or string)</li>
237
+ <li><em>status</em> assert response status code</li>
238
+ <li><em>header</em> assert that all given headers match (unspecified are ignored, use a regexp or string)</li>
239
+ </ul>
240
+
241
+
242
+ <p>When providing <em>res</em> you may then also pass a callback function
243
+ as the fourth argument for additional assertions.</p>
244
+
245
+ <p>Below are some examples:</p>
246
+
247
+ <pre><code>assert.response(server, {
248
+ url: '/', timeout: 500
249
+ }, {
250
+ body: 'foobar'
251
+ });
252
+
253
+ assert.response(server, {
254
+ url: '/',
255
+ method: 'GET'
256
+ },{
257
+ body: '{"name":"tj"}',
258
+ status: 200,
259
+ headers: {
260
+ 'Content-Type': 'application/json; charset=utf8',
261
+ 'X-Foo': 'bar'
262
+ }
263
+ });
264
+
265
+ assert.response(server, {
266
+ url: '/foo',
267
+ method: 'POST',
268
+ data: 'bar baz'
269
+ },{
270
+ body: '/foo bar baz',
271
+ status: 200
272
+ }, 'Test POST');
273
+
274
+ assert.response(server, {
275
+ url: '/foo',
276
+ method: 'POST',
277
+ data: 'bar baz'
278
+ },{
279
+ body: '/foo bar baz',
280
+ status: 200
281
+ }, function(res){
282
+ // All done, do some more tests if needed
283
+ });
284
+
285
+ assert.response(server, {
286
+ url: '/'
287
+ }, function(res){
288
+ assert.ok(res.body.indexOf('tj') &gt;= 0, 'Test assert.response() callback');
289
+ });
290
+ </code></pre>
291
+
292
+ <h2 id="expresso-1-">expresso(1)</h2>
293
+
294
+ <p>To run a single test suite (file) run:</p>
295
+
296
+ <pre><code>$ expresso test/a.test.js
297
+ </code></pre>
298
+
299
+ <p>To run several suites we may simply append another:</p>
300
+
301
+ <pre><code>$ expresso test/a.test.js test/b.test.js
302
+ </code></pre>
303
+
304
+ <p>We can also pass a whitelist of tests to run within all suites:</p>
305
+
306
+ <pre><code>$ expresso --only "foo()" --only "bar()"
307
+ </code></pre>
308
+
309
+ <p>Or several with one call:</p>
310
+
311
+ <pre><code>$ expresso --only "foo(), bar()"
312
+ </code></pre>
313
+
314
+ <p>Globbing is of course possible as well:</p>
315
+
316
+ <pre><code>$ expresso test/*
317
+ </code></pre>
318
+
319
+ <p>When expresso is called without any files, <em>test/*</em> is the default,
320
+ so the following is equivalent to the command above:</p>
321
+
322
+ <pre><code>$ expresso
323
+ </code></pre>
324
+
325
+ <p>If you wish to unshift a path to <code>require.paths</code> before
326
+ running tests, you may use the <code>-I</code> or <code>--include</code> flag.</p>
327
+
328
+ <pre><code>$ expresso --include lib test/*
329
+ </code></pre>
330
+
331
+ <p>The previous example is typically what I would recommend, since expresso
332
+ supports test coverage via <a href="http://github.com/visionmedia/node-jscoverage">node-jscoverage</a> (bundled with expresso),
333
+ so you will need to expose an instrumented version of you library.</p>
334
+
335
+ <p>To instrument your library, simply run <a href="http://github.com/visionmedia/node-jscoverage">node-jscoverage</a>,
336
+ passing the <em>src</em> and <em>dest</em> directories:</p>
337
+
338
+ <pre><code>$ node-jscoverage lib lib-cov
339
+ </code></pre>
340
+
341
+ <p>Now we can run our tests again, using the <em>lib-cov</em> directory that has been
342
+ instrumented with coverage statements:</p>
343
+
344
+ <pre><code>$ expresso -I lib-cov test/*
345
+ </code></pre>
346
+
347
+ <p>The output will look similar to below, depending on your test coverage of course :)</p>
348
+
349
+ <p><img src="http://dl.dropbox.com/u/6396913/cov.png" alt="node coverage" /></p>
350
+
351
+ <p>To make this process easier expresso has the <em>-c</em> or <em>--cov</em> which essentially
352
+ does the same as the two commands above. The following two commands will
353
+ run the same tests, however one will auto-instrument, and unshift <em>lib-cov</em>,
354
+ and the other will run tests normally:</p>
355
+
356
+ <pre><code>$ expresso -I lib test/*
357
+ $ expresso -I lib --cov test/*
358
+ </code></pre>
359
+
360
+ <p>Currently coverage is bound to the <em>lib</em> directory, however in the
361
+ future <code>--cov</code> will most likely accept a path.</p>
362
+
363
+ <h2 id="Async-Exports">Async Exports</h2>
364
+
365
+ <p>Sometimes it is useful to postpone running of tests until a callback or event has fired, currently the <em>exports.foo = function(){};</em> syntax is supported for this:</p>
366
+
367
+ <pre><code>setTimeout(function(){
368
+ exports['test async exports'] = function(){
369
+ assert.ok('wahoo');
370
+ };
371
+ }, 100);
372
+ </code></pre>
373
+
374
+ </div>
375
+ </div>
376
+ </body>
377
+ </html>
@@ -0,0 +1,290 @@
1
+
2
+ [Expresso](http://github.com/visionmedia/expresso) is a JavaScript [TDD](http://en.wikipedia.org/wiki/Test-driven_development) framework written for [nodejs](http://nodejs.org). Expresso is extremely fast, and is packed with features such as additional assertion methods, code coverage reporting, CI support, and more.
3
+
4
+ ## Features
5
+
6
+ - light-weight
7
+ - intuitive async support
8
+ - intuitive test runner executable
9
+ - test coverage support and reporting via [node-jscoverage](http://github.com/visionmedia/node-jscoverage)
10
+ - uses and extends the core _assert_ module
11
+ - `assert.eql()` alias of `assert.deepEqual()`
12
+ - `assert.response()` http response utility
13
+ - `assert.includes()`
14
+ - `assert.isNull()`
15
+ - `assert.isUndefined()`
16
+ - `assert.isNotNull()`
17
+ - `assert.isDefined()`
18
+ - `assert.match()`
19
+ - `assert.length()`
20
+
21
+ ## Installation
22
+
23
+ To install both expresso _and_ node-jscoverage run
24
+ the command below, which will first compile node-jscoverage:
25
+
26
+ $ make install
27
+
28
+ To install expresso alone without coverage reporting run:
29
+
30
+ $ make install-expresso
31
+
32
+ Install via npm:
33
+
34
+ $ npm install expresso
35
+
36
+ ## Examples
37
+
38
+ To define tests we simply export several functions:
39
+
40
+ exports['test String#length'] = function(){
41
+ assert.equal(6, 'foobar'.length);
42
+ };
43
+
44
+ Alternatively for large numbers of tests you may want to
45
+ export your own object containing the tests, however this
46
+ is essentially the as above:
47
+
48
+ module.exports = {
49
+ 'test String#length': function(){
50
+ assert.equal(6, 'foobar'.length);
51
+ }
52
+ };
53
+
54
+ If you prefer not to use quoted keys:
55
+
56
+ exports.testsStringLength = function(){
57
+ assert.equal(6, 'foobar'.length);
58
+ };
59
+
60
+ The argument passed to each callback is _beforeExit_,
61
+ which is typically used to assert that callbacks have been
62
+ invoked.
63
+
64
+ exports.testAsync = function(beforeExit){
65
+ var n = 0;
66
+ setTimeout(function(){
67
+ ++n;
68
+ assert.ok(true);
69
+ }, 200);
70
+ setTimeout(function(){
71
+ ++n;
72
+ assert.ok(true);
73
+ }, 200);
74
+ beforeExit(function(){
75
+ assert.equal(2, n, 'Ensure both timeouts are called');
76
+ });
77
+ };
78
+
79
+ ## Assert Utilities
80
+
81
+ ### assert.isNull(val[, msg])
82
+
83
+ Asserts that the given _val_ is _null_.
84
+
85
+ assert.isNull(null);
86
+
87
+ ### assert.isNotNull(val[, msg])
88
+
89
+ Asserts that the given _val_ is not _null_.
90
+
91
+ assert.isNotNull(undefined);
92
+ assert.isNotNull(false);
93
+
94
+ ### assert.isUndefined(val[, msg])
95
+
96
+ Asserts that the given _val_ is _undefined_.
97
+
98
+ assert.isUndefined(undefined);
99
+
100
+ ### assert.isDefined(val[, msg])
101
+
102
+ Asserts that the given _val_ is not _undefined_.
103
+
104
+ assert.isDefined(null);
105
+ assert.isDefined(false);
106
+
107
+ ### assert.match(str, regexp[, msg])
108
+
109
+ Asserts that the given _str_ matches _regexp_.
110
+
111
+ assert.match('foobar', /^foo(bar)?/);
112
+ assert.match('foo', /^foo(bar)?/);
113
+
114
+ ### assert.length(val, n[, msg])
115
+
116
+ Assert that the given _val_ has a length of _n_.
117
+
118
+ assert.length([1,2,3], 3);
119
+ assert.length('foo', 3);
120
+
121
+ ### assert.type(obj, type[, msg])
122
+
123
+ Assert that the given _obj_ is typeof _type_.
124
+
125
+ assert.type(3, 'number');
126
+
127
+ ### assert.eql(a, b[, msg])
128
+
129
+ Assert that object _b_ is equal to object _a_. This is an
130
+ alias for the core _assert.deepEqual()_ method which does complex
131
+ comparisons, opposed to _assert.equal()_ which uses _==_.
132
+
133
+ assert.eql('foo', 'foo');
134
+ assert.eql([1,2], [1,2]);
135
+ assert.eql({ foo: 'bar' }, { foo: 'bar' });
136
+
137
+ ### assert.includes(obj, val[, msg])
138
+
139
+ Assert that _obj_ is within _val_. This method supports _Array_s
140
+ and _Strings_s.
141
+
142
+ assert.includes([1,2,3], 3);
143
+ assert.includes('foobar', 'foo');
144
+ assert.includes('foobar', 'bar');
145
+
146
+ ### assert.response(server, req, res|fn[, msg|fn])
147
+
148
+ Performs assertions on the given _server_, which should _not_ call
149
+ listen(), as this is handled internally by expresso and the server
150
+ is killed after all responses have completed. This method works with
151
+ any _http.Server_ instance, so _Connect_ and _Express_ servers will work
152
+ as well.
153
+
154
+ The _req_ object may contain:
155
+
156
+ - _url_ request url
157
+ - _timeout_ timeout in milliseconds
158
+ - _method_ HTTP method
159
+ - _data_ request body
160
+ - _headers_ headers object
161
+
162
+ The _res_ object may be a callback function which
163
+ receives the response for assertions, or an object
164
+ which is then used to perform several assertions
165
+ on the response with the following properties:
166
+
167
+ - _body_ assert response body (regexp or string)
168
+ - _status_ assert response status code
169
+ - _header_ assert that all given headers match (unspecified are ignored, use a regexp or string)
170
+
171
+ When providing _res_ you may then also pass a callback function
172
+ as the fourth argument for additional assertions.
173
+
174
+ Below are some examples:
175
+
176
+ assert.response(server, {
177
+ url: '/', timeout: 500
178
+ }, {
179
+ body: 'foobar'
180
+ });
181
+
182
+ assert.response(server, {
183
+ url: '/',
184
+ method: 'GET'
185
+ },{
186
+ body: '{"name":"tj"}',
187
+ status: 200,
188
+ headers: {
189
+ 'Content-Type': 'application/json; charset=utf8',
190
+ 'X-Foo': 'bar'
191
+ }
192
+ });
193
+
194
+ assert.response(server, {
195
+ url: '/foo',
196
+ method: 'POST',
197
+ data: 'bar baz'
198
+ },{
199
+ body: '/foo bar baz',
200
+ status: 200
201
+ }, 'Test POST');
202
+
203
+ assert.response(server, {
204
+ url: '/foo',
205
+ method: 'POST',
206
+ data: 'bar baz'
207
+ },{
208
+ body: '/foo bar baz',
209
+ status: 200
210
+ }, function(res){
211
+ // All done, do some more tests if needed
212
+ });
213
+
214
+ assert.response(server, {
215
+ url: '/'
216
+ }, function(res){
217
+ assert.ok(res.body.indexOf('tj') >= 0, 'Test assert.response() callback');
218
+ });
219
+
220
+
221
+ ## expresso(1)
222
+
223
+ To run a single test suite (file) run:
224
+
225
+ $ expresso test/a.test.js
226
+
227
+ To run several suites we may simply append another:
228
+
229
+ $ expresso test/a.test.js test/b.test.js
230
+
231
+ We can also pass a whitelist of tests to run within all suites:
232
+
233
+ $ expresso --only "foo()" --only "bar()"
234
+
235
+ Or several with one call:
236
+
237
+ $ expresso --only "foo(), bar()"
238
+
239
+ Globbing is of course possible as well:
240
+
241
+ $ expresso test/*
242
+
243
+ When expresso is called without any files, _test/*_ is the default,
244
+ so the following is equivalent to the command above:
245
+
246
+ $ expresso
247
+
248
+ If you wish to unshift a path to `require.paths` before
249
+ running tests, you may use the `-I` or `--include` flag.
250
+
251
+ $ expresso --include lib test/*
252
+
253
+ The previous example is typically what I would recommend, since expresso
254
+ supports test coverage via [node-jscoverage](http://github.com/visionmedia/node-jscoverage) (bundled with expresso),
255
+ so you will need to expose an instrumented version of you library.
256
+
257
+ To instrument your library, simply run [node-jscoverage](http://github.com/visionmedia/node-jscoverage),
258
+ passing the _src_ and _dest_ directories:
259
+
260
+ $ node-jscoverage lib lib-cov
261
+
262
+ Now we can run our tests again, using the _lib-cov_ directory that has been
263
+ instrumented with coverage statements:
264
+
265
+ $ expresso -I lib-cov test/*
266
+
267
+ The output will look similar to below, depending on your test coverage of course :)
268
+
269
+ ![node coverage](http://dl.dropbox.com/u/6396913/cov.png)
270
+
271
+ To make this process easier expresso has the _-c_ or _--cov_ which essentially
272
+ does the same as the two commands above. The following two commands will
273
+ run the same tests, however one will auto-instrument, and unshift _lib-cov_,
274
+ and the other will run tests normally:
275
+
276
+ $ expresso -I lib test/*
277
+ $ expresso -I lib --cov test/*
278
+
279
+ Currently coverage is bound to the _lib_ directory, however in the
280
+ future `--cov` will most likely accept a path.
281
+
282
+ ## Async Exports
283
+
284
+ Sometimes it is useful to postpone running of tests until a callback or event has fired, currently the _exports.foo = function(){};_ syntax is supported for this:
285
+
286
+ setTimeout(function(){
287
+ exports['test async exports'] = function(){
288
+ assert.ok('wahoo');
289
+ };
290
+ }, 100);