robotframework 7.1rc2__zip → 7.2b1__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.
- {robotframework-7.1rc2 → robotframework-7.2b1}/BUILD.rst +7 -7
- {robotframework-7.1rc2 → robotframework-7.2b1}/PKG-INFO +2 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/setup.py +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/__init__.py +33 -9
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/deco.py +8 -6
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/interfaces.py +66 -15
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/parsing.py +72 -68
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/conf/languages.py +4 -3
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/conf/settings.py +11 -10
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/errors.py +3 -3
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/htmlfilewriter.py +3 -0
- robotframework-7.2b1/src/robot/htmldata/libdoc/libdoc.html +408 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/log.html +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/report.html +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/testdata.js +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/template.py +0 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdoc.py +19 -11
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/htmlwriter.py +7 -4
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/model.py +7 -5
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/writer.py +2 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/BuiltIn.py +121 -32
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Collections.py +20 -7
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/__init__.py +3 -3
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/body.py +48 -57
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/control.py +35 -4
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/message.py +13 -8
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/modelobject.py +26 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/statistics.py +13 -9
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/stats.py +12 -14
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/suitestatistics.py +8 -9
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/tags.py +10 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/tagstatistics.py +7 -8
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/testcase.py +1 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/testsuite.py +1 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/totalstatistics.py +14 -21
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/visitor.py +29 -3
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/__init__.py +3 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/dotted.py +6 -3
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/highlighting.py +18 -10
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/debugfile.py +3 -3
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/filelogger.py +7 -3
- robotframework-7.2b1/src/robot/output/jsonlogger.py +338 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/librarylogger.py +12 -11
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/listeners.py +49 -47
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/logger.py +33 -20
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/loggerapi.py +6 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/loggerhelper.py +29 -57
- robotframework-7.2b1/src/robot/output/loglevel.py +54 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/output.py +21 -17
- robotframework-7.2b1/src/robot/output/outputfile.py +174 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/pyloggingconf.py +2 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/xmllogger.py +40 -169
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/blocklexers.py +25 -12
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/statementlexers.py +16 -7
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/tokens.py +2 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/model/__init__.py +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/model/blocks.py +34 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/model/statements.py +32 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/parser/blockparsers.py +7 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/rebot.py +10 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/jsmodelbuilders.py +1 -1
- robotframework-7.2b1/src/robot/reporting/outputwriter.py +30 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/__init__.py +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/executionerrors.py +9 -9
- robotframework-7.2b1/src/robot/result/executionresult.py +331 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/messagefilter.py +14 -10
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/model.py +90 -18
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/resultbuilder.py +2 -5
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/xmlelementhandlers.py +20 -9
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/run.py +18 -6
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/__init__.py +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/embedded.py +7 -6
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/typeconverters.py +14 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/typeinfo.py +23 -4
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/bodyrunner.py +41 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/settings.py +2 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/transformers.py +46 -20
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/context.py +22 -11
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/librarykeyword.py +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/librarykeywordrunner.py +29 -23
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/model.py +31 -4
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/outputcapture.py +2 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/signalhandler.py +7 -3
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/status.py +49 -38
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/statusreporter.py +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/suiterunner.py +22 -15
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/userkeywordrunner.py +4 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/importer.py +39 -23
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/unic.py +7 -8
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/evaluation.py +21 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/replacer.py +20 -24
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/scopes.py +19 -9
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/variables.py +4 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/version.py +1 -1
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/PKG-INFO +2 -2
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/SOURCES.txt +3 -4
- robotframework-7.1rc2/src/robot/htmldata/libdoc/doc_formatting.css +0 -74
- robotframework-7.1rc2/src/robot/htmldata/libdoc/libdoc.css +0 -747
- robotframework-7.1rc2/src/robot/htmldata/libdoc/libdoc.html +0 -702
- robotframework-7.1rc2/src/robot/htmldata/libdoc/print.css +0 -11
- robotframework-7.1rc2/src/robot/htmldata/libdoc/pygments.css +0 -162
- robotframework-7.1rc2/src/robot/reporting/outputwriter.py +0 -48
- robotframework-7.1rc2/src/robot/result/executionresult.py +0 -201
- {robotframework-7.1rc2 → robotframework-7.2b1}/AUTHORS.rst +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/CONTRIBUTING.rst +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/COPYRIGHT.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/INSTALL.rst +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/LICENSE.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/MANIFEST.in +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/README.rst +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/setup.cfg +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/__main__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/exceptions.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/logger.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/py.typed +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/conf/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/conf/gatherfailed.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/common/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/common/js_disabled.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/common/storage.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/jsonwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jquery.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/libdoc/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/common.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/doc_formatting.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/fileloading.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/log.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/log.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/model.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/print.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/report.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/util.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/view.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/testdoc/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/testdoc/testdoc.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/testdoc/testdoc.html +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/builder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/consoleviewer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/datatypes.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/htmlutils.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/jsonbuilder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/jsonwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/output.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/robotbuilder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/standardtypes.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/xmlbuilder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/xmlwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/DateTime.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Dialogs.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Easter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/OperatingSystem.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Process.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Remote.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Screenshot.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/String.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Telnet.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/XML.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/dialogs_py.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/configurer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/filter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/fixture.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/itemlist.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/keyword.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/metadata.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/modifier.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/namepatterns.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/tagsetter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/quiet.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/verbose.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/stdoutlogsplitter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/context.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/lexer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/settings.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/tokenizer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/model/visitor.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/parser/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/parser/fileparser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/parser/parser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/suitestructure.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/pythonpathsetter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/expandkeywordmatcher.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/jsbuildingcontext.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/jsexecutionresult.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/jswriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/logreportwriters.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/resultwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/stringcache.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/xunitwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/configurer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/flattenkeywordmatcher.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/keywordremover.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/merger.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/modeldeprecation.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/suiteteardownfailed.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/visitor.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentconverter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentmapper.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentparser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentresolver.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentspec.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentvalidator.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/customconverters.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/typeinfoparser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/typevalidator.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/builders.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/parsers.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/dynamicmethods.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/importer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/invalidkeyword.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/keywordfinder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/keywordimplementation.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/libraryscopes.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/namespace.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/randomizer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/resourcemodel.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/runkwregister.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/testlibraries.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/timeouts/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/timeouts/nosupport.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/timeouts/posix.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/timeouts/windows.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/testdoc.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/application.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/argumentparser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/asserts.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/charwidth.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/compress.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/connectioncache.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/dotdict.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/encoding.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/encodingsniffer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/error.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/escaping.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/etreewrapper.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/filereader.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/frange.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/htmlformatters.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/markuputils.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/markupwriters.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/match.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/misc.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/normalizing.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/notset.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/platform.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/recommendations.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/restreader.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robotenv.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robotinspect.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robotio.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robotpath.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robottime.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robottypes.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/setter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/sortable.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/text.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/typehints.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/assigner.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/filesetter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/finders.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/notfound.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/resolvable.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/search.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/store.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/tablesetter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/dependency_links.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/entry_points.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/top_level.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.2b1}/tasks.py +0 -0
|
@@ -76,7 +76,7 @@ __ https://github.com/robotframework/robotframework/tree/master/atest#schema-val
|
|
|
76
76
|
Preparation
|
|
77
77
|
-----------
|
|
78
78
|
|
|
79
|
-
1. Check that you are on the
|
|
79
|
+
1. Check that you are on the right branch and have nothing left to commit,
|
|
80
80
|
pull, or push::
|
|
81
81
|
|
|
82
82
|
git branch
|
|
@@ -93,13 +93,13 @@ Preparation
|
|
|
93
93
|
|
|
94
94
|
VERSION=<version>
|
|
95
95
|
|
|
96
|
-
For example, ``VERSION=
|
|
96
|
+
For example, ``VERSION=7.1.1`` or ``VERSION=7.2a2``. No ``v`` prefix!
|
|
97
97
|
|
|
98
98
|
Release notes
|
|
99
99
|
-------------
|
|
100
100
|
|
|
101
|
-
1. Create personal `GitHub access token`__ to be able to access issue tracker
|
|
102
|
-
programmatically. The token needs only the
|
|
101
|
+
1. Create a personal `GitHub access token`__ to be able to access issue tracker
|
|
102
|
+
programmatically. The token needs only the ``repo/public_repo`` scope.
|
|
103
103
|
|
|
104
104
|
2. Set GitHub user information into shell variables to ease running the
|
|
105
105
|
``invoke release-notes`` command in the next step::
|
|
@@ -119,7 +119,7 @@ Release notes
|
|
|
119
119
|
<Set version_>`__. Omit the ``-w`` option if you just want to get release
|
|
120
120
|
notes printed to the console, not written to a file.
|
|
121
121
|
|
|
122
|
-
When generating release notes for a preview release like ``
|
|
122
|
+
When generating release notes for a preview release like ``7.2rc1``,
|
|
123
123
|
the list of issues is only going to contain issues with that label
|
|
124
124
|
(e.g. ``rc1``) or with a label of an earlier preview release (e.g.
|
|
125
125
|
``alpha1``, ``beta2``).
|
|
@@ -229,14 +229,14 @@ Creating distributions
|
|
|
229
229
|
|
|
230
230
|
git checkout gh-pages
|
|
231
231
|
invoke add-docs $VERSION --push
|
|
232
|
-
git checkout master
|
|
232
|
+
git checkout master # replace master with v*-maintenance if needed!
|
|
233
233
|
|
|
234
234
|
Post actions
|
|
235
235
|
------------
|
|
236
236
|
|
|
237
237
|
1. Back to master if needed::
|
|
238
238
|
|
|
239
|
-
git checkout master
|
|
239
|
+
git checkout master # replace master with v*-maintenance if needed!
|
|
240
240
|
|
|
241
241
|
2. Set dev version based on the previous version::
|
|
242
242
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: robotframework
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.2b1
|
|
4
4
|
Summary: Generic automation framework for acceptance testing and robotic process automation (RPA)
|
|
5
5
|
Home-page: https://robotframework.org
|
|
6
6
|
Author: Pekka Klärck
|
|
@@ -10,7 +10,7 @@ Download-URL: https://pypi.org/project/robotframework
|
|
|
10
10
|
Project-URL: Source, https://github.com/robotframework/robotframework
|
|
11
11
|
Project-URL: Issue Tracker, https://github.com/robotframework/robotframework/issues
|
|
12
12
|
Project-URL: Documentation, https://robotframework.org/robotframework
|
|
13
|
-
Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.
|
|
13
|
+
Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.2b1.rst
|
|
14
14
|
Project-URL: Slack, http://slack.robotframework.org
|
|
15
15
|
Description: Robot Framework
|
|
16
16
|
===============
|
|
@@ -6,7 +6,7 @@ from setuptools import find_packages, setup
|
|
|
6
6
|
|
|
7
7
|
# Version number typically updated by running `invoke set-version <version>`.
|
|
8
8
|
# Run `invoke --help set-version` or see tasks.py for details.
|
|
9
|
-
VERSION = '7.
|
|
9
|
+
VERSION = '7.2b1'
|
|
10
10
|
with open(join(dirname(abspath(__file__)), 'README.rst')) as f:
|
|
11
11
|
LONG_DESCRIPTION = f.read()
|
|
12
12
|
base_url = 'https://github.com/robotframework/robotframework/blob/master'
|
|
@@ -72,18 +72,42 @@ All of the above classes can be imported like::
|
|
|
72
72
|
|
|
73
73
|
from robot.api import ClassName
|
|
74
74
|
|
|
75
|
+
The public API intends to follow the `distributing type information specification
|
|
76
|
+
<https://typing.readthedocs.io/en/latest/spec/distributing.html#distributing-type-information>`_
|
|
77
|
+
originally specified in `PEP 484 <https://peps.python.org/pep-0484/>`_.
|
|
78
|
+
|
|
75
79
|
See documentations of the individual APIs for more details.
|
|
76
80
|
|
|
77
81
|
.. tip:: APIs related to the command line entry points are exposed directly
|
|
78
82
|
via the :mod:`robot` root package.
|
|
79
83
|
"""
|
|
80
84
|
|
|
81
|
-
from robot.conf.languages import Language, Languages
|
|
82
|
-
from robot.model import SuiteVisitor
|
|
83
|
-
from robot.parsing import (
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
from robot.conf.languages import Language as Language, Languages as Languages
|
|
86
|
+
from robot.model import SuiteVisitor as SuiteVisitor
|
|
87
|
+
from robot.parsing import (
|
|
88
|
+
get_tokens as get_tokens,
|
|
89
|
+
get_resource_tokens as get_resource_tokens,
|
|
90
|
+
get_init_tokens as get_init_tokens,
|
|
91
|
+
get_model as get_model,
|
|
92
|
+
get_resource_model as get_resource_model,
|
|
93
|
+
get_init_model as get_init_model,
|
|
94
|
+
Token as Token
|
|
95
|
+
)
|
|
96
|
+
from robot.reporting import ResultWriter as ResultWriter
|
|
97
|
+
from robot.result import (
|
|
98
|
+
ExecutionResult as ExecutionResult,
|
|
99
|
+
ResultVisitor as ResultVisitor
|
|
100
|
+
)
|
|
101
|
+
from robot.running import (
|
|
102
|
+
TestSuite as TestSuite,
|
|
103
|
+
TestSuiteBuilder as TestSuiteBuilder,
|
|
104
|
+
TypeInfo as TypeInfo
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
from .exceptions import (
|
|
108
|
+
ContinuableFailure as ContinuableFailure,
|
|
109
|
+
Failure as Failure,
|
|
110
|
+
FatalError as FatalError,
|
|
111
|
+
Error as Error,
|
|
112
|
+
SkipExecution as SkipExecution
|
|
113
|
+
)
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
-
from typing import Any, Callable, Sequence, TypeVar, Union, overload
|
|
16
|
+
from typing import Any, Callable, Literal, Sequence, TypeVar, Union, overload
|
|
17
17
|
|
|
18
18
|
from .interfaces import TypeHints
|
|
19
19
|
|
|
@@ -26,7 +26,9 @@ K = TypeVar('K', bound=Callable[..., Any]) # Keyword function.
|
|
|
26
26
|
L = TypeVar('L', bound=type) # Library class.
|
|
27
27
|
KeywordDecorator = Callable[[K], K]
|
|
28
28
|
LibraryDecorator = Callable[[L], L]
|
|
29
|
+
Scope = Literal['GLOBAL', 'SUITE', 'TEST', 'TASK']
|
|
29
30
|
Converter = Union[Callable[[Any], Any], Callable[[Any, Any], Any]]
|
|
31
|
+
DocFormat = Literal['ROBOT', 'HTML', 'TEXT', 'REST']
|
|
30
32
|
|
|
31
33
|
|
|
32
34
|
def not_keyword(func: F) -> F:
|
|
@@ -107,7 +109,7 @@ def keyword(name: 'K | str | None' = None,
|
|
|
107
109
|
def types_as_list(length, case_insensitive):
|
|
108
110
|
# ...
|
|
109
111
|
|
|
110
|
-
@keyword(types=None
|
|
112
|
+
@keyword(types=None)
|
|
111
113
|
def no_conversion(length, case_insensitive=False):
|
|
112
114
|
# ...
|
|
113
115
|
"""
|
|
@@ -129,20 +131,20 @@ def library(cls: L, /) -> L:
|
|
|
129
131
|
|
|
130
132
|
|
|
131
133
|
@overload
|
|
132
|
-
def library(scope: '
|
|
134
|
+
def library(scope: 'Scope | None' = None,
|
|
133
135
|
version: 'str | None' = None,
|
|
134
136
|
converters: 'dict[type, Converter] | None' = None,
|
|
135
|
-
doc_format: '
|
|
137
|
+
doc_format: 'DocFormat | None' = None,
|
|
136
138
|
listener: 'Any | None' = None,
|
|
137
139
|
auto_keywords: bool = False) -> LibraryDecorator:
|
|
138
140
|
...
|
|
139
141
|
|
|
140
142
|
|
|
141
143
|
@not_keyword
|
|
142
|
-
def library(scope: 'L |
|
|
144
|
+
def library(scope: 'L | Scope | None' = None,
|
|
143
145
|
version: 'str | None' = None,
|
|
144
146
|
converters: 'dict[type, Converter] | None' = None,
|
|
145
|
-
doc_format: '
|
|
147
|
+
doc_format: 'DocFormat | None' = None,
|
|
146
148
|
listener: 'Any | None' = None,
|
|
147
149
|
auto_keywords: bool = False) -> 'L | LibraryDecorator':
|
|
148
150
|
"""Class decorator to control keyword discovery and other library settings.
|
|
@@ -53,7 +53,6 @@ else:
|
|
|
53
53
|
UnionType = type
|
|
54
54
|
|
|
55
55
|
from robot import result, running
|
|
56
|
-
from robot.model import Message
|
|
57
56
|
from robot.running import TestDefaults, TestSuite
|
|
58
57
|
|
|
59
58
|
|
|
@@ -366,7 +365,7 @@ class StartKeywordAttributes(OptionalKeywordAttributes):
|
|
|
366
365
|
assign: 'list[str]'
|
|
367
366
|
tags: 'list[str]'
|
|
368
367
|
source: str
|
|
369
|
-
lineno: int
|
|
368
|
+
lineno: 'int|None'
|
|
370
369
|
status: str
|
|
371
370
|
starttime: str
|
|
372
371
|
|
|
@@ -478,20 +477,37 @@ class ListenerV2:
|
|
|
478
477
|
def output_file(self, path: str):
|
|
479
478
|
"""Called after the output file has been created.
|
|
480
479
|
|
|
481
|
-
|
|
480
|
+
``path`` is an absolute path to the output file or
|
|
481
|
+
a string ``None`` if creating the output file is disabled.
|
|
482
482
|
"""
|
|
483
483
|
|
|
484
484
|
def log_file(self, path: str):
|
|
485
|
-
"""Called after the log file has been created.
|
|
485
|
+
"""Called after the log file has been created.
|
|
486
|
+
|
|
487
|
+
``path`` is an absolute path to the log file.
|
|
488
|
+
Not called if creating the log file is disabled.
|
|
489
|
+
"""
|
|
486
490
|
|
|
487
491
|
def report_file(self, path: str):
|
|
488
|
-
"""Called after the report file has been created.
|
|
492
|
+
"""Called after the report file has been created.
|
|
493
|
+
|
|
494
|
+
``path`` is an absolute path to the report file.
|
|
495
|
+
Not called if creating the report file is disabled.
|
|
496
|
+
"""
|
|
489
497
|
|
|
490
498
|
def xunit_file(self, path: str):
|
|
491
|
-
"""Called after the xunit compatible output file has been created.
|
|
499
|
+
"""Called after the xunit compatible output file has been created.
|
|
500
|
+
|
|
501
|
+
``path`` is an absolute path to the xunit file.
|
|
502
|
+
Only called if creating the xunit file is enabled.
|
|
503
|
+
"""
|
|
492
504
|
|
|
493
505
|
def debug_file(self, path: str):
|
|
494
|
-
"""Called after the debug file has been created.
|
|
506
|
+
"""Called after the debug file has been created.
|
|
507
|
+
|
|
508
|
+
``path`` is an absolute path to the debug file.
|
|
509
|
+
Only called if creating the debug file is enabled.
|
|
510
|
+
"""
|
|
495
511
|
|
|
496
512
|
def close(self):
|
|
497
513
|
"""Called when the whole execution ends.
|
|
@@ -692,6 +708,24 @@ class ListenerV3:
|
|
|
692
708
|
"""
|
|
693
709
|
self.end_body_item(data, result)
|
|
694
710
|
|
|
711
|
+
def start_group(self, data: running.Group, result: result.Group):
|
|
712
|
+
"""Called when a GROUP starts.
|
|
713
|
+
|
|
714
|
+
The default implementation calls :meth:`start_body_item`.
|
|
715
|
+
|
|
716
|
+
New in Robot Framework 7.2.
|
|
717
|
+
"""
|
|
718
|
+
self.start_body_item(data, result)
|
|
719
|
+
|
|
720
|
+
def end_group(self, data: running.Group, result: result.Group):
|
|
721
|
+
"""Called when a GROUP ends.
|
|
722
|
+
|
|
723
|
+
The default implementation calls :meth:`end_body_item`.
|
|
724
|
+
|
|
725
|
+
New in Robot Framework 7.2.
|
|
726
|
+
"""
|
|
727
|
+
self.end_body_item(data, result)
|
|
728
|
+
|
|
695
729
|
def start_if(self, data: running.If, result: result.If):
|
|
696
730
|
"""Called when an IF/ELSE structure starts.
|
|
697
731
|
|
|
@@ -868,7 +902,7 @@ class ListenerV3:
|
|
|
868
902
|
"""
|
|
869
903
|
pass
|
|
870
904
|
|
|
871
|
-
def log_message(self, message: Message):
|
|
905
|
+
def log_message(self, message: result.Message):
|
|
872
906
|
"""Called when a normal log message are emitted.
|
|
873
907
|
|
|
874
908
|
The messages are typically logged by keywords, but also the framework
|
|
@@ -876,7 +910,7 @@ class ListenerV3:
|
|
|
876
910
|
log.html.
|
|
877
911
|
"""
|
|
878
912
|
|
|
879
|
-
def message(self, message: Message):
|
|
913
|
+
def message(self, message: result.Message):
|
|
880
914
|
"""Called when framework's internal messages are emitted.
|
|
881
915
|
|
|
882
916
|
Only logged by the framework itself. These messages end up to the syslog
|
|
@@ -915,23 +949,40 @@ class ListenerV3:
|
|
|
915
949
|
the imported variable file.
|
|
916
950
|
"""
|
|
917
951
|
|
|
918
|
-
def output_file(self, path: Path):
|
|
952
|
+
def output_file(self, path: 'Path | None'):
|
|
919
953
|
"""Called after the output file has been created.
|
|
920
954
|
|
|
921
|
-
|
|
955
|
+
``path`` is an absolute path to the output file or
|
|
956
|
+
``None`` if creating the output file is disabled.
|
|
922
957
|
"""
|
|
923
958
|
|
|
924
959
|
def log_file(self, path: Path):
|
|
925
|
-
"""Called after the log file has been created.
|
|
960
|
+
"""Called after the log file has been created.
|
|
961
|
+
|
|
962
|
+
``path`` is an absolute path to the log file.
|
|
963
|
+
Not called if creating the log file is disabled.
|
|
964
|
+
"""
|
|
926
965
|
|
|
927
966
|
def report_file(self, path: Path):
|
|
928
|
-
"""Called after the report file has been created.
|
|
967
|
+
"""Called after the report file has been created.
|
|
968
|
+
|
|
969
|
+
``path`` is an absolute path to the report file.
|
|
970
|
+
Not called if creating the report file is disabled.
|
|
971
|
+
"""
|
|
929
972
|
|
|
930
973
|
def xunit_file(self, path: Path):
|
|
931
|
-
"""Called after the xunit compatible output file has been created.
|
|
974
|
+
"""Called after the xunit compatible output file has been created.
|
|
975
|
+
|
|
976
|
+
``path`` is an absolute path to the xunit file.
|
|
977
|
+
Only called if creating the xunit file is enabled.
|
|
978
|
+
"""
|
|
932
979
|
|
|
933
980
|
def debug_file(self, path: Path):
|
|
934
|
-
"""Called after the debug file has been created.
|
|
981
|
+
"""Called after the debug file has been created.
|
|
982
|
+
|
|
983
|
+
``path`` is an absolute path to the debug file.
|
|
984
|
+
Only called if creating the debug file is enabled.
|
|
985
|
+
"""
|
|
935
986
|
|
|
936
987
|
def close(self):
|
|
937
988
|
"""Called when the whole execution ends.
|
|
@@ -196,6 +196,7 @@ Blocks:
|
|
|
196
196
|
- :class:`~robot.parsing.model.blocks.Try`
|
|
197
197
|
- :class:`~robot.parsing.model.blocks.For`
|
|
198
198
|
- :class:`~robot.parsing.model.blocks.While`
|
|
199
|
+
- :class:`~robot.parsing.model.blocks.Group` (new in RF 7.2)
|
|
199
200
|
|
|
200
201
|
Statements:
|
|
201
202
|
|
|
@@ -236,6 +237,7 @@ Statements:
|
|
|
236
237
|
- :class:`~robot.parsing.model.statements.FinallyHeader`
|
|
237
238
|
- :class:`~robot.parsing.model.statements.ForHeader`
|
|
238
239
|
- :class:`~robot.parsing.model.statements.WhileHeader`
|
|
240
|
+
- :class:`~robot.parsing.model.statements.GroupHeader` (new in RF 7.2)
|
|
239
241
|
- :class:`~robot.parsing.model.statements.Var` (new in RF 7.0)
|
|
240
242
|
- :class:`~robot.parsing.model.statements.End`
|
|
241
243
|
- :class:`~robot.parsing.model.statements.ReturnStatement`
|
|
@@ -484,78 +486,80 @@ get the executable suite by using the
|
|
|
484
486
|
"""
|
|
485
487
|
|
|
486
488
|
from robot.parsing import (
|
|
487
|
-
get_tokens,
|
|
488
|
-
get_resource_tokens,
|
|
489
|
-
get_init_tokens,
|
|
490
|
-
get_model,
|
|
491
|
-
get_resource_model,
|
|
492
|
-
get_init_model,
|
|
493
|
-
Token
|
|
489
|
+
get_tokens as get_tokens,
|
|
490
|
+
get_resource_tokens as get_resource_tokens,
|
|
491
|
+
get_init_tokens as get_init_tokens,
|
|
492
|
+
get_model as get_model,
|
|
493
|
+
get_resource_model as get_resource_model,
|
|
494
|
+
get_init_model as get_init_model,
|
|
495
|
+
Token as Token
|
|
494
496
|
)
|
|
495
497
|
from robot.parsing.model.blocks import (
|
|
496
|
-
File,
|
|
497
|
-
SettingSection,
|
|
498
|
-
VariableSection,
|
|
499
|
-
TestCaseSection,
|
|
500
|
-
KeywordSection,
|
|
501
|
-
CommentSection,
|
|
502
|
-
TestCase,
|
|
503
|
-
Keyword,
|
|
504
|
-
If,
|
|
505
|
-
Try,
|
|
506
|
-
For,
|
|
507
|
-
While
|
|
498
|
+
File as File,
|
|
499
|
+
SettingSection as SettingSection,
|
|
500
|
+
VariableSection as VariableSection,
|
|
501
|
+
TestCaseSection as TestCaseSection,
|
|
502
|
+
KeywordSection as KeywordSection,
|
|
503
|
+
CommentSection as CommentSection,
|
|
504
|
+
TestCase as TestCase,
|
|
505
|
+
Keyword as Keyword,
|
|
506
|
+
If as If,
|
|
507
|
+
Try as Try,
|
|
508
|
+
For as For,
|
|
509
|
+
While as While,
|
|
510
|
+
Group as Group
|
|
508
511
|
)
|
|
509
512
|
from robot.parsing.model.statements import (
|
|
510
|
-
SectionHeader,
|
|
511
|
-
LibraryImport,
|
|
512
|
-
ResourceImport,
|
|
513
|
-
VariablesImport,
|
|
514
|
-
Documentation,
|
|
515
|
-
Metadata,
|
|
516
|
-
SuiteName,
|
|
517
|
-
SuiteSetup,
|
|
518
|
-
SuiteTeardown,
|
|
519
|
-
TestSetup,
|
|
520
|
-
TestTeardown,
|
|
521
|
-
TestTemplate,
|
|
522
|
-
TestTimeout,
|
|
523
|
-
TestTags,
|
|
524
|
-
DefaultTags,
|
|
525
|
-
KeywordTags,
|
|
526
|
-
Variable,
|
|
527
|
-
TestCaseName,
|
|
528
|
-
KeywordName,
|
|
529
|
-
Setup,
|
|
530
|
-
Teardown,
|
|
531
|
-
Tags,
|
|
532
|
-
Template,
|
|
533
|
-
Timeout,
|
|
534
|
-
Arguments,
|
|
535
|
-
Return,
|
|
536
|
-
ReturnSetting,
|
|
537
|
-
KeywordCall,
|
|
538
|
-
TemplateArguments,
|
|
539
|
-
IfHeader,
|
|
540
|
-
InlineIfHeader,
|
|
541
|
-
ElseIfHeader,
|
|
542
|
-
ElseHeader,
|
|
543
|
-
TryHeader,
|
|
544
|
-
ExceptHeader,
|
|
545
|
-
FinallyHeader,
|
|
546
|
-
ForHeader,
|
|
547
|
-
WhileHeader,
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
513
|
+
SectionHeader as SectionHeader,
|
|
514
|
+
LibraryImport as LibraryImport,
|
|
515
|
+
ResourceImport as ResourceImport,
|
|
516
|
+
VariablesImport as VariablesImport,
|
|
517
|
+
Documentation as Documentation,
|
|
518
|
+
Metadata as Metadata,
|
|
519
|
+
SuiteName as SuiteName,
|
|
520
|
+
SuiteSetup as SuiteSetup,
|
|
521
|
+
SuiteTeardown as SuiteTeardown,
|
|
522
|
+
TestSetup as TestSetup,
|
|
523
|
+
TestTeardown as TestTeardown,
|
|
524
|
+
TestTemplate as TestTemplate,
|
|
525
|
+
TestTimeout as TestTimeout,
|
|
526
|
+
TestTags as TestTags,
|
|
527
|
+
DefaultTags as DefaultTags,
|
|
528
|
+
KeywordTags as KeywordTags,
|
|
529
|
+
Variable as Variable,
|
|
530
|
+
TestCaseName as TestCaseName,
|
|
531
|
+
KeywordName as KeywordName,
|
|
532
|
+
Setup as Setup,
|
|
533
|
+
Teardown as Teardown,
|
|
534
|
+
Tags as Tags,
|
|
535
|
+
Template as Template,
|
|
536
|
+
Timeout as Timeout,
|
|
537
|
+
Arguments as Arguments,
|
|
538
|
+
Return as Return,
|
|
539
|
+
ReturnSetting as ReturnSetting,
|
|
540
|
+
KeywordCall as KeywordCall,
|
|
541
|
+
TemplateArguments as TemplateArguments,
|
|
542
|
+
IfHeader as IfHeader,
|
|
543
|
+
InlineIfHeader as InlineIfHeader,
|
|
544
|
+
ElseIfHeader as ElseIfHeader,
|
|
545
|
+
ElseHeader as ElseHeader,
|
|
546
|
+
TryHeader as TryHeader,
|
|
547
|
+
ExceptHeader as ExceptHeader,
|
|
548
|
+
FinallyHeader as FinallyHeader,
|
|
549
|
+
ForHeader as ForHeader,
|
|
550
|
+
WhileHeader as WhileHeader,
|
|
551
|
+
GroupHeader as GroupHeader,
|
|
552
|
+
End as End,
|
|
553
|
+
Var as Var,
|
|
554
|
+
ReturnStatement as ReturnStatement,
|
|
555
|
+
Continue as Continue,
|
|
556
|
+
Break as Break,
|
|
557
|
+
Comment as Comment,
|
|
558
|
+
Config as Config,
|
|
559
|
+
Error as Error,
|
|
560
|
+
EmptyLine as EmptyLine
|
|
557
561
|
)
|
|
558
562
|
from robot.parsing.model.visitor import (
|
|
559
|
-
ModelTransformer,
|
|
560
|
-
ModelVisitor
|
|
563
|
+
ModelTransformer as ModelTransformer,
|
|
564
|
+
ModelVisitor as ModelVisitor
|
|
561
565
|
)
|
|
@@ -115,8 +115,7 @@ class Languages:
|
|
|
115
115
|
self.false_strings |= {s.title() for s in lang.false_strings}
|
|
116
116
|
|
|
117
117
|
def _get_languages(self, languages, add_english=True) -> 'list[Language]':
|
|
118
|
-
languages = self._resolve_languages(languages, add_english)
|
|
119
|
-
available = self._get_available_languages()
|
|
118
|
+
languages, available = self._resolve_languages(languages, add_english)
|
|
120
119
|
returned: 'list[Language]' = []
|
|
121
120
|
for lang in languages:
|
|
122
121
|
if isinstance(lang, Language):
|
|
@@ -138,9 +137,11 @@ class Languages:
|
|
|
138
137
|
languages = list(languages)
|
|
139
138
|
else:
|
|
140
139
|
languages = [languages]
|
|
140
|
+
# Get available languages only if custom languages are used to save time.
|
|
141
|
+
available = self._get_available_languages() if languages else {}
|
|
141
142
|
if add_english:
|
|
142
143
|
languages.append(En())
|
|
143
|
-
return languages
|
|
144
|
+
return languages, available
|
|
144
145
|
|
|
145
146
|
def _get_available_languages(self) -> 'dict[str, type[Language]]':
|
|
146
147
|
available = {}
|
|
@@ -23,7 +23,7 @@ from datetime import datetime
|
|
|
23
23
|
from pathlib import Path
|
|
24
24
|
|
|
25
25
|
from robot.errors import DataError, FrameworkError
|
|
26
|
-
from robot.output import LOGGER,
|
|
26
|
+
from robot.output import LOGGER, LogLevel
|
|
27
27
|
from robot.result.keywordremover import KeywordRemover
|
|
28
28
|
from robot.result.flattenkeywordmatcher import validate_flatten_keyword
|
|
29
29
|
from robot.utils import (abspath, create_destination_directory, escape,
|
|
@@ -163,16 +163,17 @@ class _BaseSettings:
|
|
|
163
163
|
|
|
164
164
|
def _split_log_level(self, level):
|
|
165
165
|
if ':' in level:
|
|
166
|
-
|
|
166
|
+
collect, show = level.split(':', 1)
|
|
167
167
|
else:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
168
|
+
collect = show = level
|
|
169
|
+
try:
|
|
170
|
+
collect, show = LogLevel(collect), LogLevel(show)
|
|
171
|
+
except DataError as err:
|
|
172
|
+
self._raise_invalid('LogLevel', str(err))
|
|
173
|
+
if collect.priority > show.priority:
|
|
174
|
+
self._raise_invalid('LogLevel', f"Level in log '{show.level}' is lower "
|
|
175
|
+
f"than execution level '{collect.level}'.")
|
|
176
|
+
return collect.level, show.level
|
|
176
177
|
|
|
177
178
|
def _process_max_error_lines(self, value):
|
|
178
179
|
if not value or value.upper() == 'NONE':
|
|
@@ -143,13 +143,13 @@ class ExecutionStatus(RobotError):
|
|
|
143
143
|
def can_continue(self, context, templated=False):
|
|
144
144
|
if context.dry_run:
|
|
145
145
|
return True
|
|
146
|
-
if self.syntax or self.exit or self.
|
|
146
|
+
if self.syntax or self.exit or self.test_timeout:
|
|
147
147
|
return False
|
|
148
148
|
if templated:
|
|
149
149
|
return context.continue_on_failure(default=True)
|
|
150
|
+
if self.skip:
|
|
151
|
+
return False
|
|
150
152
|
if self.keyword_timeout:
|
|
151
|
-
if context.in_teardown:
|
|
152
|
-
self.keyword_timeout = False
|
|
153
153
|
return False
|
|
154
154
|
return self.continue_on_failure or context.continue_on_failure()
|
|
155
155
|
|