aslakhellesoy-cucumber 0.1.99.3 → 0.1.99.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. data/Manifest.txt +6 -0
  2. metadata +1 -1
  3. data/cucumber.yml +0 -1
  4. data/examples/cs/README.textile +0 -1
  5. data/examples/cs/Rakefile +0 -12
  6. data/examples/cs/compile.bat +0 -1
  7. data/examples/cs/features/addition.feature +0 -16
  8. data/examples/cs/features/step_definitons/calculator_steps.rb +0 -19
  9. data/examples/cs/src/demo/Calculator.cs +0 -20
  10. data/examples/dos_line_endings/Rakefile +0 -6
  11. data/examples/dos_line_endings/features/dos_line_endings.feature +0 -9
  12. data/examples/i18n/README.textile +0 -18
  13. data/examples/i18n/Rakefile +0 -32
  14. data/examples/i18n/ar/Rakefile +0 -6
  15. data/examples/i18n/ar/features/addition.feature +0 -17
  16. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +0 -28
  17. data/examples/i18n/ar/lib/calculator.rb +0 -10
  18. data/examples/i18n/da/Rakefile +0 -6
  19. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +0 -24
  20. data/examples/i18n/da/features/summering.feature +0 -17
  21. data/examples/i18n/da/lib/kalkulator.rb +0 -11
  22. data/examples/i18n/de/Rakefile +0 -6
  23. data/examples/i18n/de/features/addition.feature +0 -16
  24. data/examples/i18n/de/features/division.feature +0 -9
  25. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +0 -24
  26. data/examples/i18n/de/lib/calculator.rb +0 -14
  27. data/examples/i18n/en/Rakefile +0 -6
  28. data/examples/i18n/en/features/addition.feature +0 -16
  29. data/examples/i18n/en/features/division.feature +0 -9
  30. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +0 -24
  31. data/examples/i18n/en/lib/calculator.rb +0 -14
  32. data/examples/i18n/es/Rakefile +0 -6
  33. data/examples/i18n/es/features/adicion.feature +0 -17
  34. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +0 -24
  35. data/examples/i18n/es/lib/calculador.rb +0 -11
  36. data/examples/i18n/et/Rakefile +0 -6
  37. data/examples/i18n/et/features/liitmine.feature +0 -17
  38. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -24
  39. data/examples/i18n/et/lib/kalkulaator.rb +0 -10
  40. data/examples/i18n/fi/Rakefile +0 -6
  41. data/examples/i18n/fi/features/jakolasku.feature +0 -9
  42. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +0 -24
  43. data/examples/i18n/fi/features/yhteenlasku.feature +0 -16
  44. data/examples/i18n/fi/lib/laskin.rb +0 -14
  45. data/examples/i18n/fr/Rakefile +0 -6
  46. data/examples/i18n/fr/features/addition.feature +0 -15
  47. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -27
  48. data/examples/i18n/fr/lib/calculatrice.rb +0 -10
  49. data/examples/i18n/id/Rakefile +0 -6
  50. data/examples/i18n/id/features/addition.feature +0 -16
  51. data/examples/i18n/id/features/division.feature +0 -9
  52. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +0 -24
  53. data/examples/i18n/id/lib/calculator.rb +0 -14
  54. data/examples/i18n/it/Rakefile +0 -6
  55. data/examples/i18n/it/features/somma.feature +0 -10
  56. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +0 -24
  57. data/examples/i18n/it/lib/calcolatrice.rb +0 -11
  58. data/examples/i18n/ja/README.txt +0 -5
  59. data/examples/i18n/ja/Rakefile +0 -6
  60. data/examples/i18n/ja/features/addition.feature +0 -16
  61. data/examples/i18n/ja/features/division.feature +0 -9
  62. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +0 -24
  63. data/examples/i18n/ja/lib/calculator.rb +0 -14
  64. data/examples/i18n/ko/Rakefile +0 -6
  65. data/examples/i18n/ko/features/addition.feature +0 -16
  66. data/examples/i18n/ko/features/division.feature +0 -10
  67. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +0 -24
  68. data/examples/i18n/ko/lib/calculator.rb +0 -14
  69. data/examples/i18n/lt/Rakefile +0 -6
  70. data/examples/i18n/lt/features/addition.feature +0 -17
  71. data/examples/i18n/lt/features/division.feature +0 -9
  72. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +0 -24
  73. data/examples/i18n/lt/lib/calculator.rb +0 -14
  74. data/examples/i18n/no/Rakefile +0 -6
  75. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +0 -24
  76. data/examples/i18n/no/features/summering.feature +0 -18
  77. data/examples/i18n/no/lib/kalkulator.rb +0 -11
  78. data/examples/i18n/pt/Rakefile +0 -6
  79. data/examples/i18n/pt/features/adicao.feature +0 -10
  80. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -24
  81. data/examples/i18n/pt/lib/calculadora.rb +0 -10
  82. data/examples/i18n/ro/Rakefile +0 -6
  83. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +0 -24
  84. data/examples/i18n/ro/features/suma.feature +0 -10
  85. data/examples/i18n/ro/lib/calculator.rb +0 -11
  86. data/examples/i18n/se/Rakefile +0 -6
  87. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +0 -24
  88. data/examples/i18n/se/features/summering.feature +0 -17
  89. data/examples/i18n/se/lib/kalkulator.rb +0 -11
  90. data/examples/i18n/zh-CN/Rakefile +0 -6
  91. data/examples/i18n/zh-CN/features/addition.feature +0 -17
  92. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +0 -26
  93. data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
  94. data/examples/java/README.textile +0 -22
  95. data/examples/java/Rakefile +0 -12
  96. data/examples/java/features/hello.feature +0 -11
  97. data/examples/java/features/step_definitons/hello_steps.rb +0 -25
  98. data/examples/java/features/step_definitons/tree_steps.rb +0 -14
  99. data/examples/java/features/tree.feature +0 -9
  100. data/examples/jbehave/README.textile +0 -17
  101. data/examples/jbehave/features/support/env.rb +0 -7
  102. data/examples/jbehave/features/trading.feature +0 -24
  103. data/examples/jbehave/pom.xml +0 -48
  104. data/examples/selenium/Rakefile +0 -6
  105. data/examples/selenium/features/search.feature +0 -9
  106. data/examples/selenium/features/step_definitons/stories_steps.rb +0 -40
  107. data/examples/self_test/README.textile +0 -6
  108. data/examples/self_test/features/call_undefined_step_from_step_def.feature +0 -7
  109. data/examples/self_test/features/lots_of_undefined.feature +0 -8
  110. data/examples/self_test/features/outline_sample.feature +0 -12
  111. data/examples/self_test/features/sample.feature +0 -16
  112. data/examples/self_test/features/step_definitions/sample_steps.rb +0 -25
  113. data/examples/test_unit/Rakefile +0 -6
  114. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -26
  115. data/examples/test_unit/features/test_unit.feature +0 -9
  116. data/examples/tickets/Rakefile +0 -11
  117. data/examples/tickets/cucumber.yml +0 -2
  118. data/examples/tickets/features/lib/eatting_machine.rb +0 -18
  119. data/examples/tickets/features/lib/pantry.rb +0 -20
  120. data/examples/tickets/features/scenario_outline.feature +0 -90
  121. data/examples/tickets/features/step_definitons/scenario_outline_steps.rb +0 -42
  122. data/examples/tickets/features/step_definitons/tickets_steps.rb +0 -61
  123. data/examples/tickets/features/tickets.feature +0 -28
  124. data/examples/watir/README.textile +0 -16
  125. data/examples/watir/Rakefile +0 -6
  126. data/examples/watir/features/search.feature +0 -9
  127. data/examples/watir/features/step_definitons/search_steps.rb +0 -24
  128. data/examples/watir/features/support/env.rb +0 -32
  129. data/features/cucumber_cli.feature +0 -327
  130. data/features/cucumber_cli_outlines.feature +0 -81
  131. data/features/report_called_undefined_steps.feature +0 -32
  132. data/features/step_definitions/cucumber_steps.rb +0 -31
  133. data/features/step_definitions/extra_steps.rb +0 -2
  134. data/features/support/env.rb +0 -7
  135. data/gem_tasks/deployment.rake +0 -11
  136. data/gem_tasks/environment.rake +0 -7
  137. data/gem_tasks/features.rake +0 -6
  138. data/gem_tasks/fix_cr_lf.rake +0 -10
  139. data/gem_tasks/flog.rake +0 -4
  140. data/gem_tasks/gemspec.rake +0 -10
  141. data/gem_tasks/rspec.rake +0 -35
  142. data/gem_tasks/yard.rake +0 -8
  143. data/lib/autotest/cucumber.rb +0 -6
  144. data/lib/autotest/cucumber_mixin.rb +0 -124
  145. data/lib/autotest/cucumber_rails.rb +0 -6
  146. data/lib/autotest/cucumber_rails_rspec.rb +0 -6
  147. data/lib/autotest/cucumber_rspec.rb +0 -6
  148. data/lib/autotest/discover.rb +0 -9
  149. data/lib/cucumber/ast/comment.rb +0 -26
  150. data/lib/cucumber/ast/examples.rb +0 -22
  151. data/lib/cucumber/ast/feature.rb +0 -60
  152. data/lib/cucumber/ast/features.rb +0 -39
  153. data/lib/cucumber/ast/filter.rb +0 -22
  154. data/lib/cucumber/ast/outline_table.rb +0 -49
  155. data/lib/cucumber/ast/py_string.rb +0 -52
  156. data/lib/cucumber/ast/scenario.rb +0 -95
  157. data/lib/cucumber/ast/scenario_outline.rb +0 -83
  158. data/lib/cucumber/ast/step.rb +0 -139
  159. data/lib/cucumber/ast/table.rb +0 -214
  160. data/lib/cucumber/ast/tags.rb +0 -33
  161. data/lib/cucumber/ast/visitor.rb +0 -93
  162. data/lib/cucumber/ast.rb +0 -27
  163. data/lib/cucumber/broadcaster.rb +0 -15
  164. data/lib/cucumber/cli.rb +0 -410
  165. data/lib/cucumber/core_ext/exception.rb +0 -53
  166. data/lib/cucumber/core_ext/instance_exec.rb +0 -54
  167. data/lib/cucumber/core_ext/proc.rb +0 -33
  168. data/lib/cucumber/core_ext/string.rb +0 -48
  169. data/lib/cucumber/formatter/ansicolor.rb +0 -106
  170. data/lib/cucumber/formatter/console.rb +0 -116
  171. data/lib/cucumber/formatter/pretty.rb +0 -158
  172. data/lib/cucumber/formatter/profile.rb +0 -77
  173. data/lib/cucumber/formatter/progress.rb +0 -68
  174. data/lib/cucumber/formatter/rerun.rb +0 -35
  175. data/lib/cucumber/formatter.rb +0 -1
  176. data/lib/cucumber/formatters/autotest_formatter.rb +0 -21
  177. data/lib/cucumber/formatters/cucumber.css +0 -132
  178. data/lib/cucumber/formatters/cucumber.js +0 -11
  179. data/lib/cucumber/formatters/html_formatter.rb +0 -152
  180. data/lib/cucumber/formatters/jquery.js +0 -32
  181. data/lib/cucumber/formatters/pretty_formatter.rb +0 -285
  182. data/lib/cucumber/formatters/unicode.rb +0 -35
  183. data/lib/cucumber/jbehave.rb +0 -104
  184. data/lib/cucumber/languages.yml +0 -314
  185. data/lib/cucumber/parser/basic.rb +0 -0
  186. data/lib/cucumber/parser/feature.rb +0 -1315
  187. data/lib/cucumber/parser/feature.tt +0 -160
  188. data/lib/cucumber/parser/i18n.tt +0 -27
  189. data/lib/cucumber/parser/table.rb +0 -396
  190. data/lib/cucumber/parser/table.tt +0 -53
  191. data/lib/cucumber/parser/treetop_ext.rb +0 -67
  192. data/lib/cucumber/parser.rb +0 -24
  193. data/lib/cucumber/platform.rb +0 -18
  194. data/lib/cucumber/rails/rspec.rb +0 -5
  195. data/lib/cucumber/rails/world.rb +0 -73
  196. data/lib/cucumber/rake/task.rb +0 -106
  197. data/lib/cucumber/step_definition.rb +0 -87
  198. data/lib/cucumber/step_mother.rb +0 -164
  199. data/lib/cucumber/treetop_parser/feature_fi.rb +0 -1951
  200. data/lib/cucumber/version.rb +0 -10
  201. data/lib/cucumber.rb +0 -72
  202. data/pretty.txt +0 -486
  203. data/rails_generators/cucumber/USAGE +0 -11
  204. data/rails_generators/cucumber/cucumber_generator.rb +0 -31
  205. data/rails_generators/cucumber/templates/cucumber +0 -8
  206. data/rails_generators/cucumber/templates/cucumber.rake +0 -7
  207. data/rails_generators/cucumber/templates/env.rb +0 -16
  208. data/rails_generators/cucumber/templates/paths.rb +0 -12
  209. data/rails_generators/cucumber/templates/webrat_steps.rb +0 -99
  210. data/rails_generators/feature/USAGE +0 -12
  211. data/rails_generators/feature/feature_generator.rb +0 -36
  212. data/rails_generators/feature/templates/feature.erb +0 -31
  213. data/rails_generators/feature/templates/steps.erb +0 -24
  214. data/spec/cucumber/ast/feature_factory.rb +0 -54
  215. data/spec/cucumber/ast/feature_spec.rb +0 -60
  216. data/spec/cucumber/ast/py_string_spec.rb +0 -40
  217. data/spec/cucumber/ast/scenario_outline_spec.rb +0 -64
  218. data/spec/cucumber/ast/scenario_spec.rb +0 -82
  219. data/spec/cucumber/ast/step_spec.rb +0 -45
  220. data/spec/cucumber/ast/table_spec.rb +0 -81
  221. data/spec/cucumber/broadcaster_spec.rb +0 -14
  222. data/spec/cucumber/cli_spec.rb +0 -416
  223. data/spec/cucumber/core_ext/proc_spec.rb +0 -37
  224. data/spec/cucumber/core_ext/string_spec.rb +0 -42
  225. data/spec/cucumber/formatter/ansicolor_spec.rb +0 -35
  226. data/spec/cucumber/formatter/html/cucumber.css +0 -37
  227. data/spec/cucumber/formatter/html/cucumber.js +0 -11
  228. data/spec/cucumber/formatter/html/index.html +0 -45
  229. data/spec/cucumber/formatter/html/jquery-1.3.min.js +0 -19
  230. data/spec/cucumber/formatter/html/jquery.uitableedit.js +0 -100
  231. data/spec/cucumber/formatters/autotest_formatter_spec.rb +0 -27
  232. data/spec/cucumber/formatters/features.html +0 -269
  233. data/spec/cucumber/formatters/profile_formatter_spec.rb +0 -198
  234. data/spec/cucumber/parser/feature_parser_spec.rb +0 -247
  235. data/spec/cucumber/parser/table_parser_spec.rb +0 -48
  236. data/spec/cucumber/rails/stubs/mini_rails.rb +0 -18
  237. data/spec/cucumber/rails/stubs/test_help.rb +0 -1
  238. data/spec/cucumber/rails/world_spec.rb +0 -11
  239. data/spec/cucumber/sell_cucumbers.feature +0 -19
  240. data/spec/cucumber/step_definition_spec.rb +0 -62
  241. data/spec/cucumber/step_mom_spec.rb +0 -49
  242. data/spec/cucumber/treetop_parser/empty_feature.feature +0 -4
  243. data/spec/cucumber/treetop_parser/empty_scenario.feature +0 -9
  244. data/spec/cucumber/treetop_parser/empty_scenario_outline.feature +0 -3
  245. data/spec/cucumber/treetop_parser/fit_scenario.feature +0 -8
  246. data/spec/cucumber/treetop_parser/given_scenario.feature +0 -9
  247. data/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +0 -7
  248. data/spec/cucumber/treetop_parser/multiline_steps.feature +0 -17
  249. data/spec/cucumber/treetop_parser/multiple_tables.feature +0 -27
  250. data/spec/cucumber/treetop_parser/scenario_outline.feature +0 -16
  251. data/spec/cucumber/treetop_parser/spaces.feature +0 -12
  252. data/spec/cucumber/treetop_parser/test_dos.feature +0 -25
  253. data/spec/cucumber/treetop_parser/with_comments.feature +0 -10
  254. data/spec/cucumber/treetop_parser/with_tags.feature +0 -18
  255. data/spec/cucumber/world/pending_spec.rb +0 -47
  256. data/spec/spec.opts +0 -2
  257. data/spec/spec_helper.rb +0 -21
@@ -1,106 +0,0 @@
1
- # Hack to work around Win32/Console, which bundles a licence-violating, outdated
2
- # copy of term/ansicolor that doesn't implement Term::ANSIColor#coloring=.
3
- # We want the official one!
4
- gem 'term-ansicolor'
5
- $LOAD_PATH.each{|path| $LOAD_PATH.unshift($LOAD_PATH.delete(path)) if path =~ /term-ansicolor/}
6
- require 'term/ansicolor'
7
-
8
- if Cucumber::WINDOWS_MRI
9
- begin
10
- require 'Win32/Console/ANSI'
11
- rescue LoadError
12
- STDERR.puts "You must gem install win32console to get coloured output on MRI/Windows"
13
- Term::ANSIColor.coloring = false
14
- end
15
- end
16
-
17
- Term::ANSIColor.coloring = false if !STDOUT.tty? || (Cucumber::WINDOWS && !Cucumber::WINDOWS_MRI)
18
-
19
- module Cucumber
20
- module Formatter
21
- # Defines aliases for coloured output. You can tweak the colours by defining
22
- # a <tt>CUCUMBER_COLORS</tt> variable in your shell, very much like you can
23
- # tweak the familiar POSIX command <tt>ls</tt> with
24
- # <a href="http://mipsisrisc.com/rambling/2008/06/27/lscolorsls_colors-now-with-linux-support/">$LSCOLORS/$LS_COLORS</a>
25
- #
26
- # The colours that you can change are:
27
- #
28
- # * <tt>undefined</tt> - defaults to <tt>yellow</tt>
29
- # * <tt>pending</tt> - defaults to <tt>yellow</tt>
30
- # * <tt>pending_param</tt> - defaults to <tt>yellow,bold</tt>
31
- # * <tt>failed</tt> - defaults to <tt>red</tt>
32
- # * <tt>failed_param</tt> - defaults to <tt>red,bold</tt>
33
- # * <tt>passed</tt> - defaults to <tt>green</tt>
34
- # * <tt>passed_param</tt> - defaults to <tt>green,bold</tt>
35
- # * <tt>outline</tt> - defaults to <tt>cyan</tt>
36
- # * <tt>outline_param</tt> - defaults to <tt>cyan,bold</tt>
37
- # * <tt>skipped</tt> - defaults to <tt>cyan</tt>
38
- # * <tt>skipped_param</tt> - defaults to <tt>cyan,bold</tt>
39
- # * <tt>comment</tt> - defaults to <tt>grey</tt>
40
- # * <tt>tag</tt> - defaults to <tt>blue</tt>
41
- #
42
- # For instance, if your shell has a black background and a green font (like the
43
- # "Homebrew" settings for OS X' Terminal.app), you may want to override passed
44
- # steps to be white instead of green. Examples:
45
- #
46
- # export CUCUMBER_COLORS="passed=white"
47
- # export CUCUMBER_COLORS="passed=white,bold:passed_param=white,bold,underline"
48
- #
49
- # (If you're on Windows, use SET instead of export).
50
- # To see what colours and effects are available, just run this in your shell:
51
- #
52
- # ruby -e "require 'rubygems'; require 'term/ansicolor'; puts Term::ANSIColor.attributes"
53
- #
54
- # Although not listed, you can also use <tt>grey</tt>
55
- module ANSIColor
56
- include Term::ANSIColor
57
-
58
- # Not supported in Term::ANSIColor
59
- def grey(m)
60
- if ::Term::ANSIColor.coloring?
61
- "\e[90m#{m}\e[0m"
62
- else
63
- m
64
- end
65
- end
66
-
67
- ALIASES = Hash.new do |h,k|
68
- if k.to_s =~ /(.*)_param/
69
- h[$1] + ',bold'
70
- end
71
- end.merge({
72
- 'undefined' => 'yellow',
73
- 'pending' => 'yellow',
74
- 'failed' => 'red',
75
- 'passed' => 'green',
76
- 'thead' => 'cyan',
77
- 'outline' => 'cyan',
78
- 'skipped' => 'cyan',
79
- 'comment' => 'grey',
80
- 'tag' => 'blue'
81
- })
82
-
83
- if ENV['CUCUMBER_COLORS'] # Example: export CUCUMBER_COLORS="passed=red:failed=yellow"
84
- ENV['CUCUMBER_COLORS'].split(':').each do |pair|
85
- a = pair.split('=')
86
- ALIASES[a[0]] = a[1]
87
- end
88
- end
89
-
90
- ALIASES.each do |method, color|
91
- unless method =~ /.*_param/
92
- code = <<-EOF
93
- def #{method}(string=nil, &proc)
94
- #{ALIASES[method].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method].split(",").length}
95
- end
96
- # This resets the colour to the non-param colour
97
- def #{method}_param(string=nil, &proc)
98
- #{ALIASES[method+'_param'].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method+'_param'].split(",").length} + #{ALIASES[method].split(",").join(' + ')}
99
- end
100
- EOF
101
- eval(code)
102
- end
103
- end
104
- end
105
- end
106
- end
@@ -1,116 +0,0 @@
1
- require 'cucumber/formatter/ansicolor'
2
-
3
- module Cucumber
4
- module Formatter
5
- module Console
6
- extend ANSIColor
7
- FORMATS = Hash.new{|hash, format| hash[format] = method(format).to_proc}
8
-
9
- def format_step(keyword, step_name, status, step_definition, source_indent)
10
- line = if step_definition # nil for :outline
11
- comment = if source_indent
12
- c = (' # ' + step_definition.file_colon_line).indent(source_indent)
13
- format_string(c, :comment)
14
- else
15
- ''
16
- end
17
- keyword + " " + step_definition.format_args(step_name, format_for(status, :param)) + comment
18
- else
19
- keyword + " " + step_name
20
- end
21
- format_string(line, status)
22
- end
23
-
24
- def format_string(string, status)
25
- fmt = format_for(status)
26
- if Proc === fmt
27
- fmt.call(string)
28
- else
29
- fmt % string
30
- end
31
- end
32
-
33
- def print_undefined_scenarios(features)
34
- elements = features.scenarios.select{|scenario| scenario.undefined?}
35
- print_elements(elements, :undefined, 'scenarios')
36
- end
37
-
38
- def print_steps(features, status)
39
- print_elements(features.steps[status], status, 'steps')
40
- end
41
-
42
- def print_elements(elements, status, kind)
43
- if elements.any?
44
- @io.puts(format_string("(::) #{status} #{kind} (::)", status))
45
- @io.puts
46
- @io.flush
47
- end
48
-
49
- elements.each_with_index do |element, i|
50
- if status == :failed
51
- print_exception(element.exception, 0)
52
- else
53
- @io.puts(format_string(element.backtrace_line, status))
54
- end
55
- @io.puts
56
- @io.flush
57
- end
58
- end
59
-
60
- def print_counts(features)
61
- @io.puts dump_count(features.scenarios.length, "scenario")
62
-
63
- [:failed, :skipped, :undefined, :pending, :passed].each do |status|
64
- if features.steps[status].any?
65
- count_string = dump_count(features.steps[status].length, "step", status.to_s)
66
- @io.puts format_string(count_string, status)
67
- @io.flush
68
- end
69
- end
70
- end
71
-
72
- def print_exception(e, indent)
73
- status = Cucumber::EXCEPTION_STATUS[e.class]
74
- @io.puts(format_string("#{e.message} (#{e.class})\n#{e.backtrace.join("\n")}".indent(indent), status))
75
- end
76
-
77
- def print_snippets(features, options)
78
- return unless options[:snippets]
79
- undefined = features.steps[:undefined]
80
- return if undefined.empty?
81
- snippets = undefined.map do |step|
82
- step_name = StepMother::Undefined === step.exception ? step.exception.step_name : step.name
83
- snippet = @step_mother.snippet_text(step.actual_keyword, step_name)
84
- snippet
85
- end.compact.uniq
86
-
87
- text = "\nYou can implement step definitions for missing steps with these snippets:\n\n"
88
- text += snippets.join("\n\n")
89
-
90
- @io.puts format_string(text, :undefined)
91
- @io.puts
92
- @io.flush
93
- end
94
-
95
- private
96
-
97
- def with_color
98
- c = Term::ANSIColor.coloring?
99
- Term::ANSIColor.coloring = @io.tty?
100
- yield
101
- Term::ANSIColor.coloring = c
102
- end
103
-
104
- def dump_count(count, what, state=nil)
105
- [count, state, "#{what}#{count == 1 ? '' : 's'}"].compact.join(" ")
106
- end
107
-
108
- def format_for(*keys)
109
- key = keys.join('_').to_sym
110
- fmt = FORMATS[key]
111
- raise "No format for #{key.inspect}: #{FORMATS.inspect}" if fmt.nil?
112
- fmt
113
- end
114
- end
115
- end
116
- end
@@ -1,158 +0,0 @@
1
- require 'cucumber/formatter/console'
2
- require 'fileutils'
3
-
4
- module Cucumber
5
- module Formatter
6
- # This formatter prints features to plain text - exactly how they were parsed,
7
- # just prettier. That means with proper indentation and alignment of table columns.
8
- #
9
- # If the output is STDOUT (and not a file), there are bright colours to watch too.
10
- #
11
- class Pretty < Ast::Visitor
12
- include FileUtils
13
- include Console
14
- attr_writer :indent
15
-
16
- def initialize(step_mother, io, options, delim='|')
17
- super(step_mother)
18
- @io = io
19
- @options = options
20
- @delim = delim
21
- end
22
-
23
- def visit_features(features)
24
- super
25
- print_summary(features) unless @options[:autoformat]
26
- end
27
-
28
- def visit_feature(feature)
29
- @indent = 0
30
- if @options[:autoformat]
31
- file = File.join(@options[:autoformat], feature.file)
32
- dir = File.dirname(file)
33
- mkdir_p(dir) unless File.directory?(dir)
34
- File.open(file, Cucumber.file_mode('w')) do |io|
35
- @io = io
36
- with_color do
37
- feature.accept(self)
38
- end
39
- end
40
- else
41
- with_color do
42
- feature.accept(self)
43
- end
44
- end
45
- end
46
-
47
- def visit_comment(comment)
48
- comment.accept(self)
49
- end
50
-
51
- def visit_comment_line(comment_line)
52
- unless comment_line.blank?
53
- @io.puts(comment_line.indent(@indent))
54
- @io.flush
55
- end
56
- end
57
-
58
- def visit_tags(tags)
59
- tags.accept(self)
60
- if @indent == 1
61
- @io.puts
62
- @io.flush
63
- end
64
- end
65
-
66
- def visit_tag_name(tag_name)
67
- tag = format_string("@#{tag_name}", :tag).indent(@indent)
68
- @io.print(tag)
69
- @io.flush
70
- @indent = 1
71
- end
72
-
73
- def visit_feature_name(name)
74
- @io.puts(name)
75
- @io.puts
76
- @io.flush
77
- end
78
-
79
- def visit_feature_element(feature_element)
80
- @indent = 2
81
- @last_undefined = feature_element.undefined?
82
- feature_element.accept(self)
83
- @io.puts
84
- @io.flush
85
- end
86
-
87
- def visit_examples(examples)
88
- examples.accept(self)
89
- end
90
-
91
- def visit_examples_name(keyword, name)
92
- @io.puts("\n #{keyword} #{name}")
93
- @io.flush
94
- @indent = 4
95
- end
96
-
97
- def visit_scenario_name(keyword, name, file_line, source_indent)
98
- line = " #{keyword} #{name}"
99
- line = format_string(line, :undefined) if @last_undefined
100
- @io.print(line)
101
- if @options[:source]
102
- line_comment = " # #{file_line}".indent(source_indent)
103
- @io.print(format_string(line_comment, :comment))
104
- end
105
- @io.puts
106
- @io.flush
107
- end
108
-
109
- def visit_step(step)
110
- @indent = 6
111
- exception = step.accept(self)
112
- print_exception(exception, @indent) if exception
113
- end
114
-
115
- def visit_step_name(keyword, step_name, status, step_definition, source_indent)
116
- source_indent = nil unless @options[:source]
117
- formatted_step_name = format_step(keyword, step_name, status, step_definition, source_indent)
118
- @io.puts(" " + formatted_step_name)
119
- @io.flush
120
- end
121
-
122
- def visit_multiline_arg(multiline_arg, status)
123
- multiline_arg.accept(self, status)
124
- end
125
-
126
- def visit_table_row(table_row, status)
127
- @io.print @delim.indent(@indent)
128
- exception = table_row.accept(self, status)
129
- @io.puts
130
- print_exception(exception, 6) if exception
131
- end
132
-
133
- def visit_py_string(string, status)
134
- s = "\"\"\"\n#{string}\n\"\"\"".indent(@indent)
135
- s = s.split("\n").map{|l| l =~ /^\s+$/ ? '' : l}.join("\n")
136
- @io.puts(format_string(s, status))
137
- @io.flush
138
- end
139
-
140
- def visit_table_cell(table_cell, status)
141
- table_cell.accept(self, status)
142
- end
143
-
144
- def visit_table_cell_value(value, width, status)
145
- @io.print(' ' + format_string((value || '').ljust(width), status) + " #{@delim}")
146
- @io.flush
147
- end
148
-
149
- private
150
-
151
- def print_summary(features)
152
- print_counts(features)
153
- print_snippets(features, @options)
154
- end
155
-
156
- end
157
- end
158
- end
@@ -1,77 +0,0 @@
1
- require 'cucumber/formatter/progress'
2
-
3
- module Cucumber
4
- module Formatter
5
- class Profile < Progress
6
- NUMBER_OF_STEP_DEFINITONS_TO_SHOW = 10
7
- NUMBER_OF_STEP_INVOCATIONS_TO_SHOW = 5
8
-
9
- def initialize(step_mother, io, options)
10
- super
11
- @step_definition_durations = Hash.new { |h,step_definition| h[step_definition] = [] }
12
- end
13
-
14
- def visit_step(step)
15
- @step_duration = Time.now
16
- @step = step
17
- super
18
- end
19
-
20
- def visit_step_name(keyword, step_name, status, step_definition, source_indent)
21
- duration = Time.now - @step_duration
22
- super
23
-
24
- if step_definition # nil for outline steps
25
- description = format_step(keyword, step_name, status, step_definition, nil)
26
- @step_definition_durations[step_definition] << [duration, description, @step.file_line]
27
- end
28
- end
29
-
30
- def print_summary(features)
31
- super
32
- @io.puts "\n\nTop #{NUMBER_OF_STEP_DEFINITONS_TO_SHOW} average slowest steps with #{NUMBER_OF_STEP_INVOCATIONS_TO_SHOW} slowest matches:\n"
33
-
34
- mean_durations = map_to_mean_durations(@step_definition_durations)
35
- mean_durations = mean_durations.sort_by do |duration_description_location, step_definition, mean_duration|
36
- mean_duration
37
- end.reverse
38
-
39
- mean_durations[0...NUMBER_OF_STEP_DEFINITONS_TO_SHOW].each do |duration_description_location, step_definition, mean_duration|
40
- print_step_definition(step_definition, mean_duration)
41
- duration_description_location = duration_description_location.sort_by do |duration, description, location|
42
- duration
43
- end.reverse
44
- print_step_definitions(duration_description_location, step_definition)
45
- end
46
- end
47
-
48
- private
49
-
50
- def map_to_mean_durations(step_definition_durations)
51
- mean_durations = []
52
- step_definition_durations.each do |step_definition, duration_description_location|
53
- total_duration = duration_description_location.inject(0) { |sum, step_details| step_details[0] + sum }
54
- mean_duration = total_duration / duration_description_location.length
55
-
56
- mean_durations << [duration_description_location, step_definition, mean_duration]
57
- end
58
- mean_durations
59
- end
60
-
61
- def print_step_definition(step_definition, mean_duration)
62
- duration = sprintf("%.7f", mean_duration)
63
- @io.puts format_string("#{duration} #{step_definition.to_backtrace_line}", :failed)
64
- end
65
-
66
- def print_step_definitions(duration_description_location, step_definition)
67
- max_length = duration_description_location[0...NUMBER_OF_STEP_INVOCATIONS_TO_SHOW].map{|_, d, _| d.jlength}.max
68
- duration_description_location[0...NUMBER_OF_STEP_INVOCATIONS_TO_SHOW].each do |duration, description, location|
69
- @io.print format_string(" #{sprintf("%.7f", duration)}", :pending)
70
- @io.print " #{description}"
71
- @io.print format_string(" # #{location}".indent(max_length - description.jlength), :comment)
72
- @io.puts
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -1,68 +0,0 @@
1
- require 'cucumber/formatter/console'
2
-
3
- module Cucumber
4
- module Formatter
5
- class Progress < Ast::Visitor
6
- include Console
7
-
8
- def initialize(step_mother, io, options)
9
- super(step_mother)
10
- @io = io
11
- @options = options
12
- end
13
-
14
- def visit_features(features)
15
- with_color do
16
- super
17
- @io.puts
18
- @io.puts
19
- print_summary(features)
20
- end
21
- end
22
-
23
- def visit_multiline_arg(multiline_arg, status)
24
- @multiline_arg = true
25
- super
26
- @multiline_arg = false
27
- end
28
-
29
- def visit_feature_element(feature_element)
30
- progress(:undefined) if feature_element.undefined?
31
- super
32
- end
33
-
34
- def visit_step_name(keyword, step_name, status, step_definition, source_indent)
35
- progress(status) unless status == :outline
36
- end
37
-
38
- def visit_table_cell_value(value, width, status)
39
- progress(status) if (status != :thead) && !@multiline_arg
40
- end
41
-
42
- private
43
-
44
- def print_summary(features)
45
- print_undefined_scenarios(features)
46
- print_steps(features, :pending)
47
- print_steps(features, :failed)
48
- print_counts(features)
49
- print_snippets(features, @options)
50
- end
51
-
52
- CHARS = {
53
- :passed => '.',
54
- :failed => 'F',
55
- :undefined => 'U',
56
- :pending => 'P',
57
- :skipped => 'S'
58
- }
59
-
60
- def progress(status)
61
- char = CHARS[status]
62
- @io.print(format_string(char, status))
63
- @io.flush
64
- end
65
-
66
- end
67
- end
68
- end
@@ -1,35 +0,0 @@
1
- module Cucumber
2
- module Formatter
3
- class Rerun < Ast::Visitor
4
- def initialize(step_mother, io, options)
5
- super(step_mother)
6
- @io = io
7
- @file_names = []
8
- @file_lines = Hash.new{|h,k| h[k] = []}
9
- end
10
-
11
- def visit_features(features)
12
- super
13
- files = @file_names.uniq.map do |file|
14
- lines = @file_lines[file]
15
- "#{file}:#{lines.join(':')}"
16
- end
17
- @io.puts files.join(' ')
18
- end
19
-
20
- def visit_feature_element(feature_element)
21
- @rerun = false
22
- super
23
- if @rerun
24
- file, line = *feature_element.file_line.split(':')
25
- @file_lines[file] << line
26
- @file_names << file
27
- end
28
- end
29
-
30
- def visit_step_name(keyword, step_name, status, step_definition, source_indent)
31
- @rerun = true if [:failed].index(status)
32
- end
33
- end
34
- end
35
- end
@@ -1 +0,0 @@
1
- %w{pretty progress profile rerun}.each{|n| require "cucumber/formatter/#{n}"}
@@ -1,21 +0,0 @@
1
- module Cucumber
2
- module Formatters
3
- class AutotestFormatter
4
- def initialize(io)
5
- @io = io
6
- @failed_scenarios = []
7
- end
8
-
9
- def step_didnt_pass(step, regexp, args)
10
- unless @failed_scenarios.include? step.scenario.name
11
- @failed_scenarios << step.scenario.name
12
- @io.puts step.scenario.name
13
- end
14
- end
15
-
16
- alias step_failed step_didnt_pass
17
- alias step_pending step_didnt_pass
18
- alias step_skipped step_didnt_pass
19
- end
20
- end
21
- end