Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Cuke this app now! Aye aye captain :)

  • Loading branch information...
commit 963af5f9b3d7f4b492769b029d53483b635102da 1 parent 5b6281e
Olivier Melcher authored

Showing 659 changed files with 60,237 additions and 2 deletions. Show diff stats Hide diff stats

  1. +13 2 Makefile
  2. +5 0 features/foo.feature
  3. +16 0 features/step_definitions/sharedSteps.js
  4. +18 0 features/support/world.js
  5. +2 0  log/test.log
  6. +1 0  node_modules/.bin/cucumber.js
  7. +8 0 node_modules/cucumber/.gitignore
  8. +3 0  node_modules/cucumber/.gitmodules
  9. +8 0 node_modules/cucumber/.npmignore
  10. +17 0 node_modules/cucumber/.travis.yml
  11. +9 0 node_modules/cucumber/Gemfile
  12. +43 0 node_modules/cucumber/Gemfile.lock
  13. +5 0 node_modules/cucumber/Guardfile
  14. +220 0 node_modules/cucumber/History.md
  15. +22 0 node_modules/cucumber/LICENSE
  16. +80 0 node_modules/cucumber/README.md
  17. +21 0 node_modules/cucumber/Rakefile
  18. +25 0 node_modules/cucumber/bin/cucumber.js
  19. +1 0  node_modules/cucumber/cucumber.yml
  20. +108 0 node_modules/cucumber/example/example.css
  21. +110 0 node_modules/cucumber/example/example.js
  22. +82 0 node_modules/cucumber/example/index.html
  23. +13 0 node_modules/cucumber/example/server.js
  24. +963 0 node_modules/cucumber/example/vendor/gherkin.en.js
  25. +18 0 node_modules/cucumber/example/vendor/jquery-1.6.1.min.js
  26. +50 0 node_modules/cucumber/features/background.feature
  27. +93 0 node_modules/cucumber/features/cli.feature
  28. +11 0 node_modules/cucumber/features/coffeescript_support.feature
  29. +3 0  node_modules/cucumber/features/cucumber-tck/.gitignore
  30. +13 0 node_modules/cucumber/features/cucumber-tck/README.md
  31. +1 0  node_modules/cucumber/features/cucumber-tck/background.feature
  32. +1 0  node_modules/cucumber/features/cucumber-tck/calling_steps_from_step_defs.feature
  33. +1 0  node_modules/cucumber/features/cucumber-tck/command_line_interface.feature
  34. +1 0  node_modules/cucumber/features/cucumber-tck/command_line_options.feature
  35. +21 0 node_modules/cucumber/features/cucumber-tck/comments.feature
  36. +143 0 node_modules/cucumber/features/cucumber-tck/core.feature
  37. +35 0 node_modules/cucumber/features/cucumber-tck/data_tables.feature
  38. +24 0 node_modules/cucumber/features/cucumber-tck/doc_strings.feature
  39. +39 0 node_modules/cucumber/features/cucumber-tck/failing_steps.feature
  40. +45 0 node_modules/cucumber/features/cucumber-tck/hooks.feature
  41. +1 0  node_modules/cucumber/features/cucumber-tck/i18n.feature
  42. +1 0  node_modules/cucumber/features/cucumber-tck/json_formatter.feature
  43. +1 0  node_modules/cucumber/features/cucumber-tck/pretty_formatter.feature
  44. +1 0  node_modules/cucumber/features/cucumber-tck/ruby/rake_task.feature
  45. +1 0  node_modules/cucumber/features/cucumber-tck/ruby/rspec.feature
  46. +1 0  node_modules/cucumber/features/cucumber-tck/ruby/test_unit.feature
  47. +1 0  node_modules/cucumber/features/cucumber-tck/scenario_outlines_and_examples.feature
  48. +1 0  node_modules/cucumber/features/cucumber-tck/stats_collector.feature
  49. +1 0  node_modules/cucumber/features/cucumber-tck/step_argument_transforms.feature
  50. +43 0 node_modules/cucumber/features/cucumber-tck/step_definitions/cucumber_mappings.rb
  51. +187 0 node_modules/cucumber/features/cucumber-tck/step_definitions/cucumber_stepdefs.rb
  52. +1 0  node_modules/cucumber/features/cucumber-tck/tags.feature
  53. +105 0 node_modules/cucumber/features/cucumber-tck/undefined_steps.feature
  54. +1 0  node_modules/cucumber/features/cucumber-tck/wire_protocol.feature
  55. +27 0 node_modules/cucumber/features/cucumber-tck/world.feature
  56. +16 0 node_modules/cucumber/features/legacy/asynchronous_step_definitions-issue_01.feature
  57. +124 0 node_modules/cucumber/features/legacy/core.feature
  58. +85 0 node_modules/cucumber/features/step_definitions/calculator_steps.js
  59. +62 0 node_modules/cucumber/features/step_definitions/cli_steps.js
  60. +221 0 node_modules/cucumber/features/step_definitions/cucumber_js_mappings.rb
  61. +150 0 node_modules/cucumber/features/step_definitions/cucumber_steps.js
  62. +19 0 node_modules/cucumber/features/step_definitions/cucumber_steps.rb
  63. +119 0 node_modules/cucumber/features/step_definitions/cucumber_world.js
  64. +262 0 node_modules/cucumber/features/step_definitions/legacy/cucumber_steps.js
  65. +31 0 node_modules/cucumber/features/support/rpn_calculator.js
  66. +17 0 node_modules/cucumber/lib/cucumber.js
  67. +9 0 node_modules/cucumber/lib/cucumber/ast.js
  68. +37 0 node_modules/cucumber/lib/cucumber/ast/background.js
  69. +34 0 node_modules/cucumber/lib/cucumber/ast/data_table.js
  70. +11 0 node_modules/cucumber/lib/cucumber/ast/data_table/row.js
  71. +17 0 node_modules/cucumber/lib/cucumber/ast/doc_string.js
  72. +67 0 node_modules/cucumber/lib/cucumber/ast/feature.js
  73. +23 0 node_modules/cucumber/lib/cucumber/ast/features.js
  74. +58 0 node_modules/cucumber/lib/cucumber/ast/scenario.js
  75. +131 0 node_modules/cucumber/lib/cucumber/ast/step.js
  76. +19 0 node_modules/cucumber/lib/cucumber/cli.js
  77. +89 0 node_modules/cucumber/lib/cucumber/cli/argument_parser.js
  78. +11 0 node_modules/cucumber/lib/cucumber/cli/argument_parser/feature_path_expander.js
  79. +37 0 node_modules/cucumber/lib/cucumber/cli/argument_parser/path_expander.js
  80. +11 0 node_modules/cucumber/lib/cucumber/cli/argument_parser/support_code_path_expander.js
  81. +24 0 node_modules/cucumber/lib/cucumber/cli/configuration.js
  82. +21 0 node_modules/cucumber/lib/cucumber/cli/feature_source_loader.js
  83. +67 0 node_modules/cucumber/lib/cucumber/cli/support_code_loader.js
  84. +40 0 node_modules/cucumber/lib/cucumber/debug.js
  85. +96 0 node_modules/cucumber/lib/cucumber/debug/simple_ast_listener.js
  86. +3 0  node_modules/cucumber/lib/cucumber/listener.js
  87. +376 0 node_modules/cucumber/lib/cucumber/listener/progress_formatter.js
  88. +92 0 node_modules/cucumber/lib/cucumber/parser.js
  89. +40 0 node_modules/cucumber/lib/cucumber/runtime.js
  90. +187 0 node_modules/cucumber/lib/cucumber/runtime/ast_tree_walker.js
  91. +43 0 node_modules/cucumber/lib/cucumber/runtime/ast_tree_walker/event.js
  92. +13 0 node_modules/cucumber/lib/cucumber/runtime/failed_step_result.js
  93. +5 0 node_modules/cucumber/lib/cucumber/runtime/pending_step_exception.js
  94. +9 0 node_modules/cucumber/lib/cucumber/runtime/pending_step_result.js
  95. +9 0 node_modules/cucumber/lib/cucumber/runtime/successful_step_result.js
  96. +6 0 node_modules/cucumber/lib/cucumber/support_code.js
  97. +46 0 node_modules/cucumber/lib/cucumber/support_code/library.js
  98. +46 0 node_modules/cucumber/lib/cucumber/support_code/step_definition.js
  99. +105 0 node_modules/cucumber/lib/cucumber/support_code/step_definition_snippet_builder.js
  100. +4 0 node_modules/cucumber/lib/cucumber/support_code/world_constructor.js
  101. +4 0 node_modules/cucumber/lib/cucumber/type.js
  102. +27 0 node_modules/cucumber/lib/cucumber/type/collection.js
  103. +41 0 node_modules/cucumber/lib/cucumber/type/hash_data_table.js
  104. +4 0 node_modules/cucumber/lib/cucumber/util.js
  105. +4 0 node_modules/cucumber/lib/cucumber/util/arguments.js
  106. +10 0 node_modules/cucumber/lib/cucumber/util/reg_exp.js
  107. +19 0 node_modules/cucumber/lib/cucumber/volatile_configuration.js
  108. +46 0 node_modules/cucumber/package.json
  109. +75 0 node_modules/cucumber/spec/cucumber/ast/background_spec.js
  110. +19 0 node_modules/cucumber/spec/cucumber/ast/data_table/row_spec.js
  111. +96 0 node_modules/cucumber/spec/cucumber/ast/data_table_spec.js
  112. +31 0 node_modules/cucumber/spec/cucumber/ast/doc_string_spec.js
  113. +217 0 node_modules/cucumber/spec/cucumber/ast/feature_spec.js
  114. +80 0 node_modules/cucumber/spec/cucumber/ast/features_spec.js
  115. +196 0 node_modules/cucumber/spec/cucumber/ast/scenario_spec.js
  116. +556 0 node_modules/cucumber/spec/cucumber/ast/step_spec.js
  117. +26 0 node_modules/cucumber/spec/cucumber/cli/argument_parser/feature_path_expander_spec.js
  118. +124 0 node_modules/cucumber/spec/cucumber/cli/argument_parser/path_expander_spec.js
  119. +38 0 node_modules/cucumber/spec/cucumber/cli/argument_parser/support_code_path_expander_spec.js
  120. +272 0 node_modules/cucumber/spec/cucumber/cli/argument_parser_spec.js
  121. +94 0 node_modules/cucumber/spec/cucumber/cli/configuration_spec.js
  122. +55 0 node_modules/cucumber/spec/cucumber/cli/feature_source_loader_spec.js
  123. +229 0 node_modules/cucumber/spec/cucumber/cli/support_code_loader_spec.js
  124. +51 0 node_modules/cucumber/spec/cucumber/cli_spec.js
  125. +1,743 0 node_modules/cucumber/spec/cucumber/listener/progress_formatter_spec.js
  126. +408 0 node_modules/cucumber/spec/cucumber/parser_spec.js
  127. +108 0 node_modules/cucumber/spec/cucumber/runtime/ast_tree_walker/event_spec.js
  128. +774 0 node_modules/cucumber/spec/cucumber/runtime/ast_tree_walker_spec.js
  129. +35 0 node_modules/cucumber/spec/cucumber/runtime/failed_step_result_spec.js
  130. +5 0 node_modules/cucumber/spec/cucumber/runtime/pending_step_exception_spec.js
  131. +28 0 node_modules/cucumber/spec/cucumber/runtime/pending_step_result_spec.js
  132. +28 0 node_modules/cucumber/spec/cucumber/runtime/successful_step_result_spec.js
  133. +124 0 node_modules/cucumber/spec/cucumber/runtime_spec.js
  134. +179 0 node_modules/cucumber/spec/cucumber/support_code/library_spec.js
  135. +279 0 node_modules/cucumber/spec/cucumber/support_code/step_definition_snippet_builder_spec.js
  136. +219 0 node_modules/cucumber/spec/cucumber/support_code/step_definition_spec.js
  137. +10 0 node_modules/cucumber/spec/cucumber/support_code/world_constructor_spec.js
  138. +108 0 node_modules/cucumber/spec/cucumber/type/collection_spec.js
  139. +97 0 node_modules/cucumber/spec/cucumber/type/hash_data_table_spec.js
  140. +25 0 node_modules/cucumber/spec/cucumber/util/arguments_spec.js
  141. +73 0 node_modules/cucumber/spec/cucumber/util/reg_exp_spec.js
  142. +41 0 node_modules/cucumber/spec/cucumber/volatile_configuration_spec.js
  143. +30 0 node_modules/cucumber/spec/cucumber_spec.js
  144. +15 0 node_modules/cucumber/spec/support/configurations_shared_examples.js
  145. +1 0  node_modules/cucumber/spec/support/initializer_stub1.js
  146. +1 0  node_modules/cucumber/spec/support/initializer_stub2.js
  147. +1 0  node_modules/cucumber/spec/support/initializer_stub3.js
  148. +131 0 node_modules/cucumber/spec/support/spec_helper.js
  149. +9 0 node_modules/html5/.gitmodules
  150. +2 0  node_modules/html5/.travis.yml
  151. +19 0 node_modules/html5/COPYING
  152. +2 0  node_modules/html5/DOCUMENTATION.md
  153. +12 0 node_modules/html5/Makefile
  154. +55 0 node_modules/html5/README.md
  155. +51 0 node_modules/html5/data/encoding/chardet/test_big5.txt
  156. +10 0 node_modules/html5/data/encoding/test-yahoo-jp.dat
  157. +394 0 node_modules/html5/data/encoding/tests1.dat
  158. +114 0 node_modules/html5/data/encoding/tests2.dat
  159. +4,116 0 node_modules/html5/data/html-files/aftonbladet.se.html
  160. +416 0 node_modules/html5/data/html-files/beaconpush.html
  161. +1 0  node_modules/html5/data/html-files/google-results.htm
  162. +249 0 node_modules/html5/data/html-files/hostgator-cancel.htm
  163. +2 0  node_modules/html5/data/html-files/invalid-attr+jq.html
  164. +1 0  node_modules/html5/data/html-files/invalid-attr.html
  165. +1 0  node_modules/html5/data/html-files/metatag.html
  166. +1,142 0 node_modules/html5/data/html-files/nyt.html
  167. +1 0  node_modules/html5/data/html-files/python-ref-import.htm
  168. +5 0 node_modules/html5/data/html-files/tag-in-script.html
  169. +1,091 0 node_modules/html5/data/html-files/techcrunch.html
  170. +1 0  node_modules/html5/data/html-files/web-apps-old.htm
  171. +34,275 0 node_modules/html5/data/html-files/web-apps.htm
  172. +501 0 node_modules/html5/data/sanitizer/tests1.dat
  173. +125 0 node_modules/html5/data/serializer/core.test
  174. +66 0 node_modules/html5/data/serializer/injectmeta.test
  175. +965 0 node_modules/html5/data/serializer/optionaltags.test
  176. +60 0 node_modules/html5/data/serializer/options.test
  177. +51 0 node_modules/html5/data/serializer/whitespace.test
  178. +43 0 node_modules/html5/data/sniffer/htmlOrFeed.json
  179. +75 0 node_modules/html5/data/tokenizer/contentModelFlags.test
  180. +2,343 0 node_modules/html5/data/tokenizer/entities.test
  181. +33 0 node_modules/html5/data/tokenizer/escapeFlag.test
  182. +1,313 0 node_modules/html5/data/tokenizer/numericEntities.test
  183. +196 0 node_modules/html5/data/tokenizer/test1.test
  184. +163 0 node_modules/html5/data/tokenizer/test2.test
Sorry, we could not display the entire diff because too many files (659) changed.
15 Makefile
@@ -2,14 +2,24 @@ MOCHA_REPORTER = spec
2 2 UNIT_TESTS = $(shell find test/unit/server -name "*.test.js")
3 3 INTEGRATION_TESTS = $(shell find test/integration/ -name "*.test.js")
4 4
  5 +# vim => :map ,f :w\|!clear && make cucumber<cr>
5 6 cucumber:
6   - @NODE_ENV=test ./node_modules/.bin/jasmine \
7   - --require ['test/features']
  7 + @NODE_ENV=test ./node_modules/.bin/cucumber.js \
  8 + # -r test/features
8 9
  10 +# vim => :map ,i :w\|!clear && make test-integration<cr>
9 11 test-integration:
  12 + @NODE_ENV=test ./node_modules/.bin/mocha \
  13 + --require should \
  14 + --require sinon \
  15 + --reporter $(MOCHA_REPORTER) \
  16 + --slow 20 \
  17 + --growl \
  18 + $(INTEGRATION_TEST)
10 19
11 20 test-performance:
12 21
  22 +# vim => :map ,t :w\|!clear && make test-unit-server<cr>
13 23 test-unit-server:
14 24 @NODE_ENV=test ./node_modules/.bin/mocha \
15 25 --require should \
@@ -19,6 +29,7 @@ test-unit-server:
19 29 --growl \
20 30 $(UNIT_TESTS)
21 31
  32 +# vim => :map ,c :w\|!clear && make test-unit-client<cr>
22 33 test-unit-client:
23 34 open test/unit/client/SpecRunner.html
24 35
5 features/foo.feature
... ... @@ -0,0 +1,5 @@
  1 +Feature: Learn Cucumber
  2 +
  3 + Scenario: Visiting the home page
  4 + Given I am on the home page
  5 + Then I should see "express"
16 features/step_definitions/sharedSteps.js
... ... @@ -0,0 +1,16 @@
  1 +var World = require('../support/world');
  2 +
  3 +var sharedSteps = function(){
  4 + var world = this.world = new World();
  5 +
  6 + this.Given(/^I am on the home page$/, function(callback) {
  7 + world.visit('/', callback);
  8 + });
  9 +
  10 + this.Then(/^I should see "([^"]*)"$/, function(arg1, callback) {
  11 + // express the regexp above with the code you wish you had
  12 + callback.pending();
  13 + });
  14 +}
  15 +
  16 +module.exports = sharedSteps;
18 features/support/world.js
... ... @@ -0,0 +1,18 @@
  1 +var zombie = require('zombie')
  2 + , HTML5 = require('html5')
  3 + , assert = require('assert')
  4 + , server = require('../../server');
  5 +
  6 +module.exports = function(){
  7 + this.browser = new zombie.Browser({runScripts:true, debug:false, htmlParser: HTML5});
  8 +
  9 + this.page = function(path){
  10 + return "http://localhost:" + server.app.settings.port + path
  11 + };
  12 +
  13 + this.visit = function(path, callback){
  14 + this.browser.visit( this.page(path), function(err, browser, status){
  15 + callback(err, browser, status);
  16 + });
  17 + };
  18 +};
2  log/test.log
... ... @@ -0,0 +1,2 @@
  1 +{"level":"http","message":"Express server listening on port 3000 in test mode"}
  2 +{"level":"http","message":"Express server listening on port 3000 in test mode"}
1  node_modules/.bin/cucumber.js
8 node_modules/cucumber/.gitignore
... ... @@ -0,0 +1,8 @@
  1 +.DS_Store
  2 +node_modules
  3 +*~
  4 +.#*
  5 +.rvmrc
  6 +doc/
  7 +tmp/
  8 +npm-debug.log
3  node_modules/cucumber/.gitmodules
... ... @@ -0,0 +1,3 @@
  1 +[submodule "features/cucumber-tck"]
  2 + path = features/cucumber-tck
  3 + url = git://github.com/cucumber/cucumber-tck.git
8 node_modules/cucumber/.npmignore
... ... @@ -0,0 +1,8 @@
  1 +.DS_Store
  2 +node_modules
  3 +*~
  4 +.#*
  5 +.rvmrc
  6 +doc/
  7 +tmp/
  8 +Procfile
17 node_modules/cucumber/.travis.yml
... ... @@ -0,0 +1,17 @@
  1 +rvm: "1.9.2"
  2 +before_script: "git submodule update --init && npm install"
  3 +script: "rake"
  4 +
  5 +node_js:
  6 + - 0.4
  7 + - 0.6
  8 +
  9 +branches:
  10 + only:
  11 + - master
  12 +
  13 +notifications:
  14 + email:
  15 + - jb@jbpros.com
  16 + irc:
  17 + - "irc.freenode.org#cucumber.js"
9 node_modules/cucumber/Gemfile
... ... @@ -0,0 +1,9 @@
  1 +source :rubygems
  2 +
  3 +group :test do
  4 + gem "aruba", "0.4.7"
  5 +end
  6 +
  7 +group :dev do
  8 + gem "guard-jasmine-node", "0.0.5"
  9 +end
43 node_modules/cucumber/Gemfile.lock
... ... @@ -0,0 +1,43 @@
  1 +GEM
  2 + remote: http://rubygems.org/
  3 + specs:
  4 + aruba (0.4.7)
  5 + childprocess (>= 0.2.2)
  6 + cucumber (>= 1.1.1)
  7 + ffi (= 1.0.9)
  8 + rspec (>= 2.7.0)
  9 + builder (3.0.0)
  10 + childprocess (0.2.3)
  11 + ffi (~> 1.0.6)
  12 + cucumber (1.1.3)
  13 + builder (>= 2.1.2)
  14 + diff-lcs (>= 1.1.2)
  15 + gherkin (~> 2.6.7)
  16 + json (>= 1.4.6)
  17 + term-ansicolor (>= 1.0.6)
  18 + diff-lcs (1.1.3)
  19 + ffi (1.0.9)
  20 + gherkin (2.6.8)
  21 + json (>= 1.4.6)
  22 + guard (0.8.2)
  23 + thor (~> 0.14.6)
  24 + guard-jasmine-node (0.0.5)
  25 + guard (>= 0.4)
  26 + json (1.6.3)
  27 + rspec (2.7.0)
  28 + rspec-core (~> 2.7.0)
  29 + rspec-expectations (~> 2.7.0)
  30 + rspec-mocks (~> 2.7.0)
  31 + rspec-core (2.7.1)
  32 + rspec-expectations (2.7.0)
  33 + diff-lcs (~> 1.1.2)
  34 + rspec-mocks (2.7.0)
  35 + term-ansicolor (1.0.7)
  36 + thor (0.14.6)
  37 +
  38 +PLATFORMS
  39 + ruby
  40 +
  41 +DEPENDENCIES
  42 + aruba (= 0.4.7)
  43 + guard-jasmine-node (= 0.0.5)
5 node_modules/cucumber/Guardfile
... ... @@ -0,0 +1,5 @@
  1 +guard 'jasmine-node', :jasmine_node_bin => File.expand_path(File.dirname(__FILE__) + "/node_modules/jasmine-node/bin/jasmine-node") do
  2 + watch(%r{^spec/(.+)_spec\.js$}) { |m| "spec/#{m[1]}_spec.js" }
  3 + watch(%r{^lib/(.+)\.js$}) { |m| "spec/#{m[1]}_spec.js" }
  4 + watch(%r{^spec/support/.+\.js$}) { "spec" }
  5 +end
220 node_modules/cucumber/History.md
Source Rendered
... ... @@ -0,0 +1,220 @@
  1 +# Cucumber.js changelog
  2 +
  3 +## [v0.2](https://github.com/cucumber/cucumber-js/compare/v0.1.5...master)
  4 +
  5 +
  6 +
  7 +### [v0.2.3](https://github.com/cucumber/cucumber-js/compare/v0.2.2...v0.2.3)
  8 +
  9 +#### New features
  10 +
  11 +* Add support for Node 0.6 (Julien Biezemans)
  12 +
  13 +#### Fixes
  14 +
  15 +* Prevent the same step definition snippet from being suggested twice (Julien Biezemans)
  16 +
  17 +#### Internals and tests
  18 +
  19 +* Don't make NPM ignore example/ anymore
  20 +* Bump cucumber-features (Julien Biezemans)
  21 +* Use non-deprecated "url" key instead of "web" in NPM manifest (Julien Biezemans)
  22 +* Add JS step definitions related to data table scenarios (Julien Biezemans)
  23 +* Move from cucumber-features to cucumber-tck (Julien Biezemans)
  24 +* Bump Gherkin (Julien Biezemans)
  25 +* Bump jasmine-node (Julien Biezemans)
  26 +* Bump connect (Julien Biezemans)
  27 +* Fix Travis build (Julien Biezemans)
  28 +* Bump browserify (Julien Biezemans)
  29 +* Bump nopt (Julien Biezemans)
  30 +* Bump underscore (Julien Biezemans)
  31 +* Bump underscore.string (Julien Biezemans)
  32 +* Bump rimraf (Julien Biezemans)
  33 +* Bump mkdirp (Julien Biezemans)
  34 +* Bump Aruba (Julien Biezemans)
  35 +
  36 +
  37 +
  38 +### [v0.2.2](https://github.com/cucumber/cucumber-js/compare/v0.2.1...v0.2.2)
  39 +
  40 +#### New features
  41 +
  42 +* Suggest step definition snippets for undefined steps (#33 Julien Biezemans)
  43 +
  44 +#### Internals and tests
  45 +
  46 +* Add contributors to NPM package manifest (Julien Biezemans)
  47 +* Clean up JS step definitions (Julien Biezemans)
  48 +* Bump cucumber-features and reflect step changes (Julien Biezemans)
  49 +* Set up [continuous integration on Travis CI](http://travis-ci.org/#!/cucumber/cucumber-js) (Julien Biezemans)
  50 +* Add Travis's build status icon to README (Julien Biezemans)
  51 +
  52 +
  53 +
  54 +### [v0.2.1](https://github.com/cucumber/cucumber-js/compare/v0.2.0...v0.2.1)
  55 +
  56 +#### New features
  57 +
  58 +* Allow custom World constructors (Julien Biezemans)
  59 +* Add support for data tables (with conversion to hashes) (#12 Julien Biezemans)
  60 +
  61 +#### Changed features
  62 +
  63 +* Demonstrate World object usages in web example (Julien Biezemans)
  64 +
  65 +
  66 +
  67 +### [v0.2.0](https://github.com/cucumber/cucumber-js/compare/v0.1.5...v0.2.0)
  68 +
  69 +#### New features
  70 +
  71 +* Setup application to run on [Travis CI](http://travis-ci.org/#!/jbpros/cucumber-js) (Julien Biezemans)
  72 +* Add CoffeeScript support for step definition files (Paul Jensen)
  73 +* Add "World" (#26 Julien Biezemans)
  74 +
  75 +#### Changed features
  76 +
  77 +* Add link to the Github repository on web example (Julien Biezemans)
  78 +* Allow specifying the port the web example server should listen on (Julien Biezemans)
  79 +* Update web example to use cucumber-html formatter (Julien Biezemans)
  80 +
  81 +#### Fixes
  82 +
  83 +* Fix load paths in spec helper (Julien Biezemans)
  84 +* Prevent 'crypto' module from being included by browserify in web example (Julien Biezemans)
  85 +* Fix HTML indentation (Julien Biezemans)
  86 +* Prevent CLI support code loader from calling module main exports which are not functions (Julien Biezemans)
  87 +* Remove use of username for submodule (Kushal Pisavadia)
  88 +
  89 +#### Internals and tests
  90 +
  91 +* Bump jasmine-node
  92 +* Update README (Julien Biezemans)
  93 +* Bump Gherkin twice (Julien Biezemans)
  94 +* Bump cucumber-features twice (Julien Biezemans)
  95 +* Add missing getters on several AST feature elements (mostly getLine()) (Julien Biezemans)
  96 +* Ignore example/ on NPM (Julien Biezemans)
  97 +* Add Procfile (used by Heroku when deploying to cucumber.heroku.com) (Julien Biezemans)
  98 +* Bump Aruba (Julien Biezemans)
  99 +* Add guard-jasmine-node (Julien Biezemans)
  100 +* Improve Guardfile regular expressions (Julien Biezemans)
  101 +* Bump cucumber-html and remove DOM templates from web example HTML file (Julien Biezemans)
  102 +* Fix PathExpander internal name (Julien Biezemans)
  103 +* Remove unneeded requires from FeaturePathExpander (Julien Biezemans)
  104 +* Bump browserify (Julien Biezemans)
  105 +* Remove "glob" from dependencies (Julien Biezemans)
  106 +* Refactor SupportCodePathExpander spec (Julien Biezemans)
  107 +* Add feature for CoffeeScript support (#29 Julien Biezemans)
  108 +
  109 +
  110 +
  111 +## [v0.1](https://github.com/cucumber/cucumber-js/compare/v0.0.1...v0.1.5)
  112 +
  113 +### [v0.1.5](https://github.com/cucumber/cucumber-js/compare/v0.1.4...v0.1.5)
  114 +
  115 +#### New features
  116 +
  117 +* Add support for background (#9 Julien Biezemans)
  118 +
  119 +#### Internals and tests
  120 +
  121 +* Bump cucumber-features (twice) (Julien Biezemans)
  122 +* Bump gherkin and reflect changes in its API (add DocString content type) (Julien Biezemans)
  123 +
  124 +
  125 +
  126 +### [v0.1.4](https://github.com/cucumber/cucumber-js/compare/v0.1.3...v0.1.4)
  127 +
  128 +#### Changed features
  129 +
  130 +* Stop polluting the global namespace with Given(), When() and Then() (#2 Julien Biezemans)
  131 +* Step definitions can be created with the support code helper passed as 'this':
  132 + this.Given(), this.When(), this.Then() and this.defineStep() (#2 Julien Biezemans)
  133 +
  134 +#### Internals and tests
  135 +
  136 +* Fix typo "occured" -> "occurred" (Fernando Acorreia)
  137 +* Improve variable names in CLI support code loader (Julien Biezemans)
  138 +
  139 +
  140 +
  141 +### [v0.1.3](https://github.com/cucumber/cucumber-js/compare/v0.1.2...v0.1.3)
  142 +
  143 +#### New features
  144 +
  145 +* Allow several features to run at once (#14 Julien Biezemans)
  146 +* Add support for --require (Julien Biezemans)
  147 +
  148 +#### Internals and tests
  149 +
  150 +* Improve features and support code API (Julien Biezemans)
  151 +* Add "Cli" and "Volatile" configurations (Julien Biezemans)
  152 +* Internal refactoring and cleanup (Julien Biezemans)
  153 +* Cucumber.js can now fully test itself (Julien Biezemans)
  154 +* Remove run_all_features script in favor of bin/cucumber.js (Julien Biezemans)
  155 +
  156 +
  157 +
  158 +### [v0.1.2](https://github.com/cucumber/cucumber-js/compare/v0.1.1...v0.1.2)
  159 +
  160 +#### New features
  161 +
  162 +* Add failure reporting to the progress formatter (#20 Julien Biezemans)
  163 +
  164 +
  165 +
  166 +### [v0.1.1](https://github.com/cucumber/cucumber-js/compare/v0.1.0...v0.1.1)
  167 +
  168 +#### New features
  169 +
  170 +* Publish Cucumber.js to NPM as [`cucumber`](http://search.npmjs.org/#/cucumber) (Julien Biezemans)
  171 +
  172 +#### Changed features
  173 +
  174 +* Throw a clearer exception on missing feature argument (CLI) (Julien Biezemans)
  175 +
  176 +#### Internals and tests
  177 +
  178 +* Unify and clean up js-specific features and step definitions (#21 Julien Biezemans)
  179 +
  180 +
  181 +
  182 +### [v0.1.0](https://github.com/cucumber/cucumber-js/compare/v0.0.1...v0.1.0)
  183 +
  184 +#### New features
  185 +
  186 +* Add cucumber.js executable (Julien Biezemans)
  187 +* Handle step failures (#6 Julien Biezemans)
  188 +* Add the progress formatter (#16 Julien Biezemans)
  189 +* Add support for pending steps (#18 Julien Biezemans)
  190 +* Add support for undefined steps (#19 Julien Biezemans)
  191 +
  192 +#### Changed features
  193 +
  194 +* Update web example to use the new progress formatter (Julien Biezemans)
  195 +
  196 +#### Fixes
  197 +
  198 +* Fix asynchronous step definition callbacks (#1 Julien Biezemans)
  199 +* Fix stepResult.isSuccessful call in ProgressFormatter (Julien Biezemans)
  200 +* Load Gherkin properly in browsers (Julien Biezemans)
  201 +* Remove calls to console.log in web example (Julien Biezemans)
  202 +
  203 +#### Internals and tests
  204 +
  205 +* Pass against core.feature in its new form, both with the Cucumber-ruby/Aruba pair and cucumber-js itself (Julien Biezemans)
  206 +* Refactor cucumber-features JS mappings (Julien Biezemans)
  207 +* Refactor js-specific features (Julien Biezemans)
  208 +* Rename PyString to DocString (#15 Julien Biezemans)
  209 +* Update Gherkin to 2.4.0 (Julien Biezemans)
  210 +* Modularize the project and use browserify.js to serve a single JS file to browsers. (#3 Julien Biezemans)
  211 +* Rename Cucumber.Types to Cucumber.Type (Julien Biezemans)
  212 +* Use progress formatter in cucumber-features (#17 Julien Biezemans)
  213 +
  214 +
  215 +
  216 +## [v0.0](https://github.com/cucumber/cucumber-js/tree/v0.0.1)
  217 +
  218 +### [v0.0.1](https://github.com/cucumber/cucumber-js/tree/v0.0.1)
  219 +
  220 +* Emerge Cucumber.js with bare support for features, scenarios and steps. It does not handle several Gherkin elements nor failures yet. (Julien Biezemans)
22 node_modules/cucumber/LICENSE
... ... @@ -0,0 +1,22 @@
  1 +The MIT License
  2 +
  3 +Copyright (c) 2011 Julien Biezemans
  4 +
  5 +Permission is hereby granted, free of charge, to any person obtaining
  6 +a copy of this software and associated documentation files (the
  7 +"Software"), to deal in the Software without restriction, including
  8 +without limitation the rights to use, copy, modify, merge, publish,
  9 +distribute, sublicense, and/or sell copies of the Software, and to
  10 +permit persons to whom the Software is furnished to do so, subject to
  11 +the following conditions:
  12 +
  13 +The above copyright notice and this permission notice shall be
  14 +included in all copies or substantial portions of the Software.
  15 +
  16 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  17 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  18 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  19 +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  20 +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  21 +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  22 +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
80 node_modules/cucumber/README.md
Source Rendered
... ... @@ -0,0 +1,80 @@
  1 +# Cucumber.js [![Build Status](https://secure.travis-ci.org/cucumber/cucumber-js.png)](http://travis-ci.org/cucumber/cucumber-js)
  2 +
  3 +Cucumber brought (natively) to your JavaScript stack.
  4 +
  5 +It can run basic fatures inside both Node.js and web browsers.
  6 +
  7 +It still needs a lot of work. Only a few feature elements are supported at the moment.
  8 +
  9 +## Prerequesites
  10 +
  11 +* Node.js 0.4.8 (tested on 0.4.7 too)
  12 +* npm 1.0.6
  13 +
  14 +### Works on
  15 +
  16 +* Node.js 0.4, 0.5, 0.6
  17 +* Google Chrome 13.0.772.0 (dev)
  18 +* Firefox 4.0.1
  19 +* Safari 5.0.5
  20 +
  21 +And probably lots of other browsers.
  22 +
  23 +## Setup for using in Node.js and running tests
  24 +
  25 +Install the required dependencies:
  26 +
  27 + $ npm link
  28 +
  29 +## Play with it!
  30 +
  31 + $ node example/server.js
  32 +
  33 +Then go to [localhost:9797](http://localhost:9797/).
  34 +
  35 +## Run tests
  36 +
  37 +### Specs
  38 +
  39 + $ node_modules/.bin/jasmine-node spec
  40 +
  41 +### Features & documentation
  42 +
  43 +There is a common set of features shared by all cucumber implementations. It's called the *Technology Compatibility Kit* or *TCK*. Find more on the [cucumber-tck](http://github.com/cucumber/cucumber-tck) repository.
  44 +
  45 +The official way of running them is through Cucumber-ruby and Aruba. Ruby and Bundler are required for this to work.
  46 +
  47 + $ git submodule update --init
  48 + $ bundle
  49 + $ rm -rf doc; ARUBA_REPORT_DIR=doc cucumber features/cucumber-tck -r features
  50 +
  51 +You can then open the generated documentation:
  52 +
  53 + $ open doc/features/cucumber-tck/*.html # might open a lot of files ;)
  54 +
  55 +In addition to that, Cucumber.js is able to run the features for itself too:
  56 +
  57 + $ ./bin/cucumber.js features/cucumber-tck -r features
  58 +
  59 +There are a few other Cucumber.js-dependent features. Execute everything:
  60 +
  61 + $ ./bin/cucumber.js
  62 +
  63 +### Rake
  64 +
  65 +Alternatively, you can run everything with the help of Rake:
  66 +
  67 + $ git submodule update --init
  68 + $ bundle
  69 + $ rake
  70 +
  71 +### Debug messages
  72 +
  73 +You can display debug messages by setting the DEBUG_LEVEL environment variable. It goes from `1` to `5`. `5` will diplay everything, `1` will only print out the critical things.
  74 +
  75 + $ DEBUG_LEVEL=5 ./bin/cucumber.js
  76 +
  77 +It even works with Aruba:
  78 +
  79 + $ rm -rf doc; DEBUG_LEVEL=5 ARUBA_REPORT_DIR=doc cucumber features/cucumber-tck -r features
  80 + $ open doc/features/cucumber-tck/*.html # you'll see debug messages in Aruba-generated docs
21 node_modules/cucumber/Rakefile
... ... @@ -0,0 +1,21 @@
  1 +task :default => [:test]
  2 +
  3 +desc "Run all tests"
  4 +task :test => "test:all"
  5 +
  6 +namespace :test do
  7 +
  8 + desc "Run all tests"
  9 + task :all => [ "test:rb", "test:js" ]
  10 +
  11 + desc "Run the features through Cucumber (Ruby) and Aruba"
  12 + task :rb do
  13 + sh %{ cucumber -p quiet }
  14 + end
  15 +
  16 + desc "Run the features through Cucumber.js and the specs through Jasmine-node"
  17 + task :js do
  18 + sh %{ npm test }
  19 + end
  20 +
  21 +end
25 node_modules/cucumber/bin/cucumber.js
... ... @@ -0,0 +1,25 @@
  1 +#!/usr/bin/env node
  2 +var Cucumber = require('../lib/cucumber');
  3 +var cli = Cucumber.Cli(process.argv);
  4 +cli.run(function(succeeded) {
  5 + var code = succeeded ? 0 : 1;
  6 + var exitFunction = function() {
  7 + process.exit(code);
  8 + };
  9 +
  10 + // --- exit after waiting for all pending output ---
  11 + var waitingIO = false;
  12 + process.stdout.on('drain', function() {
  13 + if (waitingIO) {
  14 + // the kernel buffer is now empty
  15 + exitFunction();
  16 + }
  17 + });
  18 + if (process.stdout.write("")) {
  19 + // no buffer left, exit now:
  20 + exitFunction();
  21 + } else {
  22 + // write() returned false, kernel buffer is not empty yet...
  23 + waitingIO = true;
  24 + }
  25 +});
1  node_modules/cucumber/cucumber.yml
... ... @@ -0,0 +1 @@
  1 +quiet: -f progress --no-snippets
108 node_modules/cucumber/example/example.css
... ... @@ -0,0 +1,108 @@
  1 +html, body {
  2 + margin:1em;
  3 + min-height:100%;
  4 + font-family:helvetica, arial, freesans, clean, sans-serif;
  5 + font-size:.95em;
  6 +}
  7 +
  8 +#feature, #step-definitions, #output, #errors {
  9 + width:700px;
  10 + font-family:'Bitstream Vera Sans Mono', Courier, monospace;
  11 + font-size:1em;
  12 +}
  13 +
  14 +#feature {
  15 + height:16em;
  16 +}
  17 +
  18 +#step-definitions {
  19 + height:28em;
  20 +}
  21 +
  22 +#errors {
  23 + color: #a30;
  24 +}
  25 +
  26 +/* html formatter */
  27 +
  28 +.cucumber-report .keyword {
  29 + font-weight: bold;
  30 +}
  31 +
  32 +.cucumber-report .description {
  33 + font-style: italic;
  34 + margin-left: 20px;
  35 +}
  36 +
  37 +.cucumber-report details > section {
  38 + margin-left: 20px;
  39 +}
  40 +
  41 +.cucumber-report ol.steps {
  42 + list-style-type: none;
  43 + margin-top: 0;
  44 + margin-bottom: 0;
  45 +}
  46 +
  47 +.cucumber-report .doc_string {
  48 + margin: 0 0 0 20px;
  49 +}
  50 +
  51 +.cucumber-report table {
  52 + border-collapse: collapse;
  53 + border: 1px;
  54 + border-style: solid;
  55 +}
  56 +
  57 +.cucumber-report td, .cucumber-report th {
  58 + border: 1px;
  59 + border-style: solid;
  60 + padding-left: 4px;
  61 + padding-right: 4px;
  62 +}
  63 +
  64 +.cucumber-report table {
  65 + margin-left: 20px;
  66 +}
  67 +
  68 +.cucumber-report thead {
  69 + background-color: #C0C0C0;
  70 +}
  71 +
  72 +.cucumber-report .passed {
  73 + background-color: #C5D88A;
  74 +}
  75 +
  76 +.cucumber-report .undefined, .cucumber-report .pending {
  77 + background-color: #EAEC2D;
  78 +}
  79 +
  80 +.cucumber-report .skipped {
  81 + background-color: #2DEAEC;
  82 +}
  83 +
  84 +.cucumber-report .failed {
  85 + background-color: #D88A8A;
  86 +}
  87 +
  88 +.cucumber-report .tags {
  89 + display: inline;
  90 +}
  91 +
  92 +.cucumber-report .tag {
  93 + margin-right: 0.25em;
  94 + color: #246ac1;
  95 +}
  96 +
  97 +.cucumber-report .comments {
  98 + display: inline;
  99 +}
  100 +
  101 +.cucumber-report .comment {
  102 + margin 0;
  103 + padding 0;
  104 +}
  105 +
  106 +#cucumber-templates {
  107 + display: none;
  108 +}
110 node_modules/cucumber/example/example.js
... ... @@ -0,0 +1,110 @@
  1 +(function($) {
  2 + var CucumberHTMLListener = function($root) {
  3 + var CucumberHTML = require('cucumber-html');
  4 + var formatter = new CucumberHTML.DOMFormatter($root);
  5 +
  6 + formatter.uri('report.feature');
  7 +
  8 + var currentStep;
  9 +
  10 + var self = {
  11 + hear: function hear(event, callback) {
  12 + var eventName = event.getName();
  13 + switch (eventName) {
  14 + case 'BeforeFeature':
  15 + var feature = event.getPayloadItem('feature');
  16 + formatter.feature({
  17 + keyword : feature.getKeyword(),
  18 + name : feature.getName(),
  19 + line : feature.getLine(),
  20 + description : feature.getDescription()
  21 + });
  22 + break;
  23 +
  24 + case 'BeforeScenario':
  25 + var scenario = event.getPayloadItem('scenario');
  26 + formatter.scenario({
  27 + keyword : scenario.getKeyword(),
  28 + name : scenario.getName(),
  29 + line : scenario.getLine(),
  30 + description : scenario.getDescription()
  31 + });
  32 + break;
  33 +
  34 + case 'BeforeStep':
  35 + var step = event.getPayloadItem('step');
  36 + self.handleAnyStep(step);
  37 + break;
  38 +
  39 + case 'StepResult':
  40 + var result;
  41 + var stepResult = event.getPayloadItem('stepResult');
  42 + if (stepResult.isSuccessful()) {
  43 + result = {status: 'passed'};
  44 + } else if (stepResult.isPending()) {
  45 + result = {status: 'pending'};
  46 + } else {
  47 + var error = stepResult.getFailureException();
  48 + var errorMessage = error.stack || error;
  49 + result = {status: 'failed', error_message: errorMessage};
  50 + }
  51 + formatter.match({uri:'report.feature', step: {line: currentStep.getLine()}});
  52 + formatter.result(result);
  53 + break;
  54 +
  55 + case 'UndefinedStep':
  56 + case 'SkippedStep':
  57 + var step = event.getPayloadItem('step');
  58 + self.handleAnyStep(step);
  59 + formatter.match({uri:'report.feature', step: {line: step.getLine()}});
  60 + formatter.result({status:'skipped'});
  61 + break;
  62 + }
  63 + callback();
  64 + },
  65 +
  66 + handleAnyStep: function handleAnyStep(step) {
  67 + formatter.step({
  68 + keyword : step.getKeyword(),
  69 + name : step.getName(),
  70 + line : step.getLine(),
  71 + });
  72 + currentStep = step;
  73 + }
  74 + };
  75 + return self;
  76 + };
  77 +
  78 + function runFeature() {
  79 + var Cucumber = require('./cucumber');
  80 + var supportCode;
  81 + var output = $('#output');
  82 + var errors = $('#errors');
  83 + var errorsContainer = $('#errors-container');
  84 + var featureSource = $('#feature').val();
  85 + eval('supportCode = function() {' + $('#step-definitions').val() + '};');
  86 + var cucumber = Cucumber(featureSource, supportCode);
  87 + var $output = $('#output');
  88 + $output.empty();
  89 + var listener = CucumberHTMLListener($output);
  90 + cucumber.attachListener(listener);
  91 +
  92 + errors.text('');
  93 + errorsContainer.hide();
  94 + try {
  95 + cucumber.start(function() {});
  96 + } catch(err) {
  97 + errorsContainer.show();
  98 + var errMessage = err.message || err;
  99 + var buffer = (errors.text() == '' ? errMessage : errors.text() + "\n\n" + errMessage);
  100 + errors.text(buffer);
  101 + throw err;
  102 + };
  103 + };
  104 +
  105 + $(function() {
  106 + Gherkin = { Lexer: function() { return Lexer; } };
  107 + $('#run-feature').click(runFeature);
  108 + $('#errors-container').hide();
  109 + });
  110 +})(jQuery);
82 node_modules/cucumber/example/index.html
... ... @@ -0,0 +1,82 @@
  1 +<!doctype html>
  2 +<html>
  3 + <head>
  4 + <meta charset="UTF-8">
  5 + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6 + <title>Cucumber.js</title>
  7 + <link href="example.css" rel="stylesheet" type="text/css"/>
  8 + <script type="text/javascript" src="vendor/jquery-1.6.1.min.js"></script>
  9 + <script type="text/javascript" src="/browserify.js"></script>
  10 + <script type="text/javascript" src="/example.js"></script>
  11 + </head>
  12 + <body>
  13 + <h1><a href="https://github.com/cucumber/cucumber-js">Cucumber.js</a> demo</h1>
  14 + <p>Find more on the <a href="https://github.com/cucumber/cucumber-js">Cucumber.js repository</a>.</p>
  15 + <h2>Feature source</h2>
  16 + <textarea id="feature">Feature: Simple maths
  17 + In order to do maths
  18 + As a developer
  19 + I want to increment variables
  20 +
  21 + Scenario: easy maths
  22 + Given a variable set to 1
  23 + When I increment the variable by 1
  24 + Then the variable should contain 2
  25 +
  26 + Scenario: much more complex stuff
  27 + Given a variable set to 100
  28 + When I increment the variable by 6
  29 + Then the variable should contain 106</textarea>
  30 + <h2>Step definitions</h2>
  31 + <textarea id="step-definitions">///// Your World /////
  32 +
  33 +// Provide a custom World constructor. It's optional, a default one is supplied.
  34 +this.World = function() {};
  35 +
  36 +// Define your World!
  37 +
  38 +this.World.prototype.variable = 0;
  39 +
  40 +this.World.prototype.setTo = function(number) {
  41 + this.variable = parseInt(number);
  42 +};
  43 +
  44 +this.World.prototype.incrementBy = function(number) {
  45 + this.variable += parseInt(number);
  46 +};
  47 +
  48 +///// Your step definitions /////
  49 +
  50 +// use this.Given(), this.When() and this.Then() to declare step definitions
  51 +
  52 +// Alternatively you can use this.defineStep and even use it
  53 +// like this:
  54 +
  55 +var Given = When = Then = this.defineStep;
  56 +
  57 +Given(/^a variable set to (\d+)$/, function(number, callback) {
  58 + this.setTo(number);
  59 + callback();
  60 +});
  61 +
  62 +When(/^I increment the variable by (\d+)$/, function(number, callback) {
  63 + this.incrementBy(number);
  64 + callback();
  65 +});
  66 +
  67 +Then(/^the variable should contain (\d+)$/, function(number, callback) {
  68 + if (this.variable != parseInt(number))
  69 + throw(new Error('Variable should contain ' + number +
  70 + ' but it contains ' + this.variable + '.'));
  71 + callback();
  72 +});</textarea>
  73 +
  74 + <h2>Output</h2>
  75 + <p><button id="run-feature">Run feature</button></p>
  76 + <div id="output" class="cucumber-report"></div>
  77 + <div id="errors-container">
  78 + <h3>Errors</h3>
  79 + <pre id="errors"></pre>
  80 + </div>
  81 + </body>
  82 +</html>
13 node_modules/cucumber/example/server.js
... ... @@ -0,0 +1,13 @@
  1 +var connect = require('connect');
  2 +var server = connect.createServer();
  3 +
  4 +server.use(connect.static(__dirname));
  5 +server.use(require('browserify')({
  6 + require: ['cucumber-html',
  7 + {'cucumber': './lib/cucumber.js'},
  8 + {'./gherkin/lexer/en': 'gherkin/lib/gherkin/lexer/en'}],
  9 + ignore: ['./cucumber/cli', 'connect']
  10 +}));
  11 +var port = process.env.PORT || 9797;
  12 +server.listen(port);
  13 +console.log('Accepting connection on port '+port+'...');
963 node_modules/cucumber/example/vendor/gherkin.en.js
... ... @@ -0,0 +1,963 @@
  1 +
  2 +/* line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.js.rl" */
  3 +;(function() {
  4 +
  5 +
  6 +/* line 117 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.js.rl" */
  7 +
  8 +
  9 +
  10 +/* line 11 "js/lib/gherkin/lexer/i18n/en.js" */
  11 +const _lexer_actions = [
  12 + 0, 1, 0, 1, 1, 1, 2, 1,
  13 + 3, 1, 4, 1, 5, 1, 6, 1,
  14 + 7, 1, 8, 1, 9, 1, 10, 1,
  15 + 11, 1, 14, 1, 15, 1, 16, 1,
  16 + 17, 1, 18, 1, 19, 1, 20, 1,
  17 + 21, 2, 2, 16, 2, 11, 0, 2,
  18 + 12, 13, 2, 15, 0, 2, 15, 1,
  19 + 2, 15, 14, 2, 15, 17, 2, 16,
  20 + 4, 2, 16, 5, 2, 16, 6, 2,
  21 + 16, 7, 2, 16, 8, 2, 16, 14,
  22 + 2, 18, 19, 2, 20, 0, 2, 20,
  23 + 1, 2, 20, 14, 2, 20, 17, 3,
  24 + 3, 12, 13, 3, 9, 12, 13, 3,
  25 + 10, 12, 13, 3, 11, 12, 13, 3,
  26 + 12, 13, 16, 3, 15, 12, 13, 4,
  27 + 2, 12, 13, 16, 4, 15, 0, 12,
  28 + 13
  29 +];
  30 +
  31 +const _lexer_key_offsets = [
  32 + 0, 0, 19, 37, 38, 39, 43, 48,
  33 + 53, 58, 63, 67, 71, 73, 74, 75,
  34 + 76, 77, 78, 79, 80, 81, 82, 83,
  35 + 84, 85, 86, 87, 88, 89, 90, 92,
  36 + 97, 104, 109, 110, 111, 113, 114, 115,
  37 + 116, 117, 118, 119, 120, 121, 122, 123,
  38 + 124, 139, 141, 143, 145, 147, 149, 151,
  39 + 153, 155, 157, 159, 161, 163, 165, 167,
  40 + 169, 187, 188, 189, 190, 191, 192, 193,
  41 + 194, 195, 196, 197, 204, 206, 208, 210,
  42 + 212, 214, 216, 218, 219, 220, 221, 222,
  43 + 223, 224, 225, 226, 227, 238, 240, 242,
  44 + 244, 246, 248, 250, 252, 254, 256, 258,
  45 + 260, 262, 264, 266, 268, 270, 272, 274,
  46 + 276, 278, 280, 282, 284, 286, 288, 290,
  47 + 292, 294, 296, 298, 300, 302, 304, 306,
  48 + 308, 310, 312, 314, 316, 318, 320, 322,
  49 + 324, 326, 330, 333, 335, 337, 339, 341,
  50 + 343, 345, 347, 349, 351, 353, 355, 356,
  51 + 357, 358, 359, 360, 361, 362, 363, 364,
  52 + 365, 366, 369, 371, 372, 373, 374, 375,
  53 + 376, 377, 378, 379, 380, 395, 397, 399,
  54 + 401, 403, 405, 407, 409, 411, 413, 415,
  55 + 417, 419, 421, 423, 425, 427, 429, 431,
  56 + 433, 435, 437, 439, 441, 443, 445, 447,
  57 + 449, 451, 453, 455, 457, 459, 461, 463,
  58 + 465, 467, 469, 471, 472, 473, 474, 475,
  59 + 476, 477, 478, 479, 494, 496, 498, 500,
  60 + 502, 504, 506, 508, 510, 512, 514, 516,
  61 + 518, 520, 522, 524, 526, 528, 531, 533,
  62 + 535, 537, 539, 541, 543, 545, 547, 549,
  63 + 551, 553, 555, 557, 559, 561, 563, 565,
  64 + 567, 569, 571, 573, 575, 577, 579, 581,
  65 + 583, 585, 588, 591, 593, 595, 597, 599,
  66 + 601, 603, 605, 607, 609, 611, 613, 615,
  67 + 616, 620, 626, 629, 631, 637, 655, 657,
  68 + 659, 661, 663, 665, 667, 669, 671, 673,
  69 + 675, 677, 679, 681, 683, 685, 687, 689,
  70 + 691, 693, 695, 697, 699, 702, 705, 707,
  71 + 709, 711, 713, 715, 717, 719, 721, 723,
  72 + 725, 727, 729, 730, 731, 732
  73 +];
  74 +
  75 +const _lexer_trans_keys = [
  76 + 10, 32, 34, 35, 37, 42, 64, 65,
  77 + 66, 69, 70, 71, 83, 84, 87, 124,
  78 + 239, 9, 13, 10, 32, 34, 35, 37,
  79 + 42, 64, 65, 66, 69, 70, 71, 83,
  80 + 84, 87, 124, 9, 13, 34, 34, 10,
  81 + 32, 9, 13, 10, 32, 34, 9, 13,
  82 + 10, 32, 34, 9, 13, 10, 32, 34,
  83 + 9, 13, 10, 32, 34, 9, 13, 10,
  84 + 32, 9, 13, 10, 32, 9, 13, 10,
  85 + 13, 10, 95, 70, 69, 65, 84, 85,
  86 + 82, 69, 95, 69, 78, 68, 95, 37,
  87 + 32, 10, 10, 13, 13, 32, 64, 9,
  88 + 10, 9, 10, 13, 32, 64, 11, 12,
  89 + 10, 32, 64, 9, 13, 110, 100, 97,
  90 + 117, 99, 107, 103, 114, 111, 117, 110,
  91 + 100, 58, 10, 10, 10, 32, 35, 37,
  92 + 42, 64, 65, 66, 70, 71, 83, 84,
  93 + 87, 9, 13, 10, 95, 10, 70, 10,
  94 + 69, 10, 65, 10, 84, 10, 85, 10,
  95 + 82, 10, 69, 10, 95, 10, 69, 10,
  96 + 78, 10, 68, 10, 95, 10, 37, 10,
  97 + 32, 10, 32, 34, 35, 37, 42, 64,
  98 + 65, 66, 69, 70, 71, 83, 84, 87,
  99 + 124, 9, 13, 120, 97, 109, 112, 108,
  100 + 101, 115, 58, 10, 10, 10, 32, 35,
  101 + 70, 124, 9, 13, 10, 101, 10, 97,
  102 + 10, 116, 10, 117, 10, 114, 10, 101,
  103 + 10, 58, 101, 97, 116, 117, 114, 101,
  104 + 58, 10, 10, 10, 32, 35, 37, 64,
  105 + 66, 69, 70, 83, 9, 13, 10, 95,
  106 + 10, 70, 10, 69, 10, 65, 10, 84,
  107 + 10, 85, 10, 82, 10, 69, 10, 95,
  108 + 10, 69, 10, 78, 10, 68, 10, 95,
  109 + 10, 37, 10, 97, 10, 99, 10, 107,
  110 + 10, 103, 10, 114, 10, 111, 10, 117,
  111 + 10, 110, 10, 100, 10, 58, 10, 120,
  112 + 10, 97, 10, 109, 10, 112, 10, 108,
  113 + 10, 101, 10, 115, 10, 101, 10, 97,
  114 + 10, 116, 10, 117, 10, 114, 10, 101,
  115 + 10, 99, 10, 101, 10, 110, 10, 97,
  116 + 10, 114, 10, 105, 10, 111, 10, 32,
  117 + 58, 115, 10, 79, 84, 10, 117, 10,
  118 + 116, 10, 108, 10, 105, 10, 110, 10,
  119 + 101, 10, 109, 10, 112, 10, 108, 10,
  120 + 97, 10, 116, 105, 118, 101, 110, 99,
  121 + 101, 110, 97, 114, 105, 111, 32, 58,