def test_handleReleaseWithExistingRelease(self): # Test that handleRelease() can add a file release to an # existing ProductRelease. ztm = self.layer.txn # verify that a 2.1.6 release of evolution exists without any # files attached. evo = getUtility(IProductSet).getByName('evolution') trunk = evo.getSeries('trunk') release = trunk.getRelease('2.1.6') self.assertNotEqual(release, None) self.assertEqual(release.files.count(), 0) ztm.abort() logging.basicConfig(level=logging.CRITICAL) prf = ProductReleaseFinder(ztm, logging.getLogger()) file_path, file_name = self.create_tarball('evolution-2.1.6.tar.gz') file_names = prf.getReleaseFileNames('evolution') prf.handleRelease('evolution', 'trunk', file_path, file_names) # verify that we now have files attached to the release: evo = getUtility(IProductSet).getByName('evolution') trunk = evo.getSeries('trunk') release = trunk.getRelease('2.1.6') self.assertEqual(release.files.count(), 1)
def test_handleReleaseTwice_multiple_series(self): # Series can have overlaping release file globs, but versions # are unique to a project. A file is uploaded to a release only # once, regardless of which series wants the upload. ztm = self.layer.txn logging.basicConfig(level=logging.CRITICAL) prf = ProductReleaseFinder(ztm, logging.getLogger()) file_path, file_name = self.create_tarball('evolution-1.2.3.tar.gz') file_names = prf.getReleaseFileNames('evolution') prf.handleRelease('evolution', 'trunk', file_path, file_names) file_path, file_name = self.create_tarball('evolution-1.2.3.tar.gz') prf.handleRelease('evolution', '1.0', file_path, file_names) product = getUtility(IProductSet).getByName('evolution') release = product.getMilestone('1.2.3').product_release self.assertEqual(release.files.count(), 1)
def test_handleReleaseTwice(self): # Test that handleRelease() handles the case where a tarball # has already been attached to the ProductRelease. We do this # by calling handleRelease() twice. ztm = self.layer.txn logging.basicConfig(level=logging.CRITICAL) prf = ProductReleaseFinder(ztm, logging.getLogger()) file_path, file_name = self.create_tarball('evolution-42.0.tar.gz') file_names = prf.getReleaseFileNames('evolution') prf.handleRelease('evolution', 'trunk', file_path, file_names) prf.handleRelease('evolution', 'trunk', file_path, file_names) evo = getUtility(IProductSet).getByName('evolution') trunk = evo.getSeries('trunk') release = trunk.getRelease('42.0') self.assertEqual(release.files.count(), 1)
def test_getReleaseFileNames(self): product = self.factory.makeProduct() series1 = self.factory.makeProductSeries(product=product) series2 = self.factory.makeProductSeries(product=product) self.factory.makeProductReleaseFile( productseries=series1, filename='foo-1.0.tar.gz') file2 = self.factory.makeProductReleaseFile( productseries=series2, filename='foo-2.0.tar.gz') self.factory.makeProductReleaseFile( productseries=series2, release=file2.productrelease, filename='foo-2.1.tar.gz') expected = set(['foo-1.0.tar.gz', 'foo-2.0.tar.gz', 'foo-2.1.tar.gz']) transaction.commit() prf = ProductReleaseFinder(self.layer.txn, logging.getLogger()) found = prf.getReleaseFileNames(product.name) self.assertEqual(expected, found)
def test_handleRelease_alternate_verstion(self): """Verify that tar.gz and tar.bz2 versions are both uploaded.""" ztm = self.layer.txn logging.basicConfig(level=logging.CRITICAL) prf = ProductReleaseFinder(ztm, logging.getLogger()) file_path, file_name = self.create_tarball('evolution-45.0.tar.gz') alt_file_path, alt_file_name = self.create_tarball( 'evolution-45.0.tar.bz2') file_names = prf.getReleaseFileNames('evolution') prf.handleRelease('evolution', 'trunk', file_path, file_names) prf.handleRelease('evolution', 'trunk', alt_file_path, file_names) evo = getUtility(IProductSet).getByName('evolution') trunk = evo.getSeries('trunk') release = trunk.getRelease('45.0') release_filenames = [file_info.libraryfile.filename for file_info in release.files] self.assertEqual(len(release_filenames), 2) self.assertTrue(file_name in release_filenames) self.assertTrue(alt_file_name in release_filenames)
def test_handleReleaseUnableToParseVersion(self): # Test that handleRelease() handles the case where a version can't be # parsed from the url given. ztm = self.layer.txn output = StringIO() logger = logging.getLogger() logger.setLevel(logging.INFO) logger.addHandler(logging.StreamHandler(output)) prf = ProductReleaseFinder(ztm, logger) # create a release tarball fp = open(os.path.join( self.release_root, 'evolution-42.0.tar.gz'), 'w') fp.write('foo') fp.close() url = self.release_url + '/evolution420.tar.gz' file_names = prf.getReleaseFileNames('evolution') prf.handleRelease('evolution', 'trunk', url, file_names) self.assertEqual( "Unable to parse version from %s\n" % url, output.getvalue())