bodhi.spec | 4 ++++
bodhi/model.py | 31 +++++++++++++++++++++++++++++++
bodhi/templates/show.kid | 12 ++++++++++++
3 files changed, 47 insertions(+)
New commits:
commit 2548cc6d38bdc337a9070624f10e9f72d2b2695b
Author: Luke Macken <lmacken(a)redhat.com>
Date: Mon Jan 31 12:42:47 2011 -0500
Query the wiki for test cases and display them in the update
diff --git a/bodhi.spec b/bodhi.spec
index 491ec1b..6ad7f0a 100644
--- a/bodhi.spec
+++ b/bodhi.spec
@@ -63,6 +63,7 @@ Requires: httpd
Requires: python-markdown
Requires: python-hashlib
Requires: python-kitchen
+Requires: python-simplemediawiki
%description server
@@ -120,6 +121,9 @@ rm -rf bodhi/tests bodhi/tools/test-bodhi.py
%changelog
+* Mon Jan 31 2011 Luke Macken <lmacken(a)redhat.com> - 0.7.11
+- Require python-simplemediawiki for our test case integration
+
* Mon Jan 10 2011 Luke Macken <lmacken(a)redhat.com> - 0.7.10-1
- 0.7.10 release
diff --git a/bodhi/model.py b/bodhi/model.py
index b9c59a1..2f3a241 100644
--- a/bodhi/model.py
+++ b/bodhi/model.py
@@ -170,6 +170,37 @@ class Package(SQLObject):
return dict(name=self.name, suggest_reboot=self.suggest_reboot,
committers=self.committers)
+ def get_test_cases(self):
+ """ Get a list of test cases from the wiki """
+ from simplemediawiki import MediaWiki
+ wiki =
MediaWiki('https://fedoraproject.org/w/api.php')
+ cat_page = 'Category:Package %s test cases' % self.name
+ limit = 10
+
+ def list_categorymembers(wiki, cat_page, limit=10):
+ # Build query arguments and call wiki
+ query = dict(action='query', list='categorymembers',
cmtitle=cat_page)
+ response = wiki.call(query)
+ members = [entry.get('title') for entry in
+
response.get('query',{}).get('categorymembers',{})
+ if entry.has_key('title')]
+
+ # Determine whether we need to recurse
+ idx = 0
+ while True:
+ if idx >= len(members) or limit <= 0:
+ break
+ # Recurse?
+ if members[idx].startswith('Category:') and limit > 0:
+ members.extend(list_categorymembers(wiki, members[idx], limit-1))
+ members.remove(members[idx]) # remove Category from list
+ else:
+ idx += 1
+
+ return members
+
+ return list_categorymembers(wiki, cat_page)
+
class PackageBuild(SQLObject):
nvr = UnicodeCol(notNone=True, alternateID=True)
diff --git a/bodhi/templates/show.kid b/bodhi/templates/show.kid
index b0e29a2..b68886d 100644
--- a/bodhi/templates/show.kid
+++ b/bodhi/templates/show.kid
@@ -57,6 +57,11 @@ statusinfo = {
'obsolete': 'Obsolete - <b>This update has been obsoleted by a
newer update.</b>',
'stable': 'Stable - <b>This update has been released to the stable
updates repository and is available for all users to install via the standard update
mechanisms.</b>',
}
+
+## Build a list of test cases for this update
+test_cases = []
+for build in update.builds:
+ test_cases.extend(build.package.get_test_cases())
?>
<body>
@@ -246,6 +251,13 @@ statusinfo = {
</blockquote>
</div>
+ <div py:if="test_cases">
+ <div class="show">Test Cases</div>
+ <ul py:for="test in test_cases">
+ <li><a
href="https://fedoraproject.org/wiki/${test}">${test.replace...;,
'')}</a></li>
+ </ul>
+ </div>
+
<div class="show">Feedback</div>
<blockquote>
<div py:if="update.comments">