traceur-rb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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);