summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2016-10-30 19:46:27 +0000
committerrsiddharth <s@ricketyspace.net>2016-10-30 19:48:20 +0000
commit95d6e1427dad0a8844080b91fdd91385a52a7c6f (patch)
treea7fbccce932bba3b1e203cc85473884d780ab9b8
parentcf4d1f9279f88deb2d920f9fc611d29378168a87 (diff)
Add `slurp_fields_from_readme` function.
* gd_diff.py (slurp_fields_from_readme): New function. * tests/test_gd_diff.py (test_slurp_fields_from_readme): Test method for `slurp_fields_from_readme`
-rw-r--r--gd_diff.py30
-rw-r--r--tests/test_gd_diff.py44
2 files changed, 74 insertions, 0 deletions
diff --git a/gd_diff.py b/gd_diff.py
index 4709d30..8d332f4 100644
--- a/gd_diff.py
+++ b/gd_diff.py
@@ -7,6 +7,7 @@
# <https://creativecommons.org/publicdomain/zero/1.0>
import os
+import re
import shlex
import sys
@@ -143,3 +144,32 @@ def read_gns_readme(release, pkg, local_dir):
readme_content = read_file(readme_path)
return readme_content
+
+
+def slurp_fields_from_readme(content):
+ """Returns dict containing fields slurped from `content`
+
+ - If a field is not defined or if its value is empty in the
+ `content`, then its corresponding value in the dict will be None.
+
+ """
+ # list of recognized fields.
+ field_list = [
+ 'Change-Type',
+ 'Changed-From-Debian',
+ ]
+
+ field_values = {}
+ for field in field_list:
+ pattern = r'{}:[ ]*(.+)'.format(field)
+ field_pattern = re.compile(pattern)
+ field_match = field_pattern.search(content)
+
+ if (field_match and
+ field_match.group(1) and
+ field_match.group(1).strip()):
+ field_values[field] = field_match.group(1).strip()
+ else:
+ field_values[field] = None
+
+ return field_values
diff --git a/tests/test_gd_diff.py b/tests/test_gd_diff.py
index d377439..145461f 100644
--- a/tests/test_gd_diff.py
+++ b/tests/test_gd_diff.py
@@ -154,6 +154,50 @@ class TestGdDiff(object):
assert_equal(antlr_readme_content, expected_antlr_readme_content)
+ def test_slurp_fields_from_readme(self):
+ readme_content = ''
+ field_values = slurp_fields_from_readme(readme_content)
+ assert_equal(field_values['Change-Type'], None)
+ assert_equal(field_values['Changed-From-Debian'], None)
+
+ readme_content = 'Changed-From-Debian: \n'
+ field_values = slurp_fields_from_readme(readme_content)
+ assert_equal(field_values['Change-Type'], None)
+ assert_equal(field_values['Changed-From-Debian'], None)
+
+ readme_content = 'Change-Type: Deblob\n'
+ field_values = slurp_fields_from_readme(readme_content)
+ assert_equal(field_values['Change-Type'], 'Deblob')
+ assert_equal(field_values['Changed-From-Debian'], None)
+
+ readme_content = 'Changed-From-Debian: \nChange-Type: \n'
+ field_values = slurp_fields_from_readme(readme_content)
+ assert_equal(field_values['Change-Type'], None)
+ assert_equal(field_values['Changed-From-Debian'], None)
+
+ readme_content = 'Changed-From-Debian: Branding. \nChange-Type: \n'
+ field_values = slurp_fields_from_readme(readme_content)
+ assert_equal(field_values['Change-Type'], None)
+ assert_equal(field_values['Changed-From-Debian'], 'Branding.')
+
+ readme_content = 'Changed-From-Debian: \nChange-Type: Modified'
+ field_values = slurp_fields_from_readme(readme_content)
+ assert_equal(field_values['Change-Type'], 'Modified')
+ assert_equal(field_values['Changed-From-Debian'], None)
+
+ readme_content = 'Changed-From-Debian:Fixed ambiguous use of the word free.\n\n\nChange-Type:Deblob\n'
+ field_values = slurp_fields_from_readme(readme_content)
+ assert_equal(field_values['Change-Type'], 'Deblob')
+ assert_equal(field_values['Changed-From-Debian'],
+ 'Fixed ambiguous use of the word free.')
+
+ readme_content = 'Changed-From-Debian: Removed example with non-free files.\nChange-Type: Modified\n\nFor gNewSense, the non-free unicode.IDENTs files are *actually* removed (see\nalso README.source). See gNewSense bug #34218 for details.\n'
+ field_values = slurp_fields_from_readme(readme_content)
+ assert_equal(field_values['Change-Type'], 'Modified')
+ assert_equal(field_values['Changed-From-Debian'],
+ 'Removed example with non-free files.')
+
+
def teardown(self):
"""Teardown method for this class."""
if(path.exists(self.gns_pkgs_dir)):