* [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, tests/dummy_backend/, tests/
@ 2013-07-01 21:40 Jauhien Piatlicki
0 siblings, 0 replies; 3+ messages in thread
From: Jauhien Piatlicki @ 2013-07-01 21:40 UTC (permalink / raw
To: gentoo-commits
commit: c9ad38ff53c9dc8baa38a9b888c3e83a7b47dc1b
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
AuthorDate: Mon Jul 1 21:42:06 2013 +0000
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com>
CommitDate: Mon Jul 1 21:42:06 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=c9ad38ff
g_sorcery/g_sorcery: get_backend
---
g_sorcery/g_sorcery.py | 11 ++++++++++-
tests/dummy_backend/__init__.py | 4 ++++
tests/dummy_backend/backend.py | 4 ++++
tests/test_g_sorcery.py | 16 ++++++++++++++++
4 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/g_sorcery/g_sorcery.py b/g_sorcery/g_sorcery.py
index 4b1784a..c815ec9 100644
--- a/g_sorcery/g_sorcery.py
+++ b/g_sorcery/g_sorcery.py
@@ -11,7 +11,7 @@
:license: GPL-2, see LICENSE for more details.
"""
-import os, sys
+import importlib, os, sys
from .fileutils import FileJSON
@@ -41,5 +41,14 @@ def main():
return -1
pass
+def get_backend(package):
+ try:
+ module = importlib.import_module(package + '.backend')
+ except ImportError:
+ return None
+
+ return module.instance
+
+
if __name__ == "__main__":
sys.exit(main())
diff --git a/tests/dummy_backend/__init__.py b/tests/dummy_backend/__init__.py
new file mode 100644
index 0000000..2ad1e71
--- /dev/null
+++ b/tests/dummy_backend/__init__.py
@@ -0,0 +1,4 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+__all__ = ['backend']
diff --git a/tests/dummy_backend/backend.py b/tests/dummy_backend/backend.py
new file mode 100644
index 0000000..b23785c
--- /dev/null
+++ b/tests/dummy_backend/backend.py
@@ -0,0 +1,4 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+instance = 'test'
diff --git a/tests/test_g_sorcery.py b/tests/test_g_sorcery.py
index 7ff9992..ece991d 100644
--- a/tests/test_g_sorcery.py
+++ b/tests/test_g_sorcery.py
@@ -13,6 +13,10 @@
import os, subprocess, tempfile, unittest
+from g_sorcery import g_sorcery
+
+from tests.dummy_backend import backend as dummyBackend
+
class TestBin(unittest.TestCase):
def setUp(self):
self.tempdir = tempfile.TemporaryDirectory()
@@ -42,9 +46,21 @@ class TestBin(unittest.TestCase):
self.assertRaises(subprocess.CalledProcessError, subprocess.check_output, './g-empty')
os.chdir(prev)
+class TestGSorcery(unittest.TestCase):
+ def setUp(self):
+ self.tempdir = tempfile.TemporaryDirectory()
+
+ def tearDown(self):
+ del self.tempdir
+
+ def test_get_backend(self):
+ self.assertEqual(g_sorcery.get_backend('nonexistent_backend'), None)
+ self.assertEqual(g_sorcery.get_backend('dummy_backend'), dummyBackend.instance)
+
def suite():
suite = unittest.TestSuite()
suite.addTest(TestBin('test_g_sorcery'))
suite.addTest(TestBin('test_nonexistent_backend'))
suite.addTest(TestBin('test_empty_config'))
+ suite.addTest(TestGSorcery('test_get_backend'))
return suite
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, tests/dummy_backend/, tests/
@ 2013-07-01 22:04 Jauhien Piatlicki
0 siblings, 0 replies; 3+ messages in thread
From: Jauhien Piatlicki @ 2013-07-01 22:04 UTC (permalink / raw
To: gentoo-commits
commit: 02af1bb5bce3f4764fb076281122a82c317d99a6
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
AuthorDate: Mon Jul 1 22:05:02 2013 +0000
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com>
CommitDate: Mon Jul 1 22:05:02 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=02af1bb5
g_sorcery/g_sorcery: backend selection
---
g_sorcery/g_sorcery.py | 3 ++-
tests/dummy_backend/backend.py | 12 +++++++++++-
tests/test_g_sorcery.py | 10 ++++++++++
3 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/g_sorcery/g_sorcery.py b/g_sorcery/g_sorcery.py
index c815ec9..d6ca0e2 100644
--- a/g_sorcery/g_sorcery.py
+++ b/g_sorcery/g_sorcery.py
@@ -39,7 +39,8 @@ def main():
except FileJSONError as e:
sys.stderr.write('g-sorcery error in config file for ' + name + ': ' + str(e) + '\n')
return -1
- pass
+ backend = get_backend(config['package'])
+ print(backend.test())
def get_backend(package):
try:
diff --git a/tests/dummy_backend/backend.py b/tests/dummy_backend/backend.py
index b23785c..8e43a4f 100644
--- a/tests/dummy_backend/backend.py
+++ b/tests/dummy_backend/backend.py
@@ -1,4 +1,14 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-instance = 'test'
+class Test:
+ def __init__(self):
+ self.tst = 'test backend'
+
+ def test(self):
+ return('test')
+
+ def __eq__(self, other):
+ return self.tst == other.tst
+
+instance = Test()
diff --git a/tests/test_g_sorcery.py b/tests/test_g_sorcery.py
index ece991d..4b18474 100644
--- a/tests/test_g_sorcery.py
+++ b/tests/test_g_sorcery.py
@@ -46,6 +46,15 @@ class TestBin(unittest.TestCase):
self.assertRaises(subprocess.CalledProcessError, subprocess.check_output, './g-empty')
os.chdir(prev)
+ def test_config(self):
+ prev = os.getcwd()
+ os.chdir(self.tempdir.name)
+ os.system('ln -s ' + self.binary + ' g-dummy')
+ os.system('echo {\\"package\\": \\"dummy_backend\\"} > ./g-dummy.json')
+ self.assertEqual(subprocess.check_output('./g-dummy').decode("utf-8")[:-1],
+ dummyBackend.instance.test())
+ os.chdir(prev)
+
class TestGSorcery(unittest.TestCase):
def setUp(self):
self.tempdir = tempfile.TemporaryDirectory()
@@ -62,5 +71,6 @@ def suite():
suite.addTest(TestBin('test_g_sorcery'))
suite.addTest(TestBin('test_nonexistent_backend'))
suite.addTest(TestBin('test_empty_config'))
+ suite.addTest(TestBin('test_config'))
suite.addTest(TestGSorcery('test_get_backend'))
return suite
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, tests/dummy_backend/, tests/
@ 2013-07-08 23:53 Jauhien Piatlicki
0 siblings, 0 replies; 3+ messages in thread
From: Jauhien Piatlicki @ 2013-07-08 23:53 UTC (permalink / raw
To: gentoo-commits
commit: 2418b00bc70c7ea449dfe09ccaf21722868e4425
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
AuthorDate: Mon Jul 8 23:52:19 2013 +0000
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com>
CommitDate: Mon Jul 8 23:52:19 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=2418b00b
g_sorcery/g_sorcery: backend selection
---
g_sorcery/backend.py | 3 +++
g_sorcery/g_sorcery.py | 14 +++++++++-----
tests/dummy_backend/backend.py | 7 ++++---
tests/test_g_sorcery.py | 8 ++++----
4 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/g_sorcery/backend.py b/g_sorcery/backend.py
index bbdc337..1b062a2 100644
--- a/g_sorcery/backend.py
+++ b/g_sorcery/backend.py
@@ -130,3 +130,6 @@ class Backend(object):
metadata = self.metadata_generator.generate(
Package(category, name, version))
return metadata
+
+ def __call__(self, args):
+ pass
diff --git a/g_sorcery/g_sorcery.py b/g_sorcery/g_sorcery.py
index d6ca0e2..00d149c 100644
--- a/g_sorcery/g_sorcery.py
+++ b/g_sorcery/g_sorcery.py
@@ -19,13 +19,17 @@ from .exceptions import FileJSONError
def main():
name = os.path.basename(sys.argv[0])
+ shift = 1
if name == 'g-sorcery':
- print(name)
- return 0
+ if len(sys.argv) < 2:
+ print("No backend specified")
+ return 0
+ name = sys.argv[1]
+ shift = 2
else:
cfg = name + '.json'
cfg_path = None
- for path in '.', '/etc/g-sorcery', '~':
+ for path in '.', '~', '/etc/g-sorcery':
current = os.path.join(path, cfg)
if (os.path.isfile(current)):
cfg_path = path
@@ -40,7 +44,7 @@ def main():
sys.stderr.write('g-sorcery error in config file for ' + name + ': ' + str(e) + '\n')
return -1
backend = get_backend(config['package'])
- print(backend.test())
+ return backend.dispatcher(sys.argv[shift:])
def get_backend(package):
try:
@@ -48,7 +52,7 @@ def get_backend(package):
except ImportError:
return None
- return module.instance
+ return module
if __name__ == "__main__":
diff --git a/tests/dummy_backend/backend.py b/tests/dummy_backend/backend.py
index b0fdc14..f769007 100644
--- a/tests/dummy_backend/backend.py
+++ b/tests/dummy_backend/backend.py
@@ -5,10 +5,11 @@ class Test(object):
def __init__(self):
self.tst = 'test backend'
- def test(self):
- return('test')
+ def __call__(self, args):
+ print(args[0])
+ return 0
def __eq__(self, other):
return self.tst == other.tst
-instance = Test()
+dispatcher = Test()
diff --git a/tests/test_g_sorcery.py b/tests/test_g_sorcery.py
index c5a4cfd..2004a9a 100644
--- a/tests/test_g_sorcery.py
+++ b/tests/test_g_sorcery.py
@@ -28,7 +28,7 @@ class TestBin(BaseTest):
self.binary = os.path.join(binpath, 'g-sorcery')
def test_g_sorcery(self):
- self.assertEqual(subprocess.check_output(self.binary), b'g-sorcery\n')
+ self.assertEqual(subprocess.check_output(self.binary), b'No backend specified\n')
def test_nonexistent_backend(self):
prev = os.getcwd()
@@ -50,15 +50,15 @@ class TestBin(BaseTest):
os.chdir(self.tempdir.name)
os.system('ln -s ' + self.binary + ' g-dummy')
os.system('echo {\\"package\\": \\"dummy_backend\\"} > ./g-dummy.json')
- self.assertEqual(subprocess.check_output('./g-dummy').decode("utf-8")[:-1],
- dummyBackend.instance.test())
+ self.assertEqual(subprocess.check_output(['./g-dummy', 'test']).decode("utf-8")[:-1],
+ 'test')
os.chdir(prev)
class TestGSorcery(BaseTest):
def test_get_backend(self):
self.assertEqual(g_sorcery.get_backend('nonexistent_backend'), None)
- self.assertEqual(g_sorcery.get_backend('dummy_backend'), dummyBackend.instance)
+ self.assertEqual(g_sorcery.get_backend('dummy_backend').dispatcher, dummyBackend.dispatcher)
def suite():
suite = unittest.TestSuite()
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-07-09 23:06 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-01 22:04 [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, tests/dummy_backend/, tests/ Jauhien Piatlicki
-- strict thread matches above, loose matches on Subject: below --
2013-07-08 23:53 Jauhien Piatlicki
2013-07-01 21:40 Jauhien Piatlicki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox