[conduit: 16/138] Wrappers for test data sets



commit dc25a653a863a28328388eeec54564f5a911958b
Author: John Carr <john carr unrouted co uk>
Date:   Mon Apr 20 07:11:44 2009 -0700

    Wrappers for test data sets
---
 test/soup/__init__.py      |    1 +
 test/soup/data/__init__.py |   33 +++++++++++++++++++++++++++++++++
 test/soup/data/file.py     |    5 +++++
 3 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/test/soup/__init__.py b/test/soup/__init__.py
index 557b471..1f2c5ce 100644
--- a/test/soup/__init__.py
+++ b/test/soup/__init__.py
@@ -6,6 +6,7 @@ sys.path.insert(0, os.path.abspath(os.path.join(cwd, '..', '..')))
 import unittest
 
 import modules
+import data
 
 CHANGE_ADD = 1
 CHANGE_REPLACE = 2
diff --git a/test/soup/data/__init__.py b/test/soup/data/__init__.py
new file mode 100644
index 0000000..2b8ca46
--- /dev/null
+++ b/test/soup/data/__init__.py
@@ -0,0 +1,33 @@
+import os, sys
+
+class DataWrapper(object):
+    """
+    This class provides a wrapper around some test data.
+    """
+
+    def get_all(self):
+        raise NotImplementedError
+
+
+def load_all_data():
+    basepath = os.path.dirname(__file__)
+    for root, dirs, files in os.walk(basepath):
+        for dir in dirs:
+            if dir[:1] != ".":
+                load_data(dir)
+        for file in files:
+            if file.endswith(".py") and not file.startswith("__"):
+                load_data(file[:-3])
+        break
+
+def load_data(dw):
+    if sys.modules.has_key(dw):
+        reload(sys.modules[dw])
+    else:
+        __import__("soup.data", {}, {}, [dw])
+
+def get_all():
+    if len(DataWrapper.__subclasses__()) == 0:
+        load_all_data()
+    return DataWrapper.__subclasses__()
+
diff --git a/test/soup/data/file.py b/test/soup/data/file.py
new file mode 100644
index 0000000..0e53163
--- /dev/null
+++ b/test/soup/data/file.py
@@ -0,0 +1,5 @@
+import soup.data
+
+class FileWrapper(soup.data.DataWrapper):
+    pass
+



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]