2 new revisions:
Revision: 8630d04f6d7a
Author: Pekka Klärck
Date: Thu Aug 25 15:09:07 2011
Log: Implementation for Set Resource Search Order Keyword...
http://code.google.com/p/robotframework/source/detail?r=8630d04f6d7a
Revision: 1c7bd2ee3fc8
Author: Pekka Klärck
Date: Thu Aug 25 15:09:49 2011
Log: Tests for Set Resource Search Order...
http://code.google.com/p/robotframework/source/detail?r=1c7bd2ee3fc8
==============================================================================
Revision: 8630d04f6d7a
Author: Pekka Klärck
Date: Thu Aug 25 15:09:07 2011
Log: Implementation for Set Resource Search Order Keyword
Update issue 935
Status: Started
Working implementation ready and tests (separate commit) are done.
Tasks TODO:
- cleanup code (rm duplication, make UserKeywordHandler._libname public)
- write docstring
- see should UG be updated
- consider should search order be case-insensitive on case-insensitive OSes
We should perhaps also still consider should we implement generic 'Set
Keyword Search Order' instead of separate 'Set Library/Resource Search
Order'. I'm slighly worried that people would assume resource order somehow
affects variables when it doens't -- obviously this can/should be
documented in the doc string. On the other hand adding new generic keyword
means that old SLSO should be deprecated at some point and is thus a bit
more work.
http://code.google.com/p/robotframework/source/detail?r=8630d04f6d7a
Modified:
/src/robot/libraries/BuiltIn.py
/src/robot/running/namespace.py
=======================================
--- /src/robot/libraries/BuiltIn.py Sat Jul 9 14:15:55 2011
+++ /src/robot/libraries/BuiltIn.py Thu Aug 25 15:09:07 2011
@@ -1604,6 +1604,12 @@
self._namespace.library_search_order = libraries
return old_order
+ def set_resource_search_order(self, *resources):
+ """TODO: Doc"""
+ old_order = self._namespace.resource_search_order
+ self._namespace.resource_search_order = resources
+ return old_order
+
def keyword_should_exist(self, name, msg=None):
"""Fails unless the given keyword exists in the current scope.
=======================================
--- /src/robot/running/namespace.py Thu Aug 25 06:40:46 2011
+++ /src/robot/running/namespace.py Thu Aug 25 15:09:07 2011
@@ -49,6 +49,7 @@
self.test = None
self.uk_handlers = []
self.library_search_order = []
+ self.resource_search_order = []
self._testlibs = {}
self._userlibs = []
self._imported_resource_files = ImportCache()
@@ -306,6 +307,8 @@
if lib.has_handler(name)]
if not found:
return None
+ if len(found) > 1:
+ found = self._get_handler_based_on_resource_search_order(found)
if len(found) == 1:
return found[0]
self._raise_multiple_keywords_found(name, found)
@@ -330,6 +333,13 @@
return [handler]
return handlers
+ def _get_handler_based_on_resource_search_order(self, handlers):
+ for name in self.resource_search_order:
+ for handler in handlers:
+ if handler._libname == name:
+ return [handler]
+ return handlers
+
def _filter_stdlib_handler(self, handler1, handler2):
if handler1.library.orig_name in STDLIB_NAMES:
standard, external = handler1, handler2
==============================================================================
Revision: 1c7bd2ee3fc8
Author: Pekka Klärck
Date: Thu Aug 25 15:09:49 2011
Log: Tests for Set Resource Search Order
Update issue 935
Acceptance tests.
http://code.google.com/p/robotframework/source/detail?r=1c7bd2ee3fc8
Added:
/atest/robot/standard_libraries/builtin/set_resource_search_order.txt
/atest/testdata/standard_libraries/builtin/set_resource_search_order/resource1.txt
/atest/testdata/standard_libraries/builtin/set_resource_search_order/resource2.txt
/atest/testdata/standard_libraries/builtin/set_resource_search_order/setting_resource_order.txt
/atest/testdata/standard_libraries/builtin/set_resource_search_order/setting_resource_order_does_not_affect_next_suite.txt
=======================================
--- /dev/null
+++ /atest/robot/standard_libraries/builtin/set_resource_search_order.txt
Thu Aug 25 15:09:49 2011
@@ -0,0 +1,36 @@
+*** Settings ***
+Suite Setup Run Tests ${EMPTY}
standard_libraries/builtin/set_resource_search_order
+Force Tags regression pybot jybot
+Resource atest_resource.txt
+
+*** Test Cases ***
+Resource Order Set In Suite Setup Should Be Available In Test Cases
+ Check Test Case ${TEST NAME}
+
+Empty Resource Order Can Be Set
+ Check Test Case ${TEST NAME}
+
+One Resource Can Be Set As Default Resource
+ Check Test Case ${TEST NAME}
+
+More Than One Resources Can Be Set As Default Resources
+ Check Test Case ${TEST NAME}
+
+Non-Existing Resources In Search Order Are Ignored
+ Check Test Case ${TEST NAME}
+
+Resource Order Should Be Available In The Next Test Case
+ Check Test Case ${TEST NAME}
+
+Setting Resource Order Returns Previous Resource Order
+ Check Test Case ${TEST NAME}
+
+Default Resource Order Should Be Suite Specific
+ Check Test Case ${TEST NAME}
+
+Resource Search Order Is Space Sensitive
+ Check Test Case ${TEST NAME}
+
+Resource Search Order Is Case Sensitive
+ Check Test Case ${TEST NAME}
+
=======================================
--- /dev/null
+++
/atest/testdata/standard_libraries/builtin/set_resource_search_order/resource1.txt
Thu Aug 25 15:09:49 2011
@@ -0,0 +1,4 @@
+***Keywords***
+Get Resource Name
+ [Return] resource1
+
=======================================
--- /dev/null
+++
/atest/testdata/standard_libraries/builtin/set_resource_search_order/resource2.txt
Thu Aug 25 15:09:49 2011
@@ -0,0 +1,3 @@
+***Keywords***
+Get Resource Name
+ [Return] resource2
=======================================
--- /dev/null
+++
/atest/testdata/standard_libraries/builtin/set_resource_search_order/setting_resource_order.txt
Thu Aug 25 15:09:49 2011
@@ -0,0 +1,48 @@
+*** Settings ***
+Suite Setup Set Resource Search Order resource1 resource2
+Resource resource1.txt
+Resource resource2.txt
+
+*** Test Cases ***
+Resource Order Set In Suite Setup Should Be Available In Test Cases
+ Active Resource Should Be resource1
+
+Empty Resource Order Can Be Set
+ [Documentation] FAIL Multiple keywords with name 'Get Resource Name'
found.\n Give the full name of the keyword you want to use.\n
Found: 'resource1.Get Resource Name' and 'resource2.Get Resource Name'
+ Set Resource Search Order
+ Get Resource Name
+
+One Resource Can Be Set As Default Resource
+ Set Resource Search Order resource2
+ Active Resource Should Be resource2
+
+More Than One Resources Can Be Set As Default Resources
+ Set Resource Search Order resource1 resource2
+ Active Resource Should Be resource1
+
+Non-Existing Resources In Search Order Are Ignored
+ Set Resource Search Order nonex1 resource1 nonex2 resource2
+ Active Resource Should Be resource1
+
+Resource Order Should Be Available In The Next Test Case
+ Active Resource Should Be resource1
+
+Setting Resource Order Returns Previous Resource Order
+ Set Resource Search Order resource2 resource1
+ @{order} = Set Resource Search Order
+ Should Be Equal @{order}[0] resource2
+ Should Be Equal @{order}[1] resource1
+
+Resource Search Order Is Space Sensitive
+ Set Resource Search Order resource 1 resource2
+ Active Resource Should Be resource2
+
+Resource Search Order Is Case Sensitive
+ Set Resource Search Order Resource1 resource2
+ Active Resource Should Be resource2
+
+*** Keywords ***
+Active Resource Should Be
+ [Arguments] ${expected resource name}
+ ${resource name} = Get Resource Name
+ Should Be Equal ${resource name} ${expected resource name}
=======================================
--- /dev/null
+++
/atest/testdata/standard_libraries/builtin/set_resource_search_order/setting_resource_order_does_not_affect_next_suite.txt
Thu Aug 25 15:09:49 2011
@@ -0,0 +1,9 @@
+*** Settings ***
+Resource resource1.txt
+Resource resource2.txt
+
+*** Test Cases ***
+Default Resource Order Should Be Suite Specific
+ [Documentation] FAIL Multiple keywords with name 'Get Resource Name'
found.\n Give the full name of the keyword you want to use.\n
Found: 'resource1.Get Resource Name' and 'resource2.Get Resource Name'
+ Get Resource Name
+