1 |
commit: c9ad38ff53c9dc8baa38a9b888c3e83a7b47dc1b |
2 |
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com> |
3 |
AuthorDate: Mon Jul 1 21:42:06 2013 +0000 |
4 |
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com> |
5 |
CommitDate: Mon Jul 1 21:42:06 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=c9ad38ff |
7 |
|
8 |
g_sorcery/g_sorcery: get_backend |
9 |
|
10 |
--- |
11 |
g_sorcery/g_sorcery.py | 11 ++++++++++- |
12 |
tests/dummy_backend/__init__.py | 4 ++++ |
13 |
tests/dummy_backend/backend.py | 4 ++++ |
14 |
tests/test_g_sorcery.py | 16 ++++++++++++++++ |
15 |
4 files changed, 34 insertions(+), 1 deletion(-) |
16 |
|
17 |
diff --git a/g_sorcery/g_sorcery.py b/g_sorcery/g_sorcery.py |
18 |
index 4b1784a..c815ec9 100644 |
19 |
--- a/g_sorcery/g_sorcery.py |
20 |
+++ b/g_sorcery/g_sorcery.py |
21 |
@@ -11,7 +11,7 @@ |
22 |
:license: GPL-2, see LICENSE for more details. |
23 |
""" |
24 |
|
25 |
-import os, sys |
26 |
+import importlib, os, sys |
27 |
|
28 |
from .fileutils import FileJSON |
29 |
|
30 |
@@ -41,5 +41,14 @@ def main(): |
31 |
return -1 |
32 |
pass |
33 |
|
34 |
+def get_backend(package): |
35 |
+ try: |
36 |
+ module = importlib.import_module(package + '.backend') |
37 |
+ except ImportError: |
38 |
+ return None |
39 |
+ |
40 |
+ return module.instance |
41 |
+ |
42 |
+ |
43 |
if __name__ == "__main__": |
44 |
sys.exit(main()) |
45 |
|
46 |
diff --git a/tests/dummy_backend/__init__.py b/tests/dummy_backend/__init__.py |
47 |
new file mode 100644 |
48 |
index 0000000..2ad1e71 |
49 |
--- /dev/null |
50 |
+++ b/tests/dummy_backend/__init__.py |
51 |
@@ -0,0 +1,4 @@ |
52 |
+#!/usr/bin/env python |
53 |
+# -*- coding: utf-8 -*- |
54 |
+ |
55 |
+__all__ = ['backend'] |
56 |
|
57 |
diff --git a/tests/dummy_backend/backend.py b/tests/dummy_backend/backend.py |
58 |
new file mode 100644 |
59 |
index 0000000..b23785c |
60 |
--- /dev/null |
61 |
+++ b/tests/dummy_backend/backend.py |
62 |
@@ -0,0 +1,4 @@ |
63 |
+#!/usr/bin/env python |
64 |
+# -*- coding: utf-8 -*- |
65 |
+ |
66 |
+instance = 'test' |
67 |
|
68 |
diff --git a/tests/test_g_sorcery.py b/tests/test_g_sorcery.py |
69 |
index 7ff9992..ece991d 100644 |
70 |
--- a/tests/test_g_sorcery.py |
71 |
+++ b/tests/test_g_sorcery.py |
72 |
@@ -13,6 +13,10 @@ |
73 |
|
74 |
import os, subprocess, tempfile, unittest |
75 |
|
76 |
+from g_sorcery import g_sorcery |
77 |
+ |
78 |
+from tests.dummy_backend import backend as dummyBackend |
79 |
+ |
80 |
class TestBin(unittest.TestCase): |
81 |
def setUp(self): |
82 |
self.tempdir = tempfile.TemporaryDirectory() |
83 |
@@ -42,9 +46,21 @@ class TestBin(unittest.TestCase): |
84 |
self.assertRaises(subprocess.CalledProcessError, subprocess.check_output, './g-empty') |
85 |
os.chdir(prev) |
86 |
|
87 |
+class TestGSorcery(unittest.TestCase): |
88 |
+ def setUp(self): |
89 |
+ self.tempdir = tempfile.TemporaryDirectory() |
90 |
+ |
91 |
+ def tearDown(self): |
92 |
+ del self.tempdir |
93 |
+ |
94 |
+ def test_get_backend(self): |
95 |
+ self.assertEqual(g_sorcery.get_backend('nonexistent_backend'), None) |
96 |
+ self.assertEqual(g_sorcery.get_backend('dummy_backend'), dummyBackend.instance) |
97 |
+ |
98 |
def suite(): |
99 |
suite = unittest.TestSuite() |
100 |
suite.addTest(TestBin('test_g_sorcery')) |
101 |
suite.addTest(TestBin('test_nonexistent_backend')) |
102 |
suite.addTest(TestBin('test_empty_config')) |
103 |
+ suite.addTest(TestGSorcery('test_get_backend')) |
104 |
return suite |