testenv: Support test overlaying a directory to look for templates
This way tests which require a very specific config file can override
specific template files used by object classes.
Change-Id: I65d1b1e826d2d430ee83810d998b98d0ccaa07cd
diff --git a/src/osmo_gsm_tester/core/template.py b/src/osmo_gsm_tester/core/template.py
index 82985ef..8178c13 100644
--- a/src/osmo_gsm_tester/core/template.py
+++ b/src/osmo_gsm_tester/core/template.py
@@ -31,6 +31,8 @@
return os.path.join(os.path.dirname(os.path.dirname(__file__)), 'templates')
def set_templates_dir(*templates_dirs):
+ '''Set a lit of directories to look for templates. It must be called
+ everytime a template file is updated.'''
global _lookup
global _logger
if not templates_dirs:
diff --git a/src/osmo_gsm_tester/obj/stp_osmo.py b/src/osmo_gsm_tester/obj/stp_osmo.py
index 1382016..83a2f75 100644
--- a/src/osmo_gsm_tester/obj/stp_osmo.py
+++ b/src/osmo_gsm_tester/obj/stp_osmo.py
@@ -35,7 +35,6 @@
def start(self):
self.log('Starting osmo-stp')
- self.run_dir = util.Dir(self.testenv.test().get_run_dir().new_dir(self.name()))
self.configure()
inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-stp')))
@@ -61,6 +60,7 @@
self.process.launch()
def configure(self):
+ self.run_dir = util.Dir(self.testenv.test().get_run_dir().new_dir(self.name()))
self.config_file = self.run_dir.new_file('osmo-stp.cfg')
self.dbg(config_file=self.config_file)
diff --git a/src/osmo_gsm_tester/testenv.py b/src/osmo_gsm_tester/testenv.py
index f3ac02e..7ca854b 100644
--- a/src/osmo_gsm_tester/testenv.py
+++ b/src/osmo_gsm_tester/testenv.py
@@ -24,6 +24,7 @@
import sys
from .core import process
+from .core import template
from .core import log as log_module
from .core import process as process_module
from .core import resource
@@ -139,6 +140,7 @@
self.suite_run.reserved_resources.put_all()
MainLoop.unregister_poll_func(self.poll)
self.test_import_modules_cleanup()
+ self.set_overlay_template_dir(None)
def config_suite_specific(self):
return self.suite_run.config_suite_specific()
@@ -146,6 +148,14 @@
def config_test_specific(self):
return self.suite_run.config_suite_specific().get(self._test.module_name(), {})
+ def set_overlay_template_dir(self, template_dir=None):
+ '''Overlay a directory on top of default one when looking for
+ directories. It must be called everytime a template file is updated.'''
+ if template_dir is None:
+ template.set_templates_dir(template.default_templates_dir())
+ else:
+ template.set_templates_dir(template_dir, template.default_templates_dir())
+
def prompt(self, *msgs, **msg_details):
'ask for user interaction. Do not use in tests that should run automatically!'
if msg_details: