robotframework-pabot 4.3.0__py3-none-any.whl → 4.3.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pabot/__init__.py CHANGED
@@ -7,4 +7,4 @@ try:
7
7
  except ImportError:
8
8
  pass
9
9
 
10
- __version__ = "4.3.0"
10
+ __version__ = "4.3.2"
pabot/pabot.py CHANGED
@@ -2122,19 +2122,23 @@ def _parse_ordering(filename): # type: (str) -> List[ExecutionItem]
2122
2122
  raise DataError("Error parsing ordering file '%s'" % filename)
2123
2123
 
2124
2124
 
2125
+ # TODO: After issue #646, it seems necessary to thoroughly rethink how this functionality should work.
2125
2126
  def _check_ordering(ordering_file, suite_names): # type: (List[ExecutionItem], List[ExecutionItem]) -> None
2126
2127
  list_of_suite_names = [s.name for s in suite_names]
2127
- number_of_tests_or_suites = 0
2128
+ skipped_runnable_items = []
2128
2129
  if ordering_file:
2129
2130
  for item in ordering_file:
2130
2131
  if item.type in ['suite', 'test']:
2131
2132
  if not any((s == item.name or s.endswith("." + item.name)) for s in list_of_suite_names):
2132
2133
  # If test name is too long, it gets name ' Invalid', so skip that
2133
- if item.name != ' Invalid':
2134
- raise DataError("%s item '%s' in --ordering file does not match suite or test names in .pabotsuitenames file.\nPlease verify content of --ordering file." % (item.type.title(), item.name))
2135
- number_of_tests_or_suites += 1
2136
- if number_of_tests_or_suites > len(list_of_suite_names):
2137
- raise DataError('Ordering file contains more tests and/or suites than exists. Check that there is no duplicates etc. in ordering file and that to .pabotsuitenames.')
2134
+ # Additionally, the test is skipped also if the user wants a higher-level suite to be executed sequentially by using
2135
+ # the --suite option, and the given name is part of the full name of any test or suite.
2136
+ if item.name != ' Invalid' and not (item.type == 'suite' and any((s == item.name or s.startswith(item.name + ".")) for s in list_of_suite_names)):
2137
+ skipped_runnable_items.append(f"{item.type.title()} item: '{item.name}'")
2138
+ if skipped_runnable_items:
2139
+ _write("Note: The ordering file contains test or suite items that are not included in the current test run. The following items will be ignored/skipped:")
2140
+ for item in skipped_runnable_items:
2141
+ _write(f" - {item}")
2138
2142
 
2139
2143
 
2140
2144
  def _group_suites(outs_dir, datasources, options, pabot_args):
@@ -2143,7 +2147,8 @@ def _group_suites(outs_dir, datasources, options, pabot_args):
2143
2147
  ordering_arg = _parse_ordering(pabot_args.get("ordering")) if (pabot_args.get("ordering")) is not None else None
2144
2148
  if ordering_arg:
2145
2149
  _verify_depends(ordering_arg)
2146
- _check_ordering(ordering_arg, suite_names)
2150
+ # TODO: After issue #646, it seems necessary to thoroughly rethink how this functionality should work.
2151
+ #_check_ordering(ordering_arg, suite_names)
2147
2152
  ordering_arg_with_sleep = _set_sleep_times(ordering_arg)
2148
2153
  ordered_suites = _preserve_order(suite_names, ordering_arg_with_sleep)
2149
2154
  shard_suites = solve_shard_suites(ordered_suites, pabot_args)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotframework-pabot
3
- Version: 4.3.0
3
+ Version: 4.3.2
4
4
  Summary: Parallel test runner for Robot Framework
5
5
  Home-page: https://pabot.org
6
6
  Download-URL: https://pypi.python.org/pypi/robotframework-pabot
@@ -273,7 +273,7 @@ There different possibilities to influence the execution:
273
273
  * The order of suites can be changed.
274
274
  * If a directory (or a directory structure) should be executed sequentially, add the directory suite name to a row as a ```--suite``` option.
275
275
  * If the base suite name is changing with robot option [```--name / -N```](https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#setting-the-name) you can also give partial suite name without the base suite.
276
- * You can add a line with text to force executor to wait until all previous suites have been executed.
276
+ * You can add a line with text `#WAIT` to force executor to wait until all previous suites have been executed.
277
277
  * You can group suites and tests together to same executor process by adding line `{` before the group and `}` after. Note that `#WAIT` cannot be used inside a group.
278
278
  * You can introduce dependencies using the word `#DEPENDS` after a test declaration. This keyword can be used several times if it is necessary to refer to several different tests. Please take care that in case of circular dependencies an exception will be thrown. Note that each `#WAIT` splits suites into separate execution blocks, and it's not possible to define dependencies for suites or tests that are inside another `#WAIT` block or inside another `{}` brackets.
279
279
  * Note: Within a group `{}`, neither execution order nor the `#DEPENDS` keyword currently works. This is due to limitations in Robot Framework, which is invoked within Pabot subprocesses. These limitations may be addressed in a future release of Robot Framework. For now, tests or suites within a group will be executed in the order Robot Framework discovers them — typically in alphabetical order.
@@ -1,10 +1,10 @@
1
1
  pabot/SharedLibrary.py,sha256=mIipGs3ZhKYEakKprcbrMI4P_Un6qI8gE7086xpHaLY,2552
2
- pabot/__init__.py,sha256=uuwf2W7FsicbiL8y-0LayoZ4Ztsqa2N2yJAgcz2EUoE,200
2
+ pabot/__init__.py,sha256=h6cCOibZvyBUm_rgLAWdrpXF7RiLsoI65Y3VqVm_WrM,200
3
3
  pabot/arguments.py,sha256=m38y8mXKJ5BHlxSrsEI0gXlkzR5hv88G9i-FL_BouQ4,9168
4
4
  pabot/clientwrapper.py,sha256=yz7battGs0exysnDeLDWJuzpb2Q-qSjitwxZMO2TlJw,231
5
5
  pabot/coordinatorwrapper.py,sha256=nQQ7IowD6c246y8y9nsx0HZbt8vS2XODhPVDjm-lyi0,195
6
6
  pabot/execution_items.py,sha256=HCd54LsIEZJjnL0TZC_tuac2DSVL4JHes6veJlpCE94,12058
7
- pabot/pabot.py,sha256=GtoxhW3NTIE7It8IXtl-m6t0x0GkuT9kx2YkQs4OWhE,74910
7
+ pabot/pabot.py,sha256=zRhp1bgvXmMpB1H8DU-Y0rMGsZ8Z_oTkOsXDZv_qrGU,75356
8
8
  pabot/pabotlib.py,sha256=FRZKaKy1ybyRkE-0SpaCsUWzxZAzNNU5dAywSm1QoPk,22324
9
9
  pabot/result_merger.py,sha256=8iIptBn5MdgiW-OdhwVR2DZ0hUYuQeQXwIHAEPkMTuw,9095
10
10
  pabot/robotremoteserver.py,sha256=L3O2QRKSGSE4ux5M1ip5XJMaelqaxQWJxd9wLLdtpzM,22272
@@ -14,9 +14,9 @@ pabot/py3/client.py,sha256=Od9L4vZ0sozMHq_W_ITQHBBt8kAej40DG58wnxmbHGM,1434
14
14
  pabot/py3/coordinator.py,sha256=kBshCzA_1QX_f0WNk42QBJyDYSwSlNM-UEBxOReOj6E,2313
15
15
  pabot/py3/messages.py,sha256=7mFr4_0x1JHm5sW8TvKq28Xs_JoeIGku2bX7AyO0kng,2557
16
16
  pabot/py3/worker.py,sha256=5rfp4ZiW6gf8GRz6eC0-KUkfx847A91lVtRYpLAv2sg,1612
17
- robotframework_pabot-4.3.0.dist-info/licenses/LICENSE.txt,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
18
- robotframework_pabot-4.3.0.dist-info/METADATA,sha256=coN7rNN_R3aY76vawuow6gGITRFi1Jc3nOeobID27gw,16410
19
- robotframework_pabot-4.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
- robotframework_pabot-4.3.0.dist-info/entry_points.txt,sha256=JpAIFADTeFOQWdwmn56KpAil8V3-41ZC5ICXCYm3Ng0,43
21
- robotframework_pabot-4.3.0.dist-info/top_level.txt,sha256=t3OwfEAsSxyxrhjy_GCJYHKbV_X6AIsgeLhYeHvObG4,6
22
- robotframework_pabot-4.3.0.dist-info/RECORD,,
17
+ robotframework_pabot-4.3.2.dist-info/licenses/LICENSE.txt,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
18
+ robotframework_pabot-4.3.2.dist-info/METADATA,sha256=T30IE6XvBzbaKaEQl9YenlrkWTGNOnB8iqWGUsw3CSE,16417
19
+ robotframework_pabot-4.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
+ robotframework_pabot-4.3.2.dist-info/entry_points.txt,sha256=JpAIFADTeFOQWdwmn56KpAil8V3-41ZC5ICXCYm3Ng0,43
21
+ robotframework_pabot-4.3.2.dist-info/top_level.txt,sha256=t3OwfEAsSxyxrhjy_GCJYHKbV_X6AIsgeLhYeHvObG4,6
22
+ robotframework_pabot-4.3.2.dist-info/RECORD,,