def test_getFilters(self):
        # test that getFilters() correctly extracts file patterns from
        # the database.

        ztm = self.layer.txn
        ztm.begin()

        evolution = getUtility(IProductSet).getByName('evolution')
        trunk = evolution.getSeries('trunk')
        trunk.releasefileglob = ('http://ftp.gnome.org/pub/GNOME/sources/'
                                 'evolution/2.7/evolution-*.tar.gz')
        ztm.commit()

        logging.basicConfig(level=logging.CRITICAL)
        prf = ProductReleaseFinder(ztm, logging.getLogger())
        # get the filters for evolution and firefox
        for product_name, filters in prf.getFilters():
            if product_name == 'evolution':
                evo_filters = filters

        self.assertEqual(len(evo_filters), 1)
        self.failUnless(isinstance(evo_filters[0], FilterPattern))
        self.assertEqual(evo_filters[0].key, 'trunk')
        self.assertEqual(evo_filters[0].base_url,
            'http://ftp.gnome.org/pub/GNOME/sources/evolution/2.7/')
        self.assertEqual(evo_filters[0].urlglob,
            'http://ftp.gnome.org/pub/GNOME/sources/evolution/2.7/'
            'evolution-*.tar.gz')
        self.failUnless(evo_filters[0].match(
            'http://ftp.gnome.org/pub/GNOME/sources/evolution/2.7/'
            'evolution-2.7.1.tar.gz'))
 def test_getFilters_ignore_obsolete(self):
     # Verify that obsolete series are ignnored.
     ztm = self.layer.txn
     ztm.begin()
     product = self.factory.makeProduct(name="bunny")
     active_series = product.getSeries('trunk')
     active_series.releasefileglob = 'http://eg.dom/bunny/trunk/*'
     obsolete_series = self.factory.makeProductSeries(
         product=product, name='rabbit')
     obsolete_series.releasefileglob = 'http://eg.dom/bunny/rabbit/*'
     obsolete_series.status = SeriesStatus.OBSOLETE
     ztm.commit()
     logging.basicConfig(level=logging.CRITICAL)
     prf = ProductReleaseFinder(ztm, logging.getLogger())
     product_filters = prf.getFilters()
     self.assertEqual(1, len(product_filters))
     found_product, filters = product_filters[0]
     self.assertEqual('bunny', found_product)
     self.assertEqual(1, len(filters))
     self.assertEqual(filters[0].key, 'trunk')