Gentoo Archives: gentoo-commits

From: Jauhien Piatlicki <piatlicki@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, tests/
Date: Mon, 01 Jul 2013 20:51:39
Message-Id: 1372711966.32e17174a95099bbbbcce8cdb83bb4573308753e.jauhien@gentoo
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