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
+

Reply via email to