busser-behave 0.1.3

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.
Files changed (418) hide show
  1. checksums.yaml +7 -0
  2. data/.cane +0 -0
  3. data/.gitignore +17 -0
  4. data/.tailor +4 -0
  5. data/.travis.yml +11 -0
  6. data/CHANGELOG.md +3 -0
  7. data/Gemfile +3 -0
  8. data/LICENSE +15 -0
  9. data/README.md +41 -0
  10. data/Rakefile +68 -0
  11. data/busser-behave.gemspec +30 -0
  12. data/features/plugin_install_command.feature +11 -0
  13. data/features/plugin_list_command.feature +8 -0
  14. data/features/support/env.rb +13 -0
  15. data/features/test_command.feature +31 -0
  16. data/lib/busser/behave/version.rb +26 -0
  17. data/lib/busser/runner_plugin/behave.rb +37 -0
  18. data/vendor/behave/CHANGES.rst +483 -0
  19. data/vendor/behave/LICENSE +23 -0
  20. data/vendor/behave/MANIFEST.in +37 -0
  21. data/vendor/behave/PROJECT_INFO.rst +21 -0
  22. data/vendor/behave/README.rst +112 -0
  23. data/vendor/behave/VERSION.txt +1 -0
  24. data/vendor/behave/behave.ini +22 -0
  25. data/vendor/behave/behave/__init__.py +30 -0
  26. data/vendor/behave/behave/__main__.py +187 -0
  27. data/vendor/behave/behave/_stepimport.py +185 -0
  28. data/vendor/behave/behave/_types.py +134 -0
  29. data/vendor/behave/behave/api/__init__.py +7 -0
  30. data/vendor/behave/behave/api/async_step.py +283 -0
  31. data/vendor/behave/behave/capture.py +227 -0
  32. data/vendor/behave/behave/compat/__init__.py +5 -0
  33. data/vendor/behave/behave/compat/collections.py +20 -0
  34. data/vendor/behave/behave/configuration.py +788 -0
  35. data/vendor/behave/behave/contrib/__init__.py +0 -0
  36. data/vendor/behave/behave/contrib/scenario_autoretry.py +73 -0
  37. data/vendor/behave/behave/formatter/__init__.py +12 -0
  38. data/vendor/behave/behave/formatter/_builtins.py +39 -0
  39. data/vendor/behave/behave/formatter/_registry.py +135 -0
  40. data/vendor/behave/behave/formatter/ansi_escapes.py +91 -0
  41. data/vendor/behave/behave/formatter/base.py +200 -0
  42. data/vendor/behave/behave/formatter/formatters.py +57 -0
  43. data/vendor/behave/behave/formatter/json.py +253 -0
  44. data/vendor/behave/behave/formatter/null.py +12 -0
  45. data/vendor/behave/behave/formatter/plain.py +158 -0
  46. data/vendor/behave/behave/formatter/pretty.py +351 -0
  47. data/vendor/behave/behave/formatter/progress.py +287 -0
  48. data/vendor/behave/behave/formatter/rerun.py +114 -0
  49. data/vendor/behave/behave/formatter/sphinx_steps.py +372 -0
  50. data/vendor/behave/behave/formatter/sphinx_util.py +118 -0
  51. data/vendor/behave/behave/formatter/steps.py +497 -0
  52. data/vendor/behave/behave/formatter/tags.py +178 -0
  53. data/vendor/behave/behave/i18n.py +614 -0
  54. data/vendor/behave/behave/importer.py +102 -0
  55. data/vendor/behave/behave/json_parser.py +264 -0
  56. data/vendor/behave/behave/log_capture.py +233 -0
  57. data/vendor/behave/behave/matchers.py +402 -0
  58. data/vendor/behave/behave/model.py +1737 -0
  59. data/vendor/behave/behave/model_core.py +416 -0
  60. data/vendor/behave/behave/model_describe.py +105 -0
  61. data/vendor/behave/behave/parser.py +615 -0
  62. data/vendor/behave/behave/reporter/__init__.py +0 -0
  63. data/vendor/behave/behave/reporter/base.py +45 -0
  64. data/vendor/behave/behave/reporter/junit.py +473 -0
  65. data/vendor/behave/behave/reporter/summary.py +94 -0
  66. data/vendor/behave/behave/runner.py +753 -0
  67. data/vendor/behave/behave/runner_util.py +417 -0
  68. data/vendor/behave/behave/step_registry.py +112 -0
  69. data/vendor/behave/behave/tag_expression.py +111 -0
  70. data/vendor/behave/behave/tag_matcher.py +465 -0
  71. data/vendor/behave/behave/textutil.py +137 -0
  72. data/vendor/behave/behave/userdata.py +130 -0
  73. data/vendor/behave/behave4cmd0/__all_steps__.py +12 -0
  74. data/vendor/behave/behave4cmd0/__init__.py +5 -0
  75. data/vendor/behave/behave4cmd0/__setup.py +11 -0
  76. data/vendor/behave/behave4cmd0/command_shell.py +216 -0
  77. data/vendor/behave/behave4cmd0/command_shell_proc.py +256 -0
  78. data/vendor/behave/behave4cmd0/command_steps.py +532 -0
  79. data/vendor/behave/behave4cmd0/command_util.py +147 -0
  80. data/vendor/behave/behave4cmd0/failing_steps.py +49 -0
  81. data/vendor/behave/behave4cmd0/log/__init__.py +1 -0
  82. data/vendor/behave/behave4cmd0/log/steps.py +395 -0
  83. data/vendor/behave/behave4cmd0/note_steps.py +29 -0
  84. data/vendor/behave/behave4cmd0/passing_steps.py +36 -0
  85. data/vendor/behave/behave4cmd0/pathutil.py +146 -0
  86. data/vendor/behave/behave4cmd0/setup_command_shell.py +24 -0
  87. data/vendor/behave/behave4cmd0/textutil.py +304 -0
  88. data/vendor/behave/bin/behave +44 -0
  89. data/vendor/behave/bin/behave.cmd +10 -0
  90. data/vendor/behave/bin/behave.junit_filter.py +85 -0
  91. data/vendor/behave/bin/behave.step_durations.py +163 -0
  92. data/vendor/behave/bin/behave2cucumber_json.py +63 -0
  93. data/vendor/behave/bin/behave_cmd.py +44 -0
  94. data/vendor/behave/bin/convert_i18n_yaml.py +77 -0
  95. data/vendor/behave/bin/explore_platform_encoding.py +24 -0
  96. data/vendor/behave/bin/i18n.yml +621 -0
  97. data/vendor/behave/bin/invoke +8 -0
  98. data/vendor/behave/bin/invoke.cmd +9 -0
  99. data/vendor/behave/bin/json.format.py +167 -0
  100. data/vendor/behave/bin/jsonschema_validate.py +122 -0
  101. data/vendor/behave/bin/make_localpi.py +279 -0
  102. data/vendor/behave/bin/project_bootstrap.sh +30 -0
  103. data/vendor/behave/bin/toxcmd.py +270 -0
  104. data/vendor/behave/bin/toxcmd3.py +270 -0
  105. data/vendor/behave/conftest.py +27 -0
  106. data/vendor/behave/docs/Makefile +154 -0
  107. data/vendor/behave/docs/_static/agogo.css +501 -0
  108. data/vendor/behave/docs/_static/behave_logo.png +0 -0
  109. data/vendor/behave/docs/_static/behave_logo1.png +0 -0
  110. data/vendor/behave/docs/_static/behave_logo2.png +0 -0
  111. data/vendor/behave/docs/_static/behave_logo3.png +0 -0
  112. data/vendor/behave/docs/_themes/LICENSE +45 -0
  113. data/vendor/behave/docs/_themes/kr/layout.html +17 -0
  114. data/vendor/behave/docs/_themes/kr/relations.html +19 -0
  115. data/vendor/behave/docs/_themes/kr/static/flasky.css_t +480 -0
  116. data/vendor/behave/docs/_themes/kr/static/small_flask.css +90 -0
  117. data/vendor/behave/docs/_themes/kr/theme.conf +7 -0
  118. data/vendor/behave/docs/_themes/kr_small/layout.html +22 -0
  119. data/vendor/behave/docs/_themes/kr_small/static/flasky.css_t +287 -0
  120. data/vendor/behave/docs/_themes/kr_small/theme.conf +10 -0
  121. data/vendor/behave/docs/api.rst +408 -0
  122. data/vendor/behave/docs/appendix.rst +19 -0
  123. data/vendor/behave/docs/behave.rst +640 -0
  124. data/vendor/behave/docs/behave.rst-template +86 -0
  125. data/vendor/behave/docs/behave_ecosystem.rst +81 -0
  126. data/vendor/behave/docs/comparison.rst +85 -0
  127. data/vendor/behave/docs/conf.py +293 -0
  128. data/vendor/behave/docs/context_attributes.rst +66 -0
  129. data/vendor/behave/docs/django.rst +192 -0
  130. data/vendor/behave/docs/formatters.rst +61 -0
  131. data/vendor/behave/docs/gherkin.rst +673 -0
  132. data/vendor/behave/docs/index.rst +57 -0
  133. data/vendor/behave/docs/install.rst +60 -0
  134. data/vendor/behave/docs/more_info.rst +184 -0
  135. data/vendor/behave/docs/new_and_noteworthy.rst +18 -0
  136. data/vendor/behave/docs/new_and_noteworthy_v1.2.4.rst +11 -0
  137. data/vendor/behave/docs/new_and_noteworthy_v1.2.5.rst +814 -0
  138. data/vendor/behave/docs/new_and_noteworthy_v1.2.6.rst +255 -0
  139. data/vendor/behave/docs/parse_builtin_types.rst +59 -0
  140. data/vendor/behave/docs/philosophy.rst +235 -0
  141. data/vendor/behave/docs/regular_expressions.rst +71 -0
  142. data/vendor/behave/docs/related.rst +14 -0
  143. data/vendor/behave/docs/test_domains.rst +62 -0
  144. data/vendor/behave/docs/tutorial.rst +636 -0
  145. data/vendor/behave/docs/update_behave_rst.py +100 -0
  146. data/vendor/behave/etc/json/behave.json-schema +172 -0
  147. data/vendor/behave/etc/junit.xml/behave_junit.xsd +103 -0
  148. data/vendor/behave/etc/junit.xml/junit-4.xsd +92 -0
  149. data/vendor/behave/examples/async_step/README.txt +8 -0
  150. data/vendor/behave/examples/async_step/behave.ini +14 -0
  151. data/vendor/behave/examples/async_step/features/async_dispatch.feature +8 -0
  152. data/vendor/behave/examples/async_step/features/async_run.feature +6 -0
  153. data/vendor/behave/examples/async_step/features/environment.py +28 -0
  154. data/vendor/behave/examples/async_step/features/steps/async_dispatch_steps.py +26 -0
  155. data/vendor/behave/examples/async_step/features/steps/async_steps34.py +10 -0
  156. data/vendor/behave/examples/async_step/features/steps/async_steps35.py +10 -0
  157. data/vendor/behave/examples/async_step/testrun_example.async_dispatch.txt +11 -0
  158. data/vendor/behave/examples/async_step/testrun_example.async_run.txt +9 -0
  159. data/vendor/behave/examples/env_vars/README.rst +26 -0
  160. data/vendor/behave/examples/env_vars/behave.ini +15 -0
  161. data/vendor/behave/examples/env_vars/behave_run.output_example.txt +12 -0
  162. data/vendor/behave/examples/env_vars/features/env_var.feature +6 -0
  163. data/vendor/behave/examples/env_vars/features/steps/env_var_steps.py +38 -0
  164. data/vendor/behave/features/README.txt +12 -0
  165. data/vendor/behave/features/background.feature +392 -0
  166. data/vendor/behave/features/capture_stderr.feature +172 -0
  167. data/vendor/behave/features/capture_stdout.feature +125 -0
  168. data/vendor/behave/features/cmdline.lang_list.feature +33 -0
  169. data/vendor/behave/features/configuration.default_paths.feature +116 -0
  170. data/vendor/behave/features/context.global_params.feature +35 -0
  171. data/vendor/behave/features/context.local_params.feature +17 -0
  172. data/vendor/behave/features/directory_layout.advanced.feature +147 -0
  173. data/vendor/behave/features/directory_layout.basic.feature +75 -0
  174. data/vendor/behave/features/directory_layout.basic2.feature +87 -0
  175. data/vendor/behave/features/environment.py +53 -0
  176. data/vendor/behave/features/exploratory_testing.with_table.feature +141 -0
  177. data/vendor/behave/features/feature.description.feature +0 -0
  178. data/vendor/behave/features/feature.exclude_from_run.feature +96 -0
  179. data/vendor/behave/features/formatter.help.feature +30 -0
  180. data/vendor/behave/features/formatter.json.feature +420 -0
  181. data/vendor/behave/features/formatter.progress3.feature +235 -0
  182. data/vendor/behave/features/formatter.rerun.feature +296 -0
  183. data/vendor/behave/features/formatter.steps.feature +181 -0
  184. data/vendor/behave/features/formatter.steps_catalog.feature +100 -0
  185. data/vendor/behave/features/formatter.steps_doc.feature +140 -0
  186. data/vendor/behave/features/formatter.steps_usage.feature +404 -0
  187. data/vendor/behave/features/formatter.tags.feature +134 -0
  188. data/vendor/behave/features/formatter.tags_location.feature +183 -0
  189. data/vendor/behave/features/formatter.user_defined.feature +196 -0
  190. data/vendor/behave/features/i18n.unicode_problems.feature +445 -0
  191. data/vendor/behave/features/logcapture.clear_handlers.feature +114 -0
  192. data/vendor/behave/features/logcapture.feature +188 -0
  193. data/vendor/behave/features/logcapture.filter.feature +130 -0
  194. data/vendor/behave/features/logging.no_capture.feature +99 -0
  195. data/vendor/behave/features/logging.setup_format.feature +157 -0
  196. data/vendor/behave/features/logging.setup_level.feature +168 -0
  197. data/vendor/behave/features/logging.setup_with_configfile.feature +137 -0
  198. data/vendor/behave/features/parser.background.sad_cases.feature +129 -0
  199. data/vendor/behave/features/parser.feature.sad_cases.feature +144 -0
  200. data/vendor/behave/features/runner.abort_by_user.feature +305 -0
  201. data/vendor/behave/features/runner.continue_after_failed_step.feature +136 -0
  202. data/vendor/behave/features/runner.default_format.feature +175 -0
  203. data/vendor/behave/features/runner.dry_run.feature +184 -0
  204. data/vendor/behave/features/runner.feature_listfile.feature +223 -0
  205. data/vendor/behave/features/runner.hook_errors.feature +382 -0
  206. data/vendor/behave/features/runner.multiple_formatters.feature +285 -0
  207. data/vendor/behave/features/runner.scenario_autoretry.feature +131 -0
  208. data/vendor/behave/features/runner.select_files_by_regexp.example.feature +71 -0
  209. data/vendor/behave/features/runner.select_files_by_regexp.feature +84 -0
  210. data/vendor/behave/features/runner.select_scenarios_by_file_location.feature +403 -0
  211. data/vendor/behave/features/runner.select_scenarios_by_name.feature +289 -0
  212. data/vendor/behave/features/runner.select_scenarios_by_tag.feature +225 -0
  213. data/vendor/behave/features/runner.stop_after_failure.feature +122 -0
  214. data/vendor/behave/features/runner.tag_logic.feature +67 -0
  215. data/vendor/behave/features/runner.unknown_formatter.feature +23 -0
  216. data/vendor/behave/features/runner.use_stage_implementations.feature +126 -0
  217. data/vendor/behave/features/scenario.description.feature +171 -0
  218. data/vendor/behave/features/scenario.exclude_from_run.feature +217 -0
  219. data/vendor/behave/features/scenario_outline.basics.feature +100 -0
  220. data/vendor/behave/features/scenario_outline.improved.feature +177 -0
  221. data/vendor/behave/features/scenario_outline.name_annotation.feature +157 -0
  222. data/vendor/behave/features/scenario_outline.parametrized.feature +401 -0
  223. data/vendor/behave/features/scenario_outline.tagged_examples.feature +118 -0
  224. data/vendor/behave/features/step.async_steps.feature +225 -0
  225. data/vendor/behave/features/step.duplicated_step.feature +106 -0
  226. data/vendor/behave/features/step.execute_steps.feature +59 -0
  227. data/vendor/behave/features/step.execute_steps.with_table.feature +65 -0
  228. data/vendor/behave/features/step.import_other_step_module.feature +103 -0
  229. data/vendor/behave/features/step.pending_steps.feature +128 -0
  230. data/vendor/behave/features/step.undefined_steps.feature +307 -0
  231. data/vendor/behave/features/step.use_step_library.feature +44 -0
  232. data/vendor/behave/features/step_dialect.generic_steps.feature +189 -0
  233. data/vendor/behave/features/step_dialect.given_when_then.feature +89 -0
  234. data/vendor/behave/features/step_param.builtin_types.with_float.feature +239 -0
  235. data/vendor/behave/features/step_param.builtin_types.with_integer.feature +305 -0
  236. data/vendor/behave/features/step_param.custom_types.feature +134 -0
  237. data/vendor/behave/features/steps/behave_active_tags_steps.py +86 -0
  238. data/vendor/behave/features/steps/behave_context_steps.py +67 -0
  239. data/vendor/behave/features/steps/behave_model_tag_logic_steps.py +105 -0
  240. data/vendor/behave/features/steps/behave_model_util.py +105 -0
  241. data/vendor/behave/features/steps/behave_select_files_steps.py +83 -0
  242. data/vendor/behave/features/steps/behave_tag_expression_steps.py +166 -0
  243. data/vendor/behave/features/steps/behave_undefined_steps.py +101 -0
  244. data/vendor/behave/features/steps/use_steplib_behave4cmd.py +12 -0
  245. data/vendor/behave/features/summary.undefined_steps.feature +114 -0
  246. data/vendor/behave/features/tags.active_tags.feature +385 -0
  247. data/vendor/behave/features/tags.default_tags.feature +104 -0
  248. data/vendor/behave/features/tags.tag_expression.feature +105 -0
  249. data/vendor/behave/features/userdata.feature +331 -0
  250. data/vendor/behave/invoke.yaml +21 -0
  251. data/vendor/behave/issue.features/README.txt +17 -0
  252. data/vendor/behave/issue.features/environment.py +97 -0
  253. data/vendor/behave/issue.features/issue0030.feature +21 -0
  254. data/vendor/behave/issue.features/issue0031.feature +16 -0
  255. data/vendor/behave/issue.features/issue0032.feature +28 -0
  256. data/vendor/behave/issue.features/issue0035.feature +74 -0
  257. data/vendor/behave/issue.features/issue0040.feature +154 -0
  258. data/vendor/behave/issue.features/issue0041.feature +135 -0
  259. data/vendor/behave/issue.features/issue0042.feature +230 -0
  260. data/vendor/behave/issue.features/issue0044.feature +51 -0
  261. data/vendor/behave/issue.features/issue0046.feature +77 -0
  262. data/vendor/behave/issue.features/issue0052.feature +66 -0
  263. data/vendor/behave/issue.features/issue0059.feature +29 -0
  264. data/vendor/behave/issue.features/issue0063.feature +102 -0
  265. data/vendor/behave/issue.features/issue0064.feature +97 -0
  266. data/vendor/behave/issue.features/issue0065.feature +18 -0
  267. data/vendor/behave/issue.features/issue0066.feature +80 -0
  268. data/vendor/behave/issue.features/issue0067.feature +90 -0
  269. data/vendor/behave/issue.features/issue0069.feature +64 -0
  270. data/vendor/behave/issue.features/issue0072.feature +32 -0
  271. data/vendor/behave/issue.features/issue0073.feature +228 -0
  272. data/vendor/behave/issue.features/issue0075.feature +18 -0
  273. data/vendor/behave/issue.features/issue0077.feature +89 -0
  274. data/vendor/behave/issue.features/issue0080.feature +49 -0
  275. data/vendor/behave/issue.features/issue0081.feature +138 -0
  276. data/vendor/behave/issue.features/issue0083.feature +69 -0
  277. data/vendor/behave/issue.features/issue0084.feature +69 -0
  278. data/vendor/behave/issue.features/issue0085.feature +119 -0
  279. data/vendor/behave/issue.features/issue0092.feature +66 -0
  280. data/vendor/behave/issue.features/issue0096.feature +173 -0
  281. data/vendor/behave/issue.features/issue0099.feature +130 -0
  282. data/vendor/behave/issue.features/issue0109.feature +60 -0
  283. data/vendor/behave/issue.features/issue0111.feature +53 -0
  284. data/vendor/behave/issue.features/issue0112.feature +64 -0
  285. data/vendor/behave/issue.features/issue0114.feature +118 -0
  286. data/vendor/behave/issue.features/issue0116.feature +71 -0
  287. data/vendor/behave/issue.features/issue0125.feature +49 -0
  288. data/vendor/behave/issue.features/issue0127.feature +64 -0
  289. data/vendor/behave/issue.features/issue0139.feature +67 -0
  290. data/vendor/behave/issue.features/issue0142.feature +37 -0
  291. data/vendor/behave/issue.features/issue0143.feature +54 -0
  292. data/vendor/behave/issue.features/issue0145.feature +63 -0
  293. data/vendor/behave/issue.features/issue0148.feature +105 -0
  294. data/vendor/behave/issue.features/issue0152.feature +52 -0
  295. data/vendor/behave/issue.features/issue0159.feature +74 -0
  296. data/vendor/behave/issue.features/issue0162.feature +86 -0
  297. data/vendor/behave/issue.features/issue0171.feature +16 -0
  298. data/vendor/behave/issue.features/issue0172.feature +51 -0
  299. data/vendor/behave/issue.features/issue0175.feature +91 -0
  300. data/vendor/behave/issue.features/issue0177.feature +40 -0
  301. data/vendor/behave/issue.features/issue0181.feature +36 -0
  302. data/vendor/behave/issue.features/issue0184.feature +144 -0
  303. data/vendor/behave/issue.features/issue0186.feature +12 -0
  304. data/vendor/behave/issue.features/issue0188.feature +60 -0
  305. data/vendor/behave/issue.features/issue0191.feature +178 -0
  306. data/vendor/behave/issue.features/issue0194.feature +215 -0
  307. data/vendor/behave/issue.features/issue0197.feature +11 -0
  308. data/vendor/behave/issue.features/issue0216.feature +129 -0
  309. data/vendor/behave/issue.features/issue0226.feature +51 -0
  310. data/vendor/behave/issue.features/issue0228.feature +41 -0
  311. data/vendor/behave/issue.features/issue0230.feature +46 -0
  312. data/vendor/behave/issue.features/issue0231.feature +77 -0
  313. data/vendor/behave/issue.features/issue0238.feature +52 -0
  314. data/vendor/behave/issue.features/issue0251.feature +15 -0
  315. data/vendor/behave/issue.features/issue0280.feature +118 -0
  316. data/vendor/behave/issue.features/issue0288.feature +95 -0
  317. data/vendor/behave/issue.features/issue0300.feature +49 -0
  318. data/vendor/behave/issue.features/issue0302.feature +91 -0
  319. data/vendor/behave/issue.features/issue0309.feature +52 -0
  320. data/vendor/behave/issue.features/issue0330.feature +124 -0
  321. data/vendor/behave/issue.features/issue0349.feature +9 -0
  322. data/vendor/behave/issue.features/issue0361.feature +79 -0
  323. data/vendor/behave/issue.features/issue0383.feature +76 -0
  324. data/vendor/behave/issue.features/issue0384.feature +103 -0
  325. data/vendor/behave/issue.features/issue0385.feature +109 -0
  326. data/vendor/behave/issue.features/issue0424.feature +66 -0
  327. data/vendor/behave/issue.features/issue0446.feature +116 -0
  328. data/vendor/behave/issue.features/issue0449.feature +42 -0
  329. data/vendor/behave/issue.features/issue0453.feature +42 -0
  330. data/vendor/behave/issue.features/issue0457.feature +65 -0
  331. data/vendor/behave/issue.features/issue0462.feature +38 -0
  332. data/vendor/behave/issue.features/issue0476.feature +39 -0
  333. data/vendor/behave/issue.features/issue0487.feature +92 -0
  334. data/vendor/behave/issue.features/issue0506.feature +77 -0
  335. data/vendor/behave/issue.features/issue0510.feature +51 -0
  336. data/vendor/behave/issue.features/requirements.txt +12 -0
  337. data/vendor/behave/issue.features/steps/ansi_steps.py +20 -0
  338. data/vendor/behave/issue.features/steps/behave_hooks_steps.py +10 -0
  339. data/vendor/behave/issue.features/steps/use_steplib_behave4cmd.py +13 -0
  340. data/vendor/behave/more.features/formatter.json.validate_output.feature +37 -0
  341. data/vendor/behave/more.features/steps/tutorial_steps.py +16 -0
  342. data/vendor/behave/more.features/steps/use_steplib_behave4cmd.py +7 -0
  343. data/vendor/behave/more.features/tutorial.feature +6 -0
  344. data/vendor/behave/py.requirements/README.txt +5 -0
  345. data/vendor/behave/py.requirements/all.txt +16 -0
  346. data/vendor/behave/py.requirements/basic.txt +21 -0
  347. data/vendor/behave/py.requirements/develop.txt +28 -0
  348. data/vendor/behave/py.requirements/docs.txt +6 -0
  349. data/vendor/behave/py.requirements/json.txt +7 -0
  350. data/vendor/behave/py.requirements/more_py26.txt +8 -0
  351. data/vendor/behave/py.requirements/testing.txt +10 -0
  352. data/vendor/behave/pytest.ini +24 -0
  353. data/vendor/behave/setup.cfg +29 -0
  354. data/vendor/behave/setup.py +118 -0
  355. data/vendor/behave/setuptools_behave.py +130 -0
  356. data/vendor/behave/tasks/__behave.py +45 -0
  357. data/vendor/behave/tasks/__init__.py +55 -0
  358. data/vendor/behave/tasks/__main__.py +70 -0
  359. data/vendor/behave/tasks/_setup.py +135 -0
  360. data/vendor/behave/tasks/_vendor/README.rst +35 -0
  361. data/vendor/behave/tasks/_vendor/invoke.zip +0 -0
  362. data/vendor/behave/tasks/_vendor/path.py +1725 -0
  363. data/vendor/behave/tasks/_vendor/pathlib.py +1280 -0
  364. data/vendor/behave/tasks/_vendor/six.py +868 -0
  365. data/vendor/behave/tasks/clean.py +246 -0
  366. data/vendor/behave/tasks/docs.py +97 -0
  367. data/vendor/behave/tasks/requirements.txt +17 -0
  368. data/vendor/behave/tasks/test.py +192 -0
  369. data/vendor/behave/test/__init__.py +0 -0
  370. data/vendor/behave/test/_importer_candidate.py +3 -0
  371. data/vendor/behave/test/reporters/__init__.py +0 -0
  372. data/vendor/behave/test/reporters/test_summary.py +240 -0
  373. data/vendor/behave/test/test_ansi_escapes.py +73 -0
  374. data/vendor/behave/test/test_configuration.py +172 -0
  375. data/vendor/behave/test/test_formatter.py +265 -0
  376. data/vendor/behave/test/test_formatter_progress.py +39 -0
  377. data/vendor/behave/test/test_formatter_rerun.py +97 -0
  378. data/vendor/behave/test/test_formatter_tags.py +57 -0
  379. data/vendor/behave/test/test_importer.py +151 -0
  380. data/vendor/behave/test/test_log_capture.py +29 -0
  381. data/vendor/behave/test/test_matchers.py +236 -0
  382. data/vendor/behave/test/test_model.py +871 -0
  383. data/vendor/behave/test/test_parser.py +1590 -0
  384. data/vendor/behave/test/test_runner.py +1074 -0
  385. data/vendor/behave/test/test_step_registry.py +96 -0
  386. data/vendor/behave/test/test_tag_expression.py +506 -0
  387. data/vendor/behave/test/test_tag_expression2.py +462 -0
  388. data/vendor/behave/test/test_tag_matcher.py +729 -0
  389. data/vendor/behave/test/test_userdata.py +184 -0
  390. data/vendor/behave/tests/README.txt +12 -0
  391. data/vendor/behave/tests/__init__.py +0 -0
  392. data/vendor/behave/tests/api/__ONLY_PY34_or_newer.txt +0 -0
  393. data/vendor/behave/tests/api/__init__.py +0 -0
  394. data/vendor/behave/tests/api/_test_async_step34.py +130 -0
  395. data/vendor/behave/tests/api/_test_async_step35.py +75 -0
  396. data/vendor/behave/tests/api/test_async_step.py +18 -0
  397. data/vendor/behave/tests/api/testing_support.py +94 -0
  398. data/vendor/behave/tests/api/testing_support_async.py +21 -0
  399. data/vendor/behave/tests/issues/test_issue0336.py +66 -0
  400. data/vendor/behave/tests/issues/test_issue0449.py +55 -0
  401. data/vendor/behave/tests/issues/test_issue0453.py +62 -0
  402. data/vendor/behave/tests/issues/test_issue0458.py +54 -0
  403. data/vendor/behave/tests/issues/test_issue0495.py +65 -0
  404. data/vendor/behave/tests/unit/__init__.py +0 -0
  405. data/vendor/behave/tests/unit/test_behave4cmd_command_shell_proc.py +135 -0
  406. data/vendor/behave/tests/unit/test_capture.py +280 -0
  407. data/vendor/behave/tests/unit/test_model_core.py +56 -0
  408. data/vendor/behave/tests/unit/test_textutil.py +267 -0
  409. data/vendor/behave/tools/test-features/background.feature +9 -0
  410. data/vendor/behave/tools/test-features/environment.py +8 -0
  411. data/vendor/behave/tools/test-features/french.feature +11 -0
  412. data/vendor/behave/tools/test-features/outline.feature +39 -0
  413. data/vendor/behave/tools/test-features/parse.feature +10 -0
  414. data/vendor/behave/tools/test-features/step-data.feature +60 -0
  415. data/vendor/behave/tools/test-features/steps/steps.py +120 -0
  416. data/vendor/behave/tools/test-features/tags.feature +18 -0
  417. data/vendor/behave/tox.ini +159 -0
  418. metadata +562 -0
@@ -0,0 +1,265 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ from __future__ import absolute_import
4
+ import struct
5
+ import sys
6
+ import tempfile
7
+ import unittest
8
+ import six
9
+ from mock import Mock, patch
10
+ from nose.tools import * # pylint: disable=wildcard-import, unused-wildcard-import
11
+
12
+ from behave.formatter._registry import make_formatters
13
+ from behave.formatter import pretty
14
+ from behave.formatter.base import StreamOpener
15
+ from behave.model import Tag, Feature, Scenario, Step
16
+ from behave.model_core import Status
17
+ from behave.matchers import Match
18
+
19
+
20
+ class TestGetTerminalSize(unittest.TestCase):
21
+ def setUp(self):
22
+ try:
23
+ self.ioctl_patch = patch("fcntl.ioctl")
24
+ self.ioctl = self.ioctl_patch.start()
25
+ except ImportError:
26
+ self.ioctl_patch = None
27
+ self.ioctl = None
28
+ self.zero_struct = struct.pack("HHHH", 0, 0, 0, 0)
29
+
30
+ def tearDown(self):
31
+ if self.ioctl_patch:
32
+ self.ioctl_patch.stop()
33
+
34
+ def test_windows_fallback(self): # pylint: disable=no-self-use
35
+ platform = sys.platform
36
+ sys.platform = "windows"
37
+
38
+ eq_(pretty.get_terminal_size(), (80, 24))
39
+
40
+ sys.platform = platform
41
+
42
+ def test_termios_fallback(self): # pylint: disable=no-self-use
43
+ try:
44
+ import termios
45
+ return
46
+ except ImportError:
47
+ pass
48
+
49
+ eq_(pretty.get_terminal_size(), (80, 24))
50
+
51
+ def test_exception_in_ioctl(self):
52
+ try:
53
+ import termios
54
+ except ImportError:
55
+ return
56
+
57
+ def raiser(*args, **kwargs): # pylint: disable=unused-argument
58
+ raise Exception("yeehar!")
59
+
60
+ self.ioctl.side_effect = raiser
61
+
62
+ eq_(pretty.get_terminal_size(), (80, 24))
63
+ self.ioctl.assert_called_with(0, termios.TIOCGWINSZ, self.zero_struct)
64
+
65
+ def test_happy_path(self):
66
+ try:
67
+ import termios
68
+ except ImportError:
69
+ return
70
+
71
+ self.ioctl.return_value = struct.pack("HHHH", 17, 23, 5, 5)
72
+
73
+ eq_(pretty.get_terminal_size(), (23, 17))
74
+ self.ioctl.assert_called_with(0, termios.TIOCGWINSZ, self.zero_struct)
75
+
76
+ def test_zero_size_fallback(self):
77
+ try:
78
+ import termios
79
+ except ImportError:
80
+ return
81
+
82
+ self.ioctl.return_value = self.zero_struct
83
+
84
+ eq_(pretty.get_terminal_size(), (80, 24))
85
+ self.ioctl.assert_called_with(0, termios.TIOCGWINSZ, self.zero_struct)
86
+
87
+
88
+ def _tf():
89
+ """Open a temp file that looks a bunch like stdout."""
90
+ if six.PY3:
91
+ # in python3 it's got an encoding and accepts new-style strings
92
+ return tempfile.TemporaryFile(mode="w", encoding="UTF-8")
93
+
94
+ # pre-python3 it's not got an encoding and accepts encoded data
95
+ # (old-style strings)
96
+ return tempfile.TemporaryFile(mode="w")
97
+
98
+
99
+ class FormatterTests(unittest.TestCase):
100
+ formatter_name = "plain" # SANE DEFAULT, overwritten by concrete classes
101
+
102
+ def setUp(self):
103
+ self.config = Mock()
104
+ self.config.color = True
105
+ self.config.outputs = [StreamOpener(stream=sys.stdout)]
106
+ self.config.format = [self.formatter_name]
107
+
108
+ _line = 0
109
+ @property
110
+ def line(self):
111
+ self._line += 1
112
+ return self._line
113
+
114
+ def _formatter(self, file_object, config): # pylint: disable=no-self-use
115
+ stream_opener = StreamOpener(stream=file_object)
116
+ f = make_formatters(config, [stream_opener])[0]
117
+ f.uri("<string>")
118
+ return f
119
+
120
+ def _feature(self, keyword=u"k\xe9yword", name=u"name", tags=None,
121
+ location=u"location", # pylint: disable=unused-argument
122
+ description=None, scenarios=None, background=None):
123
+ if tags is None:
124
+ tags = [u"spam", u"ham"]
125
+ if description is None:
126
+ description = [u"description"]
127
+ if scenarios is None:
128
+ scenarios = []
129
+ line = self.line
130
+ tags = [Tag(name, line) for name in tags]
131
+ return Feature("<string>", line, keyword, name, tags=tags,
132
+ description=description, scenarios=scenarios,
133
+ background=background)
134
+
135
+ def _scenario(self, keyword=u"k\xe9yword", name=u"name", tags=None, steps=None):
136
+ if tags is None:
137
+ tags = []
138
+ if steps is None:
139
+ steps = []
140
+ line = self.line
141
+ tags = [Tag(name, line) for name in tags]
142
+ return Scenario("<string>", line, keyword, name, tags=tags, steps=steps)
143
+
144
+ def _step(self, keyword=u"k\xe9yword", step_type="given", name=u"name",
145
+ text=None, table=None):
146
+ line = self.line
147
+ return Step("<string>", line, keyword, step_type, name, text=text,
148
+ table=table)
149
+
150
+ def _match(self, arguments=None): # pylint: disable=no-self-use
151
+ def dummy():
152
+ pass
153
+
154
+ return Match(dummy, arguments)
155
+
156
+ def test_feature(self):
157
+ # this test does not actually check the result of the formatting; it
158
+ # just exists to make sure that formatting doesn't explode in the face of
159
+ # unicode and stuff
160
+ p = self._formatter(_tf(), self.config)
161
+ f = self._feature()
162
+ p.feature(f)
163
+
164
+ def test_scenario(self):
165
+ p = self._formatter(_tf(), self.config)
166
+ f = self._feature()
167
+ p.feature(f)
168
+ s = self._scenario()
169
+ p.scenario(s)
170
+
171
+ def test_step(self):
172
+ p = self._formatter(_tf(), self.config)
173
+ f = self._feature()
174
+ p.feature(f)
175
+ scenario = self._scenario()
176
+ p.scenario(scenario)
177
+ s = self._step()
178
+ p.step(s)
179
+ p.match(self._match([]))
180
+ s.status = Status.passed
181
+ p.result(s)
182
+
183
+
184
+ class TestPretty(FormatterTests):
185
+ formatter_name = "pretty"
186
+
187
+
188
+ class TestPlain(FormatterTests):
189
+ formatter_name = "plain"
190
+
191
+
192
+ class TestJson(FormatterTests):
193
+ formatter_name = "json"
194
+
195
+
196
+ class TestTagsCount(FormatterTests):
197
+ formatter_name = "tags"
198
+
199
+ def test_tag_counts(self):
200
+ p = self._formatter(_tf(), self.config)
201
+
202
+ s = self._scenario(tags=[u"ham", u"foo"])
203
+ f = self._feature(scenarios=[s]) # feature.tags= ham, spam
204
+ p.feature(f)
205
+ p.scenario(s)
206
+
207
+ eq_(p.tag_counts, {"ham": [f, s], "spam": [f], "foo": [s]})
208
+
209
+
210
+ class MultipleFormattersTests(FormatterTests):
211
+ formatters = []
212
+
213
+ def setUp(self):
214
+ self.config = Mock()
215
+ self.config.color = True
216
+ self.config.outputs = [StreamOpener(stream=sys.stdout)
217
+ for i in self.formatters]
218
+ self.config.format = self.formatters
219
+
220
+ def _formatters(self, file_object, config): # pylint: disable=no-self-use
221
+ stream_opener = StreamOpener(stream=file_object)
222
+ formatters = make_formatters(config, [stream_opener])
223
+ for f in formatters:
224
+ f.uri("<string>")
225
+ return formatters
226
+
227
+ def test_feature(self):
228
+ # this test does not actually check the result of the formatting; it
229
+ # just exists to make sure that formatting doesn't explode in the face of
230
+ # unicode and stuff
231
+ formatters = self._formatters(_tf(), self.config)
232
+ f = self._feature()
233
+ for p in formatters:
234
+ p.feature(f)
235
+
236
+ def test_scenario(self):
237
+ formatters = self._formatters(_tf(), self.config)
238
+ f = self._feature()
239
+ for p in formatters:
240
+ p.feature(f)
241
+ s = self._scenario()
242
+ p.scenario(s)
243
+
244
+ def test_step(self):
245
+ formatters = self._formatters(_tf(), self.config)
246
+ f = self._feature()
247
+ for p in formatters:
248
+ p.feature(f)
249
+ scenario = self._scenario()
250
+ p.scenario(scenario)
251
+ s = self._step()
252
+ p.step(s)
253
+ p.match(self._match([]))
254
+ s.status = Status.passed
255
+ p.result(s)
256
+
257
+
258
+ class TestPrettyAndPlain(MultipleFormattersTests):
259
+ formatters = ["pretty", "plain"]
260
+
261
+ class TestPrettyAndJSON(MultipleFormattersTests):
262
+ formatters = ["pretty", "json"]
263
+
264
+ class TestJSONAndPlain(MultipleFormattersTests):
265
+ formatters = ["json", "plain"]
@@ -0,0 +1,39 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Test progress formatters:
4
+ * behave.formatter.progress.ScenarioProgressFormatter
5
+ * behave.formatter.progress.StepProgressFormatter
6
+ """
7
+
8
+ from __future__ import absolute_import
9
+ from .test_formatter import FormatterTests as FormatterTest
10
+ from .test_formatter import MultipleFormattersTests as MultipleFormattersTest
11
+
12
+ class TestScenarioProgressFormatter(FormatterTest):
13
+ formatter_name = "progress"
14
+
15
+
16
+ class TestStepProgressFormatter(FormatterTest):
17
+ formatter_name = "progress2"
18
+
19
+
20
+ class TestPrettyAndScenarioProgress(MultipleFormattersTest):
21
+ formatters = ['pretty', 'progress']
22
+
23
+ class TestPlainAndScenarioProgress(MultipleFormattersTest):
24
+ formatters = ['plain', 'progress']
25
+
26
+ class TestJSONAndScenarioProgress(MultipleFormattersTest):
27
+ formatters = ['json', 'progress']
28
+
29
+ class TestPrettyAndStepProgress(MultipleFormattersTest):
30
+ formatters = ['pretty', 'progress2']
31
+
32
+ class TestPlainAndStepProgress(MultipleFormattersTest):
33
+ formatters = ['plain', 'progress2']
34
+
35
+ class TestJSONAndStepProgress(MultipleFormattersTest):
36
+ formatters = ['json', 'progress2']
37
+
38
+ class TestScenarioProgressAndStepProgress(MultipleFormattersTest):
39
+ formatters = ['progress', 'progress2']
@@ -0,0 +1,97 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Test behave formatters:
4
+ * behave.formatter.rerun.RerunFormatter
5
+ """
6
+
7
+ from __future__ import absolute_import
8
+ from behave.model_core import Status
9
+ from .test_formatter import FormatterTests as FormatterTest, _tf
10
+ from .test_formatter import MultipleFormattersTests as MultipleFormattersTest
11
+ from nose.tools import *
12
+
13
+ class TestRerunFormatter(FormatterTest):
14
+ formatter_name = "rerun"
15
+
16
+ def test_feature_with_two_passing_scenarios(self):
17
+ p = self._formatter(_tf(), self.config)
18
+ f = self._feature()
19
+ scenarios = [ self._scenario(), self._scenario() ]
20
+ for scenario in scenarios:
21
+ f.add_scenario(scenario)
22
+
23
+ # -- FORMATTER CALLBACKS:
24
+ p.feature(f)
25
+ for scenario in f.scenarios:
26
+ p.scenario(scenario)
27
+ assert scenario.status == Status.passed
28
+ p.eof()
29
+ eq_([], p.failed_scenarios)
30
+ # -- EMIT REPORT:
31
+ p.close()
32
+
33
+ def test_feature_with_one_passing_one_failing_scenario(self):
34
+ p = self._formatter(_tf(), self.config)
35
+ f = self._feature()
36
+ passing_scenario = self._scenario()
37
+ failing_scenario = self._scenario()
38
+ failing_scenario.steps.append(self._step())
39
+ scenarios = [ passing_scenario, failing_scenario ]
40
+ for scenario in scenarios:
41
+ f.add_scenario(scenario)
42
+
43
+ # -- FORMATTER CALLBACKS:
44
+ p.feature(f)
45
+ for scenario in f.scenarios:
46
+ p.scenario(scenario)
47
+
48
+ failing_scenario.steps[0].status = Status.failed
49
+ assert scenarios[0].status == Status.passed
50
+ assert scenarios[1].status == Status.failed
51
+ p.eof()
52
+ eq_([ failing_scenario ], p.failed_scenarios)
53
+ # -- EMIT REPORT:
54
+ p.close()
55
+
56
+ def test_feature_with_one_passing_two_failing_scenario(self):
57
+ p = self._formatter(_tf(), self.config)
58
+ f = self._feature()
59
+ passing_scenario = self._scenario()
60
+ failing_scenario1 = self._scenario()
61
+ failing_scenario1.steps.append(self._step())
62
+ failing_scenario2 = self._scenario()
63
+ failing_scenario2.steps.append(self._step())
64
+ scenarios = [ failing_scenario1, passing_scenario, failing_scenario2 ]
65
+ for scenario in scenarios:
66
+ f.add_scenario(scenario)
67
+
68
+ # -- FORMATTER CALLBACKS:
69
+ p.feature(f)
70
+ for scenario in f.scenarios:
71
+ p.scenario(scenario)
72
+
73
+ failing_scenario1.steps[0].status = Status.failed
74
+ failing_scenario2.steps[0].status = Status.failed
75
+ assert scenarios[0].status == Status.failed
76
+ assert scenarios[1].status == Status.passed
77
+ assert scenarios[2].status == Status.failed
78
+ p.eof()
79
+ eq_([ failing_scenario1, failing_scenario2 ], p.failed_scenarios)
80
+ # -- EMIT REPORT:
81
+ p.close()
82
+
83
+
84
+ class TestRerunAndPrettyFormatters(MultipleFormattersTest):
85
+ formatters = ["rerun", "pretty"]
86
+
87
+ class TestRerunAndPlainFormatters(MultipleFormattersTest):
88
+ formatters = ["rerun", "plain"]
89
+
90
+ class TestRerunAndScenarioProgressFormatters(MultipleFormattersTest):
91
+ formatters = ["rerun", "progress"]
92
+
93
+ class TestRerunAndStepProgressFormatters(MultipleFormattersTest):
94
+ formatters = ["rerun", "progress2"]
95
+
96
+ class TestRerunAndJsonFormatter(MultipleFormattersTest):
97
+ formatters = ["rerun", "json"]
@@ -0,0 +1,57 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Test formatters:
4
+ * behave.formatter.tags.TagsCountFormatter
5
+ * behave.formatter.tags.TagsLocationFormatter
6
+ """
7
+
8
+ from __future__ import absolute_import
9
+ from .test_formatter import FormatterTests as FormatterTest
10
+ from .test_formatter import MultipleFormattersTests as MultipleFormattersTest
11
+
12
+ # -----------------------------------------------------------------------------
13
+ # FORMATTER TESTS: With TagCountFormatter
14
+ # -----------------------------------------------------------------------------
15
+ class TestTagsCountFormatter(FormatterTest):
16
+ formatter_name = "tags"
17
+
18
+ # -----------------------------------------------------------------------------
19
+ # FORMATTER TESTS: With TagLocationFormatter
20
+ # -----------------------------------------------------------------------------
21
+ class TestTagsLocationFormatter(FormatterTest):
22
+ formatter_name = "tags.location"
23
+
24
+
25
+ # -----------------------------------------------------------------------------
26
+ # MULTI-FORMATTER TESTS: With TagCountFormatter
27
+ # -----------------------------------------------------------------------------
28
+ class TestPrettyAndTagsCount(MultipleFormattersTest):
29
+ formatters = ["pretty", "tags"]
30
+
31
+ class TestPlainAndTagsCount(MultipleFormattersTest):
32
+ formatters = ["plain", "tags"]
33
+
34
+ class TestJSONAndTagsCount(MultipleFormattersTest):
35
+ formatters = ["json", "tags"]
36
+
37
+ class TestRerunAndTagsCount(MultipleFormattersTest):
38
+ formatters = ["rerun", "tags"]
39
+
40
+
41
+ # -----------------------------------------------------------------------------
42
+ # MULTI-FORMATTER TESTS: With TagLocationFormatter
43
+ # -----------------------------------------------------------------------------
44
+ class TestPrettyAndTagsLocation(MultipleFormattersTest):
45
+ formatters = ["pretty", "tags.location"]
46
+
47
+ class TestPlainAndTagsLocation(MultipleFormattersTest):
48
+ formatters = ["plain", "tags.location"]
49
+
50
+ class TestJSONAndTagsLocation(MultipleFormattersTest):
51
+ formatters = ["json", "tags.location"]
52
+
53
+ class TestRerunAndTagsLocation(MultipleFormattersTest):
54
+ formatters = ["rerun", "tags.location"]
55
+
56
+ class TestTagsCountAndTagsLocation(MultipleFormattersTest):
57
+ formatters = ["tags", "tags.location"]