1 |
commit: 32e17174a95099bbbbcce8cdb83bb4573308753e |
2 |
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com> |
3 |
AuthorDate: Mon Jul 1 20:52:46 2013 +0000 |
4 |
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com> |
5 |
CommitDate: Mon Jul 1 20:52:46 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=32e17174 |
7 |
|
8 |
g_sorcery/g_sorcery: backend config, initial commit |
9 |
|
10 |
--- |
11 |
g_sorcery/g_sorcery.py | 29 +++++++++++++++++++++++++++-- |
12 |
tests/test_g_sorcery.py | 25 +++++++++++++++++++++---- |
13 |
2 files changed, 48 insertions(+), 6 deletions(-) |
14 |
|
15 |
diff --git a/g_sorcery/g_sorcery.py b/g_sorcery/g_sorcery.py |
16 |
index dd90c96..4b1784a 100644 |
17 |
--- a/g_sorcery/g_sorcery.py |
18 |
+++ b/g_sorcery/g_sorcery.py |
19 |
@@ -11,10 +11,35 @@ |
20 |
:license: GPL-2, see LICENSE for more details. |
21 |
""" |
22 |
|
23 |
-import sys |
24 |
+import os, sys |
25 |
+ |
26 |
+from .fileutils import FileJSON |
27 |
+ |
28 |
+from .exceptions import FileJSONError |
29 |
|
30 |
def main(): |
31 |
- print('it works') |
32 |
+ name = os.path.basename(sys.argv[0]) |
33 |
+ if name == 'g-sorcery': |
34 |
+ print(name) |
35 |
+ return 0 |
36 |
+ else: |
37 |
+ cfg = name + '.json' |
38 |
+ cfg_path = None |
39 |
+ for path in '.', '/etc/g-sorcery', '~': |
40 |
+ current = os.path.join(path, cfg) |
41 |
+ if (os.path.isfile(current)): |
42 |
+ cfg_path = path |
43 |
+ break |
44 |
+ if not cfg_path: |
45 |
+ sys.stderr.write('g-sorcery error: no config file for ' + name + ' backend\n') |
46 |
+ return -1 |
47 |
+ cfg_f = FileJSON(cfg_path, cfg, ['package']) |
48 |
+ try: |
49 |
+ config = cfg_f.read() |
50 |
+ except FileJSONError as e: |
51 |
+ sys.stderr.write('g-sorcery error in config file for ' + name + ': ' + str(e) + '\n') |
52 |
+ return -1 |
53 |
+ pass |
54 |
|
55 |
if __name__ == "__main__": |
56 |
sys.exit(main()) |
57 |
|
58 |
diff --git a/tests/test_g_sorcery.py b/tests/test_g_sorcery.py |
59 |
index 7241b19..7ff9992 100644 |
60 |
--- a/tests/test_g_sorcery.py |
61 |
+++ b/tests/test_g_sorcery.py |
62 |
@@ -16,18 +16,35 @@ import os, subprocess, tempfile, unittest |
63 |
class TestBin(unittest.TestCase): |
64 |
def setUp(self): |
65 |
self.tempdir = tempfile.TemporaryDirectory() |
66 |
+ |
67 |
+ binpath = os.path.join(os.path.dirname( |
68 |
+ os.path.dirname(os.path.realpath(__file__))), 'bin') |
69 |
+ self.binary = os.path.join(binpath, 'g-sorcery') |
70 |
|
71 |
def tearDown(self): |
72 |
del self.tempdir |
73 |
|
74 |
def test_g_sorcery(self): |
75 |
- binpath = os.path.join(os.path.split( |
76 |
- os.path.dirname(os.path.realpath(__file__)))[0], 'bin') |
77 |
- binary = os.path.join(binpath, 'g-sorcery') |
78 |
- self.assertEqual(subprocess.check_output(binary), b'it works\n') |
79 |
+ self.assertEqual(subprocess.check_output(self.binary), b'g-sorcery\n') |
80 |
|
81 |
+ def test_nonexistent_backend(self): |
82 |
+ prev = os.getcwd() |
83 |
+ os.chdir(self.tempdir.name) |
84 |
+ os.system('ln -s ' + self.binary + ' g-nonexistent') |
85 |
+ self.assertRaises(subprocess.CalledProcessError, subprocess.check_output, './g-nonexistent') |
86 |
+ os.chdir(prev) |
87 |
+ |
88 |
+ def test_empty_config(self): |
89 |
+ prev = os.getcwd() |
90 |
+ os.chdir(self.tempdir.name) |
91 |
+ os.system('ln -s ' + self.binary + ' g-empty') |
92 |
+ os.system('echo {} > ./g-empty.json') |
93 |
+ self.assertRaises(subprocess.CalledProcessError, subprocess.check_output, './g-empty') |
94 |
+ os.chdir(prev) |
95 |
|
96 |
def suite(): |
97 |
suite = unittest.TestSuite() |
98 |
suite.addTest(TestBin('test_g_sorcery')) |
99 |
+ suite.addTest(TestBin('test_nonexistent_backend')) |
100 |
+ suite.addTest(TestBin('test_empty_config')) |
101 |
return suite |