[Libosinfo] [osinfo-db 2/2] test_media: Add detection test
Fabiano Fidêncio
fidencio at redhat.com
Fri Mar 15 22:51:04 UTC 2019
On Fri, Mar 15, 2019 at 10:33 PM Cole Robinson <crobinso at redhat.com> wrote:
>
> On 3/15/19 11:51 AM, Fabiano Fidêncio wrote:
> > The detection test is similar to test-isodetect from libosinfo, apart
> > that it doesn't check for the filled-up languages in the matching media,
> > as we're not using libosinfo API to actually have a OsinfoMedia entity.
> >
> > A new dependency has been introduced, python3-regex, as the built-in
> > regex module for python doesn't cope with POSIX regex (which are used as
> > part of our db).
> >
>
> I suggest naming the test file after what it's functionally doing, not
> based on the object we are testing. So maybe test_isoinfo.py. Similarly
> move the isoinfo stuff out of generic named util.py and into its own
> file, probably just into test_isoinfo.py unless there's a clear
> different user on the horizon.
>
> > Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
> > ---
> > tests/unit/osinfo.py | 40 +++++++++++++++++++
> > tests/unit/test_media.py | 65 ++++++++++++++++++++++++++++---
> > tests/unit/util.py | 84 ++++++++++++++++++++++++++++++++++++++++
> > 3 files changed, 184 insertions(+), 5 deletions(-)
> >
> > diff --git a/tests/unit/osinfo.py b/tests/unit/osinfo.py
> > index b2d14c9..0b5e199 100644
> > --- a/tests/unit/osinfo.py
> > +++ b/tests/unit/osinfo.py
> > @@ -35,6 +35,11 @@ class Os():
> > return shortid.text
> > shortid = property(_get_shortid)
> >
> > + def _get_distro(self):
> > + distro = self._root.find('distro')
> > + return distro.text
> > + distro = property(_get_distro)
> > +
> >
> > class Image():
> > def __init__(self, root):
> > @@ -57,6 +62,41 @@ class Media():
> > return URL(url.text)
> > url = property(_get_url)
> >
> > + def _get_iso(self):
> > + iso = self._root.find('iso')
> > + if iso is not None:
> > + return ISO(iso)
> > + iso = property(_get_iso)
> > +
> > +
> > +class ISO():
> > + def __init__(self, root):
> > + self._root = root
> > +
> > + def _get_value(self, name, type=str, default=''):
> > + entry = self._root.find(name)
> > + return type(entry.text) if entry is not None else default
> > +
> > + def _get_volumeid(self):
> > + return self._get_value('volume-id')
> > + volumeid = property(_get_volumeid)
> > +
> > + def _get_publisherid(self):
> > + return self._get_value('publisher-id')
> > + publisherid = property(_get_publisherid)
> > +
> > + def _get_applicationid(self):
> > + return self._get_value('application-id')
> > + applicationid = property(_get_applicationid)
> > +
> > + def _get_systemid(self):
> > + return self._get_value('system-id')
> > + systemid = property(_get_systemid)
> > +
> > + def _get_volumesize(self):
> > + return self._get_value('volume-size', int, 0)
> > + volumesize = property(_get_volumesize)
> > +
> >
> > class Tree():
> > def __init__(self, root):
> > diff --git a/tests/unit/test_media.py b/tests/unit/test_media.py
> > index f779aaa..890174e 100644
> > --- a/tests/unit/test_media.py
> > +++ b/tests/unit/test_media.py
> > @@ -2,19 +2,74 @@
> >
> > import os
> > import pytest
> > +import logging
> > +import regex
>
> Interesting, apparnetly regex is an alternate python regex library
> implementation. It's not from the standard library though, that's
> 'import re', which you can probably just sed replace at it will work
> just as well.
Kind of. The built-in 're' can't cope with POSIX patterns as
[:alpha:], [:upper:], [:digit:] and I didn't want to invest some time
doing before having at least some feedback about the series.
I'll change the ~20 entries that contain those patterns, and re-submit
then together with v2.
>
> Otherwise this looks fine, most important thing is that it works. I
> recommend getting a pylint setup though, it will point out certain
> things like not using 'type' as a variable name because it overwrites
> the global 'type' function in the local scope
>
> - Cole
More information about the Libosinfo
mailing list