On Wed, 2019-03-20 at 17:53 -0400, Cole Robinson wrote: > Right now we run the test case for every OS, even if there's no > isodata/ tracked for it. Instead, only run the test if we detect an > osname from the special isodata/ dir naming. This revealed a few > issues: > > * We weren't even testing windows data because it was looking for > isodata/win, but the folder is isodata/windows. > * libosinfo was also testing .lng files specially. Our test chokes > on them thinking they are isos. I've just opted to skip them for > now. > > Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx> > --- > tests/test_isoinfo.py | 53 +++++++++++++++++++++++---------------- > ---- > 1 file changed, 29 insertions(+), 24 deletions(-) > > diff --git a/tests/test_isoinfo.py b/tests/test_isoinfo.py > index 3476ea9..4d70d87 100644 > --- a/tests/test_isoinfo.py > +++ b/tests/test_isoinfo.py > @@ -1,6 +1,7 @@ > # This work is licensed under the GNU GPLv2 or later. > # See the COPYING file in the top-level directory. > > +import glob > import logging > import os > import pytest > @@ -8,18 +9,41 @@ import pytest > from . import util > > > -@pytest.mark.parametrize('_os', util.DataFiles.oses(), ids=lambda o: > o.shortid) > -def test_iso_detection(_os): > - for isodatamedia in _get_isodatamedias(_os): > +def _get_isodatapaths(): > + """ > + Collect iso media data and return a list of tuples: > + (osname, isodatapaths) > + """ > + isodata_path = os.path.join( > + os.path.dirname(os.path.realpath(__file__)), > + 'isodata') > + > + ret = [] > + for osdir in glob.glob(os.path.join(isodata_path, "*", "*")): > + osname = os.path.basename(osdir) > + isodatapaths = glob.glob(os.path.join(osdir, "*")) > + ret.append((osname, isodatapaths)) > + return ret > + > + > +@pytest.mark.parametrize("testdata", _get_isodatapaths(), ids=lambda > d: d[0]) > +def test_iso_detection(testdata): > + osname, isodatapaths = testdata > + for isodatapath in isodatapaths: > + if isodatapath.endswith(".lng"): > + # libosinfo handled these specially, we should too > + continue > + > detected = [] > + isodatamedia = _get_isodatamedia(isodatapath) > for __os in util.DataFiles.oses(): > for media in __os.medias: > if isodatamedia.match(media.iso): > - if _os.shortid != __os.shortid: > + if osname != __os.shortid: > logging.warning( > 'ISO \'%s\' was matched by OS \'%s\' > while it ' > 'should only be matched by OS \'%s\'', > - isodatamedia.filename, __os.shortid, > _os.shortid) > + isodatamedia.filename, __os.shortid, > osname) > else: > logging.info('ISO \'%s\' matched by OS > \'%s\'', > isodatamedia.filename, > __os.shortid) > @@ -124,22 +148,3 @@ def _get_isodatamedia(filepath): > > return _ISODataMedia(filepath, volumeid, publisherid, systemid, > applicationid, volumesize) > - > - > -def _get_isodatamedias(_os): > - isodata_path = os.path.join( > - os.path.dirname(os.path.realpath(__file__)), > - 'isodata') > - shortid_path = os.path.join(isodata_path, _os.distro, > _os.shortid) > - > - medias = [] > - if not os.path.exists(shortid_path): > - return [] > - > - for _file in os.listdir(shortid_path): > - path = os.path.join(shortid_path, _file) > - if not os.path.exists(path): > - continue > - > - medias.append(_get_isodatamedia(path, _os.shortid)) > - return medias Reviewed-by: Fabiano Fidêncio <fidencio@xxxxxxxxxx> Best Regards, -- Fabiano Fidêncio _______________________________________________ Libosinfo mailing list Libosinfo@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libosinfo