def packager(data, feature_set, **kw): """Build an add-on based on input data.""" log.info("[1@None] Packaging add-on") from devhub.views import packager_path dest = packager_path(data["slug"]) with guard(u"devhub.packager.%s" % dest) as locked: if locked: log.error(u"Packaging in progress: %s" % dest) return with statsd.timer("devhub.packager"): from packager.main import packager log.info("Starting packaging: %s" % dest) features = set([k for k, v in feature_set.items() if v]) try: packager(data, dest, features) except Exception, err: log.error(u"Failed to package add-on: %s" % err) raise if os.path.exists(dest): log.info(u"Package saved: %s" % dest)
def packager(data, feature_set, **kw): """Build an add-on based on input data.""" log.info('[1@None] Packaging add-on') # "Lock" the file by putting .lock in its name. from devhub.views import packager_path xpi_path = packager_path('%s.lock' % data['uuid']) log.info('Saving package to: %s' % xpi_path) from packager.main import packager features = set([k for k, v in feature_set.items() if v]) packager(data, xpi_path, features) # Unlock the file and make it available. try: shutil.move(xpi_path, packager_path(data['uuid'])) except IOError: log.error('Error unlocking add-on: %s' % xpi_path)
def test_success(self): """ Test that a proper set of data will pass validation, pass through to the success view, and check if the .zip file exists. """ self.compat_form = {"enabled": "on", "min_ver": "86", "max_ver": "114"} data = self._form_data() pkg_name = data["package_name"] r = self.client.post(self.url, data, follow=True) self.assertRedirects(r, reverse("devhub.package_addon_success", args=[pkg_name]), 302) eq_(r.status_code, 200) d = pq(r.content)("#packager-download") eq_(d.attr("data-downloadurl"), reverse("devhub.package_addon_json", args=[pkg_name])) assert os.path.isfile(packager_path(pkg_name)), "Package was not created." pkg = self.client.get(reverse("devhub.package_addon_download", args=[pkg_name])) eq_(pkg.status_code, 200) eq_(pkg["content-type"], "application/zip") eq_(pkg["X-SENDFILE"], packager_path(pkg_name))
def test_success(self): """ Test that a proper set of data will pass validation, pass through to the success view, and check if the .zip file exists. """ self.compat_form = {'enabled': 'on', 'min_ver': '86', 'max_ver': '114'} data = self._form_data() pkg_name = data['package_name'] r = self.client.post(self.url, data, follow=True) self.assertRedirects( r, reverse('devhub.package_addon_success', args=[pkg_name]), 302) eq_(r.status_code, 200) d = pq(r.content)('#packager-download') eq_(d.attr('data-downloadurl'), reverse('devhub.package_addon_json', args=[pkg_name])) assert storage.exists( packager_path(pkg_name)), ('Package was not created.') pkg = self.client.get( reverse('devhub.package_addon_download', args=[pkg_name])) eq_(pkg.status_code, 200) eq_(pkg['content-type'], 'application/zip') eq_(pkg[settings.XSENDFILE_HEADER], packager_path(pkg_name))
def test_success(self): """ Test that a proper set of data will pass validation, pass through to the success view, and check if the .zip file exists. """ self.compat_form = {'enabled': 'on', 'min_ver': '86', 'max_ver': '114'} data = self._form_data() pkg_name = data['package_name'] r = self.client.post(self.url, data, follow=True) self.assertRedirects(r, reverse('devhub.package_addon_success', args=[pkg_name]), 302) eq_(r.status_code, 200) d = pq(r.content)('#packager-download') eq_(d.attr('data-downloadurl'), reverse('devhub.package_addon_json', args=[pkg_name])) assert storage.exists(packager_path(pkg_name)), ( 'Package was not created.') pkg = self.client.get(reverse('devhub.package_addon_download', args=[pkg_name])) eq_(pkg.status_code, 200) eq_(pkg['content-type'], 'application/zip') eq_(pkg[settings.XSENDFILE_HEADER], packager_path(pkg_name))
def packager(data, feature_set, **kw): """Build an add-on based on input data.""" log.info('[1@None] Packaging add-on') from devhub.views import packager_path dest = packager_path(data['slug']) with guard(u'devhub.packager.%s' % dest) as locked: if locked: log.error(u'Packaging in progress: %s' % dest) return with statsd.timer('devhub.packager'): from packager.main import packager log.info('Starting packaging: %s' % dest) features = set([k for k, v in feature_set.items() if v]) try: packager(data, dest, features) except Exception, err: log.error(u'Failed to package add-on: %s' % err) raise if storage.exists(dest): log.info(u'Package saved: %s' % dest)
def _unprep_package(self, name): package = packager_path(name) if storage.exists(package): storage.delete(package)
def _prep_mock_package(self, name): """Prep a fake package to be downloaded.""" path = packager_path(name) with storage.open(path, mode='w') as package: package.write('ready') return path
def _unprep_package(self, name): package = packager_path(name) if os.path.exists(package): os.remove(package)
def _prep_mock_package(self, name): """Prep a fake package to be downloaded.""" path = packager_path(name) with open(path, mode="w") as package: package.write("ready") return path