├── .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 |
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 |
foo | \nbar | \n
zoo | \nzaa | \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() --------------------------------------------------------------------------------