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,12 @@
1
+ # ============================================================================
2
+ # PYTHON PACKAGE REQUIREMENTS: For running issue.features/
3
+ # ============================================================================
4
+ # REQUIRES: Python >= 2.5
5
+ # REQUIRES: Python >= 3.2
6
+ # DESCRIPTION:
7
+ # pip install -r <THIS_FILE>
8
+ #
9
+ # ============================================================================
10
+
11
+ PyHamcrest >= 1.6
12
+
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from __future__ import absolute_import
4
+ from behave import then
5
+ from behave4cmd0.command_steps import \
6
+ step_command_output_should_contain_text, \
7
+ step_command_output_should_not_contain_text
8
+
9
+ # -- CONSTANTS:
10
+ # ANSI CONTROL SEQUENCE INTRODUCER (CSI).
11
+ CSI = u"\x1b["
12
+
13
+ @then(u'the command output should contain ANSI escape sequences')
14
+ def step_command_ouput_should_not_contain_ansi_sequences(context):
15
+ step_command_output_should_contain_text(context, CSI)
16
+
17
+ @then(u'the command output should not contain any ANSI escape sequences')
18
+ def step_command_ouput_should_not_contain_ansi_sequences(context):
19
+ step_command_output_should_not_contain_text(context, CSI)
20
+
@@ -0,0 +1,10 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from __future__ import absolute_import
4
+ from behave import then
5
+
6
+ @then('the behave hook "{hook}" was called')
7
+ def step_behave_hook_was_called(context, hook):
8
+ substeps = u'Then the command output should contain "hooks.{0}: "'.format(hook)
9
+ context.execute_steps(substeps)
10
+
@@ -0,0 +1,13 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Use behave4cmd0 step library (predecessor of behave4cmd).
4
+ """
5
+
6
+ from __future__ import absolute_import
7
+
8
+ # -- REGISTER-STEPS FROM STEP-LIBRARY:
9
+ # import behave4cmd0.__all_steps__
10
+ import behave4cmd0.command_steps
11
+ import behave4cmd0.passing_steps
12
+ import behave4cmd0.failing_steps
13
+ import behave4cmd0.note_steps
@@ -0,0 +1,37 @@
1
+ @slow
2
+ Feature: Validate JSON Formatter Output
3
+
4
+ As a tester
5
+ I want that the JSON output is validated against its JSON schema
6
+ So that the JSON formatter generates valid JSON output.
7
+
8
+ | NOTES:
9
+ | Some have the behave testruns may contain failures (@xfail).
10
+ | This should lead to more realistic JSON output, too.
11
+
12
+ Scenario: Validate JSON output from features/ test run
13
+ Given I use the current directory as working directory
14
+ When I run "behave -f json -o testrun1.json features/"
15
+ When I run "bin/jsonschema_validate.py testrun1.json"
16
+ Then it should pass with:
17
+ """
18
+ validate: testrun1.json ... OK
19
+ """
20
+
21
+ Scenario: Validate JSON output from issue.features/ test run
22
+ Given I use the current directory as working directory
23
+ When I run "behave -f json -o testrun2.json issue.features/"
24
+ When I run "bin/jsonschema_validate.py testrun2.json"
25
+ Then it should pass with:
26
+ """
27
+ validate: testrun2.json ... OK
28
+ """
29
+
30
+ Scenario: Validate JSON output from tools/test-features/ test run
31
+ Given I use the current directory as working directory
32
+ When I run "behave -f json -o testrun3.json tools/test-features/"
33
+ When I run "bin/jsonschema_validate.py testrun3.json"
34
+ Then it should pass with:
35
+ """
36
+ validate: testrun3.json ... OK
37
+ """
@@ -0,0 +1,16 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Step implementations for tutorial example."""
3
+
4
+ from behave import *
5
+
6
+ @given('we have behave installed')
7
+ def step_impl(context):
8
+ pass
9
+
10
+ @when('we implement a test')
11
+ def step_impl(context):
12
+ assert True is not False
13
+
14
+ @then('behave will test it for us!')
15
+ def step_impl(context):
16
+ assert context.failed is False
@@ -0,0 +1,7 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Use behave4cmd0 step library (predecessor of behave4cmd).
4
+ """
5
+
6
+ # -- REGISTER-STEPS:
7
+ import behave4cmd0.__all_steps__
@@ -0,0 +1,6 @@
1
+ Feature: showing off behave
2
+
3
+ Scenario: run a simple test
4
+ Given we have behave installed
5
+ When we implement a test
6
+ Then behave will test it for us!
@@ -0,0 +1,5 @@
1
+ This directory contains python package requirements for behave.
2
+ These requirement files are used by:
3
+
4
+ * pip
5
+ * tox
@@ -0,0 +1,16 @@
1
+ # ============================================================================
2
+ # BEHAVE: PYTHON PACKAGE REQUIREMENTS: All requirements
3
+ # ============================================================================
4
+ # DESCRIPTION:
5
+ # pip install -r <THIS_FILE>
6
+ #
7
+ # SEE ALSO:
8
+ # * http://www.pip-installer.org/
9
+ # ============================================================================
10
+ # ALREADY: -r testing.txt
11
+ # ALREADY: -r docs.txt
12
+
13
+ -r basic.txt
14
+ -r develop.txt
15
+ -r more_py26.txt
16
+ -r json.txt
@@ -0,0 +1,21 @@
1
+ # ============================================================================
2
+ # BEHAVE: PYTHON PACKAGE REQUIREMENTS: Normal usage/installation (minimal)
3
+ # ============================================================================
4
+ # DESCRIPTION:
5
+ # pip install -r <THIS_FILE>
6
+ #
7
+ # SEE ALSO:
8
+ # * http://www.pip-installer.org/
9
+ # ============================================================================
10
+
11
+ parse >= 1.6.3
12
+ parse_type >= 0.3.4
13
+ six >= 1.9
14
+
15
+ traceback2; python_version <= '3.0'
16
+
17
+ # -- FOR PYTHON 2.6:
18
+ # REQUIRES: pip >= 6.0
19
+ argparse; python_version <= '2.6'
20
+ ordereddict; python_version <= '2.6'
21
+ importlib; python_version <= '2.6'
@@ -0,0 +1,28 @@
1
+ # ============================================================================
2
+ # PYTHON PACKAGE REQUIREMENTS FOR: behave -- For development only
3
+ # ============================================================================
4
+
5
+ # -- BUILD-TOOL:
6
+ # PREPARE USAGE: invoke
7
+ # ALREADY: six >= 1.10.0
8
+ invoke >= 0.13.0
9
+ path.py >= 8.1.2
10
+ pathlib; python_version <= '3.4'
11
+ pycmd
12
+
13
+ # -- CONFIGURATION MANAGEMENT (helpers):
14
+ bumpversion >= 0.4.0
15
+
16
+ # -- DEVELOPMENT SUPPORT:
17
+ # PREPARED: nose-cov >= 1.4
18
+ tox >= 1.8.1
19
+ coverage >= 4.2
20
+ pytest-cov
21
+
22
+ # -- PYTHON2/3 COMPATIBILITY: pypa/modernize
23
+ # python-futurize
24
+ modernize >= 0.4
25
+
26
+ # -- REQUIRES: testing, docs
27
+ -r testing.txt
28
+ -r docs.txt
@@ -0,0 +1,6 @@
1
+ # ============================================================================
2
+ # BEHAVE: PYTHON PACKAGE REQUIREMENTS: For documentation generation
3
+ # ============================================================================
4
+ # REQUIRES: pip >= 6.0
5
+
6
+ Sphinx >= 1.3.1
@@ -0,0 +1,7 @@
1
+ # ============================================================================
2
+ # PYTHON PACKAGE REQUIREMENTS FOR: behave -- For development only
3
+ # ============================================================================
4
+
5
+ # -- OPTIONAL: For JSON validation
6
+ # REQUIRES: python >= 2.6
7
+ jsonschema >= 1.3.0
@@ -0,0 +1,8 @@
1
+ # ============================================================================
2
+ # BEHAVE: PYTHON PACKAGE REQUIREMENTS: More packages for Python2.6
3
+ # ============================================================================
4
+ # DEPRECATED: Use "basic.txt" instead
5
+ # REQUIRE: pip >= 6.0
6
+
7
+ ordereddict; python_version <= '2.6'
8
+ importlib; python_version <= '2.6'
@@ -0,0 +1,10 @@
1
+ # ============================================================================
2
+ # PYTHON PACKAGE REQUIREMENTS FOR: behave -- For testing only
3
+ # ============================================================================
4
+
5
+ # -- TESTING: Unit tests and behave self-tests.
6
+ # PREPARED-FUTURE: behave4cmd0, behave4cmd
7
+ pytest >= 3.0
8
+ nose >= 1.1
9
+ mock >= 1.3
10
+ PyHamcrest >= 1.8
@@ -0,0 +1,24 @@
1
+ # ============================================================================
2
+ # PYTEST CONFIGURATION FILE
3
+ # ============================================================================
4
+ # NOTE:
5
+ # Can also be defined in in tox.ini or pytest.ini file.
6
+ #
7
+ # SEE ALSO:
8
+ # * http://pytest.org/
9
+ # * http://pytest.org/latest/customize.html
10
+ # * http://pytest.org/latest/usage.html
11
+ # ============================================================================
12
+ # MORE OPTIONS:
13
+ # addopts =
14
+ # python_classes=*Test
15
+ # python_functions=test_*
16
+ # ============================================================================
17
+
18
+ [pytest]
19
+ minversion = 2.8
20
+ testpaths = test tests
21
+ python_files = test_*.py
22
+ # -- BACKWARD COMPATIBILITY: pytest < 2.8
23
+ norecursedirs = .git .tox attic build dist py.requirements tmp* _WORKSPACE
24
+
@@ -0,0 +1,29 @@
1
+ [aliases]
2
+ docs = build_sphinx
3
+ test = nosetests
4
+
5
+ [sdist]
6
+ formats = zip, gztar
7
+
8
+ [bdist_wheel]
9
+ universal = true
10
+
11
+ [upload_docs]
12
+ upload-dir = build/docs/html
13
+
14
+ [behave_test]
15
+ format = progress
16
+ tags = -@xfail
17
+ args = features tools/test-features issue.features
18
+
19
+ [build_sphinx]
20
+ source-dir = docs/
21
+ build-dir = build/docs
22
+ builder = html
23
+ all_files = true
24
+
25
+ [egg_info]
26
+ tag_build =
27
+ tag_date = 0
28
+ tag_svn_revision = 0
29
+
@@ -0,0 +1,118 @@
1
+ # -*- coding: utf-8 -*
2
+ """
3
+ Setup script for behave.
4
+
5
+ USAGE:
6
+ python setup.py install
7
+ python setup.py behave_test # -- XFAIL on Windows (currently).
8
+ python setup.py nosetests
9
+ """
10
+
11
+ import sys
12
+ import os.path
13
+
14
+ HERE0 = os.path.dirname(__file__) or os.curdir
15
+ os.chdir(HERE0)
16
+ HERE = os.curdir
17
+ sys.path.insert(0, HERE)
18
+
19
+ from setuptools import find_packages, setup
20
+ from setuptools_behave import behave_test
21
+
22
+ # -----------------------------------------------------------------------------
23
+ # CONFIGURATION:
24
+ # -----------------------------------------------------------------------------
25
+ python_version = float("%s.%s" % sys.version_info[:2])
26
+ requirements = ["parse>=1.6.3", "parse_type>=0.3.4", "six>=1.9"]
27
+ py26_extra = ["argparse", "importlib", "ordereddict", "enum34", "traceback2"]
28
+ py27_extra = ["enum34", "traceback2"]
29
+ py33_extra = ["enum34"]
30
+ if python_version < 2.6:
31
+ requirements.append("simplejson")
32
+ if python_version < 2.7:
33
+ requirements.extend(py26_extra)
34
+ if python_version < 3:
35
+ requirements.extend(py27_extra)
36
+ if python_version >= 3.0 and python_version < 3.4:
37
+ requirements.extend(py33_extra)
38
+
39
+ BEHAVE = os.path.join(HERE, "behave")
40
+ README = os.path.join(HERE, "README.rst")
41
+ description = "".join(open(README).readlines()[4:])
42
+
43
+ # -----------------------------------------------------------------------------
44
+ # UTILITY:
45
+ # -----------------------------------------------------------------------------
46
+ def find_packages_by_root_package(where):
47
+ """
48
+ Better than excluding everything that is not needed,
49
+ collect only what is needed.
50
+ """
51
+ root_package = os.path.basename(where)
52
+ packages = [ "%s.%s" % (root_package, sub_package)
53
+ for sub_package in find_packages(where)]
54
+ packages.insert(0, root_package)
55
+ return packages
56
+
57
+
58
+ # -----------------------------------------------------------------------------
59
+ # SETUP:
60
+ # -----------------------------------------------------------------------------
61
+ setup(
62
+ name="behave",
63
+ version="1.2.6.dev0",
64
+ description="behave is behaviour-driven development, Python style",
65
+ long_description=description,
66
+ author="Jens Engel, Benno Rice and Richard Jones",
67
+ author_email="behave-users@googlegroups.com",
68
+ url="http://github.com/behave/behave",
69
+ provides = ["behave", "setuptools_behave"],
70
+ packages = find_packages_by_root_package(BEHAVE),
71
+ py_modules = ["setuptools_behave"],
72
+ entry_points={
73
+ "console_scripts": [
74
+ "behave = behave.__main__:main"
75
+ ],
76
+ "distutils.commands": [
77
+ "behave_test = setuptools_behave:behave_test"
78
+ ]
79
+ },
80
+ install_requires=requirements,
81
+ test_suite="nose.collector",
82
+ tests_require=["nose>=1.3", "mock>=1.0", "PyHamcrest>=1.8", "pytest>=2.8"],
83
+ cmdclass = {
84
+ "behave_test": behave_test,
85
+ },
86
+ extras_require={
87
+ # -- SUPPORT-WHEELS: Extra packages for Python2.6
88
+ # SEE: https://bitbucket.org/pypa/wheel/ , CHANGES.txt (v0.24.0)
89
+ ':python_version=="2.6"': py26_extra,
90
+ ':python_version=="2.7"': py27_extra,
91
+ ':python_version=="3.3"': py33_extra,
92
+ },
93
+ # MAYBE-DISABLE: use_2to3
94
+ use_2to3= bool(python_version >= 3.0),
95
+ license="BSD",
96
+ classifiers=[
97
+ "Development Status :: 4 - Beta",
98
+ "Environment :: Console",
99
+ "Intended Audience :: Developers",
100
+ "Operating System :: OS Independent",
101
+ "Programming Language :: Python :: 2",
102
+ "Programming Language :: Python :: 2.6",
103
+ "Programming Language :: Python :: 2.7",
104
+ "Programming Language :: Python :: 3",
105
+ "Programming Language :: Python :: 3.3",
106
+ "Programming Language :: Python :: 3.4",
107
+ "Programming Language :: Python :: 3.5",
108
+ "Programming Language :: Python :: 3.6",
109
+ "Programming Language :: Python :: Implementation :: CPython",
110
+ "Programming Language :: Python :: Implementation :: Jython",
111
+ "Programming Language :: Python :: Implementation :: PyPy",
112
+ "Topic :: Software Development :: Testing",
113
+ "License :: OSI Approved :: BSD License",
114
+ ],
115
+ zip_safe = True,
116
+ )
117
+
118
+
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Setuptools command for behave.
5
+
6
+ .. code-block:: console
7
+
8
+ python setup.py behave_test
9
+ python setup.py behave_test --format=progress3
10
+ python setup.py behave_test --args=features/one.feature
11
+ python setup.py behave_test --tags=-xfail --args=features
12
+
13
+ .. seealso::
14
+
15
+ * http://pypi.python.org/pypi/behave
16
+ * http://github.com/behave/behave
17
+ """
18
+
19
+ from setuptools import Command
20
+ from distutils import dir_util
21
+ from fnmatch import fnmatch
22
+ import os.path
23
+ import sys
24
+ import shlex
25
+ import subprocess
26
+
27
+
28
+ class behave_test(Command):
29
+ """
30
+ Simple test runner that runs 'behave' via a "setup.py" file.
31
+ This ensures that all requirements are provided before the tests are run.
32
+ """
33
+ command_name = "behave_test"
34
+ description = "Run feature tests with behave"
35
+ default_format = "progress"
36
+ default_args = "features"
37
+ local_egg_dir = ".eggs"
38
+ command_consumes_arguments = False
39
+ user_options = [
40
+ ("format=", "f", "Use formatter (default: %s)" % default_format),
41
+ ("tags=", "t", "Use tags to select/exclude features/scenarios"),
42
+ ("dry-run", "d", "Use dry-run mode"),
43
+ ("args=", None,
44
+ "Features to run (default: %s)" % default_args),
45
+ ]
46
+ boolean_options = [ "dry-run" ]
47
+
48
+ def initialize_options(self):
49
+ self.format = self.default_format
50
+ self.tags = None
51
+ self.dry_run = None
52
+ self.args = self.default_args
53
+
54
+ def finalize_options(self):
55
+ self.ensure_string("format", self.default_format)
56
+ self.ensure_string_list_with_comma_words("tags")
57
+ self.ensure_string_list("args")
58
+
59
+ def ensure_string_list_with_comma_words(self, option):
60
+ """Ensures that a string with whitespace separated words
61
+ is converted into list of strings.
62
+ Note that commas are allowed in words
63
+ (compared :meth:`ensure_string_list()`).
64
+ """
65
+ value = getattr(self, option, None)
66
+ if not value:
67
+ return
68
+ parts = shlex.split(value)
69
+ setattr(self, option, parts)
70
+
71
+ def _ensure_required_packages_are_installed(self, install_dir="."):
72
+ # -- NOTE: Packages are downloaded and provided as local eggs.
73
+ self.announce("ensure_required_packages_are_installed")
74
+ initial_dir = os.getcwd()
75
+ try:
76
+ dir_util.mkpath(install_dir)
77
+ # -- NO LONGER NEEDED: os.chdir(self.local_egg_dir)
78
+ if self.distribution.install_requires:
79
+ self.distribution.fetch_build_eggs(self.distribution.install_requires)
80
+ if self.distribution.tests_require:
81
+ self.distribution.fetch_build_eggs(self.distribution.tests_require)
82
+ finally:
83
+ os.chdir(initial_dir)
84
+
85
+ def _select_paths(self, path=".", pattern="*"):
86
+ selected = [ os.path.join(path, f)
87
+ for f in os.listdir(path) if fnmatch(f, pattern)]
88
+ return selected
89
+
90
+ def _setup_env_with_local_python_path(self, egg_install_dir):
91
+ PYTHONPATH = os.environ.get("PYTHONPATH", "")
92
+ pathsep = os.pathsep
93
+ PPATH=[x for x in PYTHONPATH.split(pathsep) if x]
94
+ PPATH.insert(0, os.getcwd())
95
+ local_eggs = self._select_paths(egg_install_dir, "*.egg")
96
+ if local_eggs:
97
+ PPATH[1:1] = [ os.path.abspath(p) for p in local_eggs]
98
+ os.environ["PYTHONPATH"] = pathsep.join(PPATH)
99
+ self.announce("Use PYTHONPATH=%s" % os.environ["PYTHONPATH"], level=3)
100
+ return PYTHONPATH
101
+
102
+ def run(self):
103
+ # -- UPDATE SEARCHPATH: Ensure that local dir and local eggs are used.
104
+ egg_install_dir = self.local_egg_dir
105
+ self._ensure_required_packages_are_installed(egg_install_dir)
106
+ OLD_PYTHONPATH = self._setup_env_with_local_python_path(egg_install_dir)
107
+ for path in self.args:
108
+ returncode = self.behave(path)
109
+ if returncode:
110
+ self.announce("FAILED", level=4)
111
+ raise SystemExit(returncode)
112
+ # -- FINALLY: Restore
113
+ os.environ["PYTHONPATH"] = OLD_PYTHONPATH
114
+ return returncode
115
+
116
+ def behave(self, path):
117
+ behave = os.path.join("bin", "behave")
118
+ if not os.path.exists(behave):
119
+ # -- ALTERNATIVE: USE: behave script: behave = "behave"
120
+ # -- USE: behave module (main)
121
+ behave = "-m behave"
122
+ cmd_options = ""
123
+ if self.tags:
124
+ cmd_options = "--tags=" + " --tags=".join(self.tags)
125
+ if self.dry_run:
126
+ cmd_options += " --dry-run"
127
+ cmd_options += " --format=%s %s" % (self.format, path)
128
+ self.announce("CMDLINE: python %s %s" % (behave, cmd_options), level=3)
129
+ behave_cmd = shlex.split(behave)
130
+ return subprocess.call([sys.executable] + behave_cmd + shlex.split(cmd_options))