Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/pms-test-suite:master commit in: /, PMSTestSuite/
Date: Wed, 01 Jun 2011 12:30:34
Message-Id: 29fa19fb5db1c860bc7c54df6426aea5aaac063d.mgorny@gentoo
1 commit: 29fa19fb5db1c860bc7c54df6426aea5aaac063d
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Wed Jun 1 11:23:32 2011 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Wed Jun 1 11:23:32 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=29fa19fb
7
8 Commonize the CLI code for single executable.
9
10 ---
11 PMSTestSuite/cli.py | 55 ++++++++++++++++++++++++++++++++++++++++++-
12 PMSTestSuite/testrunner.py | 55 --------------------------------------------
13 pms-tester | 4 +-
14 3 files changed, 55 insertions(+), 59 deletions(-)
15
16 diff --git a/PMSTestSuite/cli.py b/PMSTestSuite/cli.py
17 index 7db4713..f7eb7ae 100644
18 --- a/PMSTestSuite/cli.py
19 +++ b/PMSTestSuite/cli.py
20 @@ -3,6 +3,7 @@
21 # Released under the terms of the 2-clause BSD license.
22
23 import os.path, shlex
24 +import gobject
25
26 from optparse import OptionParser
27
28 @@ -13,8 +14,7 @@ from PMSTestSuite.pm import get_package_managers
29
30 class PMSTestSuiteCLI(object):
31 """
32 - A class encapsulating common CLI routines used by PMS Test Suite
33 - scripts.
34 + A class encapsulating CLI routines used by the PMS Test Suite.
35
36 Properties:
37 1) set during __init__():
38 @@ -84,3 +84,54 @@ class PMSTestSuiteCLI(object):
39 self.test_library = load_library(opts.library_name)
40 except (ImportError, TypeError) as e:
41 opt.error('Test library load failed: %s' % e)
42 +
43 + def merge_done(self, pid, ret):
44 + failed = []
45 +
46 + cpvs = frozenset(self.pm.lookup_vardb(self.cpvs))
47 + for t in self.test_library:
48 + res = t.check_result(t.cpv in cpvs)
49 + if not res:
50 + failed.append(t)
51 +
52 + if len(failed) != len(self.cpvs):
53 + print('-> Unmerging test ebuilds...')
54 + self.pm.unmerge(cpvs)
55 +
56 + if not failed:
57 + print('%d tests completed successfully.' % len(self.cpvs))
58 + else:
59 + print('%d of %d tests completed successfully, %d failed:'
60 + % (len(self.cpvs) - len(failed), len(self.cpvs), len(failed)))
61 + for t in failed:
62 + print('- %s' % t.p)
63 +
64 + self.ret = 0 if not failed else 1
65 + self.loop.quit()
66 +
67 + def main(self, argv):
68 + self._start(*argv)
69 +
70 + print('-> Generating ebuilds...')
71 + files = {}
72 + for t in self.test_library:
73 + files.update(t.get_output_files())
74 +
75 + self.repository.write_files(files)
76 + self.repository.remanifest(files, self.pm)
77 +
78 + self.pm.append_repository(self.repository)
79 + self.cpvs = [t.cpv for t in self.test_library]
80 +
81 + installedcpvs = self.pm.lookup_vardb(self.cpvs)
82 + if installedcpvs:
83 + print('-> Unmerging already-merged test ebuilds...')
84 + self.pm.unmerge(installedcpvs)
85 +
86 + print('-> Running PM...')
87 + self.loop = gobject.MainLoop()
88 + gobject.child_watch_add(self.pm.merge_async(self.cpvs),
89 + self.merge_done)
90 + self.loop.run()
91 +
92 + return self.ret
93
94 diff --git a/PMSTestSuite/testrunner.py b/PMSTestSuite/testrunner.py
95 deleted file mode 100644
96 index 19c3749..0000000
97 --- a/PMSTestSuite/testrunner.py
98 +++ /dev/null
99 @@ -1,55 +0,0 @@
100 -from PMSTestSuite.ebuildgen import EbuildGenCLI
101 -
102 -import gobject
103 -
104 -class TestRunnerCLI(EbuildGenCLI):
105 - def merge_done(self, pid, ret):
106 - failed = []
107 -
108 - cpvs = frozenset(self.pm.lookup_vardb(self.cpvs))
109 - for t in self.test_library:
110 - res = t.check_result(t.cpv in cpvs)
111 - if not res:
112 - failed.append(t)
113 -
114 - if len(failed) != len(self.cpvs):
115 - print('-> Unmerging test ebuilds...')
116 - self.pm.unmerge(cpvs)
117 -
118 - if not failed:
119 - print('%d tests completed successfully.' % len(self.cpvs))
120 - else:
121 - print('%d of %d tests completed successfully, %d failed:'
122 - % (len(self.cpvs) - len(failed), len(self.cpvs), len(failed)))
123 - for t in failed:
124 - print('- %s' % t.p)
125 -
126 - self.ret = 0 if not failed else 1
127 - self.loop.quit()
128 -
129 - def main(self, argv):
130 - self._start(*argv)
131 -
132 - print('-> Generating ebuilds...')
133 - files = {}
134 - for t in self.test_library:
135 - files.update(t.get_output_files())
136 -
137 - self.repository.write_files(files)
138 - self.repository.remanifest(files, self.pm)
139 -
140 - self.pm.append_repository(self.repository)
141 - self.cpvs = [t.cpv for t in self.test_library]
142 -
143 - installedcpvs = self.pm.lookup_vardb(self.cpvs)
144 - if installedcpvs:
145 - print('-> Unmerging already-merged test ebuilds...')
146 - self.pm.unmerge(installedcpvs)
147 -
148 - print('-> Running PM...')
149 - self.loop = gobject.MainLoop()
150 - gobject.child_watch_add(self.pm.merge_async(self.cpvs),
151 - self.merge_done)
152 - self.loop.run()
153 -
154 - return self.ret
155
156 diff --git a/pms-tester b/pms-tester
157 index ededbef..317b587 100755
158 --- a/pms-tester
159 +++ b/pms-tester
160 @@ -5,8 +5,8 @@
161
162 import sys
163
164 -from PMSTestSuite.testrunner import TestRunnerCLI
165 +from PMSTestSuite.cli import PMSTestSuiteCLI
166
167 if __name__ == '__main__':
168 - cli = TestRunnerCLI()
169 + cli = PMSTestSuiteCLI()
170 sys.exit(cli.main(sys.argv))