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,21 @@
1
+ # -*- coding: UTF-8 -*-
2
+ """
3
+ Unit test support for :mod:`behave.api.async_test` tests.
4
+ """
5
+
6
+ import inspect
7
+
8
+
9
+ # -----------------------------------------------------------------------------
10
+ # TEST SUPPORT:
11
+ # -----------------------------------------------------------------------------
12
+ class AsyncStepTheory(object):
13
+ @staticmethod
14
+ def ensure_normal_function(func):
15
+ if hasattr(inspect, "isawaitable"):
16
+ # -- SINCE: Python 3.5
17
+ assert not inspect.isawaitable(func)
18
+
19
+ @classmethod
20
+ def validate(cls, func):
21
+ cls.ensure_normal_function(func)
@@ -0,0 +1,66 @@
1
+ # -*- coding: UTF-8
2
+ """
3
+ Test issue #336: Unicode problem w/ exception traceback on Windows (python2.7)
4
+ Default encoding (unicode-escape) of text() causes problems w/
5
+ exception tracebacks.
6
+
7
+ STATUS: BASICS SOLVED (default encoding changed)
8
+
9
+ ALTERNATIVE SOLUTIONS:
10
+ * Use traceback2: Returns unicode-string when calling traceback.
11
+ * Use text(traceback.format_exc(), sys.getfilesystemencoding(), "replace")
12
+ where the text-conversion of a traceback is used.
13
+ MAYBE traceback_to_text(traceback.format_exc())
14
+ """
15
+
16
+ from __future__ import print_function
17
+ from behave.textutil import text
18
+ import pytest
19
+ import six
20
+
21
+ # require_python2 = pytest.mark.skipif(not six.PY2, reason="REQUIRE: Python2")
22
+ # require_python3 = pytest.mark.skipif(six.PY2, reason="REQUIRE: Python3 (or newer)")
23
+
24
+
25
+ class TestIssue(object):
26
+ # -- USE SAVED TRACEBACK: No need to require Windows platform.
27
+ traceback_bytes = br"""\
28
+ Traceback (most recent call last):
29
+ File "C:\Users\alice\xxx\behave\model.py", line 1456, in run
30
+ match.run(runner.context)
31
+ File "C:\Users\alice\xxx\behave\model.py", line 1903, in run
32
+ self.func(context, args, *kwargs)
33
+ File "features\steps\my_steps.py", line 210, in step_impl
34
+ directories, task_names, reg_keys)
35
+ AssertionError
36
+ """
37
+
38
+ traceback_file_line_texts = [
39
+ # -- NOTE: Cannot use: ur'C:\Users ..." => \U is a unicode escape char.
40
+ u'File "C:\\Users\\alice\\xxx\\behave\\model.py", line 1456, in run',
41
+ u'File "C:\\Users\\alice\\xxx\\behave\\model.py", line 1903, in run',
42
+ u'File "features\\steps\\my_steps.py", line 210, in step_impl',
43
+ ]
44
+
45
+ # @require_python2
46
+ def test_issue__with_default_encoding(self):
47
+ """Test ensures that problem is fixed with default encoding"""
48
+ text2 = text(self.traceback_bytes)
49
+ assert isinstance(self.traceback_bytes, bytes)
50
+ assert isinstance(text2, six.text_type)
51
+ for file_line_text in self.traceback_file_line_texts:
52
+ assert file_line_text in text2
53
+
54
+ # @require_python2
55
+ def test__problem_exists_with_problematic_encoding(self):
56
+ """Test ensures that problem exists with encoding=unicode-escape"""
57
+ # -- NOTE: Explicit use of problematic encoding
58
+ problematic_encoding = "unicode-escape"
59
+ text2 = text(self.traceback_bytes, problematic_encoding)
60
+ print("TEXT: "+ text2)
61
+ assert isinstance(self.traceback_bytes, bytes)
62
+ assert isinstance(text2, six.text_type)
63
+
64
+ # -- VERIFY BAD-OUTCOME: With problematic encoding
65
+ file_line_text = self.traceback_file_line_texts[0]
66
+ assert file_line_text not in text2
@@ -0,0 +1,55 @@
1
+ # -*- coding: UTF-8 -*-
2
+ """
3
+ SIMILAR: #453
4
+ NOTE: traceback2 (backport for Python2) solves the problem.
5
+
6
+ Either Exception text (as summary) or traceback python line shows
7
+ special characters correctly.
8
+
9
+ .. code-block:: python
10
+
11
+ # -*- coding=utf-8 -*-
12
+ from behave import *
13
+ from hamcrest.core import assert_that, equal_to
14
+
15
+ @step("Russian text")
16
+ def foo(stop):
17
+ assert_that(False, equal_to(True), u"Всё очень плохо") # cyrillic
18
+
19
+ And I also have UTF-8 as my console charset. Running this code leads to
20
+ "Assertion Failed: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)" error.
21
+
22
+ That is becase behave.textutil.text returns six.text_type(e) where 'e' is exception (https://github.com/behave/behave/blob/master/behave/textutil.py#L83).
23
+
24
+ Changing line 83 to six.text_type(value) solves this issue.
25
+ """
26
+
27
+ from __future__ import print_function
28
+ from behave.textutil import text
29
+ from hamcrest.core import assert_that, equal_to
30
+ from hamcrest.library import contains_string
31
+ import six
32
+ import pytest
33
+ if six.PY2:
34
+ import traceback2 as traceback
35
+ else:
36
+ import traceback
37
+
38
+
39
+ def foo():
40
+ assert_that(False, equal_to(True), u"Всё очень плохо") # cyrillic
41
+
42
+ @pytest.mark.parametrize("encoding", [None, "UTF-8", "unicode_escape"])
43
+ def test_issue(encoding):
44
+ expected = u"Всё очень плохо"
45
+ try:
46
+ foo()
47
+ except Exception as e:
48
+ text2 = traceback.format_exc()
49
+
50
+ text3 = text(text2, encoding)
51
+ print(u"EXCEPTION-TEXT: %s" % text3)
52
+ print(u"text2: "+ text2)
53
+ assert_that(text3, contains_string(u"AssertionError: Всё очень плохо"))
54
+
55
+
@@ -0,0 +1,62 @@
1
+ # -*- coding: UTF-8 -*-
2
+ """
3
+ MAYBE: DUPLICATES: #449
4
+ NOTE: traceback2 (backport for Python2) solves the problem.
5
+
6
+ def foo(stop):
7
+ raise Exception(u"по русски")
8
+
9
+ Result:
10
+
11
+ File "features/steps/steps.py", line 8, in foo
12
+ raise Exception(u"по ����ки") <-- This is not
13
+ Exception: по русски <-- This is OK
14
+
15
+ It happens here (https://github.com/behave/behave/blob/master/behave/model.py#L1299)
16
+ because traceback.format_exc() creates incorrect text.
17
+ You then convert it using _text() and result is also bad.
18
+
19
+ To fix it, you may take e.message which is correct and traceback.format_tb(sys.exc_info()[2])
20
+ which is also correct.
21
+ """
22
+
23
+ from __future__ import print_function
24
+ from behave.textutil import text
25
+ from hamcrest.core import assert_that, equal_to
26
+ from hamcrest.library import contains_string
27
+ import six
28
+ import pytest
29
+ if six.PY2:
30
+ import traceback2 as traceback
31
+ else:
32
+ import traceback
33
+
34
+
35
+ def problematic_step_impl(context):
36
+ raise Exception(u"по русски")
37
+
38
+ @pytest.mark.parametrize("encoding", [None, "UTF-8", "unicode_escape"])
39
+ def test_issue(encoding):
40
+ """
41
+ with encoding=UTF-8:
42
+ File "/Users/jens/se/behave_main.unicode/tests/issues/test_issue0453.py", line 31, in problematic_step_impl
43
+ raise Exception(u"по русски")
44
+ Exception: \u043f\u043e \u0440\u0443\u0441\u0441\u043a\u0438
45
+
46
+ with encoding=unicode_escape:
47
+ File "/Users/jens/se/behave_main.unicode/tests/issues/test_issue0453.py", line 31, in problematic_step_impl
48
+ raise Exception(u"по русски")
49
+ Exception: по русски
50
+ """
51
+ context = None
52
+ text2 = ""
53
+ expected_text = u"по русски"
54
+ try:
55
+ problematic_step_impl(context)
56
+ except Exception:
57
+ text2 = traceback.format_exc()
58
+
59
+ text3 = text(text2, encoding)
60
+ print(u"EXCEPTION-TEXT: %s" % text3)
61
+ assert_that(text3, contains_string(u'raise Exception(u"по русски"'))
62
+ assert_that(text3, contains_string(u"Exception: по русски"))
@@ -0,0 +1,54 @@
1
+ # -*- coding: UTF-8
2
+ """
3
+ Test issue #458:
4
+
5
+ Traceback (most recent call last):
6
+ File "/usr/local/bin/behave", line 11, in <module>
7
+ sys.exit(main())
8
+ File "/Library/Python/2.7/site-packages/behave/__main__.py", line 123, in main
9
+ print(u"Exception %s: %s" % (e.__class__.__name__, text))
10
+ UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 69: ordinal not in range(128)
11
+
12
+
13
+ try:
14
+ failed = runner.run()
15
+ except ParserError as e:
16
+ print(u"ParseError: %s" % e)
17
+ except ConfigError as e:
18
+ print(u"ConfigError: %s" % e)
19
+ except FileNotFoundError as e:
20
+ print(u"FileNotFoundError: %s" % e)
21
+ except InvalidFileLocationError as e:
22
+ print(u"InvalidFileLocationError: %s" % e)
23
+ except InvalidFilenameError as e:
24
+ print(u"InvalidFilenameError: %s" % e)
25
+ except Exception as e:
26
+ # -- DIAGNOSTICS:
27
+ text = _text(e)
28
+ print(u"Exception %s: %s" % (e.__class__.__name__, text))
29
+ raise
30
+ """
31
+
32
+ from behave.textutil import text as _text
33
+ import pytest
34
+
35
+
36
+ def raise_exception(exception_class, message):
37
+ raise exception_class(message)
38
+
39
+ @pytest.mark.parametrize("exception_class, message", [
40
+ (AssertionError, "Ärgernis"),
41
+ (AssertionError, u"Ärgernis"),
42
+ (RuntimeError, "Übermut"),
43
+ (RuntimeError, u"Übermut"),
44
+ ])
45
+ def test_issue(exception_class, message):
46
+ with pytest.raises(exception_class) as e:
47
+ # runner.run()
48
+ raise_exception(exception_class, message)
49
+
50
+ # -- SHOULD NOT RAISE EXCEPTION HERE:
51
+ text = _text(e)
52
+ # -- DIAGNOSTICS:
53
+ print(u"text"+ text)
54
+ print(u"exception: %s" % e)
@@ -0,0 +1,65 @@
1
+ # -*- coding: UTF-8 -*-
2
+ """
3
+ Explore issue #495.
4
+ HINT: Problem can be reproduced if you remove encoding-declaration from above.
5
+
6
+ ::
7
+ Traceback (most recent call last):
8
+ File "/usr/local/bin/behave", line 11, in <module>
9
+ sys.exit(main())
10
+ File "/usr/local/lib/python2.7/dist-packages/behave/__main__.py", line 109, in main
11
+ failed = runner.run()
12
+ ...
13
+ File "/usr/local/lib/python2.7/dist-packages/behave/model.py", line 919, in run
14
+ runner.run_hook('after_scenario', runner.context, self)
15
+ File "/usr/local/lib/python2.7/dist-packages/behave/runner.py", line 405, in run_hook
16
+ self.hooks[name](context, *args)
17
+ File "/mnt/work/test/lib/logcapture.py", line 22, in f
18
+ v = h.getvalue()
19
+ File "/usr/local/lib/python2.7/dist-packages/behave/log_capture.py", line 99, in getvalue
20
+ return '\n'.join(self.formatter.format(r) for r in self.buffer)
21
+ UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 3807: ordinal not in range(128)
22
+ """
23
+
24
+ from behave.log_capture import capture
25
+ from behave.configuration import Configuration
26
+ import logging
27
+ import pytest
28
+
29
+ # -----------------------------------------------------------------------------
30
+ # TEST SUPPORT
31
+ # -----------------------------------------------------------------------------
32
+ # def ensure_logging_setup():
33
+ # logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
34
+
35
+ class SimpleContext(object): pass
36
+
37
+
38
+ # -----------------------------------------------------------------------------
39
+ # TESTS:
40
+ # -----------------------------------------------------------------------------
41
+ @pytest.mark.parametrize("log_message", [
42
+ u"Hello Alice", # case: unproblematic (GOOD CASE)
43
+ u"Ärgernis ist überall", # case: unicode-string
44
+ "Ärgernis", # case: byte-string (use encoding-declaration above)
45
+ ])
46
+ def test_issue(log_message):
47
+ @capture(level=logging.INFO)
48
+ def hook_after_scenario(context, message):
49
+ logging.warn(message)
50
+ raise RuntimeError()
51
+
52
+ # -- PREPARE:
53
+ # ensure_logging_setup()
54
+ context = SimpleContext()
55
+ context.config = Configuration("", load_config=False,
56
+ log_capture=True,
57
+ logging_format="%(levelname)s: %(message)s",
58
+ logging_level=logging.INFO
59
+ )
60
+ context.config.setup_logging()
61
+
62
+ # -- EXECUTE:
63
+ with pytest.raises(RuntimeError):
64
+ hook_after_scenario(context, log_message)
65
+ # EXPECT: UnicodeError is not raised
File without changes
@@ -0,0 +1,135 @@
1
+ # -*- coding: UTF-8 -*-
2
+ """
3
+
4
+ Regular expressions for winpath:
5
+ http://regexlib.com/Search.aspx?k=file+name
6
+
7
+ ^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?))\\)*[^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?$
8
+
9
+ https://github.com/kgryte/regex-filename-windows/blob/master/lib/index.js
10
+ REGEX: /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+|)([\\\/]|)([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/
11
+ Splits a Windows filename.
12
+ Modified from Node.js [source]{@link https://github.com/nodejs/node/blob/1a3b295d0f46b2189bd853800b1e63ab4d106b66/lib/path.js#L65}.
13
+ """
14
+
15
+ from __future__ import absolute_import
16
+ from behave4cmd0.command_shell_proc import \
17
+ BehaveWinCommandOutputProcessor, \
18
+ TracebackLineNormalizer, ExceptionWithPathNormalizer
19
+ import re
20
+ import pytest
21
+
22
+ # -----------------------------------------------------------------------------
23
+ # IMPLEMENTATION
24
+ # -----------------------------------------------------------------------------
25
+ # winpath_pattern = ur"^($([A-Za-z]:(\[^\]+)*)|((\[^\]+)*)|([^\]+\[^\]+)*)$"
26
+ winpath_pattern = u"^([A-Za-z]:(\\[\w\.\-]+)+)|((\\[\w\.\-]+)*)|(\s[\w\.\-]+([\w\.\-]+)*)$"
27
+ winpath_re = re.compile(winpath_pattern, re.UNICODE)
28
+
29
+ class PathNormalizer(object):
30
+ def normalize(self, output):
31
+ pattern = u'^.*$'
32
+ def __call__(self, output):
33
+ pass
34
+
35
+ # -----------------------------------------------------------------------------
36
+ # TEST CANDIDATES:
37
+ # -----------------------------------------------------------------------------
38
+ line_processor_configerrors = [
39
+ ExceptionWithPathNormalizer(
40
+ u"ConfigError: No steps directory in '(?P<path>.*)'",
41
+ "ConfigError: No steps directory in"),
42
+ BehaveWinCommandOutputProcessor.line_processors[1],
43
+ ]
44
+
45
+ line_processor_parsererrors = [
46
+ ExceptionWithPathNormalizer(
47
+ u'ParserError: Failed to parse "(?P<path>.*)"',
48
+ u'ParserError: Failed to parse'),
49
+ BehaveWinCommandOutputProcessor.line_processors[2],
50
+ ]
51
+
52
+ line_processor_ioerrors = [
53
+ ExceptionWithPathNormalizer(
54
+ # ur"No such file or directory: '(?P<path>.*)'",
55
+ # u"No such file or directory:"), # IOError
56
+ # ur"Error: \\[Errno 2\\] No such file or directory: '(?P<path>.*)'",
57
+ u"No such file or directory: '(?P<path>.*)'",
58
+ u"[Errno 2] No such file or directory:"), # IOError
59
+ BehaveWinCommandOutputProcessor.line_processors[3],
60
+ ]
61
+
62
+ line_processor_traceback = [
63
+ ExceptionWithPathNormalizer(
64
+ '^\s*File "(?P<path>.*)", line \d+, in ',
65
+ ' File "'),
66
+ BehaveWinCommandOutputProcessor.line_processors[4],
67
+ ]
68
+
69
+ # -----------------------------------------------------------------------------
70
+ # TEST SUITE
71
+ # -----------------------------------------------------------------------------
72
+ xfail = pytest.mark.xfail()
73
+
74
+ class TestWinpathRegex(object):
75
+
76
+ @pytest.mark.parametrize("winpath", [
77
+ u'C:\\foo\\bar\\alice.txt',
78
+ u'C:\\foo\\bar',
79
+ u'C:\\alice.txt',
80
+ u'C:\\.verbose',
81
+ u'.\\foo\\bar\\alice.txt',
82
+ u'..\\foo\\..\\bar\\alice.txt',
83
+ u'foo\\bar\\alice.txt',
84
+ u'alice.txt',
85
+ ])
86
+ def test_match__with_valid_winpath(self, winpath):
87
+ mo = winpath_re.match(winpath)
88
+ assert mo is not None
89
+
90
+ @xfail
91
+ @pytest.mark.parametrize("winpath", [
92
+ u'2:\\foo\\bar\\alice.txt',
93
+ u'C:\\bar\\alice.txt',
94
+ ])
95
+ def test_match__with_invalid_winpath(self, winpath):
96
+ mo = winpath_re.match(winpath)
97
+ assert mo is None
98
+
99
+ class TestPathNormalizer(object):
100
+ @pytest.mark.parametrize("output, expected", [
101
+ (u"ConfigError: No steps directory in 'C:\\one\\two\\three.txt'",
102
+ u"ConfigError: No steps directory in 'C:/one/two/three.txt'"),
103
+ ])
104
+ def test_call__with_pattern1(self, output, expected):
105
+ for line_processor in line_processor_configerrors:
106
+ actual = line_processor(output)
107
+ assert actual == expected
108
+
109
+ # ParserError: Failed to parse "(?P<path2>.*)"
110
+ @pytest.mark.parametrize("output, expected", [
111
+ (u'ParserError: Failed to parse "C:\\one\\two\\three.txt"',
112
+ u'ParserError: Failed to parse "C:/one/two/three.txt"'),
113
+ ])
114
+ def test_call__with_pattern2(self, output, expected):
115
+ for line_processor in line_processor_parsererrors:
116
+ actual = line_processor(output)
117
+ assert actual == expected
118
+
119
+ @pytest.mark.parametrize("output, expected", [
120
+ (u"Error: [Errno 2] No such file or directory: 'C:\\one\\two\\three.txt'",
121
+ u"Error: [Errno 2] No such file or directory: 'C:/one/two/three.txt'"),
122
+ ])
123
+ def test_call__with_pattern3(self, output, expected):
124
+ for index, line_processor in enumerate(line_processor_ioerrors):
125
+ actual = line_processor(output)
126
+ assert actual == expected, "line_processor %s" % index
127
+
128
+ @pytest.mark.parametrize("output, expected", [
129
+ (u' File "C:\\one\\two\\three.txt", line 123, in xxx_some_method',
130
+ u' File "C:/one/two/three.txt", line 123, in xxx_some_method'),
131
+ ])
132
+ def test_call__with_pattern4(self, output, expected):
133
+ for index, line_processor in enumerate(line_processor_traceback):
134
+ actual = line_processor(output)
135
+ assert actual == expected, "line_processor %s" % index