robotframework 6.1.1__zip → 7.0__zip

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 (307) hide show
  1. {robotframework-6.1.1 → robotframework-7.0}/INSTALL.rst +25 -25
  2. {robotframework-6.1.1 → robotframework-7.0}/PKG-INFO +6 -8
  3. {robotframework-6.1.1 → robotframework-7.0}/README.rst +3 -2
  4. {robotframework-6.1.1 → robotframework-7.0}/setup.py +3 -6
  5. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/__init__.py +4 -1
  6. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/deco.py +60 -14
  7. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/exceptions.py +6 -6
  8. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/interfaces.py +402 -67
  9. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/logger.py +27 -20
  10. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/parsing.py +4 -2
  11. robotframework-7.0/src/robot/api/py.typed +0 -0
  12. {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/gatherfailed.py +2 -2
  13. {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/languages.py +0 -9
  14. {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/settings.py +21 -14
  15. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/common/storage.js +11 -6
  16. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/htmlfilewriter.py +1 -1
  17. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/libdoc.css +10 -2
  18. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/libdoc.html +10 -0
  19. robotframework-7.0/src/robot/htmldata/rebot/common.css +362 -0
  20. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/doc_formatting.css +13 -7
  21. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/log.css +51 -10
  22. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/log.html +14 -23
  23. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/model.js +2 -4
  24. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/report.css +83 -19
  25. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/report.html +22 -7
  26. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/testdata.js +10 -3
  27. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/view.js +84 -0
  28. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/template.py +3 -3
  29. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/builder.py +0 -8
  30. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/datatypes.py +9 -10
  31. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/htmlutils.py +4 -7
  32. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/jsonbuilder.py +38 -20
  33. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/model.py +21 -28
  34. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/robotbuilder.py +50 -31
  35. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/standardtypes.py +9 -1
  36. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/xmlbuilder.py +35 -20
  37. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/xmlwriter.py +18 -38
  38. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/BuiltIn.py +255 -205
  39. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Collections.py +384 -240
  40. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/DateTime.py +73 -60
  41. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/OperatingSystem.py +6 -5
  42. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Process.py +26 -27
  43. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Remote.py +40 -36
  44. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/String.py +66 -76
  45. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/XML.py +66 -59
  46. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/__init__.py +2 -2
  47. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/__init__.py +5 -5
  48. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/body.py +44 -13
  49. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/configurer.py +15 -11
  50. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/control.py +226 -84
  51. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/filter.py +31 -25
  52. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/itemlist.py +9 -8
  53. robotframework-7.0/src/robot/model/keyword.py +77 -0
  54. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/message.py +19 -10
  55. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/modelobject.py +25 -7
  56. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/namepatterns.py +3 -25
  57. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/stats.py +9 -15
  58. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/tags.py +1 -1
  59. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/testcase.py +15 -27
  60. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/testsuite.py +17 -26
  61. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/visitor.py +35 -8
  62. robotframework-7.0/src/robot/output/console/dotted.py +90 -0
  63. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/quiet.py +3 -2
  64. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/verbose.py +61 -61
  65. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/debugfile.py +39 -24
  66. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/filelogger.py +18 -15
  67. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/librarylogger.py +3 -2
  68. robotframework-7.0/src/robot/output/listeners.py +753 -0
  69. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/logger.py +216 -80
  70. robotframework-7.0/src/robot/output/loggerapi.py +215 -0
  71. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/loggerhelper.py +23 -56
  72. robotframework-7.0/src/robot/output/output.py +185 -0
  73. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/stdoutlogsplitter.py +8 -5
  74. robotframework-7.0/src/robot/output/xmllogger.py +459 -0
  75. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/blocklexers.py +17 -13
  76. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/context.py +12 -2
  77. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/lexer.py +1 -1
  78. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/settings.py +6 -3
  79. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/statementlexers.py +39 -10
  80. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/tokens.py +27 -29
  81. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/model/blocks.py +19 -6
  82. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/model/statements.py +193 -94
  83. robotframework-7.0/src/robot/parsing/model/visitor.py +100 -0
  84. {robotframework-6.1.1 → robotframework-7.0}/src/robot/rebot.py +2 -0
  85. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/expandkeywordmatcher.py +1 -1
  86. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jsbuildingcontext.py +8 -6
  87. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jsmodelbuilders.py +88 -61
  88. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/logreportwriters.py +16 -10
  89. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/outputwriter.py +18 -2
  90. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/resultwriter.py +4 -4
  91. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/stringcache.py +3 -3
  92. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/xunitwriter.py +15 -21
  93. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/__init__.py +3 -2
  94. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/configurer.py +12 -9
  95. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/executionresult.py +56 -8
  96. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/flattenkeywordmatcher.py +48 -9
  97. robotframework-7.0/src/robot/result/keywordremover.py +207 -0
  98. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/merger.py +1 -1
  99. robotframework-7.0/src/robot/result/model.py +1185 -0
  100. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/modeldeprecation.py +9 -3
  101. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/resultbuilder.py +46 -36
  102. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/xmlelementhandlers.py +83 -43
  103. {robotframework-6.1.1 → robotframework-7.0}/src/robot/run.py +2 -0
  104. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/__init__.py +14 -4
  105. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/__init__.py +2 -1
  106. robotframework-7.0/src/robot/running/arguments/argumentconverter.py +100 -0
  107. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentmapper.py +26 -24
  108. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentparser.py +82 -60
  109. robotframework-7.0/src/robot/running/arguments/argumentresolver.py +158 -0
  110. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentspec.py +83 -116
  111. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentvalidator.py +33 -27
  112. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/customconverters.py +15 -12
  113. robotframework-7.0/src/robot/running/arguments/embedded.py +145 -0
  114. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/typeconverters.py +233 -213
  115. robotframework-7.0/src/robot/running/arguments/typeinfo.py +317 -0
  116. robotframework-7.0/src/robot/running/arguments/typeinfoparser.py +219 -0
  117. robotframework-7.0/src/robot/running/arguments/typevalidator.py +60 -0
  118. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/bodyrunner.py +147 -129
  119. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/builders.py +2 -1
  120. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/parsers.py +10 -11
  121. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/settings.py +9 -17
  122. robotframework-7.0/src/robot/running/builder/transformers.py +535 -0
  123. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/context.py +113 -31
  124. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/dynamicmethods.py +62 -34
  125. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/importer.py +27 -49
  126. robotframework-7.0/src/robot/running/invalidkeyword.py +67 -0
  127. robotframework-7.0/src/robot/running/keywordfinder.py +91 -0
  128. robotframework-7.0/src/robot/running/keywordimplementation.py +164 -0
  129. robotframework-7.0/src/robot/running/librarykeyword.py +392 -0
  130. robotframework-7.0/src/robot/running/librarykeywordrunner.py +250 -0
  131. robotframework-7.0/src/robot/running/libraryscopes.py +115 -0
  132. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/model.py +195 -377
  133. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/namespace.py +124 -137
  134. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/outputcapture.py +20 -12
  135. robotframework-7.0/src/robot/running/resourcemodel.py +448 -0
  136. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/statusreporter.py +16 -13
  137. robotframework-7.0/src/robot/running/suiterunner.py +265 -0
  138. robotframework-7.0/src/robot/running/testlibraries.py +500 -0
  139. robotframework-7.0/src/robot/running/userkeywordrunner.py +260 -0
  140. {robotframework-6.1.1 → robotframework-7.0}/src/robot/testdoc.py +18 -13
  141. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/__init__.py +53 -35
  142. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/connectioncache.py +64 -59
  143. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/dotdict.py +3 -0
  144. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/encodingsniffer.py +1 -1
  145. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/escaping.py +19 -19
  146. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/importer.py +2 -2
  147. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/markupwriters.py +23 -15
  148. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/misc.py +1 -2
  149. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/normalizing.py +9 -24
  150. robotframework-7.0/src/robot/utils/notset.py +33 -0
  151. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/platform.py +15 -5
  152. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotio.py +9 -9
  153. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotpath.py +1 -0
  154. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robottime.py +122 -90
  155. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robottypes.py +21 -31
  156. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/setter.py +0 -5
  157. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/text.py +7 -4
  158. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/unic.py +2 -2
  159. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/__init__.py +2 -2
  160. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/assigner.py +17 -19
  161. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/evaluation.py +20 -17
  162. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/filesetter.py +80 -80
  163. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/replacer.py +33 -36
  164. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/scopes.py +17 -12
  165. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/search.py +66 -41
  166. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/store.py +14 -16
  167. robotframework-7.0/src/robot/variables/tablesetter.py +164 -0
  168. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/variables.py +1 -1
  169. {robotframework-6.1.1 → robotframework-7.0}/src/robot/version.py +1 -1
  170. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/PKG-INFO +6 -8
  171. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/SOURCES.txt +10 -8
  172. {robotframework-6.1.1 → robotframework-7.0}/tasks.py +6 -6
  173. robotframework-6.1.1/src/robot/htmldata/rebot/common.css +0 -239
  174. robotframework-6.1.1/src/robot/libraries/Reserved.py +0 -48
  175. robotframework-6.1.1/src/robot/model/keyword.py +0 -173
  176. robotframework-6.1.1/src/robot/output/console/dotted.py +0 -90
  177. robotframework-6.1.1/src/robot/output/listenerarguments.py +0 -165
  178. robotframework-6.1.1/src/robot/output/listenermethods.py +0 -113
  179. robotframework-6.1.1/src/robot/output/listeners.py +0 -174
  180. robotframework-6.1.1/src/robot/output/output.py +0 -95
  181. robotframework-6.1.1/src/robot/output/xmllogger.py +0 -354
  182. robotframework-6.1.1/src/robot/parsing/model/visitor.py +0 -67
  183. robotframework-6.1.1/src/robot/result/keywordremover.py +0 -183
  184. robotframework-6.1.1/src/robot/result/model.py +0 -957
  185. robotframework-6.1.1/src/robot/running/arguments/argumentconverter.py +0 -79
  186. robotframework-6.1.1/src/robot/running/arguments/argumentresolver.py +0 -131
  187. robotframework-6.1.1/src/robot/running/arguments/embedded.py +0 -146
  188. robotframework-6.1.1/src/robot/running/arguments/typevalidator.py +0 -56
  189. robotframework-6.1.1/src/robot/running/builder/transformers.py +0 -642
  190. robotframework-6.1.1/src/robot/running/handlers.py +0 -321
  191. robotframework-6.1.1/src/robot/running/handlerstore.py +0 -66
  192. robotframework-6.1.1/src/robot/running/librarykeywordrunner.py +0 -238
  193. robotframework-6.1.1/src/robot/running/libraryscopes.py +0 -97
  194. robotframework-6.1.1/src/robot/running/modelcombiner.py +0 -32
  195. robotframework-6.1.1/src/robot/running/suiterunner.py +0 -248
  196. robotframework-6.1.1/src/robot/running/testlibraries.py +0 -423
  197. robotframework-6.1.1/src/robot/running/usererrorhandler.py +0 -75
  198. robotframework-6.1.1/src/robot/running/userkeyword.py +0 -111
  199. robotframework-6.1.1/src/robot/running/userkeywordrunner.py +0 -274
  200. robotframework-6.1.1/src/robot/variables/tablesetter.py +0 -156
  201. {robotframework-6.1.1 → robotframework-7.0}/AUTHORS.rst +0 -0
  202. {robotframework-6.1.1 → robotframework-7.0}/BUILD.rst +0 -0
  203. {robotframework-6.1.1 → robotframework-7.0}/CONTRIBUTING.rst +0 -0
  204. {robotframework-6.1.1 → robotframework-7.0}/COPYRIGHT.txt +0 -0
  205. {robotframework-6.1.1 → robotframework-7.0}/LICENSE.txt +0 -0
  206. {robotframework-6.1.1 → robotframework-7.0}/MANIFEST.in +0 -0
  207. {robotframework-6.1.1 → robotframework-7.0}/setup.cfg +0 -0
  208. {robotframework-6.1.1 → robotframework-7.0}/src/robot/__init__.py +0 -0
  209. {robotframework-6.1.1 → robotframework-7.0}/src/robot/__main__.py +0 -0
  210. {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/__init__.py +0 -0
  211. {robotframework-6.1.1 → robotframework-7.0}/src/robot/errors.py +0 -0
  212. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/__init__.py +0 -0
  213. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/common/__init__.py +0 -0
  214. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/common/js_disabled.css +0 -0
  215. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/jsonwriter.py +0 -0
  216. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/__init__.py +0 -0
  217. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
  218. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.min.js +0 -0
  219. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
  220. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
  221. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
  222. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/__init__.py +0 -0
  223. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/doc_formatting.css +0 -0
  224. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/print.css +0 -0
  225. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/pygments.css +0 -0
  226. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/__init__.py +0 -0
  227. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/fileloading.js +0 -0
  228. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/log.js +0 -0
  229. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/print.css +0 -0
  230. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/util.js +0 -0
  231. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/testdoc/__init__.py +0 -0
  232. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/testdoc/testdoc.css +0 -0
  233. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/testdoc/testdoc.html +0 -0
  234. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdoc.py +0 -0
  235. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/__init__.py +0 -0
  236. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/consoleviewer.py +0 -0
  237. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/htmlwriter.py +0 -0
  238. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/jsonwriter.py +0 -0
  239. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/output.py +0 -0
  240. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/writer.py +0 -0
  241. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Dialogs.py +0 -0
  242. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Easter.py +0 -0
  243. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Screenshot.py +0 -0
  244. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Telnet.py +0 -0
  245. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/dialogs_py.py +0 -0
  246. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/fixture.py +0 -0
  247. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/metadata.py +0 -0
  248. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/modifier.py +0 -0
  249. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/statistics.py +0 -0
  250. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/suitestatistics.py +0 -0
  251. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/tagsetter.py +0 -0
  252. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/tagstatistics.py +0 -0
  253. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/totalstatistics.py +0 -0
  254. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/__init__.py +0 -0
  255. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/__init__.py +0 -0
  256. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/highlighting.py +0 -0
  257. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/pyloggingconf.py +0 -0
  258. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/__init__.py +0 -0
  259. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/__init__.py +0 -0
  260. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/tokenizer.py +0 -0
  261. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/model/__init__.py +0 -0
  262. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/__init__.py +0 -0
  263. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/blockparsers.py +0 -0
  264. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/fileparser.py +0 -0
  265. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/parser.py +0 -0
  266. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/suitestructure.py +0 -0
  267. {robotframework-6.1.1 → robotframework-7.0}/src/robot/pythonpathsetter.py +0 -0
  268. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/__init__.py +0 -0
  269. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jsexecutionresult.py +0 -0
  270. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jswriter.py +0 -0
  271. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/executionerrors.py +0 -0
  272. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/messagefilter.py +0 -0
  273. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/suiteteardownfailed.py +0 -0
  274. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/visitor.py +0 -0
  275. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/__init__.py +0 -0
  276. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/randomizer.py +0 -0
  277. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/runkwregister.py +0 -0
  278. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/signalhandler.py +0 -0
  279. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/status.py +0 -0
  280. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/timeouts/__init__.py +0 -0
  281. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/timeouts/posix.py +0 -0
  282. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/timeouts/windows.py +0 -0
  283. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/application.py +0 -0
  284. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/argumentparser.py +0 -0
  285. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/asserts.py +0 -0
  286. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/charwidth.py +0 -0
  287. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/compress.py +0 -0
  288. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/encoding.py +0 -0
  289. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/error.py +0 -0
  290. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/etreewrapper.py +0 -0
  291. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/filereader.py +0 -0
  292. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/frange.py +0 -0
  293. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/htmlformatters.py +0 -0
  294. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/markuputils.py +0 -0
  295. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/match.py +0 -0
  296. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/recommendations.py +0 -0
  297. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/restreader.py +0 -0
  298. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotenv.py +0 -0
  299. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotinspect.py +0 -0
  300. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/sortable.py +0 -0
  301. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/typehints.py +0 -0
  302. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/finders.py +0 -0
  303. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/notfound.py +0 -0
  304. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/resolvable.py +0 -0
  305. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/dependency_links.txt +0 -0
  306. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/entry_points.txt +0 -0
  307. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/top_level.txt +0 -0
@@ -1,239 +0,0 @@
1
- /* Generic and misc styles */
2
- body {
3
- font-family: Helvetica, sans-serif;
4
- font-size: 0.8em;
5
- color: black;
6
- padding: 6px;
7
- background: white;
8
- }
9
- table {
10
- table-layout: fixed;
11
- word-wrap: break-word;
12
- empty-cells: show;
13
- font-size: 1em;
14
- }
15
- th, td {
16
- vertical-align: top;
17
- }
18
- br {
19
- mso-data-placement: same-cell; /* maintain line breaks in Excel */
20
- }
21
- hr {
22
- background: #ccc;
23
- height: 1px;
24
- border: 0;
25
- }
26
- a, a:link, a:visited {
27
- text-decoration: none;
28
- color: #15c;
29
- }
30
- a > img {
31
- border: 1px solid #15c !important;
32
- }
33
- a:hover, a:active {
34
- text-decoration: underline;
35
- color: #61c;
36
- }
37
- .parent-name {
38
- font-size: 0.7em;
39
- letter-spacing: -0.07em;
40
- }
41
- .message {
42
- white-space: pre-wrap;
43
- }
44
- /* Headers */
45
- #header {
46
- width: 65em;
47
- height: 3em;
48
- margin: 6px 0;
49
- }
50
- h1 {
51
- float: left;
52
- margin: 0 0 0.5em 0;
53
- width: 75%;
54
- }
55
- h2 {
56
- clear: left;
57
- }
58
- #generated {
59
- float: right;
60
- text-align: right;
61
- font-size: 0.9em;
62
- white-space: nowrap;
63
- }
64
- /* Documentation headers */
65
- .doc > h2 {
66
- font-size: 1.2em;
67
- }
68
- .doc > h3 {
69
- font-size: 1.1em;
70
- }
71
- .doc > h4 {
72
- font-size: 1.0em;
73
- }
74
- /* Status text colors -- !important allows using them in links */
75
- .fail {
76
- color: #ce3e01 !important;
77
- font-weight: bold;
78
- }
79
- .pass {
80
- color: #098a09 !important;
81
- }
82
- .skip {
83
- color: #927201 !important;
84
- font-weight: bold;
85
- }
86
- .label {
87
- padding: 2px 5px;
88
- font-size: 0.75em;
89
- letter-spacing: 1px;
90
- white-space: nowrap;
91
- color: black;
92
- background-color: #ddd;
93
- border-radius: 3px;
94
- }
95
- .label.debug, .label.trace, .label.error, .label.keyword {
96
- letter-spacing: 0;
97
- }
98
- .label.pass, .label.fail, .label.error, .label.skip, .label.warn {
99
- font-weight: bold;
100
- }
101
- .label.pass {
102
- background-color: #97bd61;
103
- color: #000 !important;
104
- }
105
- .label.fail, .label.error {
106
- background-color: #ce3e01;
107
- color: #fff !important;
108
- }
109
- .label.skip, .label.warn {
110
- background-color: #fed84f;
111
- color: #000 !important;
112
- }
113
- /* Top right header */
114
- #top-right-header {
115
- position: fixed;
116
- top: 0;
117
- right: 0;
118
- z-index: 1000;
119
- width: 12em;
120
- text-align: center;
121
- }
122
- #report-or-log-link a {
123
- display: block;
124
- background: black;
125
- color: white;
126
- text-decoration: none;
127
- font-weight: bold;
128
- letter-spacing: 0.1em;
129
- padding: 0.3em 0;
130
- border-bottom-left-radius: 4px;
131
- }
132
- #report-or-log-link a:hover {
133
- color: #ddd;
134
- }
135
- #log-level-selector {
136
- padding: 0.3em 0;
137
- font-size: 0.9em;
138
- border-bottom-left-radius: 4px;
139
- background: #ddd;
140
- }
141
- /* Statistics table */
142
- .statistics {
143
- width: 65em;
144
- border-collapse: collapse;
145
- empty-cells: show;
146
- margin-bottom: 1em;
147
- }
148
- .statistics tr:hover {
149
- background: #f4f4f4;
150
- cursor: pointer;
151
- }
152
- .statistics th, .statistics td {
153
- border: 1px solid #ccc;
154
- padding: 0.1em 0.3em;
155
- }
156
- .statistics th {
157
- background-color: #ddd;
158
- padding: 0.2em 0.3em;
159
- }
160
- .statistics td {
161
- vertical-align: middle;
162
- }
163
- .stats-col-stat {
164
- width: 4.5em;
165
- text-align: center;
166
- }
167
- .stats-col-elapsed {
168
- width: 5.5em;
169
- text-align: center;
170
- }
171
- .stats-col-graph {
172
- width: 9em;
173
- }
174
- th.stats-col-graph:hover {
175
- cursor: default;
176
- }
177
- .stat-name {
178
- float: left;
179
- }
180
- .stat-name a, .stat-name span {
181
- font-weight: bold;
182
- }
183
- .tag-links {
184
- font-size: 0.9em;
185
- float: right;
186
- margin-top: 0.05em;
187
- }
188
- .tag-links span {
189
- margin-left: 0.2em;
190
- }
191
- /* Statistics graph */
192
- .graph, .empty-graph {
193
- border: 1px solid #ccc;
194
- width: auto;
195
- height: 7px;
196
- padding: 0;
197
- background: #aaa;
198
- }
199
- .empty-graph {
200
- background: #eee;
201
- }
202
- .pass-bar, .fail-bar, .skip-bar {
203
- float: left;
204
- height: 100%;
205
- }
206
- .fail-bar {
207
- background: #ce3e01;
208
- }
209
- .pass-bar {
210
- background: #97bd61;
211
- }
212
- .skip-bar {
213
- background: #fed84f;
214
- }
215
- /* Tablesorter - adapted from provided Blue Skin */
216
- .tablesorter-header {
217
- background-image: url(data:image/gif;base64,R0lGODlhCwAJAIAAAH9/fwAAACH5BAEAAAEALAAAAAALAAkAAAIRjAOnBr3cnIr0WUjTrC9e9BQAOw==);
218
- background-repeat: no-repeat;
219
- background-position: center right;
220
- cursor: pointer;
221
- }
222
- .tablesorter-header:hover {
223
- background-color: #ccc;
224
- }
225
- .tablesorter-headerAsc {
226
- background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlBWnFr3cnIr0WQOyBmvzp13CpxQAOw==);
227
- background-color: #ccc !important;
228
- }
229
- .tablesorter-headerDesc {
230
- background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlAWnBr3cnIr0WROyDmvzp13CpxQAOw==);
231
- background-color: #ccc !important;
232
- }
233
- .sorter-false {
234
- background-image: none;
235
- cursor: default;
236
- }
237
- .sorter-false:hover {
238
- background-color: #ddd;
239
- }
@@ -1,48 +0,0 @@
1
- # Copyright 2008-2015 Nokia Networks
2
- # Copyright 2016- Robot Framework Foundation
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- from robot.running import RUN_KW_REGISTER
17
-
18
-
19
- RESERVED_KEYWORDS = ['for', 'while', 'break', 'continue', 'end',
20
- 'if', 'else', 'elif', 'else if', 'return']
21
-
22
-
23
- class Reserved:
24
- ROBOT_LIBRARY_SCOPE = 'GLOBAL'
25
-
26
- def __init__(self):
27
- for kw in RESERVED_KEYWORDS:
28
- self._add_reserved(kw)
29
-
30
- def _add_reserved(self, kw):
31
- RUN_KW_REGISTER.register_run_keyword('Reserved', kw,
32
- args_to_process=0,
33
- deprecation_warning=False)
34
- self.__dict__[kw] = lambda *args, **kwargs: self._run_reserved(kw)
35
-
36
- def _run_reserved(self, kw):
37
- error = "'%s' is a reserved keyword." % kw.title()
38
- if kw in ('for', 'end', 'if', 'else', 'else if'):
39
- error += " It must be an upper case '%s'" % kw.upper()
40
- if kw in ('else', 'else if'):
41
- error += " and follow an opening 'IF'"
42
- if kw == 'end':
43
- error += " when used as a marker to close a block."
44
- else:
45
- error += " when used as a marker."
46
- if kw == 'elif':
47
- error += " The marker to use with 'IF' is 'ELSE IF'."
48
- raise Exception(error)
@@ -1,173 +0,0 @@
1
- # Copyright 2008-2015 Nokia Networks
2
- # Copyright 2016- Robot Framework Foundation
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- from typing import cast, Sequence, Type, TYPE_CHECKING
17
- import warnings
18
-
19
- from .body import Body, BodyItem, BodyItemParent
20
- from .itemlist import ItemList
21
- from .modelobject import DataDict
22
-
23
- if TYPE_CHECKING:
24
- from .visitor import SuiteVisitor
25
-
26
-
27
- @Body.register
28
- class Keyword(BodyItem):
29
- """Base model for a single keyword.
30
-
31
- Extended by :class:`robot.running.model.Keyword` and
32
- :class:`robot.result.model.Keyword`.
33
- """
34
- repr_args = ('name', 'args', 'assign')
35
- __slots__ = ['_name', 'args', 'assign', 'type']
36
-
37
- def __init__(self, name: 'str|None' = '',
38
- args: Sequence[str] = (),
39
- assign: Sequence[str] = (),
40
- type: str = BodyItem.KEYWORD,
41
- parent: BodyItemParent = None):
42
- self.name = name
43
- self.args = tuple(args)
44
- self.assign = tuple(assign)
45
- self.type = type
46
- self.parent = parent
47
-
48
- @property
49
- def name(self) -> 'str|None':
50
- return self._name
51
-
52
- @name.setter
53
- def name(self, name: 'str|None'):
54
- self._name = name
55
-
56
- @property
57
- def id(self) -> 'str|None':
58
- if not self:
59
- return None
60
- return super().id
61
-
62
- def visit(self, visitor: 'SuiteVisitor'):
63
- """:mod:`Visitor interface <robot.model.visitor>` entry-point."""
64
- if self:
65
- visitor.visit_keyword(self)
66
-
67
- def __bool__(self) -> bool:
68
- return self.name is not None
69
-
70
- def __str__(self) -> str:
71
- parts = list(self.assign) + [self.name] + list(self.args)
72
- return ' '.join(str(p) for p in parts)
73
-
74
- def to_dict(self) -> DataDict:
75
- data: DataDict = {'name': self.name}
76
- if self.args:
77
- data['args'] = self.args
78
- if self.assign:
79
- data['assign'] = self.assign
80
- return data
81
-
82
-
83
- # FIXME: Remote in RF 7.
84
- class Keywords(ItemList[BodyItem]):
85
- """A list-like object representing keywords in a suite, a test or a keyword.
86
-
87
- Read-only and deprecated since Robot Framework 4.0.
88
- """
89
- __slots__ = []
90
- deprecation_message = (
91
- "'keywords' attribute is read-only and deprecated since Robot Framework 4.0. "
92
- "Use 'body', 'setup' or 'teardown' instead."
93
- )
94
-
95
- def __init__(self, parent: BodyItemParent = None,
96
- keywords: Sequence[BodyItem] = ()):
97
- warnings.warn(self.deprecation_message, UserWarning)
98
- ItemList.__init__(self, object, {'parent': parent})
99
- if keywords:
100
- ItemList.extend(self, keywords)
101
-
102
- @property
103
- def setup(self) -> 'Keyword|None':
104
- if self and self[0].type == 'SETUP':
105
- return cast(Keyword, self[0])
106
- return None
107
-
108
- @setup.setter
109
- def setup(self, kw):
110
- self.raise_deprecation_error()
111
-
112
- def create_setup(self, *args, **kwargs):
113
- self.raise_deprecation_error()
114
-
115
- @property
116
- def teardown(self) -> 'Keyword|None':
117
- if self and self[-1].type == 'TEARDOWN':
118
- return cast(Keyword, self[-1])
119
- return None
120
-
121
- @teardown.setter
122
- def teardown(self, kw: Keyword):
123
- self.raise_deprecation_error()
124
-
125
- def create_teardown(self, *args, **kwargs):
126
- self.raise_deprecation_error()
127
-
128
- @property
129
- def all(self) -> 'Keywords':
130
- """Iterates over all keywords, including setup and teardown."""
131
- return self
132
-
133
- @property
134
- def normal(self) -> 'list[BodyItem]':
135
- """Iterates over normal keywords, omitting setup and teardown."""
136
- return [kw for kw in self if kw.type not in ('SETUP', 'TEARDOWN')]
137
-
138
- def __setitem__(self, index: int, item: Keyword):
139
- self.raise_deprecation_error()
140
-
141
- def create(self, *args, **kwargs):
142
- self.raise_deprecation_error()
143
-
144
- def append(self, item: Keyword):
145
- self.raise_deprecation_error()
146
-
147
- def extend(self, items: Sequence[Keyword]):
148
- self.raise_deprecation_error()
149
-
150
- def insert(self, index: int, item: Keyword):
151
- self.raise_deprecation_error()
152
-
153
- def pop(self, *index: int):
154
- self.raise_deprecation_error()
155
-
156
- def remove(self, item: Keyword):
157
- self.raise_deprecation_error()
158
-
159
- def clear(self):
160
- self.raise_deprecation_error()
161
-
162
- def __delitem__(self, index: int):
163
- self.raise_deprecation_error()
164
-
165
- def sort(self):
166
- self.raise_deprecation_error()
167
-
168
- def reverse(self):
169
- self.raise_deprecation_error()
170
-
171
- @classmethod
172
- def raise_deprecation_error(cls: 'Type[Keywords]'):
173
- raise AttributeError(cls.deprecation_message)
@@ -1,90 +0,0 @@
1
- # Copyright 2008-2015 Nokia Networks
2
- # Copyright 2016- Robot Framework Foundation
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- import sys
17
-
18
- from robot.model import SuiteVisitor
19
- from robot.utils import plural_or_not, secs_to_timestr
20
-
21
- from .highlighting import HighlightingStream
22
-
23
-
24
- class DottedOutput:
25
-
26
- def __init__(self, width=78, colors='AUTO', stdout=None, stderr=None):
27
- self._width = width
28
- self._stdout = HighlightingStream(stdout or sys.__stdout__, colors)
29
- self._stderr = HighlightingStream(stderr or sys.__stderr__, colors)
30
- self._markers_on_row = 0
31
-
32
- def start_suite(self, suite):
33
- if not suite.parent:
34
- self._stdout.write("Running suite '%s' with %d %s%s.\n"
35
- % (suite.name, suite.test_count,
36
- 'test' if not suite.rpa else 'task',
37
- plural_or_not(suite.test_count)))
38
- self._stdout.write('=' * self._width + '\n')
39
-
40
- def end_test(self, test):
41
- if self._markers_on_row == self._width:
42
- self._stdout.write('\n')
43
- self._markers_on_row = 0
44
- self._markers_on_row += 1
45
- if test.passed:
46
- self._stdout.write('.')
47
- elif test.skipped:
48
- self._stdout.highlight('s', 'SKIP')
49
- elif test.tags.robot('exit'):
50
- self._stdout.write('x')
51
- else:
52
- self._stdout.highlight('F', 'FAIL')
53
-
54
- def end_suite(self, suite):
55
- if not suite.parent:
56
- self._stdout.write('\n')
57
- StatusReporter(self._stdout, self._width).report(suite)
58
- self._stdout.write('\n')
59
-
60
- def message(self, msg):
61
- if msg.level in ('WARN', 'ERROR'):
62
- self._stderr.error(msg.message, msg.level)
63
-
64
- def output_file(self, name, path):
65
- self._stdout.write('%-8s %s\n' % (name+':', path))
66
-
67
-
68
- class StatusReporter(SuiteVisitor):
69
-
70
- def __init__(self, stream, width):
71
- self._stream = stream
72
- self._width = width
73
-
74
- def report(self, suite):
75
- suite.visit(self)
76
- stats = suite.statistics
77
- self._stream.write("%s\nRun suite '%s' with %d %s%s in %s.\n\n"
78
- % ('=' * self._width, suite.name, stats.total,
79
- 'test' if not suite.rpa else 'task',
80
- plural_or_not(stats.total),
81
- secs_to_timestr(suite.elapsedtime/1000.0)))
82
- self._stream.highlight(suite.status + ('PED' if suite.status == 'SKIP' else 'ED'), suite.status)
83
- self._stream.write('\n%s\n' % stats.message)
84
-
85
- def visit_test(self, test):
86
- if test.failed and not test.tags.robot('exit'):
87
- self._stream.write('-' * self._width + '\n')
88
- self._stream.highlight('FAIL')
89
- self._stream.write(': %s\n%s\n' % (test.longname,
90
- test.message.strip()))