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.
- checksums.yaml +15 -0
- data/.gitignore +22 -0
- data/.rspec +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Guardfile +8 -0
- data/LICENSE.txt +22 -0
- data/README.md +87 -0
- data/Rakefile +2 -0
- data/lib/js/compile.js +31 -0
- data/lib/traceur-rb.rb +1 -0
- data/lib/traceur.rb +43 -0
- data/lib/traceur/compilation_options.rb +65 -0
- data/lib/traceur/compiler.rb +33 -0
- data/lib/traceur/configuration.rb +47 -0
- data/lib/traceur/node.rb +26 -0
- data/lib/traceur/node/command_result.rb +28 -0
- data/lib/traceur/node/runner.rb +40 -0
- data/lib/traceur/version.rb +3 -0
- data/spec/examples/classes.js +12 -0
- data/spec/integration/examples_spec.rb +28 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/traceur/compilation_options_spec.rb +31 -0
- data/spec/traceur/configuration_spec.rb +54 -0
- data/spec/traceur/node_spec.rb +15 -0
- data/traceur-rb.gemspec +25 -0
- data/vendor/node_modules/.bin/traceur +3 -0
- data/vendor/node_modules/traceur/README.md +40 -0
- data/vendor/node_modules/traceur/bin/traceur-runtime.js +2101 -0
- data/vendor/node_modules/traceur/bin/traceur.js +23034 -0
- data/vendor/node_modules/traceur/node_modules/.bin/semver +125 -0
- data/vendor/node_modules/traceur/node_modules/commander/Readme.md +208 -0
- data/vendor/node_modules/traceur/node_modules/commander/index.js +852 -0
- data/vendor/node_modules/traceur/node_modules/commander/package.json +40 -0
- data/vendor/node_modules/traceur/node_modules/q-io/.npmignore +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/.travis.yml +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/CHANGES.md +122 -0
- data/vendor/node_modules/traceur/node_modules/q-io/LICENSE +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/README.md +928 -0
- data/vendor/node_modules/traceur/node_modules/q-io/buffer-stream.js +59 -0
- data/vendor/node_modules/traceur/node_modules/q-io/coverage-report.js +44 -0
- data/vendor/node_modules/traceur/node_modules/q-io/deprecate.js +51 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs-boot.js +307 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs-common.js +499 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs-mock.js +547 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs-root.js +105 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs.js +355 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs2http.js +65 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps.js +152 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/chain.js +24 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/content.js +93 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/cookie.js +154 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/decorators.js +178 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/fs.js +417 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/html.js +58 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/json.js +78 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/negotiate.js +120 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/proxy.js +27 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/redirect.js +209 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/route.js +125 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/status.js +175 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-cookie.js +75 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http.js +378 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/.npmignore +11 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/.travis.yml +4 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/CHANGES.md +78 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/LICENSE.md +21 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/README.md +1285 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/collections.js +22 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/dict.js +142 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/fast-map.js +57 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/fast-set.js +183 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-collection.js +261 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-map.js +186 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-order.js +55 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-set.js +59 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/heap.js +236 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/iterator.js +371 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/list.js +435 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/array-changes.js +247 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/map-changes.js +147 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/property-changes.js +448 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/range-changes.js +139 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/lru-map.js +79 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/lru-set.js +142 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/map.js +60 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/multi-map.js +41 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/package.json +12 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/sync +7 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/sync.patch +48 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/weak-map.js +590 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/package.json +49 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/set.js +173 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-array.js +274 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-function.js +59 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-object.js +538 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-regexp.js +14 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim.js +6 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array-map.js +49 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array-set.js +51 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array.js +269 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-map.js +61 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-set.js +736 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/tree-log.js +40 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/weak-map.js +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/LICENSE +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/README.md +66 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/mime.js +114 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/package.json +35 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/test.js +84 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/types/mime.types +1588 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/types/node.types +77 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/CHANGES +15 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/LICENSE +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/README +96 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/lib/mimeparse.js +166 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/package.json +43 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/CONTRIBUTING.md +40 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/LICENSE +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/README.md +813 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/benchmark/compare-with-callbacks.js +71 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/benchmark/scenarios.js +36 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/package.json +93 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/q.js +1937 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/queue.js +35 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/.gitmodules +6 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/History.md +36 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/Makefile +7 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/Readme.md +38 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/benchmark.js +32 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/examples.js +39 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/index.js +2 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/lib/querystring.js +123 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/package.json +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/.gitmodules +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/.npmignore +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/History.md +128 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/Makefile +53 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/Readme.md +61 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/bin/expresso +856 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/api.html +1080 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.html +377 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.md +290 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/lib/bar.js +4 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/lib/foo.js +16 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/package.json +12 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/assert.test.js +91 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/async.test.js +12 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/bar.test.js +13 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/foo.test.js +14 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/http.test.js +146 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/.gitmodules +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/History.md +22 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/Makefile +6 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/Readme.md +248 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/examples/runner.js +53 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/index.js +2 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/lib/eql.js +91 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/lib/should.js +548 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/package.json +8 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/test/should.test.js +358 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/test/querystring.test.js +133 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/.npmignore +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/.travis.yml +4 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/LICENSE.md +20 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/README.md +33 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/package.json +37 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/test/url2-spec.js +125 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/url2.js +151 -0
- data/vendor/node_modules/traceur/node_modules/q-io/package.json +51 -0
- data/vendor/node_modules/traceur/node_modules/q-io/reader.js +133 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/boot-directory-spec.js +47 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/contains-spec.js +11 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/fixtures/hello.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/issues/1-spec.js +33 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/make-tree-spec.js +92 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/append-spec.js +41 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/copy-tree-spec.js +57 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/fixture/hello.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/link-spec.js +70 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/make-tree-spec.js +109 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/merge-spec.js +67 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/move-spec.js +219 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/object-spec.js +20 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/range-spec.js +26 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/read-spec.js +40 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/remove-directory-spec.js +37 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/remove-tree-spec.js +39 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/root-spec.js +32 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/stat-spec.js +26 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/symbolic-link-spec.js +86 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/working-directory-spec.js +31 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/write-spec.js +73 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/range-spec.js +23 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/range-spec.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/read-spec.js +22 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/relative-spec.js +25 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/reroot-spec.js +45 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/write-spec.js +38 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/cookie-spec.js +52 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/directory-list-spec.js +86 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/01234.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/1234.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/5678.txt +0 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/9012/3456.txt +0 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/hosts-spec.js +49 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/interpret-range-spec.js +47 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/partial-range-spec.js +186 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/proxy-spec.js +82 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/symbolic-link-spec.js +110 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http/agent-spec.js +96 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http/basic-spec.js +96 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/lib/jasmine-promise.js +42 -0
- data/vendor/node_modules/traceur/node_modules/q-io/writer.js +111 -0
- data/vendor/node_modules/traceur/node_modules/semver/.npmignore +1 -0
- data/vendor/node_modules/traceur/node_modules/semver/LICENSE +27 -0
- data/vendor/node_modules/traceur/node_modules/semver/Makefile +24 -0
- data/vendor/node_modules/traceur/node_modules/semver/README.md +158 -0
- data/vendor/node_modules/traceur/node_modules/semver/bin/semver +125 -0
- data/vendor/node_modules/traceur/node_modules/semver/foot.js +6 -0
- data/vendor/node_modules/traceur/node_modules/semver/head.js +2 -0
- data/vendor/node_modules/traceur/node_modules/semver/package.json +31 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.browser.js +1039 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.browser.js.gz +0 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.js +1043 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.min.js +1 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.min.js.gz +0 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/amd.js +15 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/gtr.js +173 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/index.js +584 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/ltr.js +174 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/no-module.js +19 -0
- data/vendor/node_modules/traceur/package.json +64 -0
- data/vendor/node_modules/traceur/src/node/System.js +31 -0
- data/vendor/node_modules/traceur/src/node/api.js +124 -0
- data/vendor/node_modules/traceur/src/node/command.js +141 -0
- data/vendor/node_modules/traceur/src/node/compile-single-file.js +69 -0
- data/vendor/node_modules/traceur/src/node/compiler.js +116 -0
- data/vendor/node_modules/traceur/src/node/deferred.js +110 -0
- data/vendor/node_modules/traceur/src/node/file-util.js +73 -0
- data/vendor/node_modules/traceur/src/node/getopt.js +147 -0
- data/vendor/node_modules/traceur/src/node/inline-module.js +149 -0
- data/vendor/node_modules/traceur/src/node/interpreter.js +33 -0
- data/vendor/node_modules/traceur/src/node/nodeLoader.js +41 -0
- data/vendor/node_modules/traceur/src/node/require.js +85 -0
- data/vendor/node_modules/traceur/src/node/to-amd-compiler.js +33 -0
- data/vendor/node_modules/traceur/src/node/to-commonjs-compiler.js +33 -0
- data/vendor/node_modules/traceur/src/node/traceur.js +32 -0
- data/vendor/node_modules/traceur/traceur +3 -0
- metadata +359 -0
data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.html
ADDED
|
@@ -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') >= 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>
|
data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.md
ADDED
|
@@ -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
|
+

|
|
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);
|