OrderSettingsSection#

Order settings inside *** Settings *** section.

Transformer configuration

OrderSettingsSection is included in the default transformers, but it can be also run separately with:

robotidy --transform OrderSettingsSection src

You can also disable OrderSettingsSection:

robotidy --configure OrderSettingsSection:enabled=False src

Settings are grouped in following groups:

  • documentation (Documentation, Metadata),

  • imports (Library, Resource, Variables),

  • settings (Suite Setup and Teardown, Test Setup and Teardown, Test Timeout, Test Template),

  • tags (Force Tags, Default Tags)

Then ordered by groups (according to group_order = documentation,imports,settings,tags order). Every group is separated by new_lines_between_groups = 1 new lines. Settings are ordered inside group. Default order can be modified through following parameters:

  • documentation_order = documentation,metadata

  • imports_order = preserved (default - see Imports order section to how configure it)

  • settings_order = suite_setup,suite_teardown,test_setup,test_teardown,test_timeout,test_template

*** Settings ***
Metadata  value  param

Force Tags  tag
...  tag

Documentation  doc  # this is comment
...  another line
Test Timeout  1min

# I want to be keep together with Test Setup

Test Setup  Keyword


Suite Setup  Keyword
Default Tags  1
Suite Teardown  Keyword2

Variables   variables.py
Library  Stuff
Library  Collections
Resource    robot.resource
Library  stuff.py  WITH NAME  alias
*** Settings ***
Documentation  doc  # this is comment
...  another line
Metadata  value  param

Variables   variables.py
Library  Stuff
Library  Collections
Resource    robot.resource
Library  stuff.py  WITH NAME  alias

Suite Setup  Keyword
Suite Teardown  Keyword2
# I want to be keep together with Test Setup
Test Setup  Keyword
Test Timeout  1min

Force Tags  tag
...  tag
Default Tags  1

Using the same example with non default group order we will move tags from end to beginning of the section:

robotidy --configure OrderSettingsSection:group_order=tags,documentation,imports,settings src
*** Settings ***
Metadata  value  param

Force Tags  tag
...  tag

Documentation  doc  # this is comment
...  another line
Test Timeout  1min

# I want to be keep together with Test Setup

Test Setup  Keyword


Suite Setup  Keyword
Default Tags  1
Suite Teardown  Keyword2
*** Settings ***
Force Tags  tag
...  tag
Default Tags  1

Documentation  doc  # this is comment
...  another line
Metadata  value  param

Suite Setup  Keyword
Suite Teardown  Keyword2
# I want to be keep together with Test Setup
Test Setup  Keyword
Test Timeout  1min

Settings order#

Order of settings inside common group can also be changed:

robotidy --configure OrderSettingsSection:settings_order=suite_teardown,suite_setup,test_setup,test_teardown,test_timeout,test_template src
*** Settings ***
Suite Setup    Suite Setup Keyword
Suite Teardown    Suite Teardown Keyword
Test Timeout    1min
*** Settings ***
Suite Teardown    Suite Teardown Keyword
Suite Setup    Suite Setup Keyword
Test Timeout    1min

Preserve order#

If you want to preserve order of the settings inside the group you can use preserved value:

robotidy --configure OrderSettingsSection:settings_order=preserved
robotidy --configure OrderSettingsSection:documentation_order=preserved

Imports are preserved by default.

Imports order#

By default order of the imports is preserved. You can overwrite this behaviour:

robotidy --configure OrderSettingsSection:imports_order=library,resource,variables

With preceding configuration robotidy will put library imports first, then resources and variables last. Builtin library imports are moved to the top and sorted alphabetically.

Example:

*** Settings ***
Suite Teardown  Keyword2

Variables   variables.py
Library  Stuff
Library  Collections
Resource    robot.resource
Library   ABC
*** Settings ***
Library  Collections
Library  Stuff
Library   ABC
Resource    robot.resource
Variables   variables.py

Suite Teardown  Keyword2

Removing settings#

Setting names omitted from custom order will be removed from the file. In following example we are missing metadata therefore all metadata will be removed:

robotidy --configure OrderSettingsSection:documentation_order=documentation

Empty lines between group of settings#

Group of settings are separated by new_lines_between_groups = 1 new lines. It can be configured:

robotidy --configure OrderSettingsSection:new_lines_between_groups=2 src
*** Settings ***
Library  Collections
Default Tags    tag
Documentation  doc  # this is comment
...  another line
Metadata  value  param
*** Settings ***
Documentation  doc  # this is comment
...  another line
Metadata  value  param

Library  Collections

Default Tags    tag
*** Settings ***
Documentation  doc  # this is comment
...  another line
Metadata  value  param
Library  Collections
Default Tags    tag
*** Settings ***
Documentation  doc  # this is comment
...  another line
Metadata  value  param


Library  Collections


Default Tags    tag

If you’re not preserving the default order of libraries they will be grouped into built in libraries and custom libraries. Parsing errors (such as Resources instead of Resource, duplicated settings) are moved to the end of section.

*** Settings ***
Test Templating  Template  # parsing error
Library  Stuff
Resource    robot.resource
Library  Dialogs  # built in library
*** Settings ***
Library  Dialogs  # built in library
Library  Stuff
Resource    robot.resource

Test Templating  Template  # parsing error