Beispiel #1
0
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)
Beispiel #2
0
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))
Beispiel #4
0
    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))
Beispiel #6
0
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)
Beispiel #7
0
 def _unprep_package(self, name):
     package = packager_path(name)
     if storage.exists(package):
         storage.delete(package)
Beispiel #8
0
 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 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
Beispiel #13
0
 def _unprep_package(self, name):
     package = packager_path(name)
     if os.path.exists(package):
         os.remove(package)