jenkins-bot has submitted this change and it was merged.
Change subject: Migrate get_subclasses to pybal.util; add unit tests
......................................................................
Migrate get_subclasses to pybal.util; add unit tests
Change-Id: I15b39e060384b3b984e78f90875265760a3b123b
---
M pybal/config.py
M pybal/test/test_util.py
M pybal/util.py
3 files changed, 30 insertions(+), 13 deletions(-)
Approvals:
Ori.livneh: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pybal/config.py b/pybal/config.py
index 787cf97..7e3a43b 100644
--- a/pybal/config.py
+++ b/pybal/config.py
@@ -18,19 +18,7 @@
from twisted.python import log
from twisted.web import client
-
-def get_subclasses(cls):
- """Return a list of all direct and indirect subclasses of a given class."""
- subclasses = []
- for subclass in cls.__subclasses__():
- subclasses.append(subclass)
- subclasses.extend(get_subclasses(subclass))
- return subclasses
-
-
-class PyBalConfigurationError(Exception):
- """Raised when PyBal encounters a configuration it does not understand."""
- pass
+from pybal.util import get_subclasses
class ConfigurationObserver(object):
diff --git a/pybal/test/test_util.py b/pybal/test/test_util.py
index 0bcd90c..77c2f0c 100644
--- a/pybal/test/test_util.py
+++ b/pybal/test/test_util.py
@@ -52,6 +52,26 @@
self.assertIn('test', f.read())
+class MiscUtilTestCase(PyBalTestCase):
+ """Test case for misc. methods in `pybal.util`."""
+
+ def testGetSubclasses(self):
+ """Test case for `pybal.util.get_subclasses`."""
+
+ class DummyParent(object):
+ pass
+
+ class DummyChild(DummyParent):
+ pass
+
+ class DummyGrandChild(DummyChild):
+ pass
+
+ subclasses = pybal.util.get_subclasses(DummyParent)
+ subclasses.sort(key=lambda cls: cls.__name__)
+ self.assertEqual(subclasses, [DummyChild, DummyGrandChild])
+
+
class ConfigDictTestCase(PyBalTestCase):
"""Test case for `pybal.util.ConfigDict`."""
diff --git a/pybal/util.py b/pybal/util.py
index 315017f..6fd52c0 100644
--- a/pybal/util.py
+++ b/pybal/util.py
@@ -8,6 +8,15 @@
import datetime
+def get_subclasses(cls):
+ """Return a list of all direct and indirect subclasses of a given class."""
+ subclasses = []
+ for subclass in cls.__subclasses__():
+ subclasses.append(subclass)
+ subclasses.extend(get_subclasses(subclass))
+ return subclasses
+
+
class LogFile(object):
def __init__(self, filename):
self.filename = filename
--
To view, visit https://gerrit.wikimedia.org/r/233649
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I15b39e060384b3b984e78f90875265760a3b123b
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/pybal
Gerrit-Branch: master
Gerrit-Owner: Ori.livneh <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits