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/api.html
ADDED
|
@@ -0,0 +1,1080 @@
|
|
|
1
|
+
<a href="http://github.com/visionmedia/expresso"><img alt="Fork me on GitHub" id="ribbon" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a><html>
|
|
2
|
+
<head>
|
|
3
|
+
<title>Expresso</title>
|
|
4
|
+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
|
|
5
|
+
<style>body {
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
font: 14px/1.5 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
|
|
9
|
+
color: #252519;
|
|
10
|
+
}
|
|
11
|
+
a {
|
|
12
|
+
color: #252519;
|
|
13
|
+
}
|
|
14
|
+
a:hover {
|
|
15
|
+
text-decoration: underline;
|
|
16
|
+
color: #19469D;
|
|
17
|
+
}
|
|
18
|
+
p {
|
|
19
|
+
margin: 12px 0;
|
|
20
|
+
}
|
|
21
|
+
h1, h2, h3 {
|
|
22
|
+
margin: 0;
|
|
23
|
+
padding: 0;
|
|
24
|
+
}
|
|
25
|
+
table#source {
|
|
26
|
+
width: 100%;
|
|
27
|
+
border-collapse: collapse;
|
|
28
|
+
}
|
|
29
|
+
table#source td:first-child {
|
|
30
|
+
padding: 30px 40px 30px 40px;
|
|
31
|
+
vertical-align: top;
|
|
32
|
+
}
|
|
33
|
+
table#source td:first-child,
|
|
34
|
+
table#source td:first-child pre {
|
|
35
|
+
width: 450px;
|
|
36
|
+
}
|
|
37
|
+
table#source td:last-child {
|
|
38
|
+
padding: 30px 0 30px 40px;
|
|
39
|
+
border-left: 1px solid #E5E5EE;
|
|
40
|
+
background: #F5F5FF;
|
|
41
|
+
}
|
|
42
|
+
table#source tr {
|
|
43
|
+
border-bottom: 1px solid #E5E5EE;
|
|
44
|
+
}
|
|
45
|
+
table#source tr.filename {
|
|
46
|
+
padding-top: 40px;
|
|
47
|
+
border-top: 1px solid #E5E5EE;
|
|
48
|
+
}
|
|
49
|
+
table#source tr.filename td:first-child {
|
|
50
|
+
text-transform: capitalize;
|
|
51
|
+
}
|
|
52
|
+
table#source tr.filename td:last-child {
|
|
53
|
+
font-size: 12px;
|
|
54
|
+
}
|
|
55
|
+
table#source tr.filename h2 {
|
|
56
|
+
margin: 0;
|
|
57
|
+
padding: 0;
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
}
|
|
60
|
+
table#source tr.code h1,
|
|
61
|
+
table#source tr.code h2,
|
|
62
|
+
table#source tr.code h3 {
|
|
63
|
+
margin-top: 30px;
|
|
64
|
+
font-family: "Lucida Grande", "Helvetica Nueue", Arial, sans-serif;
|
|
65
|
+
font-size: 18px;
|
|
66
|
+
}
|
|
67
|
+
table#source tr.code h2 {
|
|
68
|
+
font-size: 16px;
|
|
69
|
+
}
|
|
70
|
+
table#source tr.code h3 {
|
|
71
|
+
font-size: 14px;
|
|
72
|
+
}
|
|
73
|
+
table#source tr.code ul {
|
|
74
|
+
margin: 15px 0 15px 35px;
|
|
75
|
+
padding: 0;
|
|
76
|
+
}
|
|
77
|
+
table#source tr.code ul li {
|
|
78
|
+
margin: 0;
|
|
79
|
+
padding: 1px 0;
|
|
80
|
+
}
|
|
81
|
+
table#source tr.code ul li p {
|
|
82
|
+
margin: 0;
|
|
83
|
+
padding: 0;
|
|
84
|
+
}
|
|
85
|
+
table#source tr.code td:first-child pre {
|
|
86
|
+
padding: 20px;
|
|
87
|
+
}
|
|
88
|
+
#ribbon {
|
|
89
|
+
position: fixed;
|
|
90
|
+
top: 0;
|
|
91
|
+
right: 0;
|
|
92
|
+
}
|
|
93
|
+
code .string { color: #219161; }
|
|
94
|
+
code .regexp { color: #219161; }
|
|
95
|
+
code .keyword { color: #954121; }
|
|
96
|
+
code .number { color: #19469D; }
|
|
97
|
+
code .comment { color: #bbb; }
|
|
98
|
+
code .this { color: #19469D; }</style>
|
|
99
|
+
<script>
|
|
100
|
+
$(function(){
|
|
101
|
+
$('tr.code').hide();
|
|
102
|
+
$('tr.filename').toggle(function(){
|
|
103
|
+
$(this).nextUntil('.filename').fadeIn();
|
|
104
|
+
}, function(){
|
|
105
|
+
$(this).nextUntil('.filename').fadeOut();
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
</script>
|
|
109
|
+
</head>
|
|
110
|
+
<body>
|
|
111
|
+
<table id="source"><tbody><tr><td><h1>Expresso</h1><p>Insanely fast TDD framework for <a href="http://nodejs.org">node</a> featuring code coverage reporting.</p></td><td></td></tr><tr class="filename"><td><h2 id="bin/expresso"><a href="#">expresso</a></h2></td><td>bin/expresso</td></tr><tr class="code">
|
|
112
|
+
<td class="docs">
|
|
113
|
+
<h1>!/usr/bin/env node</h1>
|
|
114
|
+
</td>
|
|
115
|
+
<td class="code">
|
|
116
|
+
<pre><code>
|
|
117
|
+
* <span class="class">Expresso</span>
|
|
118
|
+
* <span class="class">Copyright</span>(<span class="variable">c</span>) <span class="class">TJ</span> <span class="class">Holowaychuk</span> &<span class="variable">lt</span>;<span class="variable">tj</span>@<span class="variable">vision</span>-<span class="variable">media</span>.<span class="variable">ca</span>&<span class="variable">gt</span>;
|
|
119
|
+
* (<span class="class">MIT</span> <span class="class">Licensed</span>)
|
|
120
|
+
</code></pre>
|
|
121
|
+
</td>
|
|
122
|
+
</tr>
|
|
123
|
+
<tr class="code">
|
|
124
|
+
<td class="docs">
|
|
125
|
+
<p>Module dependencies.
|
|
126
|
+
</p>
|
|
127
|
+
</td>
|
|
128
|
+
<td class="code">
|
|
129
|
+
<pre><code><span class="keyword">var</span> <span class="variable">assert</span> = <span class="variable">require</span>(<span class="string">'assert'</span>),
|
|
130
|
+
<span class="variable">childProcess</span> = <span class="variable">require</span>(<span class="string">'child_process'</span>),
|
|
131
|
+
<span class="variable">http</span> = <span class="variable">require</span>(<span class="string">'http'</span>),
|
|
132
|
+
<span class="variable">path</span> = <span class="variable">require</span>(<span class="string">'path'</span>),
|
|
133
|
+
<span class="variable">sys</span> = <span class="variable">require</span>(<span class="string">'sys'</span>),
|
|
134
|
+
<span class="variable">cwd</span> = <span class="variable">process</span>.<span class="variable">cwd</span>(),
|
|
135
|
+
<span class="variable">fs</span> = <span class="variable">require</span>(<span class="string">'fs'</span>),
|
|
136
|
+
<span class="variable">defer</span>;</code></pre>
|
|
137
|
+
</td>
|
|
138
|
+
</tr>
|
|
139
|
+
<tr class="code">
|
|
140
|
+
<td class="docs">
|
|
141
|
+
<p>Expresso version.
|
|
142
|
+
</p>
|
|
143
|
+
</td>
|
|
144
|
+
<td class="code">
|
|
145
|
+
<pre><code><span class="keyword">var</span> <span class="variable">version</span> = <span class="string">'0.6.4'</span>;</code></pre>
|
|
146
|
+
</td>
|
|
147
|
+
</tr>
|
|
148
|
+
<tr class="code">
|
|
149
|
+
<td class="docs">
|
|
150
|
+
<p>Failure count.
|
|
151
|
+
</p>
|
|
152
|
+
</td>
|
|
153
|
+
<td class="code">
|
|
154
|
+
<pre><code><span class="keyword">var</span> <span class="variable">failures</span> = <span class="number integer">0</span>;</code></pre>
|
|
155
|
+
</td>
|
|
156
|
+
</tr>
|
|
157
|
+
<tr class="code">
|
|
158
|
+
<td class="docs">
|
|
159
|
+
<p>Number of tests executed.
|
|
160
|
+
</p>
|
|
161
|
+
</td>
|
|
162
|
+
<td class="code">
|
|
163
|
+
<pre><code><span class="keyword">var</span> <span class="variable">testcount</span> = <span class="number integer">0</span>;</code></pre>
|
|
164
|
+
</td>
|
|
165
|
+
</tr>
|
|
166
|
+
<tr class="code">
|
|
167
|
+
<td class="docs">
|
|
168
|
+
<p>Whitelist of tests to run.
|
|
169
|
+
</p>
|
|
170
|
+
</td>
|
|
171
|
+
<td class="code">
|
|
172
|
+
<pre><code><span class="keyword">var</span> <span class="variable">only</span> = [];</code></pre>
|
|
173
|
+
</td>
|
|
174
|
+
</tr>
|
|
175
|
+
<tr class="code">
|
|
176
|
+
<td class="docs">
|
|
177
|
+
<p>Boring output.
|
|
178
|
+
</p>
|
|
179
|
+
</td>
|
|
180
|
+
<td class="code">
|
|
181
|
+
<pre><code><span class="keyword">var</span> <span class="variable">boring</span> = <span class="variable">false</span>;</code></pre>
|
|
182
|
+
</td>
|
|
183
|
+
</tr>
|
|
184
|
+
<tr class="code">
|
|
185
|
+
<td class="docs">
|
|
186
|
+
<p>Growl notifications.
|
|
187
|
+
</p>
|
|
188
|
+
</td>
|
|
189
|
+
<td class="code">
|
|
190
|
+
<pre><code><span class="keyword">var</span> <span class="variable">growl</span> = <span class="variable">false</span>;</code></pre>
|
|
191
|
+
</td>
|
|
192
|
+
</tr>
|
|
193
|
+
<tr class="code">
|
|
194
|
+
<td class="docs">
|
|
195
|
+
<p>Server port.
|
|
196
|
+
</p>
|
|
197
|
+
</td>
|
|
198
|
+
<td class="code">
|
|
199
|
+
<pre><code><span class="keyword">var</span> <span class="variable">port</span> = <span class="number integer">5555</span>;</code></pre>
|
|
200
|
+
</td>
|
|
201
|
+
</tr>
|
|
202
|
+
<tr class="code">
|
|
203
|
+
<td class="docs">
|
|
204
|
+
<p>Watch mode.
|
|
205
|
+
</p>
|
|
206
|
+
</td>
|
|
207
|
+
<td class="code">
|
|
208
|
+
<pre><code><span class="keyword">var</span> <span class="variable">watch</span> = <span class="variable">false</span>;</code></pre>
|
|
209
|
+
</td>
|
|
210
|
+
</tr>
|
|
211
|
+
<tr class="code">
|
|
212
|
+
<td class="docs">
|
|
213
|
+
<p>Execute serially.
|
|
214
|
+
</p>
|
|
215
|
+
</td>
|
|
216
|
+
<td class="code">
|
|
217
|
+
<pre><code><span class="keyword">var</span> <span class="variable">serial</span> = <span class="variable">false</span>;</code></pre>
|
|
218
|
+
</td>
|
|
219
|
+
</tr>
|
|
220
|
+
<tr class="code">
|
|
221
|
+
<td class="docs">
|
|
222
|
+
<p>Default timeout.
|
|
223
|
+
</p>
|
|
224
|
+
</td>
|
|
225
|
+
<td class="code">
|
|
226
|
+
<pre><code><span class="keyword">var</span> <span class="variable">timeout</span> = <span class="number integer">2000</span>;</code></pre>
|
|
227
|
+
</td>
|
|
228
|
+
</tr>
|
|
229
|
+
<tr class="code">
|
|
230
|
+
<td class="docs">
|
|
231
|
+
<p>Usage documentation.
|
|
232
|
+
</p>
|
|
233
|
+
</td>
|
|
234
|
+
<td class="code">
|
|
235
|
+
<pre><code><span class="keyword">var</span> <span class="variable">usage</span> = <span class="string">''</span>
|
|
236
|
+
+ <span class="string">'[bold]{Usage}: expresso [options] <file ...>'</span>
|
|
237
|
+
+ <span class="string">'\n'</span>
|
|
238
|
+
+ <span class="string">'\n[bold]{Options}:'</span>
|
|
239
|
+
+ <span class="string">'\n -w, --watch Watch for modifications and re-execute tests'</span>
|
|
240
|
+
+ <span class="string">'\n -g, --growl Enable growl notifications'</span>
|
|
241
|
+
+ <span class="string">'\n -c, --coverage Generate and report test coverage'</span>
|
|
242
|
+
+ <span class="string">'\n -t, --timeout MS Timeout in milliseconds, defaults to 2000'</span>
|
|
243
|
+
+ <span class="string">'\n -r, --require PATH Require the given module path'</span>
|
|
244
|
+
+ <span class="string">'\n -o, --only TESTS Execute only the comma sperated TESTS (can be set several times)'</span>
|
|
245
|
+
+ <span class="string">'\n -I, --include PATH Unshift the given path to require.paths'</span>
|
|
246
|
+
+ <span class="string">'\n -p, --port NUM Port number for test servers, starts at 5555'</span>
|
|
247
|
+
+ <span class="string">'\n -s, --serial Execute tests serially'</span>
|
|
248
|
+
+ <span class="string">'\n -b, --boring Suppress ansi-escape colors'</span>
|
|
249
|
+
+ <span class="string">'\n -v, --version Output version number'</span>
|
|
250
|
+
+ <span class="string">'\n -h, --help Display help information'</span>
|
|
251
|
+
+ <span class="string">'\n'</span>;
|
|
252
|
+
|
|
253
|
+
<span class="comment">// Parse arguments</span>
|
|
254
|
+
|
|
255
|
+
<span class="keyword">var</span> <span class="variable">files</span> = [],
|
|
256
|
+
<span class="variable">args</span> = <span class="variable">process</span>.<span class="variable">argv</span>.<span class="variable">slice</span>(<span class="number integer">2</span>);
|
|
257
|
+
|
|
258
|
+
<span class="keyword">while</span> (<span class="variable">args</span>.<span class="variable">length</span>) {
|
|
259
|
+
<span class="keyword">var</span> <span class="variable">arg</span> = <span class="variable">args</span>.<span class="variable">shift</span>();
|
|
260
|
+
<span class="keyword">switch</span> (<span class="variable">arg</span>) {
|
|
261
|
+
<span class="keyword">case</span> <span class="string">'-h'</span>:
|
|
262
|
+
<span class="keyword">case</span> <span class="string">'--help'</span>:
|
|
263
|
+
<span class="variable">print</span>(<span class="variable">usage</span> + <span class="string">'\n'</span>);
|
|
264
|
+
<span class="variable">process</span>.<span class="variable">exit</span>(<span class="number integer">1</span>);
|
|
265
|
+
<span class="keyword">break</span>;
|
|
266
|
+
<span class="keyword">case</span> <span class="string">'-v'</span>:
|
|
267
|
+
<span class="keyword">case</span> <span class="string">'--version'</span>:
|
|
268
|
+
<span class="variable">sys</span>.<span class="variable">puts</span>(<span class="variable">version</span>);
|
|
269
|
+
<span class="variable">process</span>.<span class="variable">exit</span>(<span class="number integer">1</span>);
|
|
270
|
+
<span class="keyword">break</span>;
|
|
271
|
+
<span class="keyword">case</span> <span class="string">'-i'</span>:
|
|
272
|
+
<span class="keyword">case</span> <span class="string">'-I'</span>:
|
|
273
|
+
<span class="keyword">case</span> <span class="string">'--include'</span>:
|
|
274
|
+
<span class="keyword">if</span> (<span class="variable">arg</span> = <span class="variable">args</span>.<span class="variable">shift</span>()) {
|
|
275
|
+
<span class="variable">require</span>.<span class="variable">paths</span>.<span class="variable">unshift</span>(<span class="variable">arg</span>);
|
|
276
|
+
} <span class="keyword">else</span> {
|
|
277
|
+
<span class="keyword">throw</span> <span class="keyword">new</span> <span class="class">Error</span>(<span class="string">'--include requires a path'</span>);
|
|
278
|
+
}
|
|
279
|
+
<span class="keyword">break</span>;
|
|
280
|
+
<span class="keyword">case</span> <span class="string">'-o'</span>:
|
|
281
|
+
<span class="keyword">case</span> <span class="string">'--only'</span>:
|
|
282
|
+
<span class="keyword">if</span> (<span class="variable">arg</span> = <span class="variable">args</span>.<span class="variable">shift</span>()) {
|
|
283
|
+
<span class="variable">only</span> = <span class="variable">only</span>.<span class="variable">concat</span>(<span class="variable">arg</span>.<span class="variable">split</span>(<span class="regexp">/ *, */</span>));
|
|
284
|
+
} <span class="keyword">else</span> {
|
|
285
|
+
<span class="keyword">throw</span> <span class="keyword">new</span> <span class="class">Error</span>(<span class="string">'--only requires comma-separated test names'</span>);
|
|
286
|
+
}
|
|
287
|
+
<span class="keyword">break</span>;
|
|
288
|
+
<span class="keyword">case</span> <span class="string">'-p'</span>:
|
|
289
|
+
<span class="keyword">case</span> <span class="string">'--port'</span>:
|
|
290
|
+
<span class="keyword">if</span> (<span class="variable">arg</span> = <span class="variable">args</span>.<span class="variable">shift</span>()) {
|
|
291
|
+
<span class="variable">port</span> = <span class="variable">parseInt</span>(<span class="variable">arg</span>, <span class="number integer">10</span>);
|
|
292
|
+
} <span class="keyword">else</span> {
|
|
293
|
+
<span class="keyword">throw</span> <span class="keyword">new</span> <span class="class">Error</span>(<span class="string">'--port requires a number'</span>);
|
|
294
|
+
}
|
|
295
|
+
<span class="keyword">break</span>;
|
|
296
|
+
<span class="keyword">case</span> <span class="string">'-r'</span>:
|
|
297
|
+
<span class="keyword">case</span> <span class="string">'--require'</span>:
|
|
298
|
+
<span class="keyword">if</span> (<span class="variable">arg</span> = <span class="variable">args</span>.<span class="variable">shift</span>()) {
|
|
299
|
+
<span class="variable">require</span>(<span class="variable">arg</span>);
|
|
300
|
+
} <span class="keyword">else</span> {
|
|
301
|
+
<span class="keyword">throw</span> <span class="keyword">new</span> <span class="class">Error</span>(<span class="string">'--require requires a path'</span>);
|
|
302
|
+
}
|
|
303
|
+
<span class="keyword">break</span>;
|
|
304
|
+
<span class="keyword">case</span> <span class="string">'-t'</span>:
|
|
305
|
+
<span class="keyword">case</span> <span class="string">'--timeout'</span>:
|
|
306
|
+
<span class="keyword">if</span> (<span class="variable">arg</span> = <span class="variable">args</span>.<span class="variable">shift</span>()) {
|
|
307
|
+
<span class="variable">timeout</span> = <span class="variable">parseInt</span>(<span class="variable">arg</span>, <span class="number integer">10</span>);
|
|
308
|
+
} <span class="keyword">else</span> {
|
|
309
|
+
<span class="keyword">throw</span> <span class="keyword">new</span> <span class="class">Error</span>(<span class="string">'--timeout requires an argument'</span>);
|
|
310
|
+
}
|
|
311
|
+
<span class="keyword">break</span>;
|
|
312
|
+
<span class="keyword">case</span> <span class="string">'-c'</span>:
|
|
313
|
+
<span class="keyword">case</span> <span class="string">'--cov'</span>:
|
|
314
|
+
<span class="keyword">case</span> <span class="string">'--coverage'</span>:
|
|
315
|
+
<span class="variable">defer</span> = <span class="variable">true</span>;
|
|
316
|
+
<span class="variable">childProcess</span>.<span class="variable">exec</span>(<span class="string">'rm -fr lib-cov && node-jscoverage lib lib-cov'</span>, <span class="keyword">function</span>(<span class="variable">err</span>){
|
|
317
|
+
<span class="keyword">if</span> (<span class="variable">err</span>) <span class="keyword">throw</span> <span class="variable">err</span>;
|
|
318
|
+
<span class="variable">require</span>.<span class="variable">paths</span>.<span class="variable">unshift</span>(<span class="string">'lib-cov'</span>);
|
|
319
|
+
<span class="variable">run</span>(<span class="variable">files</span>);
|
|
320
|
+
})
|
|
321
|
+
<span class="keyword">break</span>;
|
|
322
|
+
<span class="keyword">case</span> <span class="string">'-b'</span>:
|
|
323
|
+
<span class="keyword">case</span> <span class="string">'--boring'</span>:
|
|
324
|
+
<span class="variable">boring</span> = <span class="variable">true</span>;
|
|
325
|
+
<span class="keyword">break</span>;
|
|
326
|
+
<span class="keyword">case</span> <span class="string">'-w'</span>:
|
|
327
|
+
<span class="keyword">case</span> <span class="string">'--watch'</span>:
|
|
328
|
+
<span class="variable">watch</span> = <span class="variable">true</span>;
|
|
329
|
+
<span class="keyword">break</span>;
|
|
330
|
+
<span class="keyword">case</span> <span class="string">'-g'</span>:
|
|
331
|
+
<span class="keyword">case</span> <span class="string">'--growl'</span>:
|
|
332
|
+
<span class="variable">growl</span> = <span class="variable">true</span>;
|
|
333
|
+
<span class="keyword">break</span>;
|
|
334
|
+
<span class="keyword">case</span> <span class="string">'-s'</span>:
|
|
335
|
+
<span class="keyword">case</span> <span class="string">'--serial'</span>:
|
|
336
|
+
<span class="variable">serial</span> = <span class="variable">true</span>;
|
|
337
|
+
<span class="keyword">break</span>;
|
|
338
|
+
<span class="keyword">default</span>:
|
|
339
|
+
<span class="keyword">if</span> (<span class="regexp">/\.js$/</span>.<span class="variable">test</span>(<span class="variable">arg</span>)) {
|
|
340
|
+
<span class="variable">files</span>.<span class="variable">push</span>(<span class="variable">arg</span>);
|
|
341
|
+
}
|
|
342
|
+
<span class="keyword">break</span>;
|
|
343
|
+
}
|
|
344
|
+
}</code></pre>
|
|
345
|
+
</td>
|
|
346
|
+
</tr>
|
|
347
|
+
<tr class="code">
|
|
348
|
+
<td class="docs">
|
|
349
|
+
<p>Colorized sys.error().</p>
|
|
350
|
+
|
|
351
|
+
<h2></h2>
|
|
352
|
+
|
|
353
|
+
<ul><li><p><strong>param</strong>: <em>String</em> str</p></li></ul>
|
|
354
|
+
</td>
|
|
355
|
+
<td class="code">
|
|
356
|
+
<pre><code><span class="keyword">function</span> <span class="variable">print</span>(<span class="variable">str</span>){
|
|
357
|
+
<span class="variable">sys</span>.<span class="variable">error</span>(<span class="variable">colorize</span>(<span class="variable">str</span>));
|
|
358
|
+
}</code></pre>
|
|
359
|
+
</td>
|
|
360
|
+
</tr>
|
|
361
|
+
<tr class="code">
|
|
362
|
+
<td class="docs">
|
|
363
|
+
<p>Colorize the given string using ansi-escape sequences.
|
|
364
|
+
Disabled when --boring is set.</p>
|
|
365
|
+
|
|
366
|
+
<h2></h2>
|
|
367
|
+
|
|
368
|
+
<ul><li><p><strong>param</strong>: <em>String</em> str</p></li><li><p><strong>return</strong>: <em>String</em> </p></li></ul>
|
|
369
|
+
</td>
|
|
370
|
+
<td class="code">
|
|
371
|
+
<pre><code><span class="keyword">function</span> <span class="variable">colorize</span>(<span class="variable">str</span>){
|
|
372
|
+
<span class="keyword">var</span> <span class="variable">colors</span> = { <span class="variable">bold</span>: <span class="number integer">1</span>, <span class="variable">red</span>: <span class="number integer">31</span>, <span class="variable">green</span>: <span class="number integer">32</span>, <span class="variable">yellow</span>: <span class="number integer">33</span> };
|
|
373
|
+
<span class="keyword">return</span> <span class="variable">str</span>.<span class="variable">replace</span>(<span class="regexp">/\[(\w+)\]\{([^]*?)\}/g</span>, <span class="keyword">function</span>(<span class="variable">_</span>, <span class="variable">color</span>, <span class="variable">str</span>){
|
|
374
|
+
<span class="keyword">return</span> <span class="variable">boring</span>
|
|
375
|
+
? <span class="variable">str</span>
|
|
376
|
+
: <span class="string">'\x1B['</span> + <span class="variable">colors</span>[<span class="variable">color</span>] + <span class="string">'m'</span> + <span class="variable">str</span> + <span class="string">'\x1B[0m'</span>;
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
<span class="comment">// Alias deepEqual as eql for complex equality</span>
|
|
381
|
+
|
|
382
|
+
<span class="variable">assert</span>.<span class="variable">eql</span> = <span class="variable">assert</span>.<span class="variable">deepEqual</span>;</code></pre>
|
|
383
|
+
</td>
|
|
384
|
+
</tr>
|
|
385
|
+
<tr class="code">
|
|
386
|
+
<td class="docs">
|
|
387
|
+
<p>Assert that <code>val</code> is null.</p>
|
|
388
|
+
|
|
389
|
+
<h2></h2>
|
|
390
|
+
|
|
391
|
+
<ul><li><p><strong>param</strong>: <em>Mixed</em> val</p></li><li><p><strong>param</strong>: <em>String</em> msg</p></li></ul>
|
|
392
|
+
</td>
|
|
393
|
+
<td class="code">
|
|
394
|
+
<pre><code><span class="variable">assert</span>.<span class="variable">isNull</span> = <span class="keyword">function</span>(<span class="variable">val</span>, <span class="variable">msg</span>) {
|
|
395
|
+
<span class="variable">assert</span>.<span class="variable">strictEqual</span>(<span class="keyword">null</span>, <span class="variable">val</span>, <span class="variable">msg</span>);
|
|
396
|
+
};</code></pre>
|
|
397
|
+
</td>
|
|
398
|
+
</tr>
|
|
399
|
+
<tr class="code">
|
|
400
|
+
<td class="docs">
|
|
401
|
+
<p>Assert that <code>val</code> is not null.</p>
|
|
402
|
+
|
|
403
|
+
<h2></h2>
|
|
404
|
+
|
|
405
|
+
<ul><li><p><strong>param</strong>: <em>Mixed</em> val</p></li><li><p><strong>param</strong>: <em>String</em> msg</p></li></ul>
|
|
406
|
+
</td>
|
|
407
|
+
<td class="code">
|
|
408
|
+
<pre><code><span class="variable">assert</span>.<span class="variable">isNotNull</span> = <span class="keyword">function</span>(<span class="variable">val</span>, <span class="variable">msg</span>) {
|
|
409
|
+
<span class="variable">assert</span>.<span class="variable">notStrictEqual</span>(<span class="keyword">null</span>, <span class="variable">val</span>, <span class="variable">msg</span>);
|
|
410
|
+
};</code></pre>
|
|
411
|
+
</td>
|
|
412
|
+
</tr>
|
|
413
|
+
<tr class="code">
|
|
414
|
+
<td class="docs">
|
|
415
|
+
<p>Assert that <code>val</code> is undefined.</p>
|
|
416
|
+
|
|
417
|
+
<h2></h2>
|
|
418
|
+
|
|
419
|
+
<ul><li><p><strong>param</strong>: <em>Mixed</em> val</p></li><li><p><strong>param</strong>: <em>String</em> msg</p></li></ul>
|
|
420
|
+
</td>
|
|
421
|
+
<td class="code">
|
|
422
|
+
<pre><code><span class="variable">assert</span>.<span class="variable">isUndefined</span> = <span class="keyword">function</span>(<span class="variable">val</span>, <span class="variable">msg</span>) {
|
|
423
|
+
<span class="variable">assert</span>.<span class="variable">strictEqual</span>(<span class="variable">undefined</span>, <span class="variable">val</span>, <span class="variable">msg</span>);
|
|
424
|
+
};</code></pre>
|
|
425
|
+
</td>
|
|
426
|
+
</tr>
|
|
427
|
+
<tr class="code">
|
|
428
|
+
<td class="docs">
|
|
429
|
+
<p>Assert that <code>val</code> is not undefined.</p>
|
|
430
|
+
|
|
431
|
+
<h2></h2>
|
|
432
|
+
|
|
433
|
+
<ul><li><p><strong>param</strong>: <em>Mixed</em> val</p></li><li><p><strong>param</strong>: <em>String</em> msg</p></li></ul>
|
|
434
|
+
</td>
|
|
435
|
+
<td class="code">
|
|
436
|
+
<pre><code><span class="variable">assert</span>.<span class="variable">isDefined</span> = <span class="keyword">function</span>(<span class="variable">val</span>, <span class="variable">msg</span>) {
|
|
437
|
+
<span class="variable">assert</span>.<span class="variable">notStrictEqual</span>(<span class="variable">undefined</span>, <span class="variable">val</span>, <span class="variable">msg</span>);
|
|
438
|
+
};</code></pre>
|
|
439
|
+
</td>
|
|
440
|
+
</tr>
|
|
441
|
+
<tr class="code">
|
|
442
|
+
<td class="docs">
|
|
443
|
+
<p>Assert that <code>obj</code> is <code>type</code>.</p>
|
|
444
|
+
|
|
445
|
+
<h2></h2>
|
|
446
|
+
|
|
447
|
+
<ul><li><p><strong>param</strong>: <em>Mixed</em> obj</p></li><li><p><strong>param</strong>: <em>String</em> type</p></li><li><p><strong>api</strong>: <em>public</em></p></li></ul>
|
|
448
|
+
</td>
|
|
449
|
+
<td class="code">
|
|
450
|
+
<pre><code><span class="variable">assert</span>.<span class="variable">type</span> = <span class="keyword">function</span>(<span class="variable">obj</span>, <span class="variable">type</span>, <span class="variable">msg</span>){
|
|
451
|
+
<span class="keyword">var</span> <span class="variable">real</span> = <span class="keyword">typeof</span> <span class="variable">obj</span>;
|
|
452
|
+
<span class="variable">msg</span> = <span class="variable">msg</span> || <span class="string">'typeof '</span> + <span class="variable">sys</span>.<span class="variable">inspect</span>(<span class="variable">obj</span>) + <span class="string">' is '</span> + <span class="variable">real</span> + <span class="string">', expected '</span> + <span class="variable">type</span>;
|
|
453
|
+
<span class="variable">assert</span>.<span class="variable">ok</span>(<span class="variable">type</span> === <span class="variable">real</span>, <span class="variable">msg</span>);
|
|
454
|
+
};</code></pre>
|
|
455
|
+
</td>
|
|
456
|
+
</tr>
|
|
457
|
+
<tr class="code">
|
|
458
|
+
<td class="docs">
|
|
459
|
+
<p>Assert that <code>str</code> matches <code>regexp</code>.</p>
|
|
460
|
+
|
|
461
|
+
<h2></h2>
|
|
462
|
+
|
|
463
|
+
<ul><li><p><strong>param</strong>: <em>String</em> str</p></li><li><p><strong>param</strong>: <em>RegExp</em> regexp</p></li><li><p><strong>param</strong>: <em>String</em> msg</p></li></ul>
|
|
464
|
+
</td>
|
|
465
|
+
<td class="code">
|
|
466
|
+
<pre><code><span class="variable">assert</span>.<span class="variable">match</span> = <span class="keyword">function</span>(<span class="variable">str</span>, <span class="variable">regexp</span>, <span class="variable">msg</span>) {
|
|
467
|
+
<span class="variable">msg</span> = <span class="variable">msg</span> || <span class="variable">sys</span>.<span class="variable">inspect</span>(<span class="variable">str</span>) + <span class="string">' does not match '</span> + <span class="variable">sys</span>.<span class="variable">inspect</span>(<span class="variable">regexp</span>);
|
|
468
|
+
<span class="variable">assert</span>.<span class="variable">ok</span>(<span class="variable">regexp</span>.<span class="variable">test</span>(<span class="variable">str</span>), <span class="variable">msg</span>);
|
|
469
|
+
};</code></pre>
|
|
470
|
+
</td>
|
|
471
|
+
</tr>
|
|
472
|
+
<tr class="code">
|
|
473
|
+
<td class="docs">
|
|
474
|
+
<p>Assert that <code>val</code> is within <code>obj</code>.</p>
|
|
475
|
+
|
|
476
|
+
<h2>Examples</h2>
|
|
477
|
+
|
|
478
|
+
<p> assert.includes('foobar', 'bar');
|
|
479
|
+
assert.includes(['foo', 'bar'], 'foo');</p>
|
|
480
|
+
|
|
481
|
+
<h2></h2>
|
|
482
|
+
|
|
483
|
+
<ul><li><p><strong>param</strong>: <em>String | Array</em> obj</p></li><li><p><strong>param</strong>: <em>Mixed</em> val</p></li><li><p><strong>param</strong>: <em>String</em> msg</p></li></ul>
|
|
484
|
+
</td>
|
|
485
|
+
<td class="code">
|
|
486
|
+
<pre><code><span class="variable">assert</span>.<span class="variable">includes</span> = <span class="keyword">function</span>(<span class="variable">obj</span>, <span class="variable">val</span>, <span class="variable">msg</span>) {
|
|
487
|
+
<span class="variable">msg</span> = <span class="variable">msg</span> || <span class="variable">sys</span>.<span class="variable">inspect</span>(<span class="variable">obj</span>) + <span class="string">' does not include '</span> + <span class="variable">sys</span>.<span class="variable">inspect</span>(<span class="variable">val</span>);
|
|
488
|
+
<span class="variable">assert</span>.<span class="variable">ok</span>(<span class="variable">obj</span>.<span class="variable">indexOf</span>(<span class="variable">val</span>) &<span class="variable">gt</span>;= <span class="number integer">0</span>, <span class="variable">msg</span>);
|
|
489
|
+
};</code></pre>
|
|
490
|
+
</td>
|
|
491
|
+
</tr>
|
|
492
|
+
<tr class="code">
|
|
493
|
+
<td class="docs">
|
|
494
|
+
<p>Assert length of <code>val</code> is <code>n</code>.</p>
|
|
495
|
+
|
|
496
|
+
<h2></h2>
|
|
497
|
+
|
|
498
|
+
<ul><li><p><strong>param</strong>: <em>Mixed</em> val</p></li><li><p><strong>param</strong>: <em>Number</em> n</p></li><li><p><strong>param</strong>: <em>String</em> msg</p></li></ul>
|
|
499
|
+
</td>
|
|
500
|
+
<td class="code">
|
|
501
|
+
<pre><code><span class="variable">assert</span>.<span class="variable">length</span> = <span class="keyword">function</span>(<span class="variable">val</span>, <span class="variable">n</span>, <span class="variable">msg</span>) {
|
|
502
|
+
<span class="variable">msg</span> = <span class="variable">msg</span> || <span class="variable">sys</span>.<span class="variable">inspect</span>(<span class="variable">val</span>) + <span class="string">' has length of '</span> + <span class="variable">val</span>.<span class="variable">length</span> + <span class="string">', expected '</span> + <span class="variable">n</span>;
|
|
503
|
+
<span class="variable">assert</span>.<span class="variable">equal</span>(<span class="variable">n</span>, <span class="variable">val</span>.<span class="variable">length</span>, <span class="variable">msg</span>);
|
|
504
|
+
};</code></pre>
|
|
505
|
+
</td>
|
|
506
|
+
</tr>
|
|
507
|
+
<tr class="code">
|
|
508
|
+
<td class="docs">
|
|
509
|
+
<p>Assert response from <code>server</code> with
|
|
510
|
+
the given <code>req</code> object and <code>res</code> assertions object.</p>
|
|
511
|
+
|
|
512
|
+
<h2></h2>
|
|
513
|
+
|
|
514
|
+
<ul><li><p><strong>param</strong>: <em>Server</em> server</p></li><li><p><strong>param</strong>: <em>Object</em> req</p></li><li><p><strong>param</strong>: <em>Object | Function</em> res</p></li><li><p><strong>param</strong>: <em>String</em> msg</p></li></ul>
|
|
515
|
+
</td>
|
|
516
|
+
<td class="code">
|
|
517
|
+
<pre><code><span class="variable">assert</span>.<span class="variable">response</span> = <span class="keyword">function</span>(<span class="variable">server</span>, <span class="variable">req</span>, <span class="variable">res</span>, <span class="variable">msg</span>){
|
|
518
|
+
<span class="comment">// Callback as third or fourth arg</span>
|
|
519
|
+
<span class="keyword">var</span> <span class="variable">callback</span> = <span class="keyword">typeof</span> <span class="variable">res</span> === <span class="string">'function'</span>
|
|
520
|
+
? <span class="variable">res</span>
|
|
521
|
+
: <span class="keyword">typeof</span> <span class="variable">msg</span> === <span class="string">'function'</span>
|
|
522
|
+
? <span class="variable">msg</span>
|
|
523
|
+
: <span class="keyword">function</span>(){};
|
|
524
|
+
|
|
525
|
+
<span class="comment">// Default messate to test title</span>
|
|
526
|
+
<span class="keyword">if</span> (<span class="keyword">typeof</span> <span class="variable">msg</span> === <span class="string">'function'</span>) <span class="variable">msg</span> = <span class="keyword">null</span>;
|
|
527
|
+
<span class="variable">msg</span> = <span class="variable">msg</span> || <span class="variable">assert</span>.<span class="variable">testTitle</span>;
|
|
528
|
+
<span class="variable">msg</span> += <span class="string">'. '</span>;
|
|
529
|
+
|
|
530
|
+
<span class="comment">// Pending responses</span>
|
|
531
|
+
<span class="variable">server</span>.<span class="variable">__pending</span> = <span class="variable">server</span>.<span class="variable">__pending</span> || <span class="number integer">0</span>;
|
|
532
|
+
<span class="variable">server</span>.<span class="variable">__pending</span>++;
|
|
533
|
+
|
|
534
|
+
<span class="comment">// Create client</span>
|
|
535
|
+
<span class="keyword">if</span> (!<span class="variable">server</span>.<span class="variable">fd</span>) {
|
|
536
|
+
<span class="variable">server</span>.<span class="variable">listen</span>(<span class="variable">server</span>.<span class="variable">__port</span> = <span class="variable">port</span>++, <span class="string">'127.0.0.1'</span>);
|
|
537
|
+
<span class="variable">server</span>.<span class="variable">client</span> = <span class="variable">http</span>.<span class="variable">createClient</span>(<span class="variable">server</span>.<span class="variable">__port</span>);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
<span class="comment">// Issue request</span>
|
|
541
|
+
<span class="keyword">var</span> <span class="variable">timer</span>,
|
|
542
|
+
<span class="variable">client</span> = <span class="variable">server</span>.<span class="variable">client</span>,
|
|
543
|
+
<span class="variable">method</span> = <span class="variable">req</span>.<span class="variable">method</span> || <span class="string">'GET'</span>,
|
|
544
|
+
<span class="variable">status</span> = <span class="variable">res</span>.<span class="variable">status</span> || <span class="variable">res</span>.<span class="variable">statusCode</span>,
|
|
545
|
+
<span class="variable">data</span> = <span class="variable">req</span>.<span class="variable">data</span> || <span class="variable">req</span>.<span class="variable">body</span>,
|
|
546
|
+
<span class="variable">requestTimeout</span> = <span class="variable">req</span>.<span class="variable">timeout</span> || <span class="number integer">0</span>;
|
|
547
|
+
|
|
548
|
+
<span class="keyword">var</span> <span class="variable">request</span> = <span class="variable">client</span>.<span class="variable">request</span>(<span class="variable">method</span>, <span class="variable">req</span>.<span class="variable">url</span>, <span class="variable">req</span>.<span class="variable">headers</span>);
|
|
549
|
+
|
|
550
|
+
<span class="comment">// Timeout</span>
|
|
551
|
+
<span class="keyword">if</span> (<span class="variable">requestTimeout</span>) {
|
|
552
|
+
<span class="variable">timer</span> = <span class="variable">setTimeout</span>(<span class="keyword">function</span>(){
|
|
553
|
+
--<span class="variable">server</span>.<span class="variable">__pending</span> || <span class="variable">server</span>.<span class="variable">close</span>();
|
|
554
|
+
<span class="keyword">delete</span> <span class="variable">req</span>.<span class="variable">timeout</span>;
|
|
555
|
+
<span class="variable">assert</span>.<span class="variable">fail</span>(<span class="variable">msg</span> + <span class="string">'Request timed out after '</span> + <span class="variable">requestTimeout</span> + <span class="string">'ms.'</span>);
|
|
556
|
+
}, <span class="variable">requestTimeout</span>);
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
<span class="keyword">if</span> (<span class="variable">data</span>) <span class="variable">request</span>.<span class="variable">write</span>(<span class="variable">data</span>);
|
|
560
|
+
<span class="variable">request</span>.<span class="variable">addListener</span>(<span class="string">'response'</span>, <span class="keyword">function</span>(<span class="variable">response</span>){
|
|
561
|
+
<span class="variable">response</span>.<span class="variable">body</span> = <span class="string">''</span>;
|
|
562
|
+
<span class="variable">response</span>.<span class="variable">setEncoding</span>(<span class="string">'utf8'</span>);
|
|
563
|
+
<span class="variable">response</span>.<span class="variable">addListener</span>(<span class="string">'data'</span>, <span class="keyword">function</span>(<span class="variable">chunk</span>){ <span class="variable">response</span>.<span class="variable">body</span> += <span class="variable">chunk</span>; });
|
|
564
|
+
<span class="variable">response</span>.<span class="variable">addListener</span>(<span class="string">'end'</span>, <span class="keyword">function</span>(){
|
|
565
|
+
--<span class="variable">server</span>.<span class="variable">__pending</span> || <span class="variable">server</span>.<span class="variable">close</span>();
|
|
566
|
+
<span class="keyword">if</span> (<span class="variable">timer</span>) <span class="variable">clearTimeout</span>(<span class="variable">timer</span>);
|
|
567
|
+
|
|
568
|
+
<span class="comment">// Assert response body</span>
|
|
569
|
+
<span class="keyword">if</span> (<span class="variable">res</span>.<span class="variable">body</span> !== <span class="variable">undefined</span>) {
|
|
570
|
+
<span class="keyword">var</span> <span class="variable">eql</span> = <span class="variable">res</span>.<span class="variable">body</span> <span class="variable">instanceof</span> <span class="class">RegExp</span>
|
|
571
|
+
? <span class="variable">res</span>.<span class="variable">body</span>.<span class="variable">test</span>(<span class="variable">response</span>.<span class="variable">body</span>)
|
|
572
|
+
: <span class="variable">res</span>.<span class="variable">body</span> === <span class="variable">response</span>.<span class="variable">body</span>;
|
|
573
|
+
<span class="variable">assert</span>.<span class="variable">ok</span>(
|
|
574
|
+
<span class="variable">eql</span>,
|
|
575
|
+
<span class="variable">msg</span> + <span class="string">'Invalid response body.\n'</span>
|
|
576
|
+
+ <span class="string">' Expected: '</span> + <span class="variable">sys</span>.<span class="variable">inspect</span>(<span class="variable">res</span>.<span class="variable">body</span>) + <span class="string">'\n'</span>
|
|
577
|
+
+ <span class="string">' Got: '</span> + <span class="variable">sys</span>.<span class="variable">inspect</span>(<span class="variable">response</span>.<span class="variable">body</span>)
|
|
578
|
+
);
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
<span class="comment">// Assert response status</span>
|
|
582
|
+
<span class="keyword">if</span> (<span class="keyword">typeof</span> <span class="variable">status</span> === <span class="string">'number'</span>) {
|
|
583
|
+
<span class="variable">assert</span>.<span class="variable">equal</span>(
|
|
584
|
+
<span class="variable">response</span>.<span class="variable">statusCode</span>,
|
|
585
|
+
<span class="variable">status</span>,
|
|
586
|
+
<span class="variable">msg</span> + <span class="variable">colorize</span>(<span class="string">'Invalid response status code.\n'</span>
|
|
587
|
+
+ <span class="string">' Expected: [green]{'</span> + <span class="variable">status</span> + <span class="string">'}\n'</span>
|
|
588
|
+
+ <span class="string">' Got: [red]{'</span> + <span class="variable">response</span>.<span class="variable">statusCode</span> + <span class="string">'}'</span>)
|
|
589
|
+
);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
<span class="comment">// Assert response headers</span>
|
|
593
|
+
<span class="keyword">if</span> (<span class="variable">res</span>.<span class="variable">headers</span>) {
|
|
594
|
+
<span class="keyword">var</span> <span class="variable">keys</span> = <span class="class">Object</span>.<span class="variable">keys</span>(<span class="variable">res</span>.<span class="variable">headers</span>);
|
|
595
|
+
<span class="keyword">for</span> (<span class="keyword">var</span> <span class="variable">i</span> = <span class="number integer">0</span>, <span class="variable">len</span> = <span class="variable">keys</span>.<span class="variable">length</span>; <span class="variable">i</span> &<span class="variable">lt</span>; <span class="variable">len</span>; ++<span class="variable">i</span>) {
|
|
596
|
+
<span class="keyword">var</span> <span class="variable">name</span> = <span class="variable">keys</span>[<span class="variable">i</span>],
|
|
597
|
+
<span class="variable">actual</span> = <span class="variable">response</span>.<span class="variable">headers</span>[<span class="variable">name</span>.<span class="variable">toLowerCase</span>()],
|
|
598
|
+
<span class="variable">expected</span> = <span class="variable">res</span>.<span class="variable">headers</span>[<span class="variable">name</span>],
|
|
599
|
+
<span class="variable">eql</span> = <span class="variable">expected</span> <span class="variable">instanceof</span> <span class="class">RegExp</span>
|
|
600
|
+
? <span class="variable">expected</span>.<span class="variable">test</span>(<span class="variable">actual</span>)
|
|
601
|
+
: <span class="variable">expected</span> == <span class="variable">actual</span>;
|
|
602
|
+
<span class="variable">assert</span>.<span class="variable">ok</span>(
|
|
603
|
+
<span class="variable">eql</span>,
|
|
604
|
+
<span class="variable">msg</span> + <span class="variable">colorize</span>(<span class="string">'Invalid response header [bold]{'</span> + <span class="variable">name</span> + <span class="string">'}.\n'</span>
|
|
605
|
+
+ <span class="string">' Expected: [green]{'</span> + <span class="variable">expected</span> + <span class="string">'}\n'</span>
|
|
606
|
+
+ <span class="string">' Got: [red]{'</span> + <span class="variable">actual</span> + <span class="string">'}'</span>)
|
|
607
|
+
);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
<span class="comment">// Callback</span>
|
|
612
|
+
<span class="variable">callback</span>(<span class="variable">response</span>);
|
|
613
|
+
});
|
|
614
|
+
});
|
|
615
|
+
<span class="variable">request</span>.<span class="variable">end</span>();
|
|
616
|
+
};</code></pre>
|
|
617
|
+
</td>
|
|
618
|
+
</tr>
|
|
619
|
+
<tr class="code">
|
|
620
|
+
<td class="docs">
|
|
621
|
+
<p>Pad the given string to the maximum width provided.</p>
|
|
622
|
+
|
|
623
|
+
<h2></h2>
|
|
624
|
+
|
|
625
|
+
<ul><li><p><strong>param</strong>: <em>String</em> str</p></li><li><p><strong>param</strong>: <em>Number</em> width</p></li><li><p><strong>return</strong>: <em>String</em> </p></li></ul>
|
|
626
|
+
</td>
|
|
627
|
+
<td class="code">
|
|
628
|
+
<pre><code><span class="keyword">function</span> <span class="variable">lpad</span>(<span class="variable">str</span>, <span class="variable">width</span>) {
|
|
629
|
+
<span class="variable">str</span> = <span class="class">String</span>(<span class="variable">str</span>);
|
|
630
|
+
<span class="keyword">var</span> <span class="variable">n</span> = <span class="variable">width</span> - <span class="variable">str</span>.<span class="variable">length</span>;
|
|
631
|
+
<span class="keyword">if</span> (<span class="variable">n</span> &<span class="variable">lt</span>; <span class="number integer">1</span>) <span class="keyword">return</span> <span class="variable">str</span>;
|
|
632
|
+
<span class="keyword">while</span> (<span class="variable">n</span>--) <span class="variable">str</span> = <span class="string">' '</span> + <span class="variable">str</span>;
|
|
633
|
+
<span class="keyword">return</span> <span class="variable">str</span>;
|
|
634
|
+
}</code></pre>
|
|
635
|
+
</td>
|
|
636
|
+
</tr>
|
|
637
|
+
<tr class="code">
|
|
638
|
+
<td class="docs">
|
|
639
|
+
<p>Pad the given string to the maximum width provided.</p>
|
|
640
|
+
|
|
641
|
+
<h2></h2>
|
|
642
|
+
|
|
643
|
+
<ul><li><p><strong>param</strong>: <em>String</em> str</p></li><li><p><strong>param</strong>: <em>Number</em> width</p></li><li><p><strong>return</strong>: <em>String</em> </p></li></ul>
|
|
644
|
+
</td>
|
|
645
|
+
<td class="code">
|
|
646
|
+
<pre><code><span class="keyword">function</span> <span class="variable">rpad</span>(<span class="variable">str</span>, <span class="variable">width</span>) {
|
|
647
|
+
<span class="variable">str</span> = <span class="class">String</span>(<span class="variable">str</span>);
|
|
648
|
+
<span class="keyword">var</span> <span class="variable">n</span> = <span class="variable">width</span> - <span class="variable">str</span>.<span class="variable">length</span>;
|
|
649
|
+
<span class="keyword">if</span> (<span class="variable">n</span> &<span class="variable">lt</span>; <span class="number integer">1</span>) <span class="keyword">return</span> <span class="variable">str</span>;
|
|
650
|
+
<span class="keyword">while</span> (<span class="variable">n</span>--) <span class="variable">str</span> = <span class="variable">str</span> + <span class="string">' '</span>;
|
|
651
|
+
<span class="keyword">return</span> <span class="variable">str</span>;
|
|
652
|
+
}</code></pre>
|
|
653
|
+
</td>
|
|
654
|
+
</tr>
|
|
655
|
+
<tr class="code">
|
|
656
|
+
<td class="docs">
|
|
657
|
+
<p>Report test coverage.</p>
|
|
658
|
+
|
|
659
|
+
<h2></h2>
|
|
660
|
+
|
|
661
|
+
<ul><li><p><strong>param</strong>: <em>Object</em> cov</p></li></ul>
|
|
662
|
+
</td>
|
|
663
|
+
<td class="code">
|
|
664
|
+
<pre><code><span class="keyword">function</span> <span class="variable">reportCoverage</span>(<span class="variable">cov</span>) {
|
|
665
|
+
<span class="variable">populateCoverage</span>(<span class="variable">cov</span>);
|
|
666
|
+
<span class="comment">// Stats</span>
|
|
667
|
+
<span class="variable">print</span>(<span class="string">'\n [bold]{Test Coverage}\n'</span>);
|
|
668
|
+
<span class="keyword">var</span> <span class="variable">sep</span> = <span class="string">' +------------------------------------------+----------+------+------+--------+'</span>,
|
|
669
|
+
<span class="variable">lastSep</span> = <span class="string">' +----------+------+------+--------+'</span>;
|
|
670
|
+
<span class="variable">sys</span>.<span class="variable">puts</span>(<span class="variable">sep</span>);
|
|
671
|
+
<span class="variable">sys</span>.<span class="variable">puts</span>(<span class="string">' | filename | coverage | LOC | SLOC | missed |'</span>);
|
|
672
|
+
<span class="variable">sys</span>.<span class="variable">puts</span>(<span class="variable">sep</span>);
|
|
673
|
+
<span class="keyword">for</span> (<span class="keyword">var</span> <span class="variable">name</span> <span class="keyword">in</span> <span class="variable">cov</span>) {
|
|
674
|
+
<span class="keyword">var</span> <span class="variable">file</span> = <span class="variable">cov</span>[<span class="variable">name</span>];
|
|
675
|
+
<span class="keyword">if</span> (<span class="class">Array</span>.<span class="variable">isArray</span>(<span class="variable">file</span>)) {
|
|
676
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' | '</span> + <span class="variable">rpad</span>(<span class="variable">name</span>, <span class="number integer">40</span>));
|
|
677
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' | '</span> + <span class="variable">lpad</span>(<span class="variable">file</span>.<span class="variable">coverage</span>.<span class="variable">toFixed</span>(<span class="number integer">2</span>), <span class="number integer">8</span>));
|
|
678
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' | '</span> + <span class="variable">lpad</span>(<span class="variable">file</span>.<span class="class">LOC</span>, <span class="number integer">4</span>));
|
|
679
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' | '</span> + <span class="variable">lpad</span>(<span class="variable">file</span>.<span class="class">SLOC</span>, <span class="number integer">4</span>));
|
|
680
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' | '</span> + <span class="variable">lpad</span>(<span class="variable">file</span>.<span class="variable">totalMisses</span>, <span class="number integer">6</span>));
|
|
681
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' |\n'</span>);
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
<span class="variable">sys</span>.<span class="variable">puts</span>(<span class="variable">sep</span>);
|
|
685
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' '</span> + <span class="variable">rpad</span>(<span class="string">''</span>, <span class="number integer">40</span>));
|
|
686
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' | '</span> + <span class="variable">lpad</span>(<span class="variable">cov</span>.<span class="variable">coverage</span>.<span class="variable">toFixed</span>(<span class="number integer">2</span>), <span class="number integer">8</span>));
|
|
687
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' | '</span> + <span class="variable">lpad</span>(<span class="variable">cov</span>.<span class="class">LOC</span>, <span class="number integer">4</span>));
|
|
688
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' | '</span> + <span class="variable">lpad</span>(<span class="variable">cov</span>.<span class="class">SLOC</span>, <span class="number integer">4</span>));
|
|
689
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' | '</span> + <span class="variable">lpad</span>(<span class="variable">cov</span>.<span class="variable">totalMisses</span>, <span class="number integer">6</span>));
|
|
690
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">' |\n'</span>);
|
|
691
|
+
<span class="variable">sys</span>.<span class="variable">puts</span>(<span class="variable">lastSep</span>);
|
|
692
|
+
<span class="comment">// Source</span>
|
|
693
|
+
<span class="keyword">for</span> (<span class="keyword">var</span> <span class="variable">name</span> <span class="keyword">in</span> <span class="variable">cov</span>) {
|
|
694
|
+
<span class="keyword">if</span> (<span class="variable">name</span>.<span class="variable">match</span>(<span class="regexp">/\.js$/</span>)) {
|
|
695
|
+
<span class="keyword">var</span> <span class="variable">file</span> = <span class="variable">cov</span>[<span class="variable">name</span>];
|
|
696
|
+
<span class="variable">print</span>(<span class="string">'\n [bold]{'</span> + <span class="variable">name</span> + <span class="string">'}:'</span>);
|
|
697
|
+
<span class="variable">print</span>(<span class="variable">file</span>.<span class="variable">source</span>);
|
|
698
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">'\n'</span>);
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
}</code></pre>
|
|
702
|
+
</td>
|
|
703
|
+
</tr>
|
|
704
|
+
<tr class="code">
|
|
705
|
+
<td class="docs">
|
|
706
|
+
<p>Populate code coverage data.</p>
|
|
707
|
+
|
|
708
|
+
<h2></h2>
|
|
709
|
+
|
|
710
|
+
<ul><li><p><strong>param</strong>: <em>Object</em> cov</p></li></ul>
|
|
711
|
+
</td>
|
|
712
|
+
<td class="code">
|
|
713
|
+
<pre><code><span class="keyword">function</span> <span class="variable">populateCoverage</span>(<span class="variable">cov</span>) {
|
|
714
|
+
<span class="variable">cov</span>.<span class="class">LOC</span> =
|
|
715
|
+
<span class="variable">cov</span>.<span class="class">SLOC</span> =
|
|
716
|
+
<span class="variable">cov</span>.<span class="variable">totalFiles</span> =
|
|
717
|
+
<span class="variable">cov</span>.<span class="variable">totalHits</span> =
|
|
718
|
+
<span class="variable">cov</span>.<span class="variable">totalMisses</span> =
|
|
719
|
+
<span class="variable">cov</span>.<span class="variable">coverage</span> = <span class="number integer">0</span>;
|
|
720
|
+
<span class="keyword">for</span> (<span class="keyword">var</span> <span class="variable">name</span> <span class="keyword">in</span> <span class="variable">cov</span>) {
|
|
721
|
+
<span class="keyword">var</span> <span class="variable">file</span> = <span class="variable">cov</span>[<span class="variable">name</span>];
|
|
722
|
+
<span class="keyword">if</span> (<span class="class">Array</span>.<span class="variable">isArray</span>(<span class="variable">file</span>)) {
|
|
723
|
+
<span class="comment">// Stats</span>
|
|
724
|
+
++<span class="variable">cov</span>.<span class="variable">totalFiles</span>;
|
|
725
|
+
<span class="variable">cov</span>.<span class="variable">totalHits</span> += <span class="variable">file</span>.<span class="variable">totalHits</span> = <span class="variable">coverage</span>(<span class="variable">file</span>, <span class="variable">true</span>);
|
|
726
|
+
<span class="variable">cov</span>.<span class="variable">totalMisses</span> += <span class="variable">file</span>.<span class="variable">totalMisses</span> = <span class="variable">coverage</span>(<span class="variable">file</span>, <span class="variable">false</span>);
|
|
727
|
+
<span class="variable">file</span>.<span class="variable">totalLines</span> = <span class="variable">file</span>.<span class="variable">totalHits</span> + <span class="variable">file</span>.<span class="variable">totalMisses</span>;
|
|
728
|
+
<span class="variable">cov</span>.<span class="class">SLOC</span> += <span class="variable">file</span>.<span class="class">SLOC</span> = <span class="variable">file</span>.<span class="variable">totalLines</span>;
|
|
729
|
+
<span class="keyword">if</span> (!<span class="variable">file</span>.<span class="variable">source</span>) <span class="variable">file</span>.<span class="variable">source</span> = [];
|
|
730
|
+
<span class="variable">cov</span>.<span class="class">LOC</span> += <span class="variable">file</span>.<span class="class">LOC</span> = <span class="variable">file</span>.<span class="variable">source</span>.<span class="variable">length</span>;
|
|
731
|
+
<span class="variable">file</span>.<span class="variable">coverage</span> = (<span class="variable">file</span>.<span class="variable">totalHits</span> / <span class="variable">file</span>.<span class="variable">totalLines</span>) * <span class="number integer">100</span>;
|
|
732
|
+
<span class="comment">// Source</span>
|
|
733
|
+
<span class="keyword">var</span> <span class="variable">width</span> = <span class="variable">file</span>.<span class="variable">source</span>.<span class="variable">length</span>.<span class="variable">toString</span>().<span class="variable">length</span>;
|
|
734
|
+
<span class="variable">file</span>.<span class="variable">source</span> = <span class="variable">file</span>.<span class="variable">source</span>.<span class="variable">map</span>(<span class="keyword">function</span>(<span class="variable">line</span>, <span class="variable">i</span>){
|
|
735
|
+
++<span class="variable">i</span>;
|
|
736
|
+
<span class="keyword">var</span> <span class="variable">hits</span> = <span class="variable">file</span>[<span class="variable">i</span>] === <span class="number integer">0</span> ? <span class="number integer">0</span> : (<span class="variable">file</span>[<span class="variable">i</span>] || <span class="string">' '</span>);
|
|
737
|
+
<span class="keyword">if</span> (!<span class="variable">boring</span>) {
|
|
738
|
+
<span class="keyword">if</span> (<span class="variable">hits</span> === <span class="number integer">0</span>) {
|
|
739
|
+
<span class="variable">hits</span> = <span class="string">'\x1b[31m'</span> + <span class="variable">hits</span> + <span class="string">'\x1b[0m'</span>;
|
|
740
|
+
<span class="variable">line</span> = <span class="string">'\x1b[41m'</span> + <span class="variable">line</span> + <span class="string">'\x1b[0m'</span>;
|
|
741
|
+
} <span class="keyword">else</span> {
|
|
742
|
+
<span class="variable">hits</span> = <span class="string">'\x1b[32m'</span> + <span class="variable">hits</span> + <span class="string">'\x1b[0m'</span>;
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
<span class="keyword">return</span> <span class="string">'\n '</span> + <span class="variable">lpad</span>(<span class="variable">i</span>, <span class="variable">width</span>) + <span class="string">' | '</span> + <span class="variable">hits</span> + <span class="string">' | '</span> + <span class="variable">line</span>;
|
|
746
|
+
}).<span class="variable">join</span>(<span class="string">''</span>);
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
<span class="variable">cov</span>.<span class="variable">coverage</span> = (<span class="variable">cov</span>.<span class="variable">totalHits</span> / <span class="variable">cov</span>.<span class="class">SLOC</span>) * <span class="number integer">100</span>;
|
|
750
|
+
}</code></pre>
|
|
751
|
+
</td>
|
|
752
|
+
</tr>
|
|
753
|
+
<tr class="code">
|
|
754
|
+
<td class="docs">
|
|
755
|
+
<p>Total coverage for the given file data.</p>
|
|
756
|
+
|
|
757
|
+
<h2></h2>
|
|
758
|
+
|
|
759
|
+
<ul><li><p><strong>param</strong>: <em>Array</em> data</p></li><li><p><strong>return</strong>: <em>Type</em> </p></li></ul>
|
|
760
|
+
</td>
|
|
761
|
+
<td class="code">
|
|
762
|
+
<pre><code><span class="keyword">function</span> <span class="variable">coverage</span>(<span class="variable">data</span>, <span class="variable">val</span>) {
|
|
763
|
+
<span class="keyword">var</span> <span class="variable">n</span> = <span class="number integer">0</span>;
|
|
764
|
+
<span class="keyword">for</span> (<span class="keyword">var</span> <span class="variable">i</span> = <span class="number integer">0</span>, <span class="variable">len</span> = <span class="variable">data</span>.<span class="variable">length</span>; <span class="variable">i</span> &<span class="variable">lt</span>; <span class="variable">len</span>; ++<span class="variable">i</span>) {
|
|
765
|
+
<span class="keyword">if</span> (<span class="variable">data</span>[<span class="variable">i</span>] !== <span class="variable">undefined</span> &<span class="variable">amp</span>;&<span class="variable">amp</span>; <span class="variable">data</span>[<span class="variable">i</span>] == <span class="variable">val</span>) ++<span class="variable">n</span>;
|
|
766
|
+
}
|
|
767
|
+
<span class="keyword">return</span> <span class="variable">n</span>;
|
|
768
|
+
}</code></pre>
|
|
769
|
+
</td>
|
|
770
|
+
</tr>
|
|
771
|
+
<tr class="code">
|
|
772
|
+
<td class="docs">
|
|
773
|
+
<p>Run the given test <code>files</code>, or try <em>test/*</em>.</p>
|
|
774
|
+
|
|
775
|
+
<h2></h2>
|
|
776
|
+
|
|
777
|
+
<ul><li><p><strong>param</strong>: <em>Array</em> files</p></li></ul>
|
|
778
|
+
</td>
|
|
779
|
+
<td class="code">
|
|
780
|
+
<pre><code><span class="keyword">function</span> <span class="variable">run</span>(<span class="variable">files</span>) {
|
|
781
|
+
<span class="keyword">if</span> (!<span class="variable">files</span>.<span class="variable">length</span>) {
|
|
782
|
+
<span class="keyword">try</span> {
|
|
783
|
+
<span class="variable">files</span> = <span class="variable">fs</span>.<span class="variable">readdirSync</span>(<span class="string">'test'</span>).<span class="variable">map</span>(<span class="keyword">function</span>(<span class="variable">file</span>){
|
|
784
|
+
<span class="keyword">return</span> <span class="string">'test/'</span> + <span class="variable">file</span>;
|
|
785
|
+
});
|
|
786
|
+
} <span class="keyword">catch</span> (<span class="variable">err</span>) {
|
|
787
|
+
<span class="variable">print</span>(<span class="string">'\n failed to load tests in [bold]{./test}\n'</span>);
|
|
788
|
+
++<span class="variable">failures</span>;
|
|
789
|
+
<span class="variable">process</span>.<span class="variable">exit</span>(<span class="number integer">1</span>);
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
<span class="keyword">if</span> (<span class="variable">watch</span>) <span class="variable">watchFiles</span>(<span class="variable">files</span>);
|
|
793
|
+
<span class="variable">runFiles</span>(<span class="variable">files</span>);
|
|
794
|
+
}</code></pre>
|
|
795
|
+
</td>
|
|
796
|
+
</tr>
|
|
797
|
+
<tr class="code">
|
|
798
|
+
<td class="docs">
|
|
799
|
+
<p>Show the cursor when <code>show</code> is true, otherwise hide it.</p>
|
|
800
|
+
|
|
801
|
+
<h2></h2>
|
|
802
|
+
|
|
803
|
+
<ul><li><p><strong>param</strong>: <em>Boolean</em> show</p></li></ul>
|
|
804
|
+
</td>
|
|
805
|
+
<td class="code">
|
|
806
|
+
<pre><code><span class="keyword">function</span> <span class="variable">cursor</span>(<span class="variable">show</span>) {
|
|
807
|
+
<span class="keyword">if</span> (<span class="variable">show</span>) {
|
|
808
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">'\x1b[?25h'</span>);
|
|
809
|
+
} <span class="keyword">else</span> {
|
|
810
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">'\x1b[?25l'</span>);
|
|
811
|
+
}
|
|
812
|
+
}</code></pre>
|
|
813
|
+
</td>
|
|
814
|
+
</tr>
|
|
815
|
+
<tr class="code">
|
|
816
|
+
<td class="docs">
|
|
817
|
+
<p>Run the given test <code>files</code>.</p>
|
|
818
|
+
|
|
819
|
+
<h2></h2>
|
|
820
|
+
|
|
821
|
+
<ul><li><p><strong>param</strong>: <em>Array</em> files</p></li></ul>
|
|
822
|
+
</td>
|
|
823
|
+
<td class="code">
|
|
824
|
+
<pre><code><span class="keyword">function</span> <span class="variable">runFiles</span>(<span class="variable">files</span>) {
|
|
825
|
+
<span class="keyword">if</span> (<span class="variable">serial</span>) {
|
|
826
|
+
(<span class="keyword">function</span> <span class="variable">next</span>(){
|
|
827
|
+
<span class="keyword">if</span> (<span class="variable">files</span>.<span class="variable">length</span>) {
|
|
828
|
+
<span class="variable">runFile</span>(<span class="variable">files</span>.<span class="variable">shift</span>(), <span class="variable">next</span>);
|
|
829
|
+
}
|
|
830
|
+
})();
|
|
831
|
+
} <span class="keyword">else</span> {
|
|
832
|
+
<span class="variable">files</span>.<span class="variable">forEach</span>(<span class="variable">runFile</span>);
|
|
833
|
+
}
|
|
834
|
+
}</code></pre>
|
|
835
|
+
</td>
|
|
836
|
+
</tr>
|
|
837
|
+
<tr class="code">
|
|
838
|
+
<td class="docs">
|
|
839
|
+
<p>Run tests for the given <code>file</code>, callback <code>fn()</code> when finished.</p>
|
|
840
|
+
|
|
841
|
+
<h2></h2>
|
|
842
|
+
|
|
843
|
+
<ul><li><p><strong>param</strong>: <em>String</em> file</p></li><li><p><strong>param</strong>: <em>Function</em> fn</p></li></ul>
|
|
844
|
+
</td>
|
|
845
|
+
<td class="code">
|
|
846
|
+
<pre><code><span class="keyword">function</span> <span class="variable">runFile</span>(<span class="variable">file</span>, <span class="variable">fn</span>) {
|
|
847
|
+
<span class="keyword">if</span> (<span class="variable">file</span>.<span class="variable">match</span>(<span class="regexp">/\.js$/</span>)) {
|
|
848
|
+
<span class="keyword">var</span> <span class="variable">title</span> = <span class="variable">path</span>.<span class="variable">basename</span>(<span class="variable">file</span>),
|
|
849
|
+
<span class="variable">file</span> = <span class="variable">path</span>.<span class="variable">join</span>(<span class="variable">cwd</span>, <span class="variable">file</span>),
|
|
850
|
+
<span class="variable">mod</span> = <span class="variable">require</span>(<span class="variable">file</span>.<span class="variable">replace</span>(<span class="regexp">/\.js$/</span>, <span class="string">''</span>));
|
|
851
|
+
(<span class="keyword">function</span> <span class="variable">check</span>(){
|
|
852
|
+
<span class="keyword">var</span> <span class="variable">len</span> = <span class="class">Object</span>.<span class="variable">keys</span>(<span class="variable">mod</span>).<span class="variable">length</span>;
|
|
853
|
+
<span class="keyword">if</span> (<span class="variable">len</span>) {
|
|
854
|
+
<span class="variable">runSuite</span>(<span class="variable">title</span>, <span class="variable">mod</span>, <span class="variable">fn</span>);
|
|
855
|
+
} <span class="keyword">else</span> {
|
|
856
|
+
<span class="variable">setTimeout</span>(<span class="variable">check</span>, <span class="number integer">20</span>);
|
|
857
|
+
}
|
|
858
|
+
})();
|
|
859
|
+
}
|
|
860
|
+
}</code></pre>
|
|
861
|
+
</td>
|
|
862
|
+
</tr>
|
|
863
|
+
<tr class="code">
|
|
864
|
+
<td class="docs">
|
|
865
|
+
<p>Clear the module cache for the given <code>file</code>.</p>
|
|
866
|
+
|
|
867
|
+
<h2></h2>
|
|
868
|
+
|
|
869
|
+
<ul><li><p><strong>param</strong>: <em>String</em> file</p></li></ul>
|
|
870
|
+
</td>
|
|
871
|
+
<td class="code">
|
|
872
|
+
<pre><code><span class="keyword">function</span> <span class="variable">clearCache</span>(<span class="variable">file</span>) {
|
|
873
|
+
<span class="keyword">var</span> <span class="variable">keys</span> = <span class="class">Object</span>.<span class="variable">keys</span>(<span class="variable">module</span>.<span class="variable">moduleCache</span>);
|
|
874
|
+
<span class="keyword">for</span> (<span class="keyword">var</span> <span class="variable">i</span> = <span class="number integer">0</span>, <span class="variable">len</span> = <span class="variable">keys</span>.<span class="variable">length</span>; <span class="variable">i</span> &<span class="variable">lt</span>; <span class="variable">len</span>; ++<span class="variable">i</span>) {
|
|
875
|
+
<span class="keyword">var</span> <span class="variable">key</span> = <span class="variable">keys</span>[<span class="variable">i</span>];
|
|
876
|
+
<span class="keyword">if</span> (<span class="variable">key</span>.<span class="variable">indexOf</span>(<span class="variable">file</span>) === <span class="variable">key</span>.<span class="variable">length</span> - <span class="variable">file</span>.<span class="variable">length</span>) {
|
|
877
|
+
<span class="keyword">delete</span> <span class="variable">module</span>.<span class="variable">moduleCache</span>[<span class="variable">key</span>];
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
}</code></pre>
|
|
881
|
+
</td>
|
|
882
|
+
</tr>
|
|
883
|
+
<tr class="code">
|
|
884
|
+
<td class="docs">
|
|
885
|
+
<p>Watch the given <code>files</code> for changes.</p>
|
|
886
|
+
|
|
887
|
+
<h2></h2>
|
|
888
|
+
|
|
889
|
+
<ul><li><p><strong>param</strong>: <em>Array</em> files</p></li></ul>
|
|
890
|
+
</td>
|
|
891
|
+
<td class="code">
|
|
892
|
+
<pre><code><span class="keyword">function</span> <span class="variable">watchFiles</span>(<span class="variable">files</span>) {
|
|
893
|
+
<span class="keyword">var</span> <span class="variable">p</span> = <span class="number integer">0</span>,
|
|
894
|
+
<span class="variable">c</span> = [<span class="string">'▫ '</span>, <span class="string">'▫▫ '</span>, <span class="string">'▫▫▫ '</span>, <span class="string">' ▫▫▫'</span>,
|
|
895
|
+
<span class="string">' ▫▫'</span>, <span class="string">' ▫'</span>, <span class="string">' ▫'</span>, <span class="string">' ▫▫'</span>,
|
|
896
|
+
<span class="string">'▫▫▫ '</span>, <span class="string">'▫▫ '</span>, <span class="string">'▫ '</span>],
|
|
897
|
+
<span class="variable">l</span> = <span class="variable">c</span>.<span class="variable">length</span>;
|
|
898
|
+
<span class="variable">cursor</span>(<span class="variable">false</span>);
|
|
899
|
+
<span class="variable">setInterval</span>(<span class="keyword">function</span>(){
|
|
900
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="variable">colorize</span>(<span class="string">' [green]{'</span> + <span class="variable">c</span>[<span class="variable">p</span>++ % <span class="variable">l</span>] + <span class="string">'} watching\r'</span>));
|
|
901
|
+
}, <span class="number integer">100</span>);
|
|
902
|
+
<span class="variable">files</span>.<span class="variable">forEach</span>(<span class="keyword">function</span>(<span class="variable">file</span>){
|
|
903
|
+
<span class="variable">fs</span>.<span class="variable">watchFile</span>(<span class="variable">file</span>, { <span class="variable">interval</span>: <span class="number integer">100</span> }, <span class="keyword">function</span>(<span class="variable">curr</span>, <span class="variable">prev</span>){
|
|
904
|
+
<span class="keyword">if</span> (<span class="variable">curr</span>.<span class="variable">mtime</span> &<span class="variable">gt</span>; <span class="variable">prev</span>.<span class="variable">mtime</span>) {
|
|
905
|
+
<span class="variable">print</span>(<span class="string">' [yellow]{◦} '</span> + <span class="variable">file</span>);
|
|
906
|
+
<span class="variable">clearCache</span>(<span class="variable">file</span>);
|
|
907
|
+
<span class="variable">runFile</span>(<span class="variable">file</span>);
|
|
908
|
+
}
|
|
909
|
+
});
|
|
910
|
+
});
|
|
911
|
+
}</code></pre>
|
|
912
|
+
</td>
|
|
913
|
+
</tr>
|
|
914
|
+
<tr class="code">
|
|
915
|
+
<td class="docs">
|
|
916
|
+
<p>Report <code>err</code> for the given <code>test</code> and <code>suite</code>.</p>
|
|
917
|
+
|
|
918
|
+
<h2></h2>
|
|
919
|
+
|
|
920
|
+
<ul><li><p><strong>param</strong>: <em>String</em> suite</p></li><li><p><strong>param</strong>: <em>String</em> test</p></li><li><p><strong>param</strong>: <em>Error</em> err</p></li></ul>
|
|
921
|
+
</td>
|
|
922
|
+
<td class="code">
|
|
923
|
+
<pre><code><span class="keyword">function</span> <span class="variable">error</span>(<span class="variable">suite</span>, <span class="variable">test</span>, <span class="variable">err</span>) {
|
|
924
|
+
++<span class="variable">failures</span>;
|
|
925
|
+
<span class="keyword">var</span> <span class="variable">name</span> = <span class="variable">err</span>.<span class="variable">name</span>,
|
|
926
|
+
<span class="variable">stack</span> = <span class="variable">err</span>.<span class="variable">stack</span>.<span class="variable">replace</span>(<span class="variable">err</span>.<span class="variable">name</span>, <span class="string">''</span>),
|
|
927
|
+
<span class="keyword">label</span> = <span class="variable">test</span> === <span class="string">'uncaught'</span>
|
|
928
|
+
? <span class="variable">test</span>
|
|
929
|
+
: <span class="variable">suite</span> + <span class="string">' '</span> + <span class="variable">test</span>;
|
|
930
|
+
<span class="variable">print</span>(<span class="string">'\n [bold]{'</span> + <span class="keyword">label</span> + <span class="string">'}: [red]{'</span> + <span class="variable">name</span> + <span class="string">'}'</span> + <span class="variable">stack</span> + <span class="string">'\n'</span>);
|
|
931
|
+
<span class="keyword">if</span> (<span class="variable">watch</span>) <span class="variable">notify</span>(<span class="keyword">label</span> + <span class="string">' failed'</span>);
|
|
932
|
+
}</code></pre>
|
|
933
|
+
</td>
|
|
934
|
+
</tr>
|
|
935
|
+
<tr class="code">
|
|
936
|
+
<td class="docs">
|
|
937
|
+
<p>Run the given tests, callback <code>fn()</code> when finished.</p>
|
|
938
|
+
|
|
939
|
+
<h2></h2>
|
|
940
|
+
|
|
941
|
+
<ul><li><p><strong>param</strong>: <em>String</em> title</p></li><li><p><strong>param</strong>: <em>Object</em> tests</p></li><li><p><strong>param</strong>: <em>Function</em> fn</p></li></ul>
|
|
942
|
+
</td>
|
|
943
|
+
<td class="code">
|
|
944
|
+
<pre><code><span class="keyword">var</span> <span class="variable">dots</span> = <span class="number integer">0</span>;
|
|
945
|
+
<span class="keyword">function</span> <span class="variable">runSuite</span>(<span class="variable">title</span>, <span class="variable">tests</span>, <span class="variable">fn</span>) {
|
|
946
|
+
<span class="comment">// Keys</span>
|
|
947
|
+
<span class="keyword">var</span> <span class="variable">keys</span> = <span class="variable">only</span>.<span class="variable">length</span>
|
|
948
|
+
? <span class="variable">only</span>.<span class="variable">slice</span>(<span class="number integer">0</span>)
|
|
949
|
+
: <span class="class">Object</span>.<span class="variable">keys</span>(<span class="variable">tests</span>);
|
|
950
|
+
|
|
951
|
+
<span class="comment">// Setup</span>
|
|
952
|
+
<span class="keyword">var</span> <span class="variable">setup</span> = <span class="variable">tests</span>.<span class="variable">setup</span> || <span class="keyword">function</span>(<span class="variable">fn</span>){ <span class="variable">fn</span>(); };
|
|
953
|
+
|
|
954
|
+
<span class="comment">// Iterate tests</span>
|
|
955
|
+
(<span class="keyword">function</span> <span class="variable">next</span>(){
|
|
956
|
+
<span class="keyword">if</span> (<span class="variable">keys</span>.<span class="variable">length</span>) {
|
|
957
|
+
<span class="keyword">var</span> <span class="variable">key</span>,
|
|
958
|
+
<span class="variable">test</span> = <span class="variable">tests</span>[<span class="variable">key</span> = <span class="variable">keys</span>.<span class="variable">shift</span>()];
|
|
959
|
+
<span class="comment">// Non-tests</span>
|
|
960
|
+
<span class="keyword">if</span> (<span class="variable">key</span> === <span class="string">'setup'</span>) <span class="keyword">return</span> <span class="variable">next</span>();
|
|
961
|
+
|
|
962
|
+
<span class="comment">// Run test</span>
|
|
963
|
+
<span class="keyword">if</span> (<span class="variable">test</span>) {
|
|
964
|
+
<span class="keyword">try</span> {
|
|
965
|
+
++<span class="variable">testcount</span>;
|
|
966
|
+
<span class="variable">assert</span>.<span class="variable">testTitle</span> = <span class="variable">key</span>;
|
|
967
|
+
<span class="keyword">if</span> (<span class="variable">serial</span>) {
|
|
968
|
+
<span class="keyword">if</span> (!<span class="variable">watch</span>) {
|
|
969
|
+
<span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">'.'</span>);
|
|
970
|
+
<span class="keyword">if</span> (++<span class="variable">dots</span> % <span class="number integer">25</span> === <span class="number integer">0</span>) <span class="variable">sys</span>.<span class="variable">print</span>(<span class="string">'\n'</span>);
|
|
971
|
+
}
|
|
972
|
+
<span class="variable">setup</span>(<span class="keyword">function</span>(){
|
|
973
|
+
<span class="keyword">if</span> (<span class="variable">test</span>.<span class="variable">length</span> &<span class="variable">lt</span>; <span class="number integer">1</span>) {
|
|
974
|
+
<span class="variable">test</span>();
|
|
975
|
+
<span class="variable">next</span>();
|
|
976
|
+
} <span class="keyword">else</span> {
|
|
977
|
+
<span class="keyword">var</span> <span class="variable">id</span> = <span class="variable">setTimeout</span>(<span class="keyword">function</span>(){
|
|
978
|
+
<span class="keyword">throw</span> <span class="keyword">new</span> <span class="class">Error</span>(&<span class="variable">quot</span>;<span class="string">'" + key + "'</span> <span class="variable">timed</span> <span class="variable">out</span>&<span class="variable">quot</span>;);
|
|
979
|
+
}, <span class="variable">timeout</span>);
|
|
980
|
+
<span class="variable">test</span>(<span class="keyword">function</span>(){
|
|
981
|
+
<span class="variable">clearTimeout</span>(<span class="variable">id</span>);
|
|
982
|
+
<span class="variable">next</span>();
|
|
983
|
+
});
|
|
984
|
+
}
|
|
985
|
+
});
|
|
986
|
+
} <span class="keyword">else</span> {
|
|
987
|
+
<span class="variable">test</span>(<span class="keyword">function</span>(<span class="variable">fn</span>){
|
|
988
|
+
<span class="variable">process</span>.<span class="variable">addListener</span>(<span class="string">'beforeExit'</span>, <span class="keyword">function</span>(){
|
|
989
|
+
<span class="keyword">try</span> {
|
|
990
|
+
<span class="variable">fn</span>();
|
|
991
|
+
} <span class="keyword">catch</span> (<span class="variable">err</span>) {
|
|
992
|
+
<span class="variable">error</span>(<span class="variable">title</span>, <span class="variable">key</span>, <span class="variable">err</span>);
|
|
993
|
+
}
|
|
994
|
+
});
|
|
995
|
+
});
|
|
996
|
+
}
|
|
997
|
+
} <span class="keyword">catch</span> (<span class="variable">err</span>) {
|
|
998
|
+
<span class="variable">error</span>(<span class="variable">title</span>, <span class="variable">key</span>, <span class="variable">err</span>);
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
1001
|
+
<span class="keyword">if</span> (!<span class="variable">serial</span>) <span class="variable">next</span>();
|
|
1002
|
+
} <span class="keyword">else</span> <span class="keyword">if</span> (<span class="variable">serial</span>) {
|
|
1003
|
+
<span class="variable">fn</span>();
|
|
1004
|
+
}
|
|
1005
|
+
})();
|
|
1006
|
+
}</code></pre>
|
|
1007
|
+
</td>
|
|
1008
|
+
</tr>
|
|
1009
|
+
<tr class="code">
|
|
1010
|
+
<td class="docs">
|
|
1011
|
+
<p>Report exceptions.
|
|
1012
|
+
</p>
|
|
1013
|
+
</td>
|
|
1014
|
+
<td class="code">
|
|
1015
|
+
<pre><code><span class="keyword">function</span> <span class="variable">report</span>() {
|
|
1016
|
+
<span class="variable">process</span>.<span class="variable">emit</span>(<span class="string">'beforeExit'</span>);
|
|
1017
|
+
<span class="keyword">if</span> (<span class="variable">failures</span>) {
|
|
1018
|
+
<span class="variable">print</span>(<span class="string">'\n [bold]{Failures}: [red]{'</span> + <span class="variable">failures</span> + <span class="string">'}\n\n'</span>);
|
|
1019
|
+
<span class="variable">notify</span>(<span class="string">'Failures: '</span> + <span class="variable">failures</span>);
|
|
1020
|
+
} <span class="keyword">else</span> {
|
|
1021
|
+
<span class="keyword">if</span> (<span class="variable">serial</span>) <span class="variable">print</span>(<span class="string">''</span>);
|
|
1022
|
+
<span class="variable">print</span>(<span class="string">'\n [green]{100%} '</span> + <span class="variable">testcount</span> + <span class="string">' tests\n'</span>);
|
|
1023
|
+
<span class="variable">notify</span>(<span class="string">'100% ok'</span>);
|
|
1024
|
+
}
|
|
1025
|
+
<span class="keyword">if</span> (<span class="keyword">typeof</span> <span class="variable">_</span>$<span class="variable">jscoverage</span> === <span class="string">'object'</span>) {
|
|
1026
|
+
<span class="variable">reportCoverage</span>(<span class="variable">_</span>$<span class="variable">jscoverage</span>);
|
|
1027
|
+
}
|
|
1028
|
+
}</code></pre>
|
|
1029
|
+
</td>
|
|
1030
|
+
</tr>
|
|
1031
|
+
<tr class="code">
|
|
1032
|
+
<td class="docs">
|
|
1033
|
+
<p>Growl notify the given <code>msg</code>.</p>
|
|
1034
|
+
|
|
1035
|
+
<h2></h2>
|
|
1036
|
+
|
|
1037
|
+
<ul><li><p><strong>param</strong>: <em>String</em> msg</p></li></ul>
|
|
1038
|
+
</td>
|
|
1039
|
+
<td class="code">
|
|
1040
|
+
<pre><code><span class="keyword">function</span> <span class="variable">notify</span>(<span class="variable">msg</span>) {
|
|
1041
|
+
<span class="keyword">if</span> (<span class="variable">growl</span>) {
|
|
1042
|
+
<span class="variable">childProcess</span>.<span class="variable">exec</span>(<span class="string">'growlnotify -name Expresso -m "'</span> + <span class="variable">msg</span> + <span class="string">'"'</span>);
|
|
1043
|
+
}
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
<span class="comment">// Report uncaught exceptions</span>
|
|
1047
|
+
|
|
1048
|
+
<span class="variable">process</span>.<span class="variable">addListener</span>(<span class="string">'uncaughtException'</span>, <span class="keyword">function</span>(<span class="variable">err</span>){
|
|
1049
|
+
<span class="variable">error</span>(<span class="string">'uncaught'</span>, <span class="string">'uncaught'</span>, <span class="variable">err</span>);
|
|
1050
|
+
});
|
|
1051
|
+
|
|
1052
|
+
<span class="comment">// Show cursor</span>
|
|
1053
|
+
|
|
1054
|
+
[<span class="string">'INT'</span>, <span class="string">'TERM'</span>, <span class="string">'QUIT'</span>].<span class="variable">forEach</span>(<span class="keyword">function</span>(<span class="variable">sig</span>){
|
|
1055
|
+
<span class="variable">process</span>.<span class="variable">addListener</span>(<span class="string">'SIG'</span> + <span class="variable">sig</span>, <span class="keyword">function</span>(){
|
|
1056
|
+
<span class="variable">cursor</span>(<span class="variable">true</span>);
|
|
1057
|
+
<span class="variable">process</span>.<span class="variable">exit</span>(<span class="number integer">1</span>);
|
|
1058
|
+
});
|
|
1059
|
+
});
|
|
1060
|
+
|
|
1061
|
+
<span class="comment">// Report test coverage when available</span>
|
|
1062
|
+
<span class="comment">// and emit "beforeExit" event to perform</span>
|
|
1063
|
+
<span class="comment">// final assertions</span>
|
|
1064
|
+
|
|
1065
|
+
<span class="keyword">var</span> <span class="variable">orig</span> = <span class="variable">process</span>.<span class="variable">emit</span>;
|
|
1066
|
+
<span class="variable">process</span>.<span class="variable">emit</span> = <span class="keyword">function</span>(<span class="variable">event</span>){
|
|
1067
|
+
<span class="keyword">if</span> (<span class="variable">event</span> === <span class="string">'exit'</span>) {
|
|
1068
|
+
<span class="variable">report</span>();
|
|
1069
|
+
<span class="variable">process</span>.<span class="variable">reallyExit</span>(<span class="variable">failures</span>);
|
|
1070
|
+
}
|
|
1071
|
+
<span class="variable">orig</span>.<span class="variable">apply</span>(<span class="this">this</span>, <span class="variable">arguments</span>);
|
|
1072
|
+
};
|
|
1073
|
+
|
|
1074
|
+
<span class="comment">// Run test files</span>
|
|
1075
|
+
|
|
1076
|
+
<span class="keyword">if</span> (!<span class="variable">defer</span>) <span class="variable">run</span>(<span class="variable">files</span>);
|
|
1077
|
+
</code></pre>
|
|
1078
|
+
</td>
|
|
1079
|
+
</tr> </body>
|
|
1080
|
+
</html></tbody></table>
|