Robot Framework
libraryscopes.py
Go to the documentation of this file.
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 inspect
17 
18 from robot.utils import normalize
19 
20 
21 def LibraryScope(libcode, library):
22  scope = _get_scope(libcode)
23  if scope == 'GLOBAL':
24  return GlobalScope(library)
25  if scope in ('SUITE', 'TESTSUITE'):
26  return TestSuiteScope(library)
27  return TestCaseScope(library)
28 
29 
30 def _get_scope(libcode):
31  if inspect.ismodule(libcode):
32  return 'GLOBAL'
33  scope = getattr(libcode, 'ROBOT_LIBRARY_SCOPE', '')
34  return normalize(str(scope), ignore='_').upper()
35 
36 
38  is_global = True
39 
40  def __init__(self, library):
41  self._register_listeners_register_listeners = library.register_listeners
42  self._unregister_listeners_unregister_listeners = library.unregister_listeners
43 
44  def start_suite(self):
45  self._register_listeners_register_listeners()
46 
47  def end_suite(self):
48  self._unregister_listeners_unregister_listeners()
49 
50  def start_test(self):
51  pass
52 
53  def end_test(self):
54  pass
55 
56  def __str__(self):
57  return 'GLOBAL'
58 
59 
61  is_global = False
62 
63  def __init__(self, library):
64  GlobalScope.__init__(self, library)
65  self._reset_instance_reset_instance = library.reset_instance
66  self._instance_cache_instance_cache = []
67 
68  def start_suite(self):
69  prev = self._reset_instance_reset_instance()
70  self._instance_cache_instance_cache.append(prev)
71  self._register_listeners_register_listeners()
72 
73  def end_suite(self):
74  self._unregister_listeners_unregister_listeners(close=True)
75  prev = self._instance_cache_instance_cache.pop()
76  self._reset_instance_reset_instance(prev)
77 
78  def __str__(self):
79  return 'SUITE'
80 
81 
83 
84  def start_test(self):
85  self._unregister_listeners_unregister_listeners()
86  prev = self._reset_instance_reset_instance()
87  self._instance_cache_instance_cache.append(prev)
88  self._register_listeners_register_listeners()
89 
90  def end_test(self):
91  self._unregister_listeners_unregister_listeners(close=True)
92  prev = self._instance_cache_instance_cache.pop()
93  self._reset_instance_reset_instance(prev)
94  self._register_listeners_register_listeners()
95 
96  def __str__(self):
97  return 'TEST'
def LibraryScope(libcode, library)
def normalize(string, ignore=(), caseless=True, spaceless=True)
Normalizes given string according to given spec.
Definition: normalizing.py:27