├── .appveyor.yml ├── .coveragerc ├── .gitattributes ├── .github └── workflows │ ├── fedora_41.yml │ ├── linux.yml │ └── sonar.yml ├── .gitignore ├── .gitmodules ├── .pylintrc ├── .travis.yml ├── .whitesource ├── AUTHORS.txt ├── BUILD.rest ├── CHANGELOG.adoc ├── CONTRIBUTING.adoc ├── COPYRIGHT.txt ├── LICENSE.txt ├── MANIFEST.in ├── README.adoc ├── README.rest ├── crowdin.yml ├── doc ├── other │ ├── example_maven_runner │ │ ├── RIDE_output.png │ │ ├── pom.xml │ │ └── runTests.bat │ └── example_pabot_runner │ │ ├── RIDE_output.png │ │ └── pabotRunner.bat └── releasenotes │ ├── ride-1.7.3.1.rst │ ├── ride-1.7.3.rst │ ├── ride-1.7.4.1.rst │ ├── ride-1.7.4.2.rst │ ├── ride-1.7.4.rst │ ├── ride-1.7.4b1.rst │ ├── ride-1.7.4rc1.rst │ ├── ride-2.0.3.rst │ ├── ride-2.0.5.rst │ ├── ride-2.0.6.rst │ ├── ride-2.0.7.rst │ ├── ride-2.0.8.1.rst │ ├── ride-2.0.8.rst │ ├── ride-2.0.rst │ ├── ride-2.0b1.rst │ ├── ride-2.0b2.rst │ ├── ride-2.0b3.rst │ ├── ride-2.0rc1.rst │ ├── ride-2.1.1.rst │ ├── ride-2.1.2.rst │ ├── ride-2.1.3.rst │ ├── ride-2.1.rst │ ├── ride-2.1a3.rst │ └── ride-2.1b1.rst ├── pyproject.toml ├── pytest.ini ├── requirements-dev.txt ├── requirements.txt ├── rfgen.py ├── robot.bmp ├── rtest ├── __init__.py ├── go_find_some_bugs.py ├── model.py ├── simplifier.py ├── test_runner.py └── testdir │ ├── Suite.robot │ ├── __init__.robot │ └── resources │ └── resu.txt ├── setup.cfg ├── setup.py ├── sonar-project.properties ├── src ├── bin │ ├── ride.py │ └── ride_postinstall.py └── robotide │ ├── __init__.py │ ├── __main__.py │ ├── action │ ├── __init__.py │ ├── action.py │ ├── actioninfo.py │ └── shortcut.py │ ├── application │ ├── CHANGELOG.html │ ├── __init__.py │ ├── application.py │ ├── debugconsole.py │ ├── docbook-xsl.css │ ├── editorprovider.py │ ├── pluginconnector.py │ ├── pluginloader.py │ ├── releasenotes.py │ ├── restartutil.py │ └── updatenotifier.py │ ├── context │ ├── __init__.py │ ├── coreplugins.py │ └── logger.py │ ├── contrib │ ├── __init__.py │ └── testrunner │ │ ├── ArgsParser.py │ │ ├── Command.py │ │ ├── CommandArgs.py │ │ ├── FileWriter.py │ │ ├── Process.py │ │ ├── SettingsParser.py │ │ ├── TestRunnerAgent.py │ │ ├── __init__.py │ │ ├── runprofiles.py │ │ ├── testrunner.py │ │ ├── testrunnerplugin.py │ │ └── usages.py │ ├── controller │ ├── __init__.py │ ├── arguments.py │ ├── basecontroller.py │ ├── cellinfo.py │ ├── ctrlcommands.py │ ├── dataloader.py │ ├── filecontrollers.py │ ├── macrocontrollers.py │ ├── project.py │ ├── robotdata.py │ ├── settingcontrollers.py │ ├── stepcontrollers.py │ ├── tablecontrollers.py │ ├── tags.py │ ├── testexecutionresults.py │ ├── ui │ │ ├── __init__.py │ │ └── treecontroller.py │ └── validators.py │ ├── editor │ ├── __init__.py │ ├── cellrenderer.py │ ├── clipboard.py │ ├── contentassist.py │ ├── customsourceeditor.py │ ├── dialoghelps.py │ ├── editorcreator.py │ ├── editordialogs.py │ ├── editors.py │ ├── fieldeditors.py │ ├── flowsizer.py │ ├── formatters.py │ ├── gridbase.py │ ├── gridcolorizer.py │ ├── kweditor.py │ ├── listeditor.py │ ├── macroeditors.py │ ├── popupwindow.py │ ├── pythoneditor.py │ ├── settingeditors.py │ ├── tags.py │ ├── texteditor.py │ └── tooltips.py │ ├── lib │ ├── __init__.py │ ├── compat │ │ ├── __init__.py │ │ ├── parsing │ │ │ ├── __init__.py │ │ │ ├── language.py │ │ │ ├── languages.py │ │ │ └── validator.py │ │ └── pygments │ │ │ ├── __init__.py │ │ │ └── robotframework.py │ ├── robot-commit │ └── robot │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── api │ │ ├── __init__.py │ │ ├── deco.py │ │ └── logger.py │ │ ├── conf │ │ ├── __init__.py │ │ ├── gatherfailed.py │ │ └── settings.py │ │ ├── errors.py │ │ ├── htmldata │ │ ├── __init__.py │ │ ├── common │ │ │ ├── doc_formatting.css │ │ │ ├── js_disabled.css │ │ │ └── storage.js │ │ ├── htmlfilewriter.py │ │ ├── jartemplate.py │ │ ├── jsonwriter.py │ │ ├── lib │ │ │ ├── jquery.highlight.min.js │ │ │ ├── jquery.min.js │ │ │ ├── jquery.tablesorter.min.js │ │ │ ├── jquery.tmpl.min.js │ │ │ ├── jsxcompressor.min.js │ │ │ └── versions.txt │ │ ├── libdoc │ │ │ ├── libdoc.css │ │ │ ├── libdoc.html │ │ │ ├── print.css │ │ │ └── pygments.css │ │ ├── normaltemplate.py │ │ ├── rebot │ │ │ ├── common.css │ │ │ ├── fileloading.js │ │ │ ├── log.css │ │ │ ├── log.html │ │ │ ├── log.js │ │ │ ├── model.js │ │ │ ├── print.css │ │ │ ├── report.css │ │ │ ├── report.html │ │ │ ├── testdata.js │ │ │ ├── util.js │ │ │ └── view.js │ │ ├── template.py │ │ ├── testdata │ │ │ ├── create_jsdata.py │ │ │ ├── create_libdoc_data.py │ │ │ ├── create_testdoc_data.py │ │ │ ├── data.js │ │ │ ├── dir.suite │ │ │ │ ├── __init__.robot │ │ │ │ ├── test.suite.1.robot │ │ │ │ ├── test.suite.2.robot │ │ │ │ └── tests.robot │ │ │ ├── libdoc.js │ │ │ ├── libdoc.txt │ │ │ └── testdoc.js │ │ └── testdoc │ │ │ ├── testdoc.css │ │ │ └── testdoc.html │ │ ├── jarrunner.py │ │ ├── libdoc.py │ │ ├── libdocpkg │ │ ├── __init__.py │ │ ├── builder.py │ │ ├── consoleviewer.py │ │ ├── htmlwriter.py │ │ ├── java9builder.py │ │ ├── javabuilder.py │ │ ├── model.py │ │ ├── output.py │ │ ├── robotbuilder.py │ │ ├── specbuilder.py │ │ ├── writer.py │ │ └── xmlwriter.py │ │ ├── libraries │ │ ├── BuiltIn.py │ │ ├── Collections.py │ │ ├── DateTime.py │ │ ├── Dialogs.py │ │ ├── Easter.py │ │ ├── OperatingSystem.py │ │ ├── Process.py │ │ ├── Remote.py │ │ ├── Reserved.py │ │ ├── Screenshot.py │ │ ├── String.py │ │ ├── Telnet.py │ │ ├── XML.py │ │ ├── __init__.py │ │ ├── dialogs_ipy.py │ │ ├── dialogs_jy.py │ │ └── dialogs_py.py │ │ ├── model │ │ ├── __init__.py │ │ ├── configurer.py │ │ ├── criticality.py │ │ ├── filter.py │ │ ├── imports.py │ │ ├── itemlist.py │ │ ├── keyword.py │ │ ├── message.py │ │ ├── metadata.py │ │ ├── modelobject.py │ │ ├── modifier.py │ │ ├── namepatterns.py │ │ ├── statistics.py │ │ ├── stats.py │ │ ├── suitestatistics.py │ │ ├── tags.py │ │ ├── tagsetter.py │ │ ├── tagstatistics.py │ │ ├── testcase.py │ │ ├── testsuite.py │ │ ├── totalstatistics.py │ │ └── visitor.py │ │ ├── output │ │ ├── __init__.py │ │ ├── console │ │ │ ├── __init__.py │ │ │ ├── dotted.py │ │ │ ├── highlighting.py │ │ │ ├── quiet.py │ │ │ └── verbose.py │ │ ├── debugfile.py │ │ ├── filelogger.py │ │ ├── librarylogger.py │ │ ├── listenerarguments.py │ │ ├── listenermethods.py │ │ ├── listeners.py │ │ ├── logger.py │ │ ├── loggerhelper.py │ │ ├── output.py │ │ ├── pyloggingconf.py │ │ ├── stdoutlogsplitter.py │ │ └── xmllogger.py │ │ ├── parsing │ │ ├── __init__.py │ │ ├── comments.py │ │ ├── datarow.py │ │ ├── htmlreader.py │ │ ├── model.py │ │ ├── populators.py │ │ ├── restreader.py │ │ ├── restsupport.py │ │ ├── robotreader.py │ │ ├── settings.py │ │ ├── tablepopulators.py │ │ ├── tsvreader.py │ │ └── txtreader.py │ │ ├── pythonpathsetter.py │ │ ├── rebot.py │ │ ├── reporting │ │ ├── __init__.py │ │ ├── jsbuildingcontext.py │ │ ├── jsexecutionresult.py │ │ ├── jsmodelbuilders.py │ │ ├── jswriter.py │ │ ├── logreportwriters.py │ │ ├── outputwriter.py │ │ ├── resultwriter.py │ │ ├── stringcache.py │ │ └── xunitwriter.py │ │ ├── result │ │ ├── __init__.py │ │ ├── configurer.py │ │ ├── executionerrors.py │ │ ├── executionresult.py │ │ ├── flattenkeywordmatcher.py │ │ ├── keywordremover.py │ │ ├── merger.py │ │ ├── messagefilter.py │ │ ├── model.py │ │ ├── resultbuilder.py │ │ ├── suiteteardownfailed.py │ │ ├── visitor.py │ │ └── xmlelementhandlers.py │ │ ├── run.py │ │ ├── running │ │ ├── __init__.py │ │ ├── arguments │ │ │ ├── __init__.py │ │ │ ├── argumentconverter.py │ │ │ ├── argumentmapper.py │ │ │ ├── argumentparser.py │ │ │ ├── argumentresolver.py │ │ │ ├── argumentspec.py │ │ │ ├── argumentvalidator.py │ │ │ ├── embedded.py │ │ │ ├── javaargumentcoercer.py │ │ │ ├── typeconverters.py │ │ │ └── typevalidator.py │ │ ├── builder.py │ │ ├── context.py │ │ ├── defaults.py │ │ ├── dynamicmethods.py │ │ ├── handlers.py │ │ ├── handlerstore.py │ │ ├── importer.py │ │ ├── librarykeywordrunner.py │ │ ├── libraryscopes.py │ │ ├── model.py │ │ ├── namespace.py │ │ ├── outputcapture.py │ │ ├── randomizer.py │ │ ├── runkwregister.py │ │ ├── runner.py │ │ ├── signalhandler.py │ │ ├── status.py │ │ ├── statusreporter.py │ │ ├── steprunner.py │ │ ├── testlibraries.py │ │ ├── timeouts │ │ │ ├── __init__.py │ │ │ ├── ironpython.py │ │ │ ├── jython.py │ │ │ ├── posix.py │ │ │ └── windows.py │ │ ├── usererrorhandler.py │ │ ├── userkeyword.py │ │ └── userkeywordrunner.py │ │ ├── testdoc.py │ │ ├── tidy.py │ │ ├── utils │ │ ├── __init__.py │ │ ├── application.py │ │ ├── argumentparser.py │ │ ├── asserts.py │ │ ├── charwidth.py │ │ ├── compat.py │ │ ├── compress.py │ │ ├── connectioncache.py │ │ ├── dotdict.py │ │ ├── encoding.py │ │ ├── encodingsniffer.py │ │ ├── error.py │ │ ├── escaping.py │ │ ├── etreewrapper.py │ │ ├── frange.py │ │ ├── htmlformatters.py │ │ ├── importer.py │ │ ├── markuputils.py │ │ ├── markupwriters.py │ │ ├── match.py │ │ ├── misc.py │ │ ├── normalizing.py │ │ ├── platform.py │ │ ├── recommendations.py │ │ ├── robotenv.py │ │ ├── robotinspect.py │ │ ├── robotio.py │ │ ├── robotpath.py │ │ ├── robottime.py │ │ ├── robottypes.py │ │ ├── robottypes2.py │ │ ├── robottypes3.py │ │ ├── setter.py │ │ ├── sortable.py │ │ ├── text.py │ │ ├── unic.py │ │ └── utf8reader.py │ │ ├── variables │ │ ├── __init__.py │ │ ├── assigner.py │ │ ├── filesetter.py │ │ ├── finders.py │ │ ├── isvar.py │ │ ├── notfound.py │ │ ├── replacer.py │ │ ├── scopes.py │ │ ├── splitter.py │ │ ├── store.py │ │ ├── tablesetter.py │ │ └── variables.py │ │ ├── version.py │ │ └── writer │ │ ├── __init__.py │ │ ├── aligners.py │ │ ├── dataextractor.py │ │ ├── datafilewriter.py │ │ ├── filewriters.py │ │ ├── formatters.py │ │ ├── htmlformatter.py │ │ ├── htmltemplate.py │ │ └── rowsplitter.py │ ├── localization │ ├── RIDE.pot │ ├── TRANSLATORS.adoc │ ├── __init__.py │ ├── bg_BG │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── bs_BA │ │ └── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ ├── cs_CZ │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── da_DK │ │ └── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ ├── de_DE │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── en_US │ │ └── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ ├── es_ES │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── fi_FI │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── fr_FR │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── hi_IN │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── hu_HU │ │ └── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ ├── it_IT │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── ja_JP │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── ko_KR │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── nl_NL │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── pl_PL │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── pt_BR │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── pt_PT │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── ro_RO │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── ru_RU │ │ └── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ ├── sv_SE │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── th_TH │ │ └── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ ├── tr_TR │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── tr_credits.py │ ├── uk_UA │ │ └── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ ├── vi_VN │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── zh_CN │ │ ├── LC_MESSAGES │ │ │ ├── RIDE.mo │ │ │ └── RIDE.po │ │ └── restore_keywords.json │ └── zh_TW │ │ ├── LC_MESSAGES │ │ ├── RIDE.mo │ │ └── RIDE.po │ │ └── restore_keywords.json │ ├── log │ ├── __init__.py │ ├── log.py │ ├── logoutput.py │ └── logwindow.py │ ├── namespace │ ├── __init__.py │ ├── cache.py │ ├── embeddedargs.py │ ├── local_namespace.py │ ├── namespace.py │ ├── resourcefactory.py │ ├── suggesters.py │ └── variablefetcher.py │ ├── parserlog │ ├── __init__.py │ └── parserlog.py │ ├── pluginapi │ ├── __init__.py │ ├── plugin.py │ └── tree_aware_plugin_mixin.py │ ├── postinstall │ ├── RIDE.app │ │ └── Contents │ │ │ ├── Info.plist │ │ │ ├── MacOS │ │ │ └── RIDE │ │ │ ├── PkgInfo │ │ │ └── Resources │ │ │ ├── RIDEEditor.icns │ │ │ ├── RIDEEditorCropped.icns │ │ │ ├── RIDEEditorOpaque.icns │ │ │ ├── RIDEEditorWhite.icns │ │ │ ├── RIDEEditorWhiteCropped.icns │ │ │ └── RIDEEditorWhiteOpaque.icns │ ├── __init__.py │ ├── __main__.py │ └── desktopshortcut.py │ ├── preferences │ ├── __init__.py │ ├── editor.py │ ├── editors.py │ ├── excludes_class.py │ ├── general.py │ ├── imports.py │ ├── managesettingsdialog.py │ ├── saving.py │ ├── settings.cfg │ └── settings.py │ ├── publish │ ├── __init__.py │ ├── htmlmessages │ │ ├── __init__.py │ │ └── no_robot.html │ ├── messages.py │ └── publisher.py │ ├── recentfiles │ ├── __init__.py │ └── recentfiles.py │ ├── robotapi.py │ ├── run │ ├── __init__.py │ ├── configmanagerui.py │ ├── process.py │ ├── runanything.py │ └── ui.py │ ├── searchtests │ ├── __init__.py │ ├── dialogsearchtests.py │ └── searchtests.py │ ├── spec │ ├── __init__.py │ ├── iteminfo.py │ ├── librarydatabase.py │ ├── libraryfetcher.py │ ├── librarymanager.py │ ├── specimporter.py │ └── xmlreaders.py │ ├── ui │ ├── __init__.py │ ├── actiontriggers.py │ ├── excludes_dialogs.py │ ├── filedialogs.py │ ├── fileexplorerplugin.py │ ├── images.py │ ├── keywordsearch.py │ ├── mainframe.py │ ├── notebook.py │ ├── pluginmanager.py │ ├── preferences_dialogs.py │ ├── preview.py │ ├── progress.py │ ├── resourcedialogs.py │ ├── review.py │ ├── searchdots.py │ ├── tagdialogs.py │ ├── treenodehandlers.py │ └── treeplugin.py │ ├── usages │ ├── UsageRunner.py │ ├── __init__.py │ ├── commands.py │ └── usagesdialog.py │ ├── utils │ ├── __init__.py │ ├── eventhandler.py │ ├── highlightmatcher.py │ ├── printing.py │ ├── variablematcher.py │ └── versioncomparator.py │ ├── validators │ └── __init__.py │ ├── version.py │ └── widgets │ ├── Kw32.png │ ├── T32.png │ ├── __init__.py │ ├── button.py │ ├── cog.png │ ├── control_fastforward.png │ ├── control_pause.png │ ├── control_play.png │ ├── control_stop.png │ ├── database_refresh.png │ ├── dialog.py │ ├── dollar.png │ ├── down_arrow.png │ ├── folder.png │ ├── folder_excluded.png │ ├── folder_wrench.png │ ├── font.py │ ├── htmlwnd.py │ ├── images.py │ ├── kw_search.png │ ├── kw_search_button.png │ ├── label.py │ ├── list.py │ ├── page_white.png │ ├── page_white_gear.png │ ├── popupmenu.py │ ├── process.png │ ├── report.png │ ├── robot-framework-cropped.png │ ├── robot-framework-opaque.ico │ ├── robot-framework-opaque.png │ ├── robot-framework-white-cropped.png │ ├── robot-framework-white-opaque.ico │ ├── robot-framework-white-opaque.png │ ├── robot-pause.gif │ ├── robot-running.gif │ ├── robot.ico │ ├── robot.png │ ├── robot_failed.png │ ├── robot_passed.png │ ├── robot_running.png │ ├── robot_skipped.png │ ├── sizers.py │ ├── switch.png │ ├── test_search.png │ ├── test_search_button.png │ ├── text.py │ ├── wrench.png │ └── wrench_orange.png ├── tasks.py ├── test_all.sh ├── tools ├── create_icon.sh ├── geni18n.py └── mkhtml.py ├── tox.ini ├── utest ├── __init__.py ├── action │ ├── __init__.py │ ├── test_action_dsl.py │ └── test_shortcut.py ├── application │ ├── __init__.py │ ├── plugins_for_loader │ │ ├── .#invalidmodule.py │ │ ├── also_plugins.py │ │ ├── not_plugin.py │ │ └── plugin_module.py │ ├── test_app_main.py │ ├── test_editor_provider.py │ ├── test_plugin_loading.py │ ├── test_restartutil.py │ ├── test_robot_patches.py │ └── test_updatenotifier.py ├── contrib │ ├── __init__.py │ └── testrunner │ │ ├── __init__.py │ │ ├── test_args_parser.py │ │ ├── test_command_args_creation.py │ │ ├── test_command_creation.py │ │ ├── test_debugger.py │ │ ├── test_file_writer.py │ │ ├── test_process.py │ │ ├── test_pybot_arguments_validation.py │ │ └── test_settings_parser.py ├── controller │ ├── __init__.py │ ├── base_command_test.py │ ├── controller_creator.py │ ├── test_all_files_can_be_seen.py │ ├── test_arguments.py │ ├── test_backup.py │ ├── test_cellinfo.py │ ├── test_chiefcontroller.py │ ├── test_commands.py │ ├── test_controllers.py │ ├── test_excludes_logic.py │ ├── test_extract_keyword.py │ ├── test_extract_var_commands.py │ ├── test_file_rename.py │ ├── test_filecontrollers.py │ ├── test_for_loop.py │ ├── test_format_change.py │ ├── test_imports.py │ ├── test_indentation.py │ ├── test_macro_commands.py │ ├── test_macro_controllers.py │ ├── test_modification_prevention.py │ ├── test_modifications_on_disk.py │ ├── test_move_command.py │ ├── test_new_datafile_controller.py │ ├── test_occurrences.py │ ├── test_parents.py │ ├── test_rename_keywords.py │ ├── test_resource_import.py │ ├── test_resourcefilecontrollerfactory.py │ ├── test_stepcontrollers.py │ ├── test_tablecontrollers.py │ ├── test_tags.py │ ├── test_tcuk_copy.py │ ├── test_testexecutionresult.py │ ├── test_tooltip_message.py │ ├── test_variable.py │ ├── test_z_rename_keywords.py │ └── ui │ │ ├── __init__.py │ │ └── test_treecontroller.py ├── editor │ ├── __init__.py │ ├── fakeplugin.py │ ├── test_clipboard.py │ ├── test_contentassist.py │ ├── test_editor_creator.py │ ├── test_flowsizer.py │ ├── test_grid.py │ ├── test_gridcolorizer.py │ ├── test_macroeditors.py │ ├── test_tags.py │ ├── test_texteditor.py │ ├── test_z_editor_plugin.py │ └── test_z_kweditor_plugin.py ├── language │ ├── __init__.py │ └── test_language.py ├── logs │ └── test_log_windows.py ├── namespace │ ├── __init__.py │ ├── test_embedded_args.py │ ├── test_expiring_cache.py │ ├── test_keywords.py │ ├── test_library_cache.py │ ├── test_local_namespace.py │ ├── test_namespace.py │ ├── test_ns_performance.py │ ├── test_resourcefactory.py │ ├── test_retrievercontextfactory.py │ └── test_suggesters.py ├── plugin │ ├── __init__.py │ ├── test_messages.py │ ├── test_plugin_api.py │ └── test_plugin_settings.py ├── preferences │ ├── __init__.py │ └── test_settings.py ├── publish │ ├── __init__.py │ └── test_message_publishing.py ├── resources │ ├── __init__.py │ ├── datafilereader.py │ ├── mocks.py │ ├── read-only.cfg │ ├── robotdata │ │ ├── Embedded_arguments.robot │ │ ├── Example.robot │ │ ├── TestCases │ │ │ ├── Sub │ │ │ │ ├── Lib │ │ │ │ │ ├── MyListener.py │ │ │ │ │ ├── SubMyListener.py │ │ │ │ │ ├── mykw.py │ │ │ │ │ └── res2.py │ │ │ │ ├── Suite01.robot │ │ │ │ ├── resources │ │ │ │ │ ├── res.py │ │ │ │ │ └── res02.resource │ │ │ │ └── suite02.robot │ │ │ ├── mykw.py │ │ │ ├── resources │ │ │ │ ├── res.py │ │ │ │ └── res01.resource │ │ │ └── suite01.robot │ │ ├── all_files │ │ │ ├── .hidden │ │ │ │ └── should_not_be_visible.robot │ │ │ ├── .hidden_file.robot │ │ │ ├── _hidden_resource.tsv │ │ │ ├── resource_dir │ │ │ │ └── unused.robot │ │ │ ├── somefile.bla │ │ │ ├── suite2_dir │ │ │ │ └── suite2.robot │ │ │ ├── suite_dir │ │ │ │ ├── __init__.robot │ │ │ │ └── suite.robot │ │ │ ├── unused_resource.robot │ │ │ └── used_resource.robot │ │ ├── arguments_suite │ │ │ ├── Suite.robot │ │ │ └── libi.py │ │ ├── complex_tests │ │ │ └── TestSuite.robot │ │ ├── datagenerator.py │ │ ├── external_resources_unsorted │ │ │ ├── external_resources │ │ │ │ ├── subdirectory │ │ │ │ │ └── Foo.robot │ │ │ │ └── subdirectory2 │ │ │ │ │ ├── Resource.robot │ │ │ │ │ ├── bar.robot │ │ │ │ │ └── subsubdirectory │ │ │ │ │ ├── Abc.robot │ │ │ │ │ └── hello.robot │ │ │ └── suite │ │ │ │ └── Suite1.robot │ │ ├── findwhereused_variables │ │ │ ├── Res1.robot │ │ │ ├── Suite_1.robot │ │ │ ├── Suite_2.robot │ │ │ └── vars.py │ │ ├── forloop │ │ │ └── forloop.robot │ │ ├── golden │ │ │ └── tests.robot │ │ ├── imports │ │ │ ├── libs │ │ │ │ ├── corrupted.py │ │ │ │ └── existing.py │ │ │ ├── outer_lib.py │ │ │ ├── res │ │ │ │ ├── existing.robot │ │ │ │ └── with_variable.robot │ │ │ ├── subsuite │ │ │ │ ├── __init__.robot │ │ │ │ └── suit.robot │ │ │ ├── testsuite.robot │ │ │ └── vars │ │ │ │ └── vars.py │ │ ├── language │ │ │ ├── dummy.robot │ │ │ ├── dummy_es.robot │ │ │ ├── dummy_pt.robot │ │ │ ├── en │ │ │ │ ├── __init__.robot │ │ │ │ ├── full_en.json │ │ │ │ ├── full_en.py │ │ │ │ ├── full_en.resource │ │ │ │ ├── full_en.yaml │ │ │ │ ├── full_task_en.robot │ │ │ │ ├── full_test_en.robot │ │ │ │ ├── full_test_single_en.robot │ │ │ │ └── gherkin_en.robot │ │ │ ├── lang_bg.robot │ │ │ ├── lang_bs.robot │ │ │ ├── lang_cs.robot │ │ │ ├── lang_de.robot │ │ │ ├── lang_en.robot │ │ │ ├── lang_es.robot │ │ │ ├── lang_fi.robot │ │ │ ├── lang_fr.robot │ │ │ ├── lang_hi.robot │ │ │ ├── lang_it.robot │ │ │ ├── lang_ja.robot │ │ │ ├── lang_ko.robot │ │ │ ├── lang_nl.robot │ │ │ ├── lang_pl.robot │ │ │ ├── lang_pt.robot │ │ │ ├── lang_pt_br.robot │ │ │ ├── lang_ro.robot │ │ │ ├── lang_ru.robot │ │ │ ├── lang_sv.robot │ │ │ ├── lang_th.robot │ │ │ ├── lang_tr.robot │ │ │ ├── lang_uk.robot │ │ │ ├── lang_vi.robot │ │ │ ├── lang_zh_cn.robot │ │ │ ├── lang_zh_tw.robot │ │ │ ├── preamble_no_lang.robot │ │ │ ├── preamble_unknown_lang.robot │ │ │ └── pt │ │ │ │ ├── __init__.robot │ │ │ │ ├── full_pt.json │ │ │ │ ├── full_pt.py │ │ │ │ ├── full_pt.resource │ │ │ │ ├── full_pt.yaml │ │ │ │ ├── full_task_pt.robot │ │ │ │ ├── full_test_pt.robot │ │ │ │ ├── full_test_single_pt.robot │ │ │ │ └── gherkin_pt.robot │ │ ├── lib with spaces │ │ │ └── spacelib.py │ │ ├── lib_with_doc_format │ │ │ ├── testLibHtml.py │ │ │ ├── testLibHtmlClass.py │ │ │ ├── testLibRest.py │ │ │ ├── testLibRobot.py │ │ │ └── testLibText.py │ │ ├── libs │ │ │ ├── AnotherArgLib.py │ │ │ ├── ArgLib.py │ │ │ ├── LibSpecLibrary.xml │ │ │ ├── OldStyleLibSpecLibrary.xml │ │ │ ├── TestLib.py │ │ │ └── sub │ │ │ │ └── libsi.py │ │ ├── logmanysuite │ │ │ └── log_many.robot │ │ ├── no_ride │ │ │ ├── no_ride.html │ │ │ └── no_ride_resource.html │ │ ├── performance │ │ │ ├── suite_kw1000.robot │ │ │ ├── suite_kw2000.robot │ │ │ ├── suite_kw3000.robot │ │ │ └── suite_kw4000.robot │ │ ├── put_into_python_path │ │ │ ├── PathResource.html │ │ │ ├── PathResource.robot │ │ │ └── TestLib.xml │ │ ├── relative_imports │ │ │ ├── local.py │ │ │ └── relative.robot │ │ ├── resources │ │ │ ├── another_resource.html │ │ │ ├── another_resource.robot │ │ │ ├── dynamic_varz.py │ │ │ ├── external_res.resource │ │ │ ├── more_resources │ │ │ │ ├── even_more_resources.robot │ │ │ │ ├── even_more_varz.py │ │ │ │ ├── resource4.html │ │ │ │ └── resource4.robot │ │ │ ├── more_varz.py │ │ │ ├── res_var_file.py │ │ │ ├── resource.resource │ │ │ ├── resource.robot │ │ │ ├── resource2.html │ │ │ ├── resource2.robot │ │ │ ├── resource3.html │ │ │ ├── resource3.robot │ │ │ ├── resource_from_resource_with_variable.robot │ │ │ ├── resource_lib_imports.robot │ │ │ ├── resource_with_variables.robot │ │ │ ├── resu.robot │ │ │ └── varz.py │ │ ├── simple │ │ │ └── test.robot │ │ ├── simple_testsuite_with_different_namespaces │ │ │ ├── TestSuite1.robot │ │ │ ├── TestSuite2.robot │ │ │ ├── TestSuite3.robot │ │ │ ├── resources │ │ │ │ └── inner_resource.robot │ │ │ ├── resources_folder │ │ │ │ └── inner_resource2.robot │ │ │ └── testdata_resource.robot │ │ ├── small_test │ │ │ └── test.robot │ │ ├── testsuite │ │ │ ├── everything.robot │ │ │ ├── invalid.robot │ │ │ ├── minimal.robot │ │ │ ├── resuja │ │ │ │ ├── resource.resource │ │ │ │ └── resource.robot │ │ │ ├── spec_resource.xml │ │ │ └── subsuite │ │ │ │ ├── __init__.tsv │ │ │ │ └── test.robot │ │ ├── txt_only_test_suite │ │ │ ├── another_test_suite.robot │ │ │ └── test_suite.robot │ │ ├── unused_keywords │ │ │ ├── Abc.robot │ │ │ ├── Res1.robot │ │ │ ├── Test_suite_1.robot │ │ │ ├── Test_suite_2.robot │ │ │ └── foobar.robot │ │ ├── var_file_variables │ │ │ ├── import_resource_with_variable_from_var_file.robot │ │ │ ├── myvars.py │ │ │ └── res │ │ │ │ └── res.robot │ │ └── view_all_tags │ │ │ └── Tags_test.robot │ ├── setting_utils.py │ ├── settings2.cfg │ └── user2.cfg ├── run │ ├── __init__.py │ ├── process_test_scripts.py │ ├── test_argumentparsing.py │ ├── test_process.py │ ├── test_run_anything.py │ ├── test_run_configs.py │ └── test_ui_elements.py ├── searchtests │ ├── __init__.py │ ├── test_matcher.py │ └── test_testsorter.py ├── settings │ ├── __init__.py │ ├── test_excludes.py │ ├── test_merge_settings.py │ ├── test_ride_settings.py │ └── test_settings.py ├── spec │ ├── Exceptional.py │ ├── __init__.py │ ├── test_iteminfo.py │ ├── test_keywordspec.py │ ├── test_library_database.py │ ├── test_librarymanager.py │ └── test_specimporter.py ├── time_tests.py ├── ui │ ├── __init__.py │ ├── test_contextdialogs.py │ ├── test_keyword_search.py │ ├── test_mainframe.py │ ├── test_managesettingsdialogs.py │ ├── test_menu.py │ ├── test_namedialogs.py │ ├── test_preferences_editor.py │ ├── test_review.py │ ├── test_tagdialogs.py │ ├── test_tree.py │ └── test_tree_history.py ├── usages │ ├── __init__.py │ └── test_resource_usages.py ├── utils │ ├── __init__.py │ ├── test_highlightmatcher.py │ ├── test_htmlformat.py │ ├── test_is_same_drive.py │ ├── test_unescapes.py │ ├── test_variable_matcher.py │ └── test_versioncomparator.py ├── validators │ ├── __init__.py │ ├── test_arguments_validation.py │ ├── test_name_validation.py │ └── test_timeout_validation.py ├── widgets │ ├── test_htmlwnd.py │ └── test_popupmenu.py └── zulu_misc │ ├── conf.ini │ ├── conf.spec │ ├── conftest.py │ ├── test_configobj.py │ ├── test_get_language_code.py │ └── test_version.py └── uv.lock /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | # include = ./src/* 3 | source = src/ 4 | branch = True 5 | relative_files = True 6 | dynamic_context = test_function 7 | omit = 8 | # omit anything in a .local directory anywhere 9 | */.local/* 10 | # omit everything in /usr 11 | /usr/* 12 | # omit utest 13 | ./utest/* 14 | # robot library 15 | ./src/robotide/lib/robot/* 16 | # ./src/robotide/preferences/configobj/* 17 | */.venv/* 18 | ./src/robotide/__main__.py 19 | ./src/robotide/postinstall/__main__.py 20 | ./src/robotide/ui/preview.py 21 | 22 | [report] 23 | skip_empty = True 24 | exclude_lines = 25 | if __name__ == '__main__': 26 | if __name__ == '__main__' and 'robotide' not in sys.modules: 27 | 28 | [xml] 29 | output = .coverage-reports/coverage.xml 30 | 31 | [html] 32 | directory = .coverage-reports/htmlcov 33 | 34 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | tmp 2 | build 3 | dist 4 | .idea 5 | .*project 6 | *.pyc 7 | *$py.class 8 | results 9 | src/robotframework_ride.egg-info 10 | RIDE.wiki 11 | .DS_Store 12 | .spyderworkspace 13 | rfgen.py 14 | MANIFEST 15 | *.iml 16 | .coverage 17 | coverage.xml 18 | utest/resources/fake.cfg 19 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/robotide/preferences/configobj"] 2 | path = src/robotide/preferences/configobj 3 | url = https://github.com/DiffSK/configobj.git 4 | -------------------------------------------------------------------------------- /.whitesource: -------------------------------------------------------------------------------- 1 | { 2 | "generalSettings": { 3 | "shouldScanRepo": true 4 | }, 5 | "checkRunSettings": { 6 | "vulnerableCheckRunConclusionLevel": "failure" 7 | } 8 | } -------------------------------------------------------------------------------- /AUTHORS.txt: -------------------------------------------------------------------------------- 1 | The core team members: 2 | Ilmari Kontulainen 3 | Janne Härkönen 4 | Juha Rantanen 5 | Jussi Malinen 6 | Kari Husa 7 | Mikko Korpela 8 | Pekka Klärck 9 | Tatu Kairi 10 | Tommi Asiala 11 | 12 | 13 | Other contributors: 14 | Alexander Klose 15 | Andreas Brain 16 | Andrey Gavrilin 17 | Bjørn Forsman 18 | Bryan Oakley 19 | Charandeep S. Matta 20 | Dmitriy Pantelin 21 | Ferenc Züllich 22 | Florian Heine 23 | Guillermo Zapata 24 | Hale 25 | Harm Kramer 26 | Hélio Guilherme 27 | Jakov Peric 28 | Karol Szuster 29 | Kevin Ormbrek 30 | Leeuwen 31 | Petr Hudeček 32 | Timothy Alexander 33 | @2Eagle2 34 | @bale836 35 | @fzuellich 36 | @ghost 37 | @goodwillcoding 38 | @ImmoWetzel 39 | @JediMaster93 40 | @jnhyperion 41 | @Nyral 42 | @scathaig 43 | @StefaniGit 44 | @synsun 45 | @tuds 46 | @valeriobruno 47 | -------------------------------------------------------------------------------- /COPYRIGHT.txt: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include *.bmp 2 | include *.py 3 | include *.rest 4 | include *.sh 5 | include *.txt 6 | include *.adoc 7 | recursive-include src *.css *.js *.py *.robot *.txt *.png *.gif *.ico *.cfg *.html 8 | recursive-include doc *.rst 9 | recursive-include rtest *.py *.txt 10 | recursive-include src/robotide/postinstall/RIDE.app *.* 11 | recursive-include src/robotide/preferences/configobj/src/configobj *.* 12 | recursive-include src/robotide/localization *.py *.adoc *.pot *.po *.mo 13 | 14 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /src/robotide/localization/RIDE.pot 3 | translation: /src/robotide/localization/%locale_with_underscore%/LC_MESSAGES/RIDE.po 4 | - source: /src/robotide/localization/RIDE.pot 5 | translation: /src/robotide/localization/%two_letters_code%/LC_MESSAGES/RIDE.po 6 | -------------------------------------------------------------------------------- /doc/other/example_maven_runner/RIDE_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/doc/other/example_maven_runner/RIDE_output.png -------------------------------------------------------------------------------- /doc/other/example_maven_runner/runTests.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem Find pom.xml for this testsuite 3 | setlocal EnableDelayedExpansion 4 | rem Get path from first parameter 5 | set return_path=%1 6 | rem Check that dir contains pom.xml 7 | if exist !return_path!\pom.xml goto continue 8 | echo No pom.xml found in !return_path! 9 | exit /B 1 10 | :continue 11 | rem Start maven 12 | cd /D%return_path% 13 | mvn -Prun-tests-with-ride verify -Dride.argumentFile=%3 -Dride.listener=%5 -Dride.testCasesDirectory=%6 -------------------------------------------------------------------------------- /doc/other/example_pabot_runner/RIDE_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/doc/other/example_pabot_runner/RIDE_output.png -------------------------------------------------------------------------------- /doc/other/example_pabot_runner/pabotRunner.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal EnableDelayedExpansion 3 | rem Get path from first parameter 4 | set return_path=%1 5 | 6 | rem Start pabot 7 | cd /D%return_path% 8 | pabot --argumentfile %3 --listener %5 %6 -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | addopts = -p no:warnings --order-group-scope=module 3 | pythonpath = src src/robotide/preferences/configobj/src 4 | 5 | -------------------------------------------------------------------------------- /requirements-dev.txt: -------------------------------------------------------------------------------- 1 | setuptools>=70.0.0 2 | mockito 3 | invoke 4 | urllib3>=2.2.2 # not directly required, pinned by Snyk to avoid a vulnerability 5 | zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | requests>=2.32.3 7 | github3.py 8 | memory-profiler 9 | pylint 10 | pytest 11 | coverage 12 | pytest-cov 13 | pytest-order 14 | # To make a relase you need asciidoc3 (a2x3) 15 | # asciidoc3 16 | # Include also normal project requirements. 17 | -r requirements.txt 18 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | wxPython 2 | # Only for Windows to have a shortcut created (install before RIDE) 3 | Pywin32; sys_platform == 'win32' 4 | Pygments # This enables syntax highlighted in Text Editor 5 | robotframework 6 | Pypubsub 7 | psutil 8 | packaging 9 | requests>=2.32.2 10 | -------------------------------------------------------------------------------- /robot.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/robot.bmp -------------------------------------------------------------------------------- /rtest/__init__.py: -------------------------------------------------------------------------------- 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 .model import RIDE 17 | -------------------------------------------------------------------------------- /rtest/testdir/Suite.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource resources${/}resu.txt 3 | Resource generated_resut.txt 4 | Library String 5 | 6 | *** Test Cases *** 7 | Test Case 1 8 | Some local keyword with arguments 9 | No Operation 10 | Some keyword from resource file 2 11 | Should Be Empty ${EMPTY} 5 12 | None Existing Keyword 13 | FOR ${i} IN RANGE 1000 14 | Log ${i} 15 | END 16 | 17 | Templated Test Case 18 | [Template] Log 19 | Hello 20 | World 21 | 22 | *** Keywords *** 23 | Some local keyword 24 | [Arguments] ${arg1} ${arg2} 25 | Log This is local ${arg1} for ${arg2} 26 | FOR ${kekkonen} IN 1 2 3 27 | Log ${kekkonen} ${EMPTY} ${EMPTY} NOT ALLOWED!! 28 | END 29 | ${value}= Set Variable 4 30 | Replace String Using Regexp ${arg1} ${arg2} replacee 7 31 | [Return] 65 32 | -------------------------------------------------------------------------------- /rtest/testdir/__init__.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation This is suite directory documentation 3 | Force Tags force 4 | 5 | *** Variables *** 6 | ${SCALAR} 1 7 | 8 | -------------------------------------------------------------------------------- /rtest/testdir/resources/resu.txt: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Some keyword from resource file 3 | [Arguments] ${argument} 4 | [Documentation] This is documentation 5 | [Timeout] 1 second 6 | No Operation 7 | Log Something 8 | Log ${argument} 9 | [Teardown] Log teardown 10 | 11 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [sdist] 2 | force_manifest=1 3 | 4 | [bdist_wininst] 5 | bitmap=robot.bmp 6 | install_script=ride_postinstall.py 7 | 8 | [pycodestyle] 9 | count = False 10 | max_line_length = 90 11 | statistics = True 12 | 13 | [options] 14 | packages = find: 15 | include_package_data = true 16 | 17 | [options.entry_points] 18 | gui_scripts = 19 | ride = robotide.__main__:main 20 | -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | sonar.projectKey=HelioGuilherme66_RIDE 2 | sonar.organization=helioguilherme66 3 | sonar.host.url=https://sonarcloud.io 4 | sonar.python.version=3.10 5 | sonar.projectVersion=v2.1.3 6 | sonar.sources=src/ 7 | sonar.tests=utest/ 8 | sonar.exclusions=**/lib/robot/**/* 9 | sonar.dynamicAnalysis=reuseReports 10 | sonar.core.codeCoveragePlugin=cobertura 11 | sonar.python.coverage.reportPaths=.coverage-reports/*coverage*.xml 12 | sonar.python.xunit.skipDetails=true 13 | sonar.scm.provider=git 14 | -------------------------------------------------------------------------------- /src/bin/ride.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # Copyright 2008-2015 Nokia Networks 4 | # Copyright 2016- Robot Framework Foundation 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | 18 | 19 | import sys 20 | 21 | from robotide import main 22 | 23 | # Must be protected against reimporting 24 | # As multiprocessing has an odd requirement 25 | # and we use multiprocessing 26 | # http://docs.python.org/library/multiprocessing.html#windows 27 | if __name__ == '__main__': 28 | main(*sys.argv[1:]) 29 | 30 | -------------------------------------------------------------------------------- /src/bin/ride_postinstall.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # Copyright 2008-2015 Nokia Networks 3 | # Copyright 2016- Robot Framework Foundation 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | 18 | import sys 19 | from robotide.postinstall import main 20 | 21 | # Must be protected against reimporting 22 | # As multiprocessing has an odd requirement 23 | # and we use multiprocessing 24 | # http://docs.python.org/library/multiprocessing.html#windows 25 | if __name__ == '__main__': 26 | main(*sys.argv[1:]) 27 | # caller(None, sys.platform.lower()) 28 | 29 | -------------------------------------------------------------------------------- /src/robotide/__main__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # Copyright 2008-2015 Nokia Networks 4 | # Copyright 2016- Robot Framework Foundation 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | 18 | import sys 19 | 20 | if __name__ == '__main__' and 'robotide' not in sys.modules: 21 | from pathlib import Path 22 | robotide_dir = Path(__file__).absolute().parent # zipsafe 23 | sys.path = [str(robotide_dir.parent)] + [p for p in sys.path if Path(p) != robotide_dir] 24 | 25 | from robotide import main 26 | 27 | main(*sys.argv[1:]) 28 | -------------------------------------------------------------------------------- /src/robotide/application/__init__.py: -------------------------------------------------------------------------------- 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 .application import RIDE 17 | from .debugconsole import * 18 | from ..controller import Project 19 | from .editorprovider import EditorProvider 20 | -------------------------------------------------------------------------------- /src/robotide/application/debugconsole.py: -------------------------------------------------------------------------------- 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 | import threading 18 | import traceback 19 | 20 | 21 | def _print_stacks(): 22 | id2name = dict((th.ident, th.name) for th in threading.enumerate()) 23 | for thread_id, stack in sys._current_frames().items(): 24 | print(id2name[thread_id]) 25 | traceback.print_stack(f=stack) 26 | 27 | 28 | def start(ride): 29 | import code 30 | help_string = """\ 31 | RIDE - access to the running application 32 | print_stacks() - print current stack traces 33 | """ 34 | console = code.InteractiveConsole( 35 | locals={'RIDE': ride, 'print_stacks': _print_stacks}) 36 | thread = threading.Thread(target=lambda: console.interact(help_string)) 37 | thread.start() 38 | -------------------------------------------------------------------------------- /src/robotide/contrib/__init__.py: -------------------------------------------------------------------------------- 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 | 17 | CONTRIB_PATH = __path__[0] 18 | -------------------------------------------------------------------------------- /src/robotide/contrib/testrunner/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2011-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 . import runprofiles 17 | from .usages import USAGE 18 | from .testrunner import TestRunner 19 | from .TestRunnerAgent import TestRunnerAgent 20 | -------------------------------------------------------------------------------- /src/robotide/controller/__init__.py: -------------------------------------------------------------------------------- 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 .dataloader import DataLoader 17 | from .filecontrollers import data_controller, ResourceFileController 18 | from .project import Project 19 | from .macrocontrollers import TestCaseController, UserKeywordController, KeywordNameController, ForLoopStepController 20 | from .ui.treecontroller import TreeController, TestSelectionController 21 | -------------------------------------------------------------------------------- /src/robotide/controller/ui/__init__.py: -------------------------------------------------------------------------------- 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 | from .treecontroller import TreeController, TestSelectionController 16 | -------------------------------------------------------------------------------- /src/robotide/editor/formatters.py: -------------------------------------------------------------------------------- 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 | class ListToStringFormatter(object): 17 | 18 | def __init__(self, data): 19 | self._data = data 20 | 21 | @property 22 | def value(self): 23 | return ' | '.join(self._data.as_list()) 24 | -------------------------------------------------------------------------------- /src/robotide/lib/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/lib/__init__.py -------------------------------------------------------------------------------- /src/robotide/lib/compat/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | -------------------------------------------------------------------------------- /src/robotide/lib/compat/parsing/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | try: 16 | from .validator import ErrorReporter 17 | except ImportError: 18 | pass 19 | from .language import get_english_label, get_localized_setting 20 | try: 21 | from .languages import * 22 | except ImportError: 23 | pass 24 | -------------------------------------------------------------------------------- /src/robotide/lib/compat/parsing/validator.py: -------------------------------------------------------------------------------- 1 | from robot.api.parsing import ModelVisitor 2 | from robotide.lib.robot.errors import DataError 3 | 4 | 5 | class ErrorReporter(ModelVisitor): 6 | 7 | def generic_visit(self, node): 8 | if node.errors: 9 | print(f"DEBUG: validator.py ErrorReporter: Error on line {node.lineno}:") 10 | for error in node.errors: 11 | print(f"- {error}") 12 | raise DataError(message=error,details=node.lineno) 13 | ModelVisitor.generic_visit(self, node) 14 | -------------------------------------------------------------------------------- /src/robotide/lib/compat/pygments/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | -------------------------------------------------------------------------------- /src/robotide/lib/robot-commit: -------------------------------------------------------------------------------- 1 | 6197f94db6c2a614526ce41563c882c5bcf4821d 2 | 3 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/__main__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # Copyright 2008-2015 Nokia Networks 4 | # Copyright 2016- Robot Framework Foundation 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | 18 | import sys 19 | 20 | # Allows running as a script. __name__ check needed with multiprocessing: 21 | # https://github.com/robotframework/robotframework/issues/1137 22 | if 'robot' not in sys.modules and __name__ == '__main__': 23 | import pythonpathsetter 24 | 25 | from robotide.lib.robot import run_cli 26 | 27 | 28 | run_cli(sys.argv[1:]) 29 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/conf/__init__.py: -------------------------------------------------------------------------------- 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 | """Implements settings for both test execution and output processing. 17 | 18 | This package implements :class:`~robot.conf.settings.RobotSettings` and 19 | :class:`~robot.conf.settings.RebotSettings` classes used internally by 20 | the framework. There should be no need to use these classes externally. 21 | 22 | This package can be considered relatively stable. Aforementioned classes 23 | are likely to be rewritten at some point to be more convenient to use. 24 | Instantiating them is not likely to change, though. 25 | """ 26 | 27 | from .settings import RobotSettings, RebotSettings 28 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/__init__.py: -------------------------------------------------------------------------------- 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 | """Package for writing output files in HTML format. 17 | 18 | This package is considered stable but it is not part of the public API. 19 | """ 20 | 21 | from .htmlfilewriter import HtmlFileWriter, ModelWriter 22 | from .jsonwriter import JsonWriter 23 | 24 | LOG = 'rebot/log.html' 25 | REPORT = 'rebot/report.html' 26 | LIBDOC = 'libdoc/libdoc.html' 27 | TESTDOC = 'testdoc/testdoc.html' 28 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/common/doc_formatting.css: -------------------------------------------------------------------------------- 1 | .doc > * { 2 | margin: 0.7em 1em 0.1em 1em; 3 | padding: 0; 4 | } 5 | .doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 { 6 | margin: 0.7em 0 0.1em 0; 7 | } 8 | .doc > *:first-child { 9 | margin-top: 0.1em; 10 | } 11 | .doc table { 12 | border: 1px solid #ccc; 13 | background: transparent; 14 | border-collapse: collapse; 15 | empty-cells: show; 16 | font-size: 0.9em; 17 | } 18 | .doc table th, .doc table td { 19 | border: 1px solid #ccc; 20 | background: transparent; 21 | padding: 0.1em 0.3em; 22 | height: 1.2em; 23 | } 24 | .doc table th { 25 | text-align: center; 26 | letter-spacing: 0.1em; 27 | } 28 | .doc pre { 29 | font-size: 1.1em; 30 | letter-spacing: 0.05em; 31 | background: #f4f4f4; 32 | } 33 | .doc code { 34 | padding: 0 0.2em; 35 | letter-spacing: 0.05em; 36 | background: #eee; 37 | } 38 | .doc li { 39 | list-style-position: inside; 40 | list-style-type: square; 41 | } 42 | .doc img { 43 | border: 1px solid #ccc; 44 | } 45 | .doc hr { 46 | background: #ccc; 47 | height: 1px; 48 | border: 0; 49 | } 50 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/common/js_disabled.css: -------------------------------------------------------------------------------- 1 | #javascript-disabled { 2 | width: 600px; 3 | margin: 100px auto 0 auto; 4 | padding: 20px; 5 | color: black; 6 | border: 1px solid #ccc; 7 | background: #eee; 8 | } 9 | #javascript-disabled h1 { 10 | width: 100%; 11 | float: none; 12 | } 13 | #javascript-disabled ul { 14 | font-size: 1.2em; 15 | } 16 | #javascript-disabled li { 17 | margin: 0.5em 0; 18 | } 19 | #javascript-disabled b { 20 | font-style: italic; 21 | } 22 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/common/storage.js: -------------------------------------------------------------------------------- 1 | storage = function () { 2 | 3 | var prefix = 'robot-framework-'; 4 | var storage; 5 | 6 | function init(user) { 7 | prefix += user + '-'; 8 | storage = getStorage(); 9 | } 10 | 11 | function getStorage() { 12 | // Use localStorage if it's accessible, normal object otherwise. 13 | // Inspired by https://stackoverflow.com/questions/11214404 14 | try { 15 | localStorage.setItem(prefix, prefix); 16 | localStorage.removeItem(prefix); 17 | return localStorage; 18 | } catch (exception) { 19 | return {}; 20 | } 21 | } 22 | 23 | function get(name, defaultValue) { 24 | var value = storage[prefix + name]; 25 | if (typeof value === 'undefined') 26 | return defaultValue; 27 | return value; 28 | } 29 | 30 | function set(name, value) { 31 | storage[prefix + name] = value; 32 | } 33 | 34 | return {init: init, get: get, set: set}; 35 | }(); 36 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/lib/versions.txt: -------------------------------------------------------------------------------- 1 | THIS FILE IS OUTDATED 2 | 2021-aug-10 3 | ------------ 4 | 5 | jquery.min 6 | ---------- 7 | http://jquery.com/download 8 | Version: 3.3.1 9 | 10 | jquery.tmpl.min 11 | --------------- 12 | from version control, edited on 10th June 2011 (revision 07d08cb72c7556e95059) 13 | https://github.com/jquery/jquery-tmpl 14 | 15 | Includes our in-place fix for escaping &. See following links before update! 16 | https://github.com/robotframework/robotframework/commit/b72ff951fa8e06b1c336bc8447228904d8fdcc5d 17 | https://github.com/jquery/jquery-tmpl/issues/79 18 | 19 | jsxcompressor.min 20 | ----------------- 21 | https://jsxgraph.org/wp/jsxcompressor/index.html 22 | Downloaded: 2018-06-13 23 | 24 | jquery.tablesorter.min 25 | ---------------------- 26 | https://github.com/Mottie/tablesorter 27 | Version: 2.30.5 28 | 29 | jquery.highlight.min 30 | -------------------- 31 | https://github.com/bartaz/sandbox.js/blob/master/jquery.highlight.js 32 | Date: 2010-12-01 33 | Minimized using http://jscompress.com/ 34 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/libdoc/print.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-size: 8pt; 5 | } 6 | a { 7 | text-decoration: none; 8 | } 9 | #search, #open-search { 10 | display: none; 11 | } 12 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/normaltemplate.py: -------------------------------------------------------------------------------- 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 codecs 17 | import os 18 | from os.path import abspath, dirname, join, normpath 19 | 20 | 21 | class HtmlTemplate(object): 22 | _base_dir = join(dirname(abspath(__file__)), '..', 'htmldata') 23 | 24 | def __init__(self, filename): 25 | self._path = normpath(join(self._base_dir, filename.replace('/', os.sep))) 26 | 27 | def __iter__(self): 28 | with codecs.open(self._path, encoding='UTF-8') as file: 29 | for line in file: 30 | yield line.rstrip() 31 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/rebot/print.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: white !important; 3 | padding: 0; 4 | font-size: 8pt; 5 | } 6 | a:link, a:visited { 7 | color: black; 8 | } 9 | #header { 10 | width: auto; 11 | } 12 | .details, .statistics { 13 | width: 100%; 14 | } 15 | #generated-ago, #top-right-header, #normal-selector, #search-buttons, 16 | .folding-button, .expand, .hidden, .details-col-toggle { 17 | display: none; 18 | } 19 | .element-header-text, .children { 20 | margin: 0; 21 | } 22 | #test-details { 23 | border-collapse: collapse; 24 | table-layout: auto; 25 | } 26 | #test-details th, #test-details td { 27 | border: 1px solid black; 28 | } 29 | .details-col-header { 30 | padding: 0; 31 | } 32 | #print-selector { 33 | display: table-cell; 34 | } 35 | .tablesorter-header { 36 | background-image: none; 37 | background: #ddd !important; 38 | } 39 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/template.py: -------------------------------------------------------------------------------- 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 | try: 17 | from .jartemplate import HtmlTemplate 18 | except ImportError: 19 | from .normaltemplate import HtmlTemplate 20 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/testdata/create_libdoc_data.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from __future__ import print_function 4 | 5 | import sys 6 | from os.path import abspath, dirname, join, normpath 7 | 8 | BASE = dirname(abspath(__file__)) 9 | SRC = normpath(join(BASE, '..', '..', '..', '..', 'src')) 10 | # must generate data next to testdoc.html to get relative sources correct 11 | INPUT = join(BASE, 'libdoc.txt') 12 | OUTPUT = join(BASE, 'libdoc.js') 13 | 14 | sys.path.insert(0, SRC) 15 | 16 | from robotide.lib.robot.libdoc import LibraryDocumentation 17 | from robotide.lib.robot.libdocpkg.htmlwriter import LibdocModelWriter 18 | 19 | with open(OUTPUT, 'w') as output: 20 | libdoc = LibraryDocumentation(INPUT) 21 | LibdocModelWriter(output, libdoc).write_data() 22 | 23 | print(OUTPUT) 24 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/testdata/create_testdoc_data.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from __future__ import print_function 4 | 5 | import sys 6 | from os.path import abspath, dirname, join, normpath 7 | import shutil 8 | 9 | BASE = dirname(abspath(__file__)) 10 | ROOT = normpath(join(BASE, '..', '..', '..', '..')) 11 | DATA = [join(ROOT, 'atest', 'testdata', 'misc'), join(BASE, 'dir.suite')] 12 | SRC = join(ROOT, 'src') 13 | # must generate data next to testdoc.html to get relative sources correct 14 | OUTPUT = join(BASE, '..', 'testdoc.js') 15 | REAL_OUTPUT = join(BASE, 'testdoc.js') 16 | 17 | sys.path.insert(0, SRC) 18 | 19 | from robotide.lib.robot.testdoc import TestSuiteFactory, TestdocModelWriter 20 | 21 | with open(OUTPUT, 'w') as output: 22 | TestdocModelWriter(output, TestSuiteFactory(DATA)).write_data() 23 | 24 | shutil.move(OUTPUT, REAL_OUTPUT) 25 | 26 | print(REAL_OUTPUT) 27 | 28 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/testdata/dir.suite/test.suite.1.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Suite Setup User Keyword 3 | 4 | *** Test Cases *** 5 | list test 6 | [Tags] collections 7 | ${list} = Create List foo bar quux 8 | Log ${list} 9 | 10 | *** Keywords *** 11 | User Keyword 12 | User Keyword 2 13 | No Operation 14 | ${ret} = User Keyword 3 15 | 16 | User Keyword 2 17 | Log Several levels... 18 | User Keyword 3 19 | 20 | User Keyword 3 21 | Log The End HTML 22 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/testdata/dir.suite/test.suite.2.robot: -------------------------------------------------------------------------------- 1 | *** Test Cases *** 2 | Dictionary test 3 | [Tags] collections 4 | ${dict} = Create Dictionary key value 5 | Log ${dict} 6 | 7 | Test with a rather long name here we have and the name really is pretty long long long long longer than you think it could be 8 | [Tags] this test also has a pretty long tag that really is long long long long long longer than you think it could be 9 | Keyword we have here is rather long long long long long longer than you think it could be be be be be be beeeeeee 10 | This keyword gets many arguments 11 | ... it really gets many arguments 12 | ... it really gets many arguments 13 | ... it really gets many arguments 14 | ... it really gets many arguments 15 | ... it really gets many arguments 16 | ... it really gets many arguments 17 | 18 | *** Keywords *** 19 | Keyword we have here is rather long long long long long longer than you think it could be be be be be be beeeeeee 20 | No Operation 21 | 22 | This keyword gets many arguments 23 | [Arguments] @{args} 24 | Log many @{args} 25 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/htmldata/testdoc/testdoc.css: -------------------------------------------------------------------------------- 1 | #header { 2 | width: auto; 3 | margin-bottom: 2em; 4 | } 5 | .keyword .element-header { 6 | cursor: auto; 7 | background-image: none; 8 | padding-left: 0.3em; 9 | } 10 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/libdocpkg/output.py: -------------------------------------------------------------------------------- 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 os 17 | 18 | from robotide.lib.robot.utils import file_writer 19 | 20 | 21 | class LibdocOutput(object): 22 | 23 | def __init__(self, output_path, format): 24 | self._output_path = output_path 25 | self._format = format.upper() 26 | self._output_file = None 27 | 28 | def __enter__(self): 29 | if self._format == 'HTML': 30 | self._output_file = file_writer(self._output_path) 31 | return self._output_file 32 | return self._output_path 33 | 34 | def __exit__(self, *exc_info): 35 | if self._output_file: 36 | self._output_file.close() 37 | if any(exc_info): 38 | os.remove(self._output_path) 39 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/libdocpkg/writer.py: -------------------------------------------------------------------------------- 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 robotide.lib.robot.errors import DataError 17 | 18 | from .htmlwriter import LibdocHtmlWriter 19 | from .xmlwriter import LibdocXmlWriter 20 | 21 | 22 | def LibdocWriter(format=None): 23 | format = (format or 'HTML').upper() 24 | if format == 'HTML': 25 | return LibdocHtmlWriter() 26 | if format == 'XML': 27 | return LibdocXmlWriter() 28 | raise DataError("Format must be either 'HTML' or 'XML', got '%s'." % format) 29 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/libraries/Easter.py: -------------------------------------------------------------------------------- 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 robotide.lib.robot.api import logger 17 | 18 | 19 | def none_shall_pass(who): 20 | if who is not None: 21 | raise AssertionError('None shall pass!') 22 | logger.info( 23 | '', 29 | html=True 30 | ) 31 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/libraries/Reserved.py: -------------------------------------------------------------------------------- 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 | RESERVED_KEYWORDS = ['for', 'while', 'break', 'continue', 'end', 17 | 'if', 'else', 'elif', 'else if', 'return'] 18 | 19 | 20 | class Reserved(object): 21 | ROBOT_LIBRARY_SCOPE = 'GLOBAL' 22 | 23 | def get_keyword_names(self): 24 | return RESERVED_KEYWORDS 25 | 26 | def run_keyword(self, name, args): 27 | error = "'%s' is a reserved keyword." % name.title() 28 | if name in ('else', 'else if'): 29 | error += (" It must be in uppercase (%s) when used as a marker" 30 | " with 'Run Keyword If'." % name.upper()) 31 | raise Exception(error) 32 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/model/metadata.py: -------------------------------------------------------------------------------- 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 robotide.lib.robot.utils import is_string, NormalizedDict, py2to3, unic 17 | 18 | 19 | @py2to3 20 | class Metadata(NormalizedDict): 21 | 22 | def __init__(self, initial=None): 23 | NormalizedDict.__init__(self, initial, ignore='_') 24 | 25 | def __setitem__(self, key, value): 26 | if not is_string(key): 27 | key = unic(key) 28 | if not is_string(value): 29 | value = unic(value) 30 | NormalizedDict.__setitem__(self, key, value) 31 | 32 | def __unicode__(self): 33 | return u'{%s}' % ', '.join('%s: %s' % (k, self[k]) for k in self) 34 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/model/tagsetter.py: -------------------------------------------------------------------------------- 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 robotide.lib.robot.utils import py2to3 17 | 18 | from .visitor import SuiteVisitor 19 | 20 | 21 | @py2to3 22 | class TagSetter(SuiteVisitor): 23 | 24 | def __init__(self, add=None, remove=None): 25 | self.add = add 26 | self.remove = remove 27 | 28 | def start_suite(self, suite): 29 | return bool(self) 30 | 31 | def visit_test(self, test): 32 | test.tags.add(self.add) 33 | test.tags.remove(self.remove) 34 | 35 | def visit_keyword(self, keyword): 36 | pass 37 | 38 | def __nonzero__(self): 39 | return bool(self.add or self.remove) 40 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/output/__init__.py: -------------------------------------------------------------------------------- 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 | """Package for internal logging and other output. 17 | 18 | Not part of the public API, and also subject to change in the future when 19 | test execution is refactored. 20 | """ 21 | 22 | from .output import Output 23 | from .logger import LOGGER 24 | from .xmllogger import XmlLogger 25 | from .loggerhelper import LEVELS, Message 26 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/output/console/__init__.py: -------------------------------------------------------------------------------- 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 robotide.lib.robot.errors import DataError 17 | 18 | from .dotted import DottedOutput 19 | from .quiet import NoOutput, QuietOutput 20 | from .verbose import VerboseOutput 21 | 22 | 23 | def ConsoleOutput(type='verbose', width=78, colors='AUTO', markers='AUTO', 24 | stdout=None, stderr=None): 25 | upper = type.upper() 26 | if upper == 'VERBOSE': 27 | return VerboseOutput(width, colors, markers, stdout, stderr) 28 | if upper == 'DOTTED': 29 | return DottedOutput(width, colors, stdout, stderr) 30 | if upper == 'QUIET': 31 | return QuietOutput(colors, stderr) 32 | if upper == 'NONE': 33 | return NoOutput() 34 | raise DataError("Invalid console output type '%s'. Available " 35 | "'VERBOSE', 'DOTTED', 'QUIET' and 'NONE'." % type) 36 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/output/console/quiet.py: -------------------------------------------------------------------------------- 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 .highlighting import HighlightingStream 19 | 20 | 21 | class QuietOutput(object): 22 | 23 | def __init__(self, colors='AUTO', stderr=None): 24 | self._stderr = HighlightingStream(stderr or sys.__stderr__, colors) 25 | 26 | def message(self, msg): 27 | if msg.level in ('WARN', 'ERROR'): 28 | self._stderr.error(msg.message, msg.level) 29 | 30 | 31 | class NoOutput(object): 32 | pass 33 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/parsing/txtreader.py: -------------------------------------------------------------------------------- 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 | # TODO: Remove this module in RF 3.2. 17 | 18 | import warnings 19 | 20 | from .robotreader import RobotReader as TxtReader 21 | 22 | 23 | warnings.warn("'TxtReader' is deprecated. Use 'RobotReader' instead.", 24 | DeprecationWarning,) 25 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/reporting/__init__.py: -------------------------------------------------------------------------------- 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 | """Implements report, log, output XML, and xUnit file generation. 17 | 18 | The public API of this package is the :class:`~.ResultWriter` class. It 19 | can write result files based on XML output files on the file system, 20 | as well as based on the result objects returned by 21 | the :func:`~robot.result.resultbuilder.ExecutionResult` factory method or 22 | an executed :class:`~robot.running.model.TestSuite`. 23 | 24 | It is highly recommended to use the public API via the :mod:`robot.api` package. 25 | 26 | This package is considered stable. 27 | """ 28 | 29 | from .resultwriter import ResultWriter 30 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/reporting/outputwriter.py: -------------------------------------------------------------------------------- 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 robotide.lib.robot.output.xmllogger import XmlLogger 17 | 18 | 19 | class OutputWriter(XmlLogger): 20 | 21 | def __init__(self, output, rpa=False): 22 | XmlLogger.__init__(self, output, rpa=rpa, generator='Rebot') 23 | 24 | def start_message(self, msg): 25 | self._write_message(msg) 26 | 27 | def visit_keyword(self, kw): 28 | self.start_keyword(kw) 29 | for child in kw.children: 30 | child.visit(self) 31 | self.end_keyword(kw) 32 | 33 | def close(self): 34 | self._writer.end('robot') 35 | self._writer.close() 36 | 37 | def end_result(self, result): 38 | self.close() 39 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/result/messagefilter.py: -------------------------------------------------------------------------------- 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 robotide.lib.robot.output.loggerhelper import IsLogged 17 | 18 | from robotide.lib.robot.model import SuiteVisitor 19 | 20 | 21 | class MessageFilter(SuiteVisitor): 22 | 23 | def __init__(self, loglevel): 24 | self._is_logged = IsLogged(loglevel or 'TRACE') 25 | 26 | def start_keyword(self, keyword): 27 | keyword.messages = [msg for msg in keyword.messages 28 | if self._is_logged(msg.level)] 29 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/running/arguments/__init__.py: -------------------------------------------------------------------------------- 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 robotide.lib.robot.utils import JYTHON 17 | 18 | from .argumentmapper import DefaultValue 19 | from .argumentparser import (PythonArgumentParser, UserKeywordArgumentParser, 20 | DynamicArgumentParser, JavaArgumentParser) 21 | from .argumentspec import ArgumentSpec 22 | from .embedded import EmbeddedArguments 23 | if JYTHON: 24 | from .javaargumentcoercer import JavaArgumentCoercer 25 | else: 26 | JavaArgumentCoercer = None 27 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/running/timeouts/posix.py: -------------------------------------------------------------------------------- 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 signal import setitimer, signal, SIGALRM, ITIMER_REAL 17 | 18 | 19 | class Timeout(object): 20 | 21 | def __init__(self, timeout, error): 22 | self._timeout = timeout 23 | self._error = error 24 | 25 | def execute(self, runnable): 26 | self._start_timer() 27 | try: 28 | return runnable() 29 | finally: 30 | self._stop_timer() 31 | 32 | def _start_timer(self): 33 | signal(SIGALRM, self._raise_timeout_error) 34 | setitimer(ITIMER_REAL, self._timeout) 35 | 36 | def _raise_timeout_error(self, signum, frame): 37 | raise self._error 38 | 39 | def _stop_timer(self): 40 | setitimer(ITIMER_REAL, 0) 41 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/utils/platform.py: -------------------------------------------------------------------------------- 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 os 17 | import re 18 | import sys 19 | 20 | 21 | java_match = re.match(r'java(\d+)\.(\d+)\.(\d+)', sys.platform) 22 | if java_match: 23 | JYTHON = True 24 | JAVA_VERSION = tuple(int(i) for i in java_match.groups()) 25 | else: 26 | JYTHON = False 27 | JAVA_VERSION = (0, 0, 0) 28 | PY_VERSION = sys.version_info[:3] 29 | PY2 = PY_VERSION[0] == 2 30 | PY3 = not PY2 31 | IRONPYTHON = sys.platform == 'cli' 32 | PYPY = 'PyPy' in sys.version 33 | UNIXY = os.sep == '/' 34 | WINDOWS = not UNIXY 35 | 36 | RERAISED_EXCEPTIONS = (KeyboardInterrupt, SystemExit, MemoryError) 37 | if JYTHON: 38 | from java.lang import OutOfMemoryError 39 | RERAISED_EXCEPTIONS += (OutOfMemoryError,) 40 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/utils/robotenv.py: -------------------------------------------------------------------------------- 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 os 17 | 18 | from .encoding import system_decode as decode, system_encode as encode 19 | 20 | 21 | def get_env_var(name, default=None): 22 | try: 23 | value = os.environ[encode(name)] 24 | except KeyError: 25 | return default 26 | else: 27 | return decode(value) 28 | 29 | 30 | def set_env_var(name, value): 31 | os.environ[encode(name)] = encode(value) 32 | 33 | 34 | def del_env_var(name): 35 | value = get_env_var(name) 36 | if value is not None: 37 | del os.environ[encode(name)] 38 | return value 39 | 40 | 41 | def get_env_vars(upper=os.sep != '/'): 42 | # by default, name is upper-cased on Windows regardless interpreter 43 | return dict((name if not upper else name.upper(), get_env_var(name)) 44 | for name in (decode(name) for name in os.environ)) 45 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/utils/robotinspect.py: -------------------------------------------------------------------------------- 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 .platform import JYTHON 17 | 18 | 19 | if JYTHON: 20 | 21 | from org.python.core import PyReflectedFunction, PyReflectedConstructor 22 | 23 | def is_java_init(init): 24 | return isinstance(init, PyReflectedConstructor) 25 | 26 | def is_java_method(method): 27 | func = method.im_func if hasattr(method, 'im_func') else method 28 | return isinstance(func, PyReflectedFunction) 29 | 30 | else: 31 | 32 | def is_java_init(init): 33 | return False 34 | 35 | def is_java_method(method): 36 | return False 37 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/variables/__init__.py: -------------------------------------------------------------------------------- 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 | """Implements storing and resolving variables. 17 | 18 | This package is mainly for internal usage. 19 | """ 20 | 21 | from .assigner import VariableAssignment 22 | from .isvar import contains_var, is_var, is_scalar_var, is_list_var, is_dict_var 23 | from .notfound import variable_not_found 24 | from .scopes import VariableScopes 25 | from .splitter import VariableSplitter, VariableIterator 26 | from .tablesetter import VariableTableValue, DictVariableTableValue 27 | from .variables import Variables 28 | -------------------------------------------------------------------------------- /src/robotide/lib/robot/writer/__init__.py: -------------------------------------------------------------------------------- 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 | """Implements writing of parsed, and possibly edited, test data back to files. 17 | 18 | This functionality is used by :meth:`robot.parsing.model.TestCaseFile.save` 19 | and indirectly by :mod:`robot.tidy`. External tools should not need to use 20 | this package directly. 21 | 22 | This package is considered stable, although the planned changes to 23 | :mod:`robot.parsing` may affect also this package. 24 | """ 25 | 26 | from .datafilewriter import DataFileWriter 27 | -------------------------------------------------------------------------------- /src/robotide/localization/TRANSLATORS.adoc: -------------------------------------------------------------------------------- 1 | = Translators 2 | ifdef::env-github[:outfilesuffix: .adoc] 3 | 4 | - https://github.com/JFoederer[J. Foederer]: Dutch 5 | - Minerva Järvensivu: Finnish 6 | - https://github.com/HelioGuilherme66[Hélio Guilherme]: Portuguese, Brazilian Portuguese 7 | - Hyeonho Kang: Korean 8 | - Unknown: Pirates 9 | -------------------------------------------------------------------------------- /src/robotide/localization/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | -------------------------------------------------------------------------------- /src/robotide/localization/bg_BG/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/bg_BG/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/bg_BG/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Не Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Включен Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Включен Failure"], 6 | ["Should Be True", "Should Be Вярно"], 7 | ["Should Not Be True", "Should Not Be Вярно"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/bs_BA/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/bs_BA/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/cs_CZ/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/cs_CZ/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/cs_CZ/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Ne Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Zapnuto Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Zapnuto Failure"], 6 | ["Should Be True", "Should Be Pravda"], 7 | ["Should Not Be True", "Should Not Be Pravda"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/da_DK/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/da_DK/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/de_DE/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/de_DE/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/de_DE/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Nein Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue An Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn An Failure"], 6 | ["Should Be True", "Should Be Wahr"], 7 | ["Should Not Be True", "Should Not Be Wahr"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/en_US/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/en_US/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/es_ES/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/es_ES/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/es_ES/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["Should Be True", "Should Be Verdadero"], 4 | ["Should Not Be True", "Should Not Be Verdadero"] 5 | ] 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/robotide/localization/fi_FI/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/fi_FI/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/fi_FI/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Ei Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Päällä Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Päällä Failure"], 6 | ["Should Be True", "Should Be Tosi"], 7 | ["Should Not Be True", "Should Not Be Tosi"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/fr_FR/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/fr_FR/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/fr_FR/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Non Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Actif Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Actif Failure"], 6 | ["Should Be True", "Should Be Vrai"], 7 | ["Should Not Be True", "Should Not Be Vrai"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/hi_IN/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/hi_IN/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/hi_IN/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "नहीं Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue हां Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn हां Failure"], 6 | ["Should Be True", "Should Be यथार्थ"], 7 | ["Should Not Be True", "Should Not Be यथार्थ"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/hu_HU/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/hu_HU/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/it_IT/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/it_IT/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/it_IT/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["Should Be True", "Should Be Vero"], 4 | ["Should Not Be True", "Should Not Be Vero"] 5 | ] 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/robotide/localization/ja_JP/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/ja_JP/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/ja_JP/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "無効 Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue はい Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn はい Failure"], 6 | ["Should Be True", "Should Be 真"], 7 | ["Should Not Be True", "Should Not Be 真"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/ko_KR/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/ko_KR/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/ko_KR/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "아니오 Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue 켜기 Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn 켜기 Failure"], 6 | ["Should Be True", "Should Be 참"], 7 | ["Should Not Be True", "Should Not Be 참"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/nl_NL/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/nl_NL/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/nl_NL/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Nee Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Aan Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Aan Failure"], 6 | ["Should Be True", "Should Be Waar"], 7 | ["Should Not Be True", "Should Not Be Waar"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/pl_PL/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/pl_PL/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/pl_PL/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Nie Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Włączone Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Włączone Failure"], 6 | ["Should Be True", "Should Be Prawda"], 7 | ["Should Not Be True", "Should Not Be Prawda"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/pt_BR/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/pt_BR/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/pt_BR/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Não Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Sim Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Sim Failure"], 6 | ["Should Be True", "Should Be Verdadeiro"], 7 | ["Should Not Be True", "Should Not Be Verdadeiro"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/pt_PT/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/pt_PT/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/pt_PT/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Não Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Sim Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Sim Failure"], 6 | ["Should Be True", "Should Be Verdadeiro"], 7 | ["Should Not Be True", "Should Not Be Verdadeiro"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/ro_RO/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/ro_RO/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/ro_RO/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Nu Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Cand Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Cand Failure"], 6 | ["Should Be True", "Should Be Adevarat"], 7 | ["Should Not Be True", "Should Not Be Adevarat"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/ru_RU/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/ru_RU/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/sv_SE/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/sv_SE/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/sv_SE/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Nej Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue På Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn På Failure"], 6 | ["Should Be True", "Should Be Sant"], 7 | ["Should Not Be True", "Should Not Be Sant"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/th_TH/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/th_TH/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/tr_TR/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/tr_TR/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/tr_TR/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Hayir Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Açik Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Açik Failure"], 6 | ["Should Be True", "Should Be Doğru"], 7 | ["Should Not Be True", "Should Not Be Doğru"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/uk_UA/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/uk_UA/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/vi_VN/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/vi_VN/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/vi_VN/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "Không Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue Mở Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn Mở Failure"], 6 | ["Should Be True", "Should Be Đúng"], 7 | ["Should Not Be True", "Should Not Be Đúng"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/zh_CN/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/zh_CN/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/zh_CN/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "否 Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue 开 Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn 开 Failure"], 6 | ["Should Be True", "Should Be 真"], 7 | ["Should Not Be True", "Should Not Be 真"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/localization/zh_TW/LC_MESSAGES/RIDE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/localization/zh_TW/LC_MESSAGES/RIDE.mo -------------------------------------------------------------------------------- /src/robotide/localization/zh_TW/restore_keywords.json: -------------------------------------------------------------------------------- 1 | { 2 | "fix_list":[ 3 | ["No Operation", "否 Operation"], 4 | ["Run Keyword And Continue On Failure", "Run Keyword And Continue 開 Failure"], 5 | ["Run Keyword And Warn On Failure", "Run Keyword And Warn 開 Failure"], 6 | ["Should Be True", "Should Be 真"], 7 | ["Should Not Be True", "Should Not Be 真"] 8 | ] 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/robotide/log/__init__.py: -------------------------------------------------------------------------------- 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 .log import LogPlugin 17 | from .logwindow import LogWindow, message_to_string 18 | from .logoutput import LogOutput 19 | -------------------------------------------------------------------------------- /src/robotide/namespace/__init__.py: -------------------------------------------------------------------------------- 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 .namespace import Namespace 17 | -------------------------------------------------------------------------------- /src/robotide/namespace/embeddedargs.py: -------------------------------------------------------------------------------- 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 robotide.lib.robot.running.arguments.embedded import EmbeddedArgumentParser 17 | 18 | 19 | class EmbeddedArgsHandler(object): 20 | 21 | def __init__(self, keyword): 22 | if keyword.arguments: 23 | # raise TypeError('Cannot have normal arguments') 24 | print('DEBUG: Found normal arguments in embedded arguments keyword.') 25 | # print(f'DEBUG: embeddedargs.py EmbeddedArgsHandler keyword={keyword.name} longname={keyword.longname}') 26 | self.name_regexp, self.embedded_args = EmbeddedArgumentParser().parse(keyword.name) 27 | if hasattr(keyword, 'longname'): 28 | self.longname_regexp, _ = EmbeddedArgumentParser().parse(keyword.longname) 29 | if not self.embedded_args: 30 | raise TypeError('Must have embedded arguments') 31 | -------------------------------------------------------------------------------- /src/robotide/parserlog/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from .parserlog import ParserLogPlugin 16 | -------------------------------------------------------------------------------- /src/robotide/postinstall/RIDE.app/Contents/MacOS/RIDE: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | PAL=$PATH 3 | for i in `cat /etc/paths` 4 | do 5 | PAL="$PAL:$i" 6 | done 7 | PATH=$PAL 8 | export $PATH 9 | /usr/bin/python3 -m robotide.__init__ $* 2> /dev/null & 10 | -------------------------------------------------------------------------------- /src/robotide/postinstall/RIDE.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPLRIDE -------------------------------------------------------------------------------- /src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditor.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditor.icns -------------------------------------------------------------------------------- /src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorCropped.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorCropped.icns -------------------------------------------------------------------------------- /src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorOpaque.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorOpaque.icns -------------------------------------------------------------------------------- /src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorWhite.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorWhite.icns -------------------------------------------------------------------------------- /src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorWhiteCropped.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorWhiteCropped.icns -------------------------------------------------------------------------------- /src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorWhiteOpaque.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/postinstall/RIDE.app/Contents/Resources/RIDEEditorWhiteOpaque.icns -------------------------------------------------------------------------------- /src/robotide/postinstall/__main__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding=utf-8 3 | # Copyright 2008-2015 Nokia Networks 4 | # Copyright 2016- Robot Framework Foundation 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | import sys 18 | 19 | if __name__ == '__main__' and 'robotide.postinstall' not in sys.modules: 20 | from pathlib import Path 21 | robotide_dir = Path(__file__).absolute().parent # zipsafe 22 | sys.path = [str(robotide_dir.parent)] + [p for p in sys.path if Path(p) != robotide_dir] 23 | 24 | from robotide.postinstall import main 25 | 26 | main(*sys.argv[1:]) 27 | -------------------------------------------------------------------------------- /src/robotide/publish/htmlmessages/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /src/robotide/publish/htmlmessages/no_robot.html: -------------------------------------------------------------------------------- 1 | 17 |

18 | Robot Framework installation not found! 19 |

20 |

Starting from RIDE 1.5, Robot Framework standard libraries are no longer included in RIDE installation. In order to have intellisense features work with Robot Framework standard libraries, it must be installed separately. See the official website for installation instructions.

21 | -------------------------------------------------------------------------------- /src/robotide/recentfiles/__init__.py: -------------------------------------------------------------------------------- 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 .recentfiles import RecentFilesPlugin 17 | -------------------------------------------------------------------------------- /src/robotide/run/__init__.py: -------------------------------------------------------------------------------- 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 .runanything import RunAnything 17 | 18 | -------------------------------------------------------------------------------- /src/robotide/searchtests/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /src/robotide/spec/__init__.py: -------------------------------------------------------------------------------- 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 .librarydatabase import DATABASE_FILE 17 | from .librarymanager import LibraryManager 18 | 19 | -------------------------------------------------------------------------------- /src/robotide/ui/__init__.py: -------------------------------------------------------------------------------- 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 .excludes_dialogs import ExcludePreferences 17 | from .progress import LoadProgressObserver 18 | from .treeplugin import Tree 19 | from .mainframe import ToolBar 20 | from .preferences_dialogs import (PreferencesPanel, SpinChoiceEditor, IntegerChoiceEditor, boolean_editor, 21 | StringChoiceEditor, PreferencesColorPicker) 22 | -------------------------------------------------------------------------------- /src/robotide/ui/searchdots.py: -------------------------------------------------------------------------------- 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 wx 17 | 18 | 19 | class DottedSearch(object): 20 | """Class that can be used to make Search dots... 21 | 22 | parent - the UI component that the timer should be bound to 23 | 24 | callback - function that will receive timer events in UI thread 25 | argument to callback is string containing dots '.', '..'. '...' etc. 26 | 27 | """ 28 | 29 | def __init__(self, parent, callback): 30 | self._timer = wx.Timer(parent) 31 | self._dots = 0 32 | self._callback = callback 33 | parent.Bind(wx.EVT_TIMER, self._timer_event) 34 | 35 | def _timer_event(self, event): 36 | self._dots = (self._dots + 1) % 5 37 | self._callback('.'*self._dots) 38 | 39 | def start(self): 40 | self._timer.Start(500) 41 | 42 | def stop(self): 43 | self._timer.Stop() 44 | -------------------------------------------------------------------------------- /src/robotide/usages/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /src/robotide/utils/printing.py: -------------------------------------------------------------------------------- 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 wx.html import HtmlEasyPrinting 17 | 18 | 19 | class Printing(HtmlEasyPrinting): 20 | 21 | def __init__(self, parent): 22 | HtmlEasyPrinting.__init__(self, parentWindow=parent) 23 | 24 | @staticmethod 25 | def GetHtmlText(text): 26 | text = text.replace('\t', '    ') 27 | text = text.replace(' ', ' ') 28 | text = text.replace('\n\n', '

') 29 | text = text.replace('\n', '
') 30 | return text 31 | 32 | def preview_text(self, text): 33 | if '' not in text: 34 | text = self.GetHtmlText(text) 35 | HtmlEasyPrinting.PreviewText(self, text) 36 | -------------------------------------------------------------------------------- /src/robotide/utils/versioncomparator.py: -------------------------------------------------------------------------------- 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 | try: 17 | from pkg_resources import parse_version 18 | except ImportError: 19 | try: 20 | from packaging.version import parse as parse_version 21 | except ImportError as e: 22 | print("RIDE cannot verify versions upgrade because of missing packages." 23 | "You can install missing package with:\npip install packaging\nor\npip install setuptools") 24 | raise e 25 | 26 | 27 | def cmp_versions(version1, version2): 28 | if version1 is None: 29 | if version2 is None: 30 | return 0 31 | else: 32 | return -1 33 | if version2 is None: 34 | return 1 35 | if parse_version(version1) == parse_version(version2): 36 | return 0 37 | elif parse_version(version1) > parse_version(version2): 38 | return 1 39 | return -1 40 | -------------------------------------------------------------------------------- /src/robotide/version.py: -------------------------------------------------------------------------------- 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 | # Automatically generated by `tasks.py`. 17 | 18 | VERSION = 'v2.2dev25' 19 | -------------------------------------------------------------------------------- /src/robotide/widgets/Kw32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/Kw32.png -------------------------------------------------------------------------------- /src/robotide/widgets/T32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/T32.png -------------------------------------------------------------------------------- /src/robotide/widgets/__init__.py: -------------------------------------------------------------------------------- 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 .button import ButtonWithHandler 17 | from .dialog import RIDEDialog, HtmlDialog, HtmlWindow 18 | # , HTML_BACKGROUND 19 | from .font import Font 20 | from .images import ImageList, ImageProvider 21 | from .label import Label, HeaderLabel, HelpLabel 22 | from .list import VirtualList 23 | from .popupmenu import PopupCreator, PopupMenu, PopupMenuItem, PopupMenuItems 24 | from .sizers import VerticalSizer, HorizontalSizer 25 | from .text import TextField, SearchField 26 | -------------------------------------------------------------------------------- /src/robotide/widgets/cog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/cog.png -------------------------------------------------------------------------------- /src/robotide/widgets/control_fastforward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/control_fastforward.png -------------------------------------------------------------------------------- /src/robotide/widgets/control_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/control_pause.png -------------------------------------------------------------------------------- /src/robotide/widgets/control_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/control_play.png -------------------------------------------------------------------------------- /src/robotide/widgets/control_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/control_stop.png -------------------------------------------------------------------------------- /src/robotide/widgets/database_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/database_refresh.png -------------------------------------------------------------------------------- /src/robotide/widgets/dollar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/dollar.png -------------------------------------------------------------------------------- /src/robotide/widgets/down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/down_arrow.png -------------------------------------------------------------------------------- /src/robotide/widgets/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/folder.png -------------------------------------------------------------------------------- /src/robotide/widgets/folder_excluded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/folder_excluded.png -------------------------------------------------------------------------------- /src/robotide/widgets/folder_wrench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/folder_wrench.png -------------------------------------------------------------------------------- /src/robotide/widgets/font.py: -------------------------------------------------------------------------------- 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 wx 17 | 18 | 19 | class Font(object): 20 | help = property(lambda self: self._get_font(scale=-2)) 21 | fixed = property(lambda self: self._get_font(family=wx.FONTFAMILY_MODERN)) 22 | fixed_log = property(lambda self: 23 | self._get_font(scale=-2, family=wx.FONTFAMILY_MODERN)) 24 | underlined = property(lambda self: self._get_font(underlined=True)) 25 | 26 | def _get_font(self, scale=0, family=wx.FONTFAMILY_DEFAULT, underlined=False): 27 | size = wx.SystemSettings.GetFont(wx.SYS_SYSTEM_FONT).GetPointSize() + scale 28 | return wx.Font( size, family, wx.FONTSTYLE_NORMAL, 29 | wx.FONTWEIGHT_NORMAL, underline=underlined) 30 | -------------------------------------------------------------------------------- /src/robotide/widgets/kw_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/kw_search.png -------------------------------------------------------------------------------- /src/robotide/widgets/kw_search_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/kw_search_button.png -------------------------------------------------------------------------------- /src/robotide/widgets/label.py: -------------------------------------------------------------------------------- 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 wx 17 | 18 | from .font import Font 19 | 20 | 21 | class Label(wx.StaticText): 22 | 23 | def __init__(self, parent, id=-1, label='', **args): 24 | wx.StaticText.__init__(self, parent=parent, id=id, label=label.replace('&', '&&'), **args) 25 | 26 | def SetLabel(self, label): 27 | wx.StaticText.SetLabel(self, label.replace('&', '&&')) 28 | 29 | 30 | class HeaderLabel(Label): 31 | 32 | def __init__(self, parent, label): 33 | Label.__init__(self, parent, label=label) 34 | self.SetFont(wx.Font(wx.FontInfo(12).Family(wx.FONTFAMILY_SWISS).Bold())) 35 | 36 | 37 | class HelpLabel(Label): 38 | 39 | def __init__(self, parent, label): 40 | Label.__init__(self, parent, label=label) 41 | self.SetFont(Font().help) 42 | -------------------------------------------------------------------------------- /src/robotide/widgets/page_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/page_white.png -------------------------------------------------------------------------------- /src/robotide/widgets/page_white_gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/page_white_gear.png -------------------------------------------------------------------------------- /src/robotide/widgets/process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/process.png -------------------------------------------------------------------------------- /src/robotide/widgets/report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/report.png -------------------------------------------------------------------------------- /src/robotide/widgets/robot-framework-cropped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot-framework-cropped.png -------------------------------------------------------------------------------- /src/robotide/widgets/robot-framework-opaque.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot-framework-opaque.ico -------------------------------------------------------------------------------- /src/robotide/widgets/robot-framework-opaque.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot-framework-opaque.png -------------------------------------------------------------------------------- /src/robotide/widgets/robot-framework-white-cropped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot-framework-white-cropped.png -------------------------------------------------------------------------------- /src/robotide/widgets/robot-framework-white-opaque.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot-framework-white-opaque.ico -------------------------------------------------------------------------------- /src/robotide/widgets/robot-framework-white-opaque.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot-framework-white-opaque.png -------------------------------------------------------------------------------- /src/robotide/widgets/robot-pause.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot-pause.gif -------------------------------------------------------------------------------- /src/robotide/widgets/robot-running.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot-running.gif -------------------------------------------------------------------------------- /src/robotide/widgets/robot.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot.ico -------------------------------------------------------------------------------- /src/robotide/widgets/robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot.png -------------------------------------------------------------------------------- /src/robotide/widgets/robot_failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot_failed.png -------------------------------------------------------------------------------- /src/robotide/widgets/robot_passed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot_passed.png -------------------------------------------------------------------------------- /src/robotide/widgets/robot_running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot_running.png -------------------------------------------------------------------------------- /src/robotide/widgets/robot_skipped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/robot_skipped.png -------------------------------------------------------------------------------- /src/robotide/widgets/switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/switch.png -------------------------------------------------------------------------------- /src/robotide/widgets/test_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/test_search.png -------------------------------------------------------------------------------- /src/robotide/widgets/test_search_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/test_search_button.png -------------------------------------------------------------------------------- /src/robotide/widgets/text.py: -------------------------------------------------------------------------------- 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 wx 17 | from wx import Size 18 | 19 | 20 | class TextField(wx.TextCtrl): 21 | 22 | def __init__(self, parent, initial_value, process_enters=False, size=Size(200, 32)): 23 | flags = wx.TE_PROCESS_ENTER|wx.TE_LEFT if process_enters else wx.TE_LEFT 24 | wx.TextCtrl.__init__(self, parent, size=size, style=flags|wx.TE_NOHIDESEL) 25 | self.SetValue(initial_value) 26 | 27 | 28 | class SearchField(wx.SearchCtrl): 29 | 30 | def __init__(self, parent, initial_value, process_enters=False, size=Size(200, 32)): 31 | flags = wx.TE_PROCESS_ENTER|wx.TE_LEFT if process_enters else wx.TE_LEFT 32 | wx.SearchCtrl.__init__(self, parent, size=size, style=flags|wx.TE_NOHIDESEL) 33 | self.SetValue(initial_value) 34 | -------------------------------------------------------------------------------- /src/robotide/widgets/wrench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/wrench.png -------------------------------------------------------------------------------- /src/robotide/widgets/wrench_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/src/robotide/widgets/wrench_orange.png -------------------------------------------------------------------------------- /test_all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/sh 2 | 3 | export PYTHONPATH=/home/helio/github/RIDE/utest/:$PYTHONPATH 4 | export PYTHONPATH=/home/helio/github/RIDE/src/:$PYTHONPATH 5 | 6 | export PYTHONROOT=/usr/bin 7 | 8 | if [ $# -ge 1 ] 9 | then 10 | PY=3 11 | DIR="$1" 12 | else 13 | PY=3 14 | DIR="utest" 15 | fi 16 | 17 | shift 18 | if [ $# -eq 1 ] 19 | then 20 | DIR="$1" 21 | fi 22 | 23 | cd /home/helio/github/RIDE/ 24 | for i in `ls -1R $DIR | grep ":"` 25 | do 26 | a=`echo $i |sed s/://g` 27 | for j in `ls -1 $a/test_*py 2>/dev/null` 28 | do 29 | # printf "$j\n" 30 | # bypass file that is passing with invoke test 31 | if [ "$j" = "$a/test_DEBUG_resourcefactory.py" ] 32 | then 33 | b=`true` 34 | else 35 | b=`$PYTHONROOT/python$PY $j` 36 | fi 37 | if [ $? -eq 1 ] 38 | then 39 | printf "$b\n" 40 | printf "MUST FIX: $j\n" 41 | exit 42 | fi 43 | done 44 | done 45 | -------------------------------------------------------------------------------- /tools/create_icon.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Download base image if needed 4 | if [ ! -e robot-trans.png ]; then 5 | wget https://github.com/robotframework/robotframework/blob/master/doc/images/robot-trans.png 6 | fi 7 | 8 | # Cut base image and save it as PNM and as alpha channel 9 | cut="28 57 180 180" 10 | pngtopnm -mix robot-trans.png | pamcut $cut > robot.pnm 11 | pngtopnm -alpha robot-trans.png | pamcut $cut | ppmtopgm > alpha.pgm 12 | 13 | # Create input images (and alpha channels) for icon in different sizes 14 | for size in 16 32 48; do 15 | pnmscale -xysize $size $size robot.pnm > tmp.pnm 16 | pnmquant 16 tmp.pnm > $size.pnm # pnmquant fails to work with stdin 17 | pnmscale -xysize $size $size alpha.pgm > $size.pgm 18 | done 19 | 20 | # Create the icon 21 | ppmtowinicon -andpgms \ 22 | 16.pnm 16.pgm \ 23 | 32.pnm 32.pgm \ 24 | 48.pnm 48.pgm \ 25 | > robot.ico 26 | echo "Created robot.ico" 27 | 28 | # Cleanup 29 | rm *.pnm *.pgm 30 | -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | envlist = py39 3 | 4 | [testenv] 5 | setenv = APPDATA = {toxinidir}/AppData 6 | description = Unit tests 7 | deps = 8 | invoke 9 | pytest 10 | coverage 11 | commands = pip install -r requirements-dev.txt 12 | pip install -r requirements.txt 13 | pip install . 14 | invoke test-ci 15 | 16 | [coverage:run] 17 | 18 | -------------------------------------------------------------------------------- /utest/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RIDE/91836f7bde5665f171aec96c582b96d548eba472/utest/__init__.py -------------------------------------------------------------------------------- /utest/action/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/application/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/application/plugins_for_loader/.#invalidmodule.py: -------------------------------------------------------------------------------- 1 | Some invalid content 2 | 3 | -------------------------------------------------------------------------------- /utest/application/plugins_for_loader/also_plugins.py: -------------------------------------------------------------------------------- 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 robotide.pluginapi import Plugin 17 | 18 | 19 | class ExamplePlugin3(Plugin): 20 | 21 | def __init__(self, application): 22 | Plugin.__init__(self, application) 23 | -------------------------------------------------------------------------------- /utest/application/plugins_for_loader/not_plugin.py: -------------------------------------------------------------------------------- 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 | # This sits in the plugin directory but is not a plugin. 17 | # This exists to test that such a thing won't cause the 18 | # plugin manager to throw an exception. 19 | -------------------------------------------------------------------------------- /utest/application/plugins_for_loader/plugin_module.py: -------------------------------------------------------------------------------- 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 robotide.pluginapi import Plugin 17 | 18 | 19 | class ExamplePlugin1(Plugin): 20 | 21 | def __init__(self, application): 22 | Plugin.__init__(self, application) 23 | 24 | 25 | class ExamplePlugin2(Plugin): 26 | 27 | def __init__(self, application): 28 | Plugin.__init__(self, application) 29 | 30 | def turn_off(self, name): 31 | self._get_plugin_by_name(name).disable() 32 | 33 | def _get_plugin_by_name(self, name): 34 | for p in self.get_plugins(): 35 | if p.name == name: 36 | return p 37 | return None 38 | -------------------------------------------------------------------------------- /utest/contrib/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/contrib/testrunner/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/contrib/testrunner/test_settings_parser.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | import unittest 16 | 17 | from robotide.contrib.testrunner.SettingsParser import SettingsParser 18 | 19 | 20 | class SettingsParserTests(unittest.TestCase): 21 | 22 | def test_get_console_log_name_default(self): 23 | settings = ['message_log_name', 'Messages.txt'] 24 | result = SettingsParser.get_console_log_name(settings) 25 | self.assertEqual('', result) 26 | 27 | def test_get_console_log_name(self): 28 | settings = ['console_log_name', 'Console Log.txt'] 29 | result = SettingsParser.get_console_log_name(settings) 30 | self.assertEqual('Console Log.txt', result) 31 | 32 | 33 | if __name__ == '__main__': 34 | unittest.main() 35 | -------------------------------------------------------------------------------- /utest/controller/__init__.py: -------------------------------------------------------------------------------- 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 os 17 | import sys 18 | 19 | # Workaround for relative import in non-module 20 | # see https://stackoverflow.com/questions/16981921/relative-imports-in-python-3 21 | PACKAGE_PARENT = '..' 22 | SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), 23 | os.path.expanduser(__file__)))) 24 | sys.path.insert(0, os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT))) 25 | 26 | from .base_command_test import TestCaseCommandTest 27 | from .controller_creator import _FakeProject, testcase_controller, BASE_DATA 28 | -------------------------------------------------------------------------------- /utest/controller/ui/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/editor/__init__.py: -------------------------------------------------------------------------------- 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 .fakeplugin import FakePlugin 17 | -------------------------------------------------------------------------------- /utest/editor/fakeplugin.py: -------------------------------------------------------------------------------- 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 | 17 | class FakePlugin(object): 18 | def __init__(self, editors, item): 19 | self._editors = editors 20 | self._item = item 21 | 22 | def get_selected_item(self): 23 | return self._item 24 | 25 | def get_editor(self, itemclass): 26 | return self._editors[itemclass] 27 | 28 | def subscribe(self, *args): 29 | pass 30 | 31 | def unsubscribe(self, *args): 32 | pass 33 | -------------------------------------------------------------------------------- /utest/language/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | import os 16 | import sys 17 | 18 | # Workaround for relative import in non-module 19 | # see https://stackoverflow.com/questions/16981921/relative-imports-in-python-3 20 | PACKAGE_PARENT = '..' 21 | SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), 22 | os.path.expanduser(__file__)))) 23 | sys.path.insert(0, os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT))) 24 | -------------------------------------------------------------------------------- /utest/namespace/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/namespace/test_expiring_cache.py: -------------------------------------------------------------------------------- 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 unittest 17 | import time 18 | 19 | from robotide.namespace.cache import ExpiringCache 20 | 21 | 22 | class TestExpiringCache(unittest.TestCase): 23 | 24 | def test_cache_hit(self): 25 | cache = ExpiringCache(0.1) 26 | cache.put('a', 'b') 27 | assert 'b' == cache.get('a') 28 | 29 | def test_cache_expiration(self): 30 | cache = ExpiringCache(0.01) 31 | cache.put('a', 'b') 32 | time.sleep(0.1) 33 | assert cache.get('a') is None 34 | cache.put('a', 'c') 35 | assert 'c' == cache.get('a') 36 | 37 | 38 | if __name__ == "__main__": 39 | unittest.main() 40 | -------------------------------------------------------------------------------- /utest/plugin/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/preferences/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/publish/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/resources/read-only.cfg: -------------------------------------------------------------------------------- 1 | foo = 'bar' 2 | hello = 'world' 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/Embedded_arguments.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource resources/resource.resource 3 | 4 | *** Test Cases *** 5 | Call keyword 6 | VAR ${action} Sends 7 | User ${action} Email 8 | User Reads Email 9 | 10 | Server keyword 11 | VAR ${action} Sends Email 12 | resource.Server ${action} To User John Doe 13 | VAR ${user} Jane Doe 14 | resource.Server Sends Message To User ${user} 15 | -------------------------------------------------------------------------------- /utest/resources/robotdata/Example.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | ${scalar} 1.234 # comentário 3 | @{list} 2 a 4 b 4 | &{dicionario} def=inição sig=nificado 5 | ${new var} 3 # esta é nova 6 | 7 | *** Test Cases *** 8 | test 9 | ${testvar}= Set Variable ${scalar} 10 | Set Test Variable ${testvar} 11 | # DEBUG 12 | For Loop Example 13 | Log Many &{dicionario} 14 | Log Variables @{TEST_TAGS} 15 | 16 | Téste líçhadõ 17 | Should Be Equal As Integers 3 3 18 | Log To Console Vamos meter isto em Pausa. Linha comentário 19 | BuiltIn.Comment PAUSE 20 | Opção Primeirª12 ${30} 21 | 22 | *** Keywords *** 23 | For Loop Example 24 | : FOR ${index} IN RANGE 0 5 25 | \ ${testvar} = Evaluate 1 + ${index} 26 | \ ${total} = Keyword that will use testvar 27 | Log ${scalar} 28 | 29 | Keyword that will use testvar 30 | ${returntotal} = Evaluate ${testvar}+1 31 | Log Many ${scalar} @{list} &{dicionario} ${new var} 32 | &{dicionario}= No Operation 33 | @{list}= No Operation 34 | [Return] ${returntotal} 35 | 36 | Opção Primeirª12 37 | [Arguments] ${arg1} 38 | Log Pálavrâs ComAÇENTOS 39 | Sleep 0.4 seconds 40 | Run Keyword If ${arg1} < 6 Return From Keyword 41 | Opção Primeirª12 ${arg1-1} 42 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/Sub/Lib/MyListener.py: -------------------------------------------------------------------------------- 1 | class MyListener(): 2 | def before_navigate_to(self, url, driver): 3 | print("Before navigate to %s" % url) 4 | 5 | def after_navigate_to(self, url, driver): 6 | print("After navigate to %s" % url) 7 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/Sub/Lib/SubMyListener.py: -------------------------------------------------------------------------------- 1 | from selenium.webdriver.support.events import AbstractEventListener 2 | 3 | class SubMyListener(AbstractEventListener): 4 | def before_navigate_to(self, url, driver): 5 | print("Before navigate to %s" % url) 6 | 7 | def after_navigate_to(self, url, driver): 8 | print("After navigate to %s" % url) 9 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/Sub/Lib/mykw.py: -------------------------------------------------------------------------------- 1 | def my_kw(): 2 | print('kw from sub folder') 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/Sub/Lib/res2.py: -------------------------------------------------------------------------------- 1 | def res_kw_2(): 2 | print('kw from sub res folder') 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/Sub/Suite01.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Library Collections 3 | Resource ../resources/res01.resource 4 | Library ./Lib/SubMyListener.py 5 | Library ../Sub/Lib/mykw.py 6 | 7 | *** Test Cases *** 8 | case01 9 | [Setup] res01.keyword3 10 | keyword22 lalala\nlala\nlala 11 | 12 | case02 13 | log ${CURDIR} 14 | log ${EXECDIR} 15 | my_kw 16 | kw1 hehe 17 | after navigate to about:blank None 18 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/Sub/resources/res.py: -------------------------------------------------------------------------------- 1 | def res_kw(): 2 | print('kw from res folder') 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/Sub/resources/res02.resource: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Library ./res.py 3 | 4 | *** Keywords *** 5 | keyword1 6 | [Arguments] ${a} 7 | log ${a} This is at Sub/Resources/res02.resource 8 | Run Keyword keyword3 9 | 10 | keyword2 11 | [Arguments] ${a} 12 | log ${a} 13 | 14 | keyword3 15 | res_kw 16 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/Sub/suite02.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource ./resources/res02.resource 3 | Library ./Lib/mykw.py 4 | Resource ../../resources/external_res.resource 5 | 6 | *** Test Cases *** 7 | case01 8 | [Setup] res02.keyword1 Called from Setup in Sub/Suite02/case01 9 | my_kw 10 | res02.keyword3 11 | external_res.keyword2 Called fromSteps on Sub/Suite02/case01 12 | [Teardown] external_res.keyword3 13 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/mykw.py: -------------------------------------------------------------------------------- 1 | def my_kw(): 2 | print('kw from root folder') 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/resources/res.py: -------------------------------------------------------------------------------- 1 | def res_kw(): 2 | print('kw from res folder') 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/resources/res01.resource: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Library res.py 3 | Library Sub/Lib/res2.py # Another comment 4 | 5 | *** Keywords *** 6 | kw1 7 | [Arguments] ${a} 8 | log ${a} # teste 9 | # comment test testst 10 | log ${a} 11 | 12 | keyword22 13 | [Arguments] ${a} 14 | log ${a} 15 | Log To Console This is the argument \${a} = ${a} ! 16 | 17 | keyword3 18 | res kw 19 | res2.res kw 2 # Kw from res2 with a space in calling 20 | 21 | kw4 22 | Comment res kw 23 | Comment res kw 2 24 | No Operation 25 | 26 | kw5 27 | res.kw 2 # teste teste 28 | res.kw 29 | res2.Res Kw 2 30 | -------------------------------------------------------------------------------- /utest/resources/robotdata/TestCases/suite01.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Suite Setup external_res.keyword2 Called from Suite Setup on Suite01 3 | Resource ./resources/res01.resource 4 | Resource ./Sub/resources/res02.resource 5 | Library ./mykw.py 6 | Resource ../resources/external_res.resource 7 | 8 | *** Test Cases *** 9 | case01 10 | res02.keyword2 aaaa\na\na 11 | [Teardown] res02.keyword1 Called from Teardown on case01 12 | 13 | case02 14 | [Setup] external_res.keyword1 Called from Setup on case02 15 | log ${CURDIR} console=True 16 | log ${EXECDIR} console=True 17 | my_kw 18 | res02.keyword1 hehe 19 | 20 | case03 21 | res02.keyword3 22 | res01.keyword3 23 | Run Keyword external_res.keyword3 24 | external_res.keyword1 teste 25 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/.hidden/should_not_be_visible.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Foo 3 | bar 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/.hidden_file.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/_hidden_resource.tsv: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | kw 3 | No Operation 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/resource_dir/unused.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | ${a} 3 3 | ${b} 4 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/somefile.bla: -------------------------------------------------------------------------------- 1 | dslkdslkdldsak 2 | dslöaldkl 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/suite2_dir/suite2.robot: -------------------------------------------------------------------------------- 1 | *** Test Cases *** 2 | Noop 3 | Log nooop 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/suite_dir/__init__.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Library OperatingSystem 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/suite_dir/suite.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource ../used_resource.robot 3 | 4 | *** Test Cases *** 5 | Some test 6 | No Operation 7 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/unused_resource.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | KW 3 | Log 123 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/all_files/used_resource.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Some Keyword 3 | Log something 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/arguments_suite/Suite.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | @{LIST_VARIABLE} 1 2 3 3 | &{DICT_VARIABLE} key=val anotherone=bites the dust 4 | 5 | *** Test Cases *** 6 | Keissi 7 | KW1 arg1 8 | 9 | *** Keywords *** 10 | KW1 11 | [Arguments] ${mandatory} ${optional}= 12 | No Operation 13 | 14 | KW2 15 | [Arguments] @{rest} 16 | No Operation 17 | 18 | KW3 19 | FOR ${i} IN 1 2 20 | Log jee 21 | Log ${i} 22 | Log ${unknown} 23 | END 24 | FOR ${j} IN RANGE 200 25 | Log moi taas 26 | END 27 | 28 | KW4 29 | [Arguments] ${optional}=val @{others} 30 | No Operation 31 | 32 | KW5 33 | [Arguments] ${mandatory1} ${mandatory2} 34 | Log ${mandatory1} 35 | Log ${mandatory2} 36 | No Operation 37 | -------------------------------------------------------------------------------- /utest/resources/robotdata/arguments_suite/libi.py: -------------------------------------------------------------------------------- 1 | class libi(object): 2 | 3 | def __init__(self, *args): 4 | pass 5 | 6 | def onething(self): 7 | pass 8 | 9 | -------------------------------------------------------------------------------- /utest/resources/robotdata/complex_tests/TestSuite.robot: -------------------------------------------------------------------------------- 1 | Language: English 2 | 3 | *** Settings *** 4 | Suite Setup Run Keywords Suite Setup Keyword AND First KW 5 | Test Teardown Run Keywords Test Teardown in Setting AND Second KW 6 | 7 | *** Test Cases *** 8 | My Test 9 | [Teardown] Run Keywords Second KW AND Test Teardown Keyword 10 | Log Local 11 | 12 | My Other Test 13 | [Setup] Run Keywords First KW AND Test Setup Keyword 14 | Second KW 15 | 16 | My Third Test 17 | [Setup] Run Keyword Test Setup Keyword 18 | [Teardown] Run Keyword Test Teardown Keyword 19 | No Operation 20 | 21 | *** Keywords *** 22 | First KW 23 | [Documentation] First Keyword 24 | No Operation 25 | 26 | Second KW 27 | [Documentation] Second Keyword 28 | No Operation 29 | 30 | Test Setup Keyword 31 | [Teardown] Keyword Teardown Keyword 32 | No Operation 33 | 34 | Test Teardown Keyword 35 | No Operation 36 | 37 | Keyword Teardown Keyword 38 | No Operation 39 | 40 | Suite Setup Keyword 41 | First KW 42 | 43 | Test Teardown in Setting 44 | Second KW 45 | No Operation 46 | 47 | -------------------------------------------------------------------------------- /utest/resources/robotdata/external_resources_unsorted/external_resources/subdirectory/Foo.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | kw2 3 | 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/external_resources_unsorted/external_resources/subdirectory2/Resource.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource subsubdirectory/Abc.robot 3 | Resource subsubdirectory/hello.robot 4 | 5 | *** Keywords *** 6 | kw1 7 | 8 | -------------------------------------------------------------------------------- /utest/resources/robotdata/external_resources_unsorted/external_resources/subdirectory2/bar.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource subsubdirectory/hello.robot 3 | 4 | *** Keywords *** 5 | kw2 6 | 7 | -------------------------------------------------------------------------------- /utest/resources/robotdata/external_resources_unsorted/external_resources/subdirectory2/subsubdirectory/Abc.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | kw2 3 | 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/external_resources_unsorted/external_resources/subdirectory2/subsubdirectory/hello.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | kw2 3 | 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/external_resources_unsorted/suite/Suite1.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource ../external_resources/subdirectory2/bar.robot 3 | Resource ../external_resources/subdirectory/Foo.robot 4 | Resource ../external_resources/subdirectory2/Resource.robot 5 | 6 | *** Test Cases *** 7 | Test case 8 | kw1 9 | kw2 10 | 11 | -------------------------------------------------------------------------------- /utest/resources/robotdata/findwhereused_variables/Res1.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | ${resVar} "something" 3 | ${anotherVar} "Nothing but ${EMPTY} ${SPACE}" 4 | 5 | *** Keywords *** 6 | User KW 1 7 | [Arguments] ${arg1} @{arg2} 8 | ${ServerPort} 9 | ${Truth} ${Falsy} 10 | [Teardown] ${resVar} 11 | 12 | User KW 2 13 | [Arguments] ${arg1} @{arg2} 14 | [Documentation] Lorem ${arg1} ipsum 15 | Log ${resVar} 16 | ${arg1} 17 | @{arg2} 18 | [Teardown] @{arg2} 19 | 20 | -------------------------------------------------------------------------------- /utest/resources/robotdata/findwhereused_variables/Suite_1.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Variables vars.py 3 | 4 | *** Variables *** 5 | ${fileVar} "nothing" 6 | 7 | *** Test Cases *** 8 | Case 1 9 | [Setup] Some Keyword ${fileVar} 10 | [Timeout] 11 | ${ServerHost} ${ServerPort} 12 | ${Falsy} 13 | 14 | Case 2 15 | [Documentation] The variable ${log} can be found here 16 | ${log}= Set Variable "Text" 17 | Log ${log} 18 | ${ServerHost} 19 | [Teardown] ${fileVar} 20 | 21 | Case 3 22 | [Documentation] The variable ${log} can also be found here 23 | Log ${fileVar} 24 | ${EMPTY} 25 | 26 | -------------------------------------------------------------------------------- /utest/resources/robotdata/findwhereused_variables/Suite_2.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource Res1.robot 3 | 4 | *** Test Cases *** 5 | Case 4 6 | ${Truth} 7 | 8 | Case 5 9 | [Documentation] See, if we can use the variable ${resVar} from a resource file 10 | Log ${resVar} 11 | ${ServerHost} 12 | 13 | Case 6 14 | [Documentation] lorem ${Falsy} ipsum 15 | [Setup] ${Truth} 16 | ${Truth} 17 | 18 | -------------------------------------------------------------------------------- /utest/resources/robotdata/findwhereused_variables/vars.py: -------------------------------------------------------------------------------- 1 | ServerHost = "localhost" 2 | ServerPort = "1337" 3 | 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/imports/libs/corrupted.py: -------------------------------------------------------------------------------- 1 | sdklsdjakjsa 2 | d#skladjslk,..dsalkdjs weoiqwejdskla 3 | CORRUpteD 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/imports/libs/existing.py: -------------------------------------------------------------------------------- 1 | def keyword(): 2 | print('this is a keyword') 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/imports/outer_lib.py: -------------------------------------------------------------------------------- 1 | def this_is_the_outer_lib(): 2 | print('For imports test') 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/imports/res/existing.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Hello World 3 | Log moi 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/imports/res/with_variable.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | ${SOME} variable 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/imports/subsuite/__init__.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Library ..//outer_lib.py 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/imports/subsuite/suit.robot: -------------------------------------------------------------------------------- 1 | *** Test Cases *** 2 | test 3 | No Operation 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/imports/testsuite.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource res//existing.robot 3 | Resource res//none_existing.robot 4 | Resource ${RESU} 5 | Library String # A built in library from PYTHONPATH 6 | Library libs//existing.py 7 | Library libs//none_existing.py AS nothing 8 | Library libs//corrupted.py 9 | Library ${LIB} 10 | Variables ${CURDIR}//vars//vars.py 11 | Variables vars//none_existing.py 12 | 13 | *** Variables *** 14 | ${RESU} res//with_variable.robot 15 | ${LIB} XML 16 | 17 | *** Test Cases *** 18 | Some case 19 | No Operation 20 | 21 | Another case 22 | Log to Console ${VARIABLE} -------------------------------------------------------------------------------- /utest/resources/robotdata/imports/vars/vars.py: -------------------------------------------------------------------------------- 1 | _VARIABLE = 'VALUE' 2 | 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/en/__init__.robot: -------------------------------------------------------------------------------- 1 | # This is the preamble 2 | Language: English 3 | 4 | # A blank line 5 | 6 | *** Comments *** 7 | This is a comments block 8 | Second line of comments 9 | Maybe this block is still in preamble 10 | 11 | *** Settings *** 12 | Library Collections # This is a comment 13 | Resource full_en.resource # This is a comment 14 | Variables full_en.yaml # This is a comment 15 | Variables full_en.json # This is a comment 16 | Variables full_en.py # This is a comment 17 | 18 | Documentation This is the documentation 19 | ... A continued line of documentation 20 | 21 | Metadata Name Value # This is a comment 22 | 23 | Suite Setup Suite Keyword Suite Setup 24 | Suite Teardown Log To Console Suite Teardown 25 | 26 | *** Variables *** 27 | ${myvar} 123 # This is a comment 28 | 29 | *** Keywords *** 30 | Suite Keyword 31 | [Documentation] This is the documentation 32 | ... A continued line of documentation 33 | [Arguments] ${arg} # This is a comment 34 | [Tags] suite # This is a comment 35 | Log To Console This is the Suite Keyword arg=${arg} 36 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/en/full_en.json: -------------------------------------------------------------------------------- 1 | { 2 | "simple":"one", 3 | "secondary":1234 4 | } 5 | 6 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/en/full_en.py: -------------------------------------------------------------------------------- 1 | # Sample python variables file 2 | first = "First" 3 | second = 2 4 | 5 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/en/full_en.yaml: -------------------------------------------------------------------------------- 1 | main_variable: 2 | secondary: 3 | "Test" 4 | 5 | secondary_variable: 6 | 1234 7 | 8 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/en/gherkin_en.robot: -------------------------------------------------------------------------------- 1 | # This is the preamble 2 | Language: English 3 | 4 | # A blank line 5 | 6 | *** Settings *** 7 | Documentation This is the documentation for Gherkin test 8 | ... A continued line of documentation 9 | 10 | *** Test Cases *** 11 | third test 12 | Given "Mr. Smith" is registered 13 | And "cart" has objects 14 | When "Mr. Smith" clicks in checkout 15 | Then the total is presented and awaits confirmation 16 | But it is shown the unavailable payment method 17 | 18 | *** Keywords *** 19 | ${user} is registered 20 | No Operation 21 | 22 | ${cart} has objects 23 | No Operation 24 | 25 | ${user} clicks in checkout 26 | No Operation 27 | 28 | the total is presented and awaits confirmation 29 | No Operation 30 | 31 | it is shown the unavailable payment method 32 | No Operation 33 | 34 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/preamble_no_lang.robot: -------------------------------------------------------------------------------- 1 | # This is the preamble 2 | # Non existing language setting 3 | 4 | Whatever stuff we have here is ignored 5 | 6 | Even not comments are valid 7 | 8 | # If we have a line starting with Language: then we consider the language 9 | 10 | *** Tasks *** 11 | My First Task 12 | No Operation 13 | 14 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/preamble_unknown_lang.robot: -------------------------------------------------------------------------------- 1 | # This is the preamble 2 | # Unknown language setting 3 | Language: Pirates 4 | 5 | *** Loots *** 6 | Aaarr Robb'em All 7 | No Operation 8 | Log Aditional content 9 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/pt/__init__.robot: -------------------------------------------------------------------------------- 1 | # Este é o preâmbulo 2 | Language: Portuguese 3 | 4 | # Mais uma linha em branco 5 | 6 | *** Comentários *** 7 | This is a comments block 8 | Second line of comments 9 | Maybe this block is still in preamble 10 | 11 | *** Definições *** 12 | Biblioteca Collections # Isto é um comentário 13 | Recurso full_pt.resource # Isto é um comentário 14 | Variável full_pt.yaml # Isto é um comentário 15 | Variável full_pt.json # Isto é um comentário 16 | Variável full_pt.py # Isto é um comentário 17 | 18 | Documentação This is the documentation 19 | ... A continued line of documentation 20 | 21 | Metadados Nome Valor # Isto é um comentário 22 | 23 | Inicialização de Suíte Palavra-chave de Suite Suite Setup 24 | Finalização de Suíte Log To Console Suite Teardown 25 | 26 | *** Variáveis *** 27 | ${myvar} 123 # Isto é um comentário 28 | 29 | *** Comentários *** 30 | This is a comments block 31 | Second line of comments 32 | 33 | *** Palavras-Chave *** 34 | Palavra-chave de Suite 35 | [Documentação] This is the documentation 36 | ... A continued line of documentation 37 | [Argumentos] ${arg} # Isto é um comentário 38 | [Etiquetas] suite # Isto é um comentário 39 | Log To Console Esta é a palavra-chave de Suíte arg=${arg} 40 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/pt/full_pt.json: -------------------------------------------------------------------------------- 1 | { 2 | "simples":"one", 3 | "secundária":1234 4 | } 5 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/pt/full_pt.py: -------------------------------------------------------------------------------- 1 | # Sample python variables file 2 | primeira= "Primeira" 3 | segunda= 2 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/pt/full_pt.yaml: -------------------------------------------------------------------------------- 1 | variável_principal: 2 | secundária: 3 | "Teste" 4 | 5 | variável_secundária: 6 | 1234 7 | 8 | -------------------------------------------------------------------------------- /utest/resources/robotdata/language/pt/gherkin_pt.robot: -------------------------------------------------------------------------------- 1 | # Este é o preâmbulo 2 | Language: Portuguese 3 | 4 | # Mais uma linha em branco 5 | 6 | *** Definições *** 7 | Documentação Esta é a documentação para o teste Gherkin 8 | ... Uma linha de continuação da documentação 9 | 10 | *** Casos de Teste *** 11 | teste terceiro 12 | Dado "Sr. José" está registado 13 | E "carrinho" tem objectos 14 | Quando "Sr. José" clica em finalizar compra 15 | Então é apresentado o total e aguarda confirmação 16 | Mas é apresentado meio de pagamento indisponível 17 | # Comment at end of test case, next is empty line followed by the section keywords 18 | 19 | *** Palavras-Chave *** 20 | ${utilizador} está registado 21 | No Operation 22 | 23 | # Comment before keyword, next is keyword name 24 | 25 | ${carrinho de compras} tem objectos 26 | No Operation 27 | 28 | ${utilizador} clica em finalizar compra 29 | No Operation 30 | 31 | é apresentado o total e aguarda confirmação 32 | No Operation 33 | 34 | é apresentado meio de pagamento indisponível 35 | No Operation 36 | -------------------------------------------------------------------------------- /utest/resources/robotdata/lib with spaces/spacelib.py: -------------------------------------------------------------------------------- 1 | def space_lib_function(): 2 | pass 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/lib_with_doc_format/testLibHtml.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from robot.api.deco import keyword as keyword 16 | 17 | ROBOT_LIBRARY_DOC_FORMAT = 'HTML' 18 | 19 | """ 20 | Simple html library 21 | """ 22 | 23 | def html_doc_keyword1(): 24 | """ 25 | doc_format 26 | html 27 | """ 28 | pass 29 | 30 | 31 | @keyword("pretty html keyword") 32 | def html_doc_keyword2(arg1, arg2='default value', *args): 33 | """html documentaion 34 | """ 35 | pass 36 | -------------------------------------------------------------------------------- /utest/resources/robotdata/lib_with_doc_format/testLibHtmlClass.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from robot.api.deco import keyword as keyword 16 | 17 | class testLibHtmlClass: 18 | ROBOT_LIBRARY_DOC_FORMAT = 'HTML' 19 | 20 | """ 21 |

Class

22 | HTML 23 | library 24 | """ 25 | 26 | def html_doc_keyword1(self): 27 | """ 28 | doc_format 29 | html 30 | """ 31 | pass 32 | 33 | @keyword("pretty html keyword") 34 | def html_doc_keyword2(self, arg1, arg2='default value', *args): 35 | """html documentaion 36 | """ 37 | pass 38 | -------------------------------------------------------------------------------- /utest/resources/robotdata/lib_with_doc_format/testLibRest.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from robot.api.deco import keyword as keyword 16 | 17 | ROBOT_LIBRARY_DOC_FORMAT = 'REST' 18 | 19 | """ 20 | .. code:: robotframework 21 | *** Test Cases *** 22 | Example 23 | pretty rest keyword # How cool is this!!?!!?!1!! 24 | """ 25 | 26 | def rest_doc_keyword1(): 27 | """ 28 | **doc_format** 29 | *reST* 30 | """ 31 | return True 32 | 33 | 34 | @keyword("pretty rest keyword") 35 | def rest_doc_keyword2(arg1, arg2='default value', *args): 36 | """reST documentaion 37 | """ 38 | pass 39 | -------------------------------------------------------------------------------- /utest/resources/robotdata/lib_with_doc_format/testLibRobot.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from robot.api.deco import keyword as keyword 16 | 17 | ROBOT_LIBRARY_DOC_FORMAT = 'ROBOT' 18 | 19 | """ 20 | _Simple_ *robot* _library_ 21 | """ 22 | 23 | def robot_doc_keyword1(): 24 | """ 25 | = doc_format = 26 | - robot 27 | """ 28 | pass 29 | 30 | 31 | @keyword("pretty robot keyword") 32 | def robot_doc_keyword2(arg1, arg2='default value', *args): 33 | """robot documentaion 34 | """ 35 | pass 36 | -------------------------------------------------------------------------------- /utest/resources/robotdata/lib_with_doc_format/testLibText.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | 16 | from robot.api.deco import keyword as keyword 17 | 18 | ROBOT_LIBRARY_DOC_FORMAT = 'TEXT' 19 | 20 | """ 21 | Simple text library 22 | """ 23 | 24 | def text_doc_keyword1(): 25 | """ 26 | doc_format 27 | text 28 | """ 29 | pass 30 | 31 | 32 | @keyword("pretty text keyword") 33 | def text_doc_keyword2(arg1, arg2='default value', *args): 34 | """text documentaion 35 | """ 36 | pass 37 | -------------------------------------------------------------------------------- /utest/resources/robotdata/libs/AnotherArgLib.py: -------------------------------------------------------------------------------- 1 | class AnotherArgLib(object): 2 | 3 | def __init__(self, *args): 4 | self._check_args(args) 5 | self._args = args 6 | 7 | def _check_args(self, args): 8 | for arg in args: 9 | if arg and '${' in arg: 10 | raise ValueError('Test library needs variables resolved') 11 | 12 | def longest(self): 13 | return max(self._args, key=len) 14 | -------------------------------------------------------------------------------- /utest/resources/robotdata/libs/ArgLib.py: -------------------------------------------------------------------------------- 1 | class ArgLib(object): 2 | 3 | def __init__(self, mandatory_arg, default_arg=None): 4 | self._check_args((mandatory_arg, default_arg)) 5 | self._mandatory = mandatory_arg 6 | self._default =default_arg 7 | 8 | def _check_args(self, args): 9 | for arg in args: 10 | if arg and '${' in arg: 11 | raise ValueError('Test library needs variables resolved') 12 | 13 | def get_mandatory(self): 14 | return self._mandatory 15 | 16 | def get_default(self): 17 | if not self._default: 18 | raise AssertionError("Default not properly set!") 19 | return self._default 20 | -------------------------------------------------------------------------------- /utest/resources/robotdata/libs/LibSpecLibrary.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | &lt;unknown&gt; 4 | Documentation for LibSpec test Library 5 | 6 | This is kw documentation. 7 | 8 | This is more docs. 9 | 10 | foo 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | arg1 22 | arg2=default value 23 | *args 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /utest/resources/robotdata/libs/OldStyleLibSpecLibrary.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Documentation for LibSpec test Library 4 | 5 | 6 | This is kw documentation. 7 | 8 | This is more docs. 9 | 10 | foo 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | arg1 22 | arg2=default value 23 | *args 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /utest/resources/robotdata/libs/TestLib.py: -------------------------------------------------------------------------------- 1 | def testlib_keyword(): 2 | """ 3 | """ 4 | return True 5 | 6 | 7 | def testlib_keyword_with_args(arg1, arg2='default value', *args): 8 | """This keyword requires one argument, has one optional argument and varargs. 9 | 10 | This is some more documentation 11 | """ 12 | pass 13 | 14 | def testlib_keyword_with_kwonlyargs(arg1, *args, namedarg1, namedarg2='default value', **kwargs): 15 | pass 16 | -------------------------------------------------------------------------------- /utest/resources/robotdata/libs/sub/libsi.py: -------------------------------------------------------------------------------- 1 | def libsi_keyword(): 2 | print('libsi keyword') 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/logmanysuite/log_many.robot: -------------------------------------------------------------------------------- 1 | *** Test Cases *** 2 | Logging Test 3 | Log Many a b c d 4 | 5 | -------------------------------------------------------------------------------- /utest/resources/robotdata/put_into_python_path/PathResource.robot: -------------------------------------------------------------------------------- 1 | *** Setting *** 2 | 3 | *** Variable *** 4 | ${Path RESOURCE var} some value 5 | 6 | *** Keyword *** 7 | Path Resource UK 8 | [Documentation] This is a user keyword from resource file found from PYTHONPATH 9 | No Operation 10 | -------------------------------------------------------------------------------- /utest/resources/robotdata/put_into_python_path/TestLib.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Documentation for test library `TestLib`. 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | This keyword requires one argument, has one optional argument and varargs. 12 | 13 | This is some more documentation 14 | 15 | arg1 16 | arg2=default value 17 | *args 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /utest/resources/robotdata/relative_imports/local.py: -------------------------------------------------------------------------------- 1 | def local(): 2 | print('Hello') -------------------------------------------------------------------------------- /utest/resources/robotdata/relative_imports/relative.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Library local.py 3 | 4 | *** Test Cases *** 5 | Test 6 | Local -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/another_resource.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Variables res_var_file.py 3 | 4 | *** Variables *** 5 | ${OPERATING SYSTEM} OperatingSystem 6 | ${RES NAME} resource4.robot 7 | 8 | *** Keywords *** 9 | Another Resource UK 10 | No Operation 11 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/dynamic_varz.py: -------------------------------------------------------------------------------- 1 | def get_variables(arg='my arg'): 2 | return arg and {'dynamic var': arg, arg:'value', 'Technology Lib': 'DateTime'} or {} 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/external_res.resource: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation This resource is to be used as external resource from test suite ../TestCases 3 | Resource ../TestCases/Sub/resources/res02.resource 4 | 5 | *** Variables *** 6 | ${EXT_VARIABLE} external variable # from external resource 7 | 8 | *** Keywords *** 9 | keyword1 10 | [Arguments] ${a} 11 | log ${a} 12 | 13 | keyword2 14 | [Arguments] ${a} 15 | log ${a} 16 | Log To Console This is the argument \${a} = ${a} ! 17 | [Teardown] res02.keyword1 Called from external_resource at Teardown kw2 18 | 19 | keyword3 20 | [Setup] res02.keyword3 21 | keyword1 Called from external_resource 22 | res02.keyword1 Called from external_resource # Kw from res2 with a space in calling 23 | 24 | unusedkw 25 | [Arguments] ${notused}=None 26 | Log This is not used 27 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/more_resources/even_more_resources.robot: -------------------------------------------------------------------------------- 1 | *Keywords* 2 | Foo Bar 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/more_resources/even_more_varz.py: -------------------------------------------------------------------------------- 1 | var_in_resource2 = "Foo" 2 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/more_resources/resource4.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | @{RESOURCE 4 List VARIABLE} 1 2 3 4 3 | 4 | *** Keywords *** 5 | Resource4 UK 6 | [Timeout] 7 | No Operation 8 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/more_varz.py: -------------------------------------------------------------------------------- 1 | varfrommorevarz = {'key': 'value'} 2 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/res_var_file.py: -------------------------------------------------------------------------------- 1 | var_from_resource_var_file = 'Some Value' 2 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/resource.resource: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource resource2.robot 3 | Resource resource3.robot 4 | Resource resource.robot 5 | 6 | *** Variables *** 7 | ${RESOURCE var} Foo 8 | 9 | *** Keywords *** 10 | Resource UK 11 | [Documentation] This is a user keyword from resource file 12 | [Timeout] 13 | No Operation 14 | 15 | Parametrized UK 16 | [Arguments] ${arg} ${defarg}=def val @{vararg} 17 | [Timeout] 18 | Log Many ${arg} ${defarg} @{vararg} 19 | 20 | Funny Def Value 21 | [Arguments] ${arg}=${None} ${urg}=${myvar=foo} 22 | [Timeout] 23 | Log Many ${arg} ${urg} 24 | 25 | Duplicate UK 26 | No Operation 27 | 28 | User ${action} Email 29 | Log Keyword call is "User ${action} Email" console=True 30 | 31 | Server ${action} To User 32 | [Arguments] ${user} 33 | Log Keyword call is "Server ${action} To User" where \${user}=${user} console=True 34 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/resource.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation This file is imported from resource.resource which is imported again here to test loop handling. 3 | Resource resource.resource 4 | 5 | *** Keywords *** 6 | UK From Text Resource 7 | No Operation 8 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/resource2.robot: -------------------------------------------------------------------------------- 1 | Language: English 2 | 3 | *** Settings *** 4 | Library AnotherArgLib ${param1} ${param1} here too: ${param2} ${param2} 5 | 6 | *** Variables *** 7 | @{RESOURCE 2 List VARIABLE} 1 2 3 4 8 | ${param1} An interesting value 9 | ${param2} Hello 10 | 11 | *** Keywords *** 12 | Resource2 UK 13 | [Timeout] 14 | No Operation 15 | 16 | My Suite Setup 17 | No Operation 18 | 19 | My Suite Teardown 20 | [Arguments] @{args} 21 | No Operation 22 | 23 | My Overriding Test Setup 24 | Log To Console This is My Overriding Test Setup 25 | 26 | My Overriding Test Teardown 27 | Log To Console This is My Overriding Test Teardown 28 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/resource3.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | @{RESOURCE 3 List VARIABLE} 1 2 3 4 3 | 4 | *** Keywords *** 5 | Resource3 UK 6 | [Timeout] 7 | No Operation 8 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/resource_from_resource_with_variable.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | UK From Resource from Resource with Variable 3 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/resource_lib_imports.robot: -------------------------------------------------------------------------------- 1 | *** settings *** 2 | library DateTime 3 | library String 4 | resource resource.robot 5 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/resource_with_variables.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | UK From Variable Resource No Operation 3 | 4 | *** Variables *** 5 | ${library_from_resource} Dialogs 6 | ${resource_from_resource} resource_from_resource_with_variable.robot 7 | 8 | *** Settings *** 9 | Library ${library_from_resource} 10 | Resource ${resource_from_resource} 11 | -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/resu.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Resu UK No Operation -------------------------------------------------------------------------------- /utest/resources/robotdata/resources/varz.py: -------------------------------------------------------------------------------- 1 | var_from_file = 'Some value' 2 | -------------------------------------------------------------------------------- /utest/resources/robotdata/simple/test.robot: -------------------------------------------------------------------------------- 1 | *** Test Cases *** 2 | Test Case 3 | Keyword argument 4 | 5 | *** Keywords *** 6 | Keyword 7 | [Arguments] ${argument} 8 | Log ${argument} 9 | No Operation 10 | ${foo}= Set Variable value 11 | Log ${foo} 12 | ${bar}= Set Variable value2 13 | Log ${foo} and ${bar} 14 | FOR ${i} IN 1 2 3 15 | Log ${i} 16 | END 17 | Log ${i} out 18 | -------------------------------------------------------------------------------- /utest/resources/robotdata/simple_testsuite_with_different_namespaces/TestSuite1.robot: -------------------------------------------------------------------------------- 1 | Language: English 2 | 3 | *** Settings *** 4 | Resource testdata_resource.robot 5 | Resource ..${/}resources${/}resu.robot 6 | 7 | *** Variables *** 8 | @{Test Suite 1 List} 1 2 9 | ${Test Suite 1 Var} robotista 10 | 11 | *** Test Cases *** 12 | My Test 13 | My Keyword 14 | None Keyword 15 | Log From builtin 16 | 17 | *** Keywords *** 18 | My Keyword 19 | No Operation 20 | 21 | None Keyword 22 | No Operation 23 | -------------------------------------------------------------------------------- /utest/resources/robotdata/simple_testsuite_with_different_namespaces/TestSuite2.robot: -------------------------------------------------------------------------------- 1 | Language: English 2 | 3 | *** Settings *** 4 | Documentation suitedocmatch 5 | Resource testdata_resource.robot 6 | Suite Setup Run Keyword Suite Setup Keyword 7 | Test Teardown Test Teardown in Setting 8 | 9 | *** Variables *** 10 | @{Test Suite 2 List} 2 3 11 | ${Test Suite 2 Var} irobota 12 | 13 | *** Test Cases *** 14 | My Test 15 | [Documentation] testdocmatch 16 | My Keyword 17 | My Keyword 18 | None Keyword 19 | Log Local 20 | 21 | My Other Test 22 | None Keyword 23 | None Keyword 24 | 25 | My Third Test 26 | [Setup] Run Keyword Test Setup Keyword 27 | [Teardown] Run Keyword Test Teardown Keyword 28 | No Operation 29 | 30 | *** Keywords *** 31 | Log 32 | [Documentation] keyworddocmatch 33 | Overrides builtin 34 | 35 | Test Setup Keyword 36 | [Teardown] Keyword Teardown Keyword 37 | No Operation 38 | 39 | Test Teardown Keyword 40 | No Operation 41 | 42 | Keyword Teardown Keyword 43 | No Operation 44 | 45 | Suite Setup Keyword 46 | No Operation 47 | 48 | Test Teardown in Setting 49 | No Operation 50 | -------------------------------------------------------------------------------- /utest/resources/robotdata/simple_testsuite_with_different_namespaces/TestSuite3.robot: -------------------------------------------------------------------------------- 1 | Language: English 2 | 3 | *** Test Cases *** 4 | My Second Test 5 | My Keyword 6 | embedded args keyword 7 | None Keyword 8 | 2nd embedded args keyword 9 | 10 | *** Keywords *** 11 | embedded ${args} keyword 12 | No Operation 13 | 14 | 2nd embedded ${args} keyword 15 | No Operation 16 | -------------------------------------------------------------------------------- /utest/resources/robotdata/simple_testsuite_with_different_namespaces/resources/inner_resource.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Keyword In Both Resources 3 | No Operation -------------------------------------------------------------------------------- /utest/resources/robotdata/simple_testsuite_with_different_namespaces/resources_folder/inner_resource2.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Keyword In Both Resources 3 | No Operation -------------------------------------------------------------------------------- /utest/resources/robotdata/simple_testsuite_with_different_namespaces/testdata_resource.robot: -------------------------------------------------------------------------------- 1 | Language: English 2 | 3 | *** Settings *** 4 | Resource resources${/}inner_resource.robot 5 | 6 | *** Variables *** 7 | @{Resource List} 2 34 8 | ${Resource Var} iadota 9 | 10 | *** Keywords *** 11 | My Keyword 12 | No Operation 13 | 14 | Only From Resource 15 | No Operation 16 | 17 | Keyword In Both Resources 18 | No Operation 19 | -------------------------------------------------------------------------------- /utest/resources/robotdata/small_test/test.robot: -------------------------------------------------------------------------------- 1 | *** Test Cases *** 2 | Passing 3 | Log this passes WARN 4 | 5 | Failing 6 | Fail this fails 7 | -------------------------------------------------------------------------------- /utest/resources/robotdata/testsuite/invalid.robot: -------------------------------------------------------------------------------- 1 | *** Invalid *** 2 | Invalid 3 | This file is not a valid Robot Framework test case file 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/testsuite/minimal.robot: -------------------------------------------------------------------------------- 1 | *** Setting *** 2 | 3 | *** Variable *** 4 | ${MY VARIABLE} Value 5 | 6 | *** Test Case *** 7 | Passing Test 8 | No Operation 9 | 10 | *** Keyword *** 11 | Logging Keyword 12 | [Timeout] 13 | No Operation 14 | -------------------------------------------------------------------------------- /utest/resources/robotdata/testsuite/resuja/resource.resource: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource resource.robot 3 | 4 | *** Variables *** 5 | ${RESOURCE var} Foo 6 | 7 | *** Keywords *** 8 | Resource UK 9 | [Documentation] This is a user keyword from resource file 10 | [Timeout] 11 | No Operation 12 | 13 | Parametrized UK 14 | [Arguments] ${arg} ${defarg}=def val @{vararg} 15 | [Timeout] 16 | Log Many ${arg} ${defarg} @{vararg} 17 | 18 | Funny Def Value 19 | [Arguments] ${arg}=${None} ${urg}=${myvar=foo} 20 | [Timeout] 21 | Log Many ${arg} ${urg} 22 | 23 | Duplicate UK 24 | No Operation 25 | -------------------------------------------------------------------------------- /utest/resources/robotdata/testsuite/resuja/resource.robot: -------------------------------------------------------------------------------- 1 | *** Setting *** 2 | Documentation This file is imported from resource.resource which is imported again here to test loop handling. 3 | Resource resource.resource 4 | 5 | *** Keywords *** 6 | UK From Text Resource No Operation 7 | -------------------------------------------------------------------------------- /utest/resources/robotdata/testsuite/spec_resource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | This is kw documentation. 7 | 8 | This is more docs. 9 | 10 | foo 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | arg1 22 | arg2=default value 23 | *args 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /utest/resources/robotdata/testsuite/subsuite/__init__.tsv: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation A simple init file -------------------------------------------------------------------------------- /utest/resources/robotdata/testsuite/subsuite/test.robot: -------------------------------------------------------------------------------- 1 | *** Test Cases *** 2 | Test Case 3 | No Operation -------------------------------------------------------------------------------- /utest/resources/robotdata/txt_only_test_suite/another_test_suite.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation Another test suite doc 3 | 4 | *** Test Cases *** 5 | Test Case 6 | No Operation 7 | 8 | -------------------------------------------------------------------------------- /utest/resources/robotdata/txt_only_test_suite/test_suite.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation documentation for test suite 3 | Resource ../resources/resource.robot 4 | 5 | *** Test Cases *** 6 | Test Case 1 7 | [Documentation] Doc for test case 8 | No Operation 9 | 10 | -------------------------------------------------------------------------------- /utest/resources/robotdata/unused_keywords/Abc.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Another keyword 3 | 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/unused_keywords/Res1.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Do this 3 | Log Done this 4 | 5 | Do that 6 | Log Done that 7 | 8 | Not used keyword 9 | Log Done nothing 10 | 11 | -------------------------------------------------------------------------------- /utest/resources/robotdata/unused_keywords/Test_suite_1.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource Res1.robot 3 | Resource Abc.robot 4 | 5 | *** Test Cases *** 6 | Test case 7 | Do this 8 | Do that 9 | 10 | -------------------------------------------------------------------------------- /utest/resources/robotdata/unused_keywords/Test_suite_2.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource Res1.robot 3 | Resource foobar.robot 4 | 5 | *** Test Cases *** 6 | Another test case 7 | Do that 8 | Local keyword 9 | 10 | *** Keywords *** 11 | Local keyword 12 | Log Hello 13 | 14 | -------------------------------------------------------------------------------- /utest/resources/robotdata/unused_keywords/foobar.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | A third unused keyword 3 | 4 | -------------------------------------------------------------------------------- /utest/resources/robotdata/var_file_variables/import_resource_with_variable_from_var_file.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Variables myvars.py 3 | Resource ${FROM MY VAR}/res.robot 4 | 5 | *** Test Cases *** 6 | Test Case 7 | No Operation -------------------------------------------------------------------------------- /utest/resources/robotdata/var_file_variables/myvars.py: -------------------------------------------------------------------------------- 1 | from_my_var = 'res' -------------------------------------------------------------------------------- /utest/resources/robotdata/var_file_variables/res/res.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | from resource with variable in path 3 | No Operation -------------------------------------------------------------------------------- /utest/resources/settings2.cfg: -------------------------------------------------------------------------------- 1 | mainframe size = (1000, 700) 2 | mainframe position = (0, 0) 3 | default directory = '.' 4 | default template = None 5 | # Auto imports is a list of libraries whose keywords are always visible in keyword completion. 6 | # If the library needs arguments, they follow the library name with '|' as a separator. 7 | # Example: auto imports = ['MyLib', 'AnotherLibraryWithArgs|arg1|arg2'] 8 | auto imports = [] 9 | install root = 'C:\\Python26\\lib\\site-packages\\robotide' 10 | txt number of spaces = 2 11 | [Plugins] 12 | [[Release Notes]] 13 | version_shown = '0.22' 14 | _enabled = False 15 | [[Run Anything]] 16 | configs = [(u'Run All Tests In Current Directory', u'pybot.bat --outputdir results .', u'')] 17 | _enabled = True 18 | -------------------------------------------------------------------------------- /utest/resources/user2.cfg: -------------------------------------------------------------------------------- 1 | mainframe size = (1200, 900) 2 | mainframe position = (0, 0) 3 | default directory = '.' 4 | default template = None 5 | # Auto imports is a list of libraries whose keywords are always visible in keyword completion. 6 | # If the library needs arguments, they follow the library name with '|' as a separator. 7 | # Example: auto imports = ['MyLib', 'AnotherLibraryWithArgs|arg1|arg2'] 8 | auto imports = [] 9 | install root = 'C:\\Python36\\lib\\site-packages\\robotide' 10 | txt number of spaces = 2 11 | [Plugins] 12 | [[Release Notes]] 13 | version_shown = '0.22' 14 | _enabled = True 15 | [[Run Anything]] 16 | configs = [('Run All Tests In Current Directory', 'pybot.bat --outputdir results .', '')] 17 | _enabled = True 18 | [[Recent Files]] 19 | max_number_of_files = 4 20 | recent_files = [] 21 | _enabled = True 22 | [[Preview]] 23 | _enabled = False 24 | [[Colorizer]] 25 | user_keyword_fg = 'purple' 26 | variable_fg = 'forest green' 27 | comment_fg = 'firebrick' 28 | default_fg = 'black' 29 | library_keyword_fg = 'blue' 30 | _enabled = True 31 | [[Editor]] 32 | _enabled = True 33 | [[Keyword Search]] 34 | _enabled = True 35 | -------------------------------------------------------------------------------- /utest/run/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/run/process_test_scripts.py: -------------------------------------------------------------------------------- 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 | import time 18 | 19 | 20 | def output(sleep=0.1): 21 | print('start') 22 | for i in range(2): 23 | print('running iteration %d' % i * 500) 24 | time.sleep(float(sleep)) 25 | print('done') 26 | 27 | 28 | def count_args(*args): 29 | print(len(args)) 30 | 31 | 32 | def stderr(): 33 | sys.stderr.write('This is stderr\n') 34 | 35 | 36 | globals()[sys.argv[1]](*sys.argv[2:]) 37 | -------------------------------------------------------------------------------- /utest/searchtests/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/settings/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/spec/Exceptional.py: -------------------------------------------------------------------------------- 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 | class Exceptional(object): 17 | 18 | def get_keyword_names(self): 19 | raise Exception('Exceptions') 20 | -------------------------------------------------------------------------------- /utest/spec/__init__.py: -------------------------------------------------------------------------------- 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 . import Exceptional 17 | -------------------------------------------------------------------------------- /utest/ui/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/usages/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/utils/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/utils/test_htmlformat.py: -------------------------------------------------------------------------------- 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 unittest 17 | from robotide import utils 18 | 19 | class HTMLFormatTestCase(unittest.TestCase): 20 | 21 | def test_formatting(self): 22 | formated = utils.html_format('| foo | bar |\n| zoo | zaa |\n\nhello') 23 | self.assertEqual('\n\n\n\n\n\n\n\n\n
foobar
zoozaa
\n

hello

', formated) 24 | 25 | if __name__ == '__main__': 26 | unittest.main() 27 | -------------------------------------------------------------------------------- /utest/validators/__init__.py: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /utest/zulu_misc/conf.ini: -------------------------------------------------------------------------------- 1 | 2 | extra = 3 3 | 4 | [extra-section] 5 | 6 | [section] 7 | [[sub-section]] 8 | extra = 3 9 | [[extra-sub-section]] 10 | extra = 3 11 | -------------------------------------------------------------------------------- /utest/zulu_misc/conf.spec: -------------------------------------------------------------------------------- 1 | 2 | value = integer 3 | 4 | [section] 5 | value = integer 6 | 7 | [[sub-section]] 8 | value = integer 9 | [[missing-subsection]] 10 | value = integer 11 | 12 | [missing-section] 13 | value = integer 14 | -------------------------------------------------------------------------------- /utest/zulu_misc/conftest.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | # Copyright 2024- 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 | # This file was copied and modified from https://github.com/DiffSK/configobj tests 17 | 18 | import pytest 19 | 20 | from configobj import ConfigObj 21 | from configobj.validate import Validator 22 | 23 | @pytest.fixture 24 | def empty_cfg(): 25 | return ConfigObj() 26 | 27 | 28 | @pytest.fixture 29 | def val(): 30 | return Validator() 31 | -------------------------------------------------------------------------------- /utest/zulu_misc/test_get_language_code.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024- Robot Framework Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | import unittest 15 | import wx 16 | 17 | class TestMisc(unittest.TestCase): 18 | 19 | def setUp(self): 20 | from robotide.application import RIDE 21 | self.main_app = RIDE() 22 | self.settings = self.main_app.settings 23 | self.frame = self.main_app.frame 24 | self.main_app.SetExitOnFrameDelete(True) 25 | 26 | 27 | def tearDown(self): 28 | self.main_app.Destroy() 29 | self.main_app = None 30 | 31 | def test_get_code(self): 32 | code = self.main_app._get_language_code() 33 | assert code in (wx.LANGUAGE_ENGLISH, wx.LANGUAGE_ENGLISH_WORLD, wx.LANGUAGE_PORTUGUESE) 34 | # Uncomment next lines if you want to see the app 35 | # wx.CallLater(8000, main_app.ExitMainLoop) 36 | # main_app.MainLoop() 37 | 38 | 39 | if __name__ == '__main__': 40 | unittest.main() --------------------------------------------------------------------------------