summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2016-12-03 21:59:53 +0000
committerrsiddharth <s@ricketyspace.net>2016-12-03 21:59:53 +0000
commit01bf5b615a69474a9957eabeff0b96132635f0d9 (patch)
tree1b81651b13c882e507d8346871df089d903c591e
parentba67ddb69f46b3bc2c22ca54c264a9330387efed (diff)
Add `generate_wiki_table` function.
* gd_diff.py (generate_wiki_table): New function. * tests/test_gd_diff.py (test_generate_wiki_table): Test for `generate_wiki_table` function. (tiny_pkgs_file): New Variable.
-rw-r--r--gd_diff.py14
-rw-r--r--tests/test_gd_diff.py34
2 files changed, 48 insertions, 0 deletions
diff --git a/gd_diff.py b/gd_diff.py
index 16d9a4d..0ebc057 100644
--- a/gd_diff.py
+++ b/gd_diff.py
@@ -365,3 +365,17 @@ def construct_table_row(pkg, change, reason):
return '||{}||{}||{}||[[{}|more_info]]'.format(pkg, change, reason,
more_info_link)
+
+
+def generate_wiki_table(release):
+ """Generate and return the gNewSense Debian Diff table as a string.
+ """
+ pkgs_noreadmes, table_data = get_wiki_page_data(release)
+
+ wiki_table = ''
+ for pkg, fields in table_data.items():
+ change = fields['Change-Type']
+ reason = fields['Changed-From-Debian']
+ wiki_table += construct_table_row(pkg, change, reason) + '\n'
+
+ return pkgs_noreadmes, wiki_table
diff --git a/tests/test_gd_diff.py b/tests/test_gd_diff.py
index cb26443..2e77335 100644
--- a/tests/test_gd_diff.py
+++ b/tests/test_gd_diff.py
@@ -30,6 +30,7 @@ class TestGdDiff(object):
"""Setup method for this class."""
self.pkgs_file = 'tests/files/parkes-pkgs.list'
self.small_pkgs_file = 'tests/files/small-parkes-pkgs.list'
+ self.tiny_pkgs_file = 'tests/files/tiny-parkes-pkgs.list'
self.pkgs_file_ne = 'tests/nonexistent-file.list'
self.gns_pkgs_dir = 'tests/gns-pkgs'
self.test_home = 'tests/HOME'
@@ -409,6 +410,39 @@ class TestGdDiff(object):
assert_equal(columns[3] , '[[http://bzr.savannah.gnu.org/lh/gnewsense/packages-parkes/antlr/annotate/head:/debian/README.gNewSense|more_info]]')
+ def test_generate_wiki_table(self):
+ def mock_mk_pkgs_list(r):
+ return self.tiny_pkgs_file
+
+ pkgs = [p.strip()
+ for p in open(self.tiny_pkgs_file, 'r').read() \
+ .split('\n')]
+
+ expected_pkgs_noreadmes = ['pkg-with-no-readme',
+ 'another-pkg-no-readme']
+
+ with mock.patch('os.getenv', new=self.env_func), \
+ mock.patch('gd_diff.mk_pkgs_list', new=mock_mk_pkgs_list):
+ pkgs_noreadmes, wiki_page = generate_wiki_table('parkes')
+
+ for pkg in pkgs_noreadmes:
+ assert pkg in expected_pkgs_noreadmes
+
+ pkgs = set(pkgs) - set(expected_pkgs_noreadmes)
+
+ for row in wiki_page.split('\n')[:-1]:
+ cols = row.split('||')[1:]
+ pkg = cols[0]
+
+ assert pkg in pkgs
+ assert cols[3] == '[[{}|more_info]]'.format(
+ bzr_pkg_readme_fmt.format(pkg))
+
+ pkgs.remove(pkg)
+
+ assert len(pkgs) == 0
+
+
def teardown(self):
"""Teardown method for this class."""
if(path.exists(self.gns_pkgs_dir)):