summaryrefslogtreecommitdiff
diff options
authorDaniel Watkins <daniel.watkins@canonical.com>2018-06-08 15:54:55 -0700
committerDaniel Watkins <daniel.watkins@canonical.com>2018-06-08 15:58:29 -0700
commit96654736bbffc827f85a84afaf866328238c1a8d (patch)
tree2ecc76f8216d73c7b60448bb9e97166a03d929b1
parent9f40fad110cc3d89067060b705de1b4f7111b164 (diff)
Skip snap lines in manifests
This will allow us to introduce them in to manifest generation without causing manifest diffing to fail. We will need to support this in the future.
-rwxr-xr-xmfdiff.py3
-rw-r--r--tests.py42
2 files changed, 45 insertions, 0 deletions
diff --git a/mfdiff.py b/mfdiff.py
index 66744a5..feb2a3e 100755
--- a/mfdiff.py
+++ b/mfdiff.py
@@ -166,6 +166,9 @@ def manifest_to_dict(filename):
logging.debug('Reading package manifest from %s', filename)
with open(filename, "r") as manifest:
for line in manifest:
+ if line.startswith('snap:'):
+ # XXX: Introduce support for snap packages
+ continue
(pkg, ver) = line.split()
ret[pkg] = ver
return ret
diff --git a/tests.py b/tests.py
index bacfbf1..d5271b8 100644
--- a/tests.py
+++ b/tests.py
@@ -1,9 +1,51 @@
import mfdiff
+def _deb_package_line(package_name, package_version):
+ """Format a deb package manifest line"""
+ return '\t'.join([package_name, package_version])
+
+
+def _snap_package_line(snap_name, snap_channel, snap_version):
+ """Format a snap package manifest line"""
+ return '\t'.join(
+ ['snap:{}'.format(snap_name), snap_channel, snap_version])
+
+
+
class TestManifestToDict(object):
def test_empty_file_returns_empty_dict(self, tmpdir):
manifest_file = tmpdir.join('manifest')
manifest_file.write('')
assert mfdiff.manifest_to_dict(str(manifest_file)) == {}
+
+ def test_single_package(self, tmpdir):
+ package_name, package_version = 'package_name', '1.0-0ubuntu1'
+ manifest_file = tmpdir.join('manifest')
+ manifest_file.write(_deb_package_line(package_name, package_version))
+ assert mfdiff.manifest_to_dict(str(manifest_file)) == {
+ package_name: package_version,
+ }
+
+ def test_snaps_are_skipped(self, tmpdir):
+ package_name, package_version = 'package_name', '1.0-0ubuntu1'
+ manifest_file = tmpdir.join('manifest')
+ manifest_file.write('\n'.join([
+ _deb_package_line(package_name, package_version),
+ _snap_package_line('snap_name', 'snap_channel', 'snap_version')
+ ]))
+ assert mfdiff.manifest_to_dict(str(manifest_file)) == {
+ package_name: package_version,
+ }
+
+ def test_deb_packages_starting_with_snap_arent_skipped(self, tmpdir):
+ package_name, package_version = 'snapd', '1.0-0ubuntu1'
+ manifest_file = tmpdir.join('manifest')
+ manifest_file.write('\n'.join([
+ _deb_package_line(package_name, package_version),
+ _snap_package_line('snap_name', 'snap_channel', 'snap_version')
+ ]))
+ assert mfdiff.manifest_to_dict(str(manifest_file)) == {
+ package_name: package_version,
+ }