public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [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