Tests: Avoid access globals from abstract base class
authorSergey Sharybin <sergey.vfx@gmail.com>
Fri, 2 Mar 2018 10:16:59 +0000 (11:16 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Fri, 2 Mar 2018 10:18:12 +0000 (11:18 +0100)
Delegate functionality to subclasses, assert when subclasses didn't do
job the are supposed to do.

Thanks Sybren for pointing to a proper solution.

tests/python/modules/test_utils.py

index 489f36c..6ca498d 100755 (executable)
@@ -58,11 +58,10 @@ def with_tempdir(wrapped):
 class AbstractBlenderRunnerTest(unittest.TestCase):
     """Base class for all test suites which needs to run Blender"""
 
-    @classmethod
-    def setUpClass(cls):
-        global args
-        cls.blender = args.blender
-        cls.testdir = pathlib.Path(args.testdir)
+    # Set in a subclass
+    blender: pathlib.Path = None
+    testdir: pathlib.Path = None
+    
 
     def run_blender(self, filepath: str, python_script: str, timeout: int=300) -> str:
         """Runs Blender by opening a blendfile and executing a script.
@@ -73,6 +72,9 @@ class AbstractBlenderRunnerTest(unittest.TestCase):
         :param timeout: in seconds
         """
 
+        assert self.blender, "Path to Blender binary is to be set in setUpClass()"
+        assert self.testdir, "Path to tests binary is to be set in setUpClass()"
+
         blendfile = self.testdir / filepath
 
         command = (