diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c6ca2415d7b5123bf117be1496190c79666a34c5
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,27 @@
+before_script:
+ - apt-get -q update
+ - env DEBIAN_FRONTEND=noninteractive apt-get -q -y install --no-install-recommends aspcud apt-cudf
+ - env DEBIAN_FRONTEND=noninteractive apt-get -q -y --solver aspcud -o APT::Solver::Strict-Pinning=0 -o Debug::pkgProblemResolver=yes install --no-install-recommends
+ python-sqlalchemy python-pylons python-debian python-babel iso-codes gnupg python-apt python-lxml python-coverage
+
+.test_template: &test
+ script:
+ - mkdir -p /tmp/debexpo/pub
+ - python2.7 setup.py develop
+ - python2.7 setup.py compile_catalog
+ - python2.7 setup.py nosetests --with-coverage --cover-erase --cover-html
+ artifacts:
+ paths:
+ - cover/
+
+unstable:
+ <<: *test
+ image: debian:unstable
+
+#testing:
+# <<: *test
+# image: debian:testing
+
+stable-bpo:
+ <<: *test
+ image: debian:stable-backports
diff --git a/debexpo/config/routing.py b/debexpo/config/routing.py
index 09237d609301bfcc253f8db88bf92b748b45738e..1c379f6c4796b7b9004586aa85ca1cc40a338c28 100644
--- a/debexpo/config/routing.py
+++ b/debexpo/config/routing.py
@@ -89,7 +89,6 @@ def make_map(config):
#map.connect('packages_filter_feed', '/packages/{filter}/{id}/feed', controller='packages', action='feed')
#map.connect('packages_feed', '/packages/feed', controller='packages', action='feed')
map.connect('qa', '/qa', controller='index', action='qa')
- #map.connect('register', '/register/{action}/{id}', controller='register', action='index', id=None)
# LEGACY ROUTE. CAN BE REMOVED LATER
map.connect('/upload/{email}/{password}/{filename}', controller='upload',
diff --git a/debexpo/controllers/register.py b/debexpo/controllers/register.py
index e545306d6efbe27276087299fd540c9c31f521a5..e6ffcc62b9abf2f245c3937d6802492f268fa23e 100644
--- a/debexpo/controllers/register.py
+++ b/debexpo/controllers/register.py
@@ -60,18 +60,6 @@ class RegisterController(BaseController):
"""
c.config = config
- def index(self):
- """
- Entry point to controller. Displays the index page.
- """
- log.debug('Main register form requested')
-
- if config['debexpo.debian_specific'] != 'true':
- log.error('debexpo.debian_specific is !true; redirecting to maintainer form')
- redirect(url(action='maintainer'))
-
- return render('/register/index.mako')
-
def _send_activate_email(self, key, recipient):
"""
Sends an activation email to the potential new user.
diff --git a/debexpo/lib/base.py b/debexpo/lib/base.py
index 33d9a7de997b1325d9b587917c80d96145bcc26b..6fa53caf7475741afc75c8136d1d460bb1a9a22d 100644
--- a/debexpo/lib/base.py
+++ b/debexpo/lib/base.py
@@ -117,7 +117,7 @@ class BaseController(WSGIController):
# Set language according to what the browser requested
try:
languages = request.languages
- except AttributeError:
+ except (AttributeError, TypeError):
log.debug("Working around Pylons request.languages bug")
languages = []
diff --git a/debexpo/lib/changes.py b/debexpo/lib/changes.py
index 8571498940fa14294d528e547fac7187105d3cab..5999fe5b42c39988737d98c1543267f74faac3b2 100644
--- a/debexpo/lib/changes.py
+++ b/debexpo/lib/changes.py
@@ -69,12 +69,13 @@ class Changes(object):
if filename:
self._data = deb822.Changes(file(filename))
+ self.basename = os.path.basename(filename)
+ if len(self._data) == 0:
+ raise Exception('Changes file {} could not be parsed'.format(self.basename))
else:
self._data = deb822.Changes(string)
-
- if len(self._data) == 0:
- raise Exception('Changes file could not be parsed.')
- self.basename = os.path.basename(filename)
+ if len(self._data) == 0:
+ raise Exception('Changes file could not be parsed.')
def get_filename(self):
"""
diff --git a/debexpo/lib/email.py b/debexpo/lib/email.py
index 543a7388cf253e3d4b0d6ea822c502317843af93..224fecd18568ccece61a33677bdd8977daf2179d 100644
--- a/debexpo/lib/email.py
+++ b/debexpo/lib/email.py
@@ -146,6 +146,17 @@ class Email(object):
pylons.url._pop_object()
+ if 'debexpo.testsmtp' in pylons.config:
+ self._save_as_file(recipients, message)
+ else:
+ self._send_as_mail(recipients, message)
+
+ def _save_as_file(self, recipients, message):
+ log.debug('Save email as file to %s' % self.server)
+ with open(pylons.config['debexpo.testsmtp'], 'a') as email:
+ email.write(message)
+
+ def _send_as_mail(self, recipients, message):
log.debug('Starting SMTP session to %s' % self.server)
session = smtplib.SMTP(self.server)
diff --git a/debexpo/lib/filesystem.py b/debexpo/lib/filesystem.py
index bc5d556a7adf32b0973b10434eef5da30e567363..8b5425f2472f600fc47b90e259c5e06004ccac75 100644
--- a/debexpo/lib/filesystem.py
+++ b/debexpo/lib/filesystem.py
@@ -208,6 +208,8 @@ class CheckFiles(object):
```package``` package object whose files are supposed to be removed
"""
files = self.find_files_for_package(package, absolute_path=True)
+ if not files:
+ return
path = os.path.dirname(files[0])
for file in files:
if os.path.exists(file):
diff --git a/debexpo/lib/utils.py b/debexpo/lib/utils.py
index a630fa9407a2265432d41652ad56d67cd39c983c..162b134512067742ce0db236f1ac8e182ba1607a 100644
--- a/debexpo/lib/utils.py
+++ b/debexpo/lib/utils.py
@@ -59,9 +59,9 @@ def parse_section(section):
component, thesection = section.split('/', 1)
if component not in ("main", "contrib", "non-free"):
log.warning("Parsing weird component %s, assuming main" % component)
- return main, section.replace('/', '_')
+ return ['main', section.replace('/', '_')]
else:
- return component, thesection
+ return [component, thesection]
else:
return ['main', section]
diff --git a/debexpo/templates/register/index.mako b/debexpo/templates/register/index.mako
deleted file mode 100644
index ba74a9547550bcc83a5cf1e4d3c63910ae76a0d7..0000000000000000000000000000000000000000
--- a/debexpo/templates/register/index.mako
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-
-<%inherit file="../base.mako"/>
-
-
${ _('Sign up for your own account at %s') % c.config['debexpo.sitename'] }
-
-
- ${ _('What type of account would you like to apply for?') }
-
-
-
-
-
- ${ _('''A package maintainer is a person who takes care of Debian packages.
- If you create Debian packages from certain pieces of (so called
- "upstream") software then you are a maintainer. You do not need to be
- an official Debian Developer (DD) or Debian Maintainer (DM).''') }
-
-
-
-
-
- ${ _('''Uploading new packages into Debian is only possible if you
- are a Debian Developer (DD) or Debian Maintainer (DM). If you want
- to help package maintainers to get their packages into Debian you
- can be a sponsor and check and upload packages on their behalf.''')}
-
diff --git a/debexpo/tests/functional/test_index.py b/debexpo/tests/functional/test_index.py
index 6f3f45fc1a595b5a9af08471a4a2bb9972d9e239..6b4a7a58cbf34a73c3b9085b626d9b3798b346ab 100644
--- a/debexpo/tests/functional/test_index.py
+++ b/debexpo/tests/functional/test_index.py
@@ -24,19 +24,12 @@ class TestIndexController(TestController):
def test_index(self):
# test a normal index page
testurl = url(controller='index', action='index')
+ pylons.test.pylonsapp.config['debexpo.sitename'] = 'test index'
response = self.app.get(testurl)
- self.assertEquals(response.status_int, 200)
-
- testtext = 'A test front page
'
- pylons.test.pylonsapp.config['debexpo.html.frontpage'] = \
- self._generate_temppage('front.html', testtext)
-
- response = self.app.get(testurl)
+ testtext = 'Welcome to test index
'
self.assertEquals(response.status_int, 200)
self.assertTrue(testtext in response)
- del pylons.test.pylonsapp.config['debexpo.html.frontpage']
-
def test_contact(self):
response = self.app.get(url(controller='index', action='contact'))
self.assertEquals(response.status_int, 200)
@@ -44,29 +37,14 @@ class TestIndexController(TestController):
def test_intro_maintainers(self):
testurl = url('intro-maintainers')
response = self.app.get(testurl)
- self.assertEquals(response.status_int, 200)
-
- testtext = 'A maintainer intro page
'
- pylons.test.pylonsapp.config['debexpo.html.maintainer_intro'] = \
- self._generate_temppage('maintainer_intro.html', testtext)
-
- response = self.app.get(testurl)
+ testtext = "{}".format('Introduction for maintainers: How will my',
+ ' package get into Debian
')
self.assertEquals(response.status_int, 200)
self.assertTrue(testtext in response)
- del pylons.test.pylonsapp.config['debexpo.html.maintainer_intro']
-
def test_intro_sponsors(self):
- testurl = url('intro-sponsors')
- response = self.app.get(testurl)
- self.assertEquals(response.status_int, 200)
-
- testtext = 'A sponsor intro page
'
- pylons.test.pylonsapp.config['debexpo.html.sponsors_intro'] = \
- self._generate_temppage('sponsor_intro.html', testtext)
-
+ testurl = url('sponsors')
response = self.app.get(testurl)
+ testtext = 'The sponsoring process
'
self.assertEquals(response.status_int, 200)
self.assertTrue(testtext in response)
-
- del pylons.test.pylonsapp.config['debexpo.html.sponsors_intro']
diff --git a/debexpo/tests/functional/test_my.py b/debexpo/tests/functional/test_my.py
index 9e1f145389a2a99477e248d60915bb113845ee77..336eea96eac29648cb55782594c255e14ed44e7b 100644
--- a/debexpo/tests/functional/test_my.py
+++ b/debexpo/tests/functional/test_my.py
@@ -4,6 +4,9 @@ from debexpo.model import meta
from debexpo.model.users import User
from debexpo.model.user_countries import UserCountry
import md5
+import tempfile
+import os
+import shutil
class TestMyController(TestController):
_GPGKEY = """-----BEGIN PGP PUBLIC KEY BLOCK-----
@@ -39,7 +42,15 @@ ABRL0EeYuGCJYJRQsw8e8JuRSaVGwfotqkIHtQ==
"""
_GPG_ID = '2048R/6758261E'
+ def _setup_gpg_env(self):
+ self.homedir = tempfile.mkdtemp()
+ os.environ['GNUPGHOME'] = self.homedir
+
+ def _cleanup_gpg_env(self):
+ shutil.rmtree(self.homedir)
+
def setUp(self):
+ self._setup_gpg_env()
self._setup_models()
self._setup_example_user()
self._setup_example_countries()
@@ -47,6 +58,7 @@ ABRL0EeYuGCJYJRQsw8e8JuRSaVGwfotqkIHtQ==
def tearDown(self):
self._remove_example_user()
self._remove_example_countries()
+ self._cleanup_gpg_env()
def test_index(self):
response = self.app.get(url(controller='my', action='index'))
diff --git a/debexpo/tests/functional/test_package.py b/debexpo/tests/functional/test_package.py
index 18d7648b94a139bdf2bd605411845a7ef11c51fa..1febfb7d6c5dc71f3d194adeb1008b0a08efbd11 100644
--- a/debexpo/tests/functional/test_package.py
+++ b/debexpo/tests/functional/test_package.py
@@ -8,6 +8,7 @@ from debexpo.model.package_versions import PackageVersion
from debexpo.model.source_packages import SourcePackage
from debexpo.model.package_subscriptions import PackageSubscription
from datetime import datetime
+import pylons.test
class TestPackageController(TestController):
@@ -47,6 +48,8 @@ class TestPackageController(TestController):
self._remove_example_user()
def test_index(self):
+ user = meta.session.query(User).filter(
+ User.email=='email@example.com').one()
response = self.app.get(url(controller='package', action='index'))
self.assertEquals(response.status_int, 302)
self.assertTrue(response.location.endswith(
@@ -60,8 +63,8 @@ class TestPackageController(TestController):
packagename='testpackage'))
self.assertEquals(response.status_int, 200)
self.assertEquals(len(response.lxml.xpath(
- '//a[@href="%s"]' % url(
- 'packages-uploader',
+ '//a[@href="%s"]' % url(controller='packages',
+ action='uploader',
id='email@example.com'))), 1)
response = self.app.post(url('login'), self._AUTHDATA)
response = self.app.get(url(controller='package', action='index',
@@ -70,22 +73,13 @@ class TestPackageController(TestController):
self.assertEquals(len(response.lxml.xpath(
'//a[@href="%s"]' % url(
controller='package', action='delete',
- packagename='testpackage'))), 1)
+ packagename='testpackage',
+ key=user.get_upload_key()))), 1)
self.assertEquals(len(response.lxml.xpath(
'//form[@action="%s"]' % url(
controller='package', action='comment',
packagename='testpackage'))), 1)
- def test_rfs(self):
- response = self.app.get(url(controller='package', action='rfs'))
- self.assertEquals(response.status_int, 302)
- self.assertTrue(response.location.endswith(
- url(controller='packages', action='index', packagename=None)))
- response = self.app.get(url(controller='package', action='rfs',
- packagename='testpackage'))
- self.assertEquals(response.status_int, 200)
- self.assertTrue('Subject: RFS: testpackage' in response)
-
def test_subscribe(self):
response = self.app.get(url(controller='package', action='subscribe',
packagename='testpackage'))
@@ -157,31 +151,35 @@ class TestPackageController(TestController):
self.assertEquals(subs, None)
def test_delete(self):
- response = self.app.get(url(controller='package', action='delete',
- packagename='testpackage'))
+ user = meta.session.query(User).filter(
+ User.email=='email@example.com').one()
+ response = self.app.get(url(
+ controller='package', action='delete', packagename='testpackage',
+ key=user.get_upload_key()))
self.assertEquals(response.status_int, 302)
self.assertTrue(response.location.endswith(url('login')))
self.app.post(url('login'), self._AUTHDATA)
- response = self.app.get(url(controller='package', action='delete',
- packagename='testpackage'))
+ response = self.app.get(url(
+ controller='package', action='delete', packagename='testpackage',
+ key=user.get_upload_key()))
self.assertEquals(response.status_int, 302)
self.assertTrue(response.location.endswith(
- url(controller='packages', action='index', filter='my')))
+ url(controller='packages', action='my')))
package = meta.session.query(Package).filter(
Package.name=='testpackage').first()
self.assertEquals(package, None)
def test_comment(self):
- response = self.app.get(url(controller='package', action='comment',
- packagename='testpackage'))
+ response = self.app.post(
+ url(controller='package', action='comment',
+ packagename='testpackage'),
+ {'package_version': 1,
+ 'text': 'This is a test comment',
+ 'outcome': constants.PACKAGE_COMMENT_OUTCOME_UNREVIEWED,
+ 'commit': 'submit'})
self.assertEquals(response.status_int, 302)
self.assertTrue(response.location.endswith(url('login')))
self.app.post(url('login'), self._AUTHDATA)
- response = self.app.get(url(controller='package', action='comment',
- packagename='testpackage'))
- self.assertEquals(response.status_int, 200)
- self.assertEquals(4, len(response.lxml.xpath(
- '//span[@class="error-message"]')))
response = self.app.post(
url(controller='package', action='comment',
packagename='testpackage'),
@@ -200,6 +198,7 @@ class TestPackageController(TestController):
constants.PACKAGE_COMMENT_STATUS_NOT_UPLOADED)
meta.session.delete(comment)
# test with a subscriber
+ pylons.test.pylonsapp.config['debexpo.testsmtp'] = '/tmp/debexpo.msg'
user = meta.session.query(User).filter(User.email=='email@example.com').one()
packsub = PackageSubscription(
package='testpackage',
diff --git a/debexpo/tests/functional/test_packages.py b/debexpo/tests/functional/test_packages.py
index e3f094db435a6deed0dd2eae8ba537bc24ecacb6..0c8d1ccf82774dbd89d37b96caf09cd4c6109eed 100644
--- a/debexpo/tests/functional/test_packages.py
+++ b/debexpo/tests/functional/test_packages.py
@@ -2,6 +2,13 @@ from debexpo.tests import *
class TestPackagesController(TestController):
+ def setUp(self):
+ self._setup_models()
+ self._setup_example_user()
+
+ def tearDown(self):
+ self._remove_example_user()
+
def test_index(self):
response = self.app.get(url(controller='packages', action='index'))
self.assertEquals(200, response.status_int)
diff --git a/debexpo/tests/functional/test_ppa.py b/debexpo/tests/functional/test_ppa.py
deleted file mode 100644
index fc4a31219eabea46dd57822035ef23905e169e26..0000000000000000000000000000000000000000
--- a/debexpo/tests/functional/test_ppa.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from debexpo.tests import *
-
-class TestPpaController(TestController):
-
- def test_index(self):
- response = self.app.get(url(controller='ppa', action='index'))
- # Test response...
diff --git a/debexpo/tests/functional/test_register.py b/debexpo/tests/functional/test_register.py
index 0a2359e001e949bb8134c734b940711899955d3a..f68f5508cbaa8fe8145cf540a1a4b6ced3d0a34d 100644
--- a/debexpo/tests/functional/test_register.py
+++ b/debexpo/tests/functional/test_register.py
@@ -1,19 +1,25 @@
from debexpo.tests import TestController, url
from debexpo.model import meta
from debexpo.model.users import User
+import pylons.test
class TestRegisterController(TestController):
+ def setUp(self):
+ self._setup_models()
+
def test_maintainer_signup(self, actually_delete_it=True):
count = meta.session.query(User).filter(User.email=='mr_me@example.com').count()
self.assertEquals(count, 0)
- self.app.post(url(controller='register', action='maintainer'),
+ pylons.test.pylonsapp.config['debexpo.testsmtp'] = '/tmp/debexpo.msg'
+ self.app.post(url(controller='register', action='register'),
{'name': 'Mr. Me',
'password': 'password',
'password_confirm': 'password',
'commit': 'yes',
- 'email': 'mr_me@example.com'})
+ 'email': 'mr_me@example.com',
+ 'sponsor': '0'})
count = meta.session.query(User).filter(User.email=='mr_me@example.com').count()
self.assertEquals(count, 1)
@@ -28,12 +34,13 @@ class TestRegisterController(TestController):
def test_maintainer_signup_with_duplicate_name(self):
self.test_maintainer_signup(actually_delete_it=False)
- self.app.post(url(controller='register', action='maintainer'),
+ self.app.post(url(controller='register', action='register'),
{'name': 'Mr. Me',
'password': 'password',
'password_confirm': 'password',
'commit': 'yes',
- 'email': 'mr_me_again@example.com'})
+ 'email': 'mr_me_again@example.com',
+ 'sponsor': '0'})
count = meta.session.query(User).filter(User.email=='mr_me_again@example.com').count()
self.assertEquals(count, 0)
diff --git a/debexpo/tests/functional/test_upload.py b/debexpo/tests/functional/test_upload.py
index e1c8cc8efb2d093cd2fe847ddd7f18798590ac3c..52b29d29d1b9b0c0e73835a9b1c91ea0a6987dc8 100644
--- a/debexpo/tests/functional/test_upload.py
+++ b/debexpo/tests/functional/test_upload.py
@@ -50,10 +50,6 @@ class TestUploadController(TestController):
"""
TestController.__init__(self, *args, **kwargs)
- # Keep this so tests don't have to constantly create it.
- self.user_upload_key = 'upload_key'
- self.email = 'email@example.com'
-
def setUp(self):
self._setup_models()
self._setup_example_user()
@@ -66,56 +62,16 @@ class TestUploadController(TestController):
Tests whether requests where method != PUT are rejected with error code 405.
"""
response = self.app.get(url(controller='upload', action='index',
- email=self.email, password=self.user_upload_key,
filename='testname.dsc'), expect_errors=True)
self.assertEqual(response.status_int, 405)
- def testNoAuthorization(self):
- """
- Tests whether requests where the "Authorization" header is missing are rejected with
- error code 401 and whether the "WWW-Authenticate" header is sent in the response with
- the correct "realm" syntax.
- """
- response = self.app.put(
- url(controller='upload', action='index',
- filename='testname.dsc', email='email', password='pass'), expect_errors=True)
-
- self.assertEqual(response.status_int, 403)
-
- def testFalseAuthentication(self):
- """
- Tests whether false authentication details returns a 403 error code.
- """
- response = self.app.put(url(controller='upload', action='index',
- filename='testname.dsc', email=self.email,
- password='wrong'),
- expect_errors=True)
-
- self.assertEqual(response.status_int, 403)
-
- def testTrueAuthentication(self):
- """
- Tests whether true authentication details returns a nicer error code.
- """
- response = self.app.put(url(controller='upload', action='index',
- filename='testname.dsc', email=self.email,
- password=self.user_upload_key),
- expect_errors=False)
-
- self.assertNotEqual(response.status_int, 403)
- app_config = pylons.test.pylonsapp.config
-
- if os.path.isfile(os.path.join(app_config['debexpo.upload.incoming'], 'testfile1.dsc')):
- os.remove(os.path.join(app_config['debexpo.upload.incoming'], 'testfile1.dsc'))
-
def testExtensionNotAllowed(self):
"""
Tests whether uploads of an unknown file extensions are rejected with error code 403.
"""
response = self.app.put(url(controller='upload', action='index',
- filename='testname.unknown', email=self.email,
- password=self.user_upload_key),
+ filename='testname.unknown'),
expect_errors=True)
self.assertEqual(response.status_int, 403)
@@ -126,19 +82,46 @@ class TestUploadController(TestController):
"""
response = self.app.put(url(
controller='upload', action='index',
- filename='testfile2.dsc',
- email=self.email,
- password=self.user_upload_key),
+ filename='testfile2.dsc'),
params='contents', expect_errors=False)
self.assertEqual(response.status_int, 200)
app_config = pylons.test.pylonsapp.config
self.assertTrue(os.path.isfile(os.path.join(app_config['debexpo.upload.incoming'],
+ 'pub',
'testfile2.dsc')))
self.assertEqual(file(os.path.join(app_config['debexpo.upload.incoming'],
+ 'pub',
'testfile2.dsc')).read(), 'contents')
- if os.path.isfile(os.path.join(app_config['debexpo.upload.incoming'], 'testfile2.dsc')):
- os.remove(os.path.join(app_config['debexpo.upload.incoming'], 'testfile2.dsc'))
+ if os.path.isfile(os.path.join(app_config['debexpo.upload.incoming'],
+ 'pub', 'testfile2.dsc')):
+ os.remove(os.path.join(app_config['debexpo.upload.incoming'],
+ 'pub', 'testfile2.dsc'))
+
+ def testDuplicatedUpload(self):
+ """
+ Tests whether a re-uploads of the same file failed with error code 403.
+ """
+ response = self.app.put(url(
+ controller='upload', action='index',
+ filename='testfile.dsc'),
+ params='contents', expect_errors=False)
+
+ self.assertEqual(response.status_int, 200)
+
+ response = self.app.put(url(
+ controller='upload', action='index',
+ filename='testfile.dsc'),
+ params='contents', expect_errors=True)
+
+ self.assertEqual(response.status_int, 403)
+
+ app_config = pylons.test.pylonsapp.config
+
+ if os.path.isfile(os.path.join(app_config['debexpo.upload.incoming'],
+ 'pub', 'testfile.dsc')):
+ os.remove(os.path.join(app_config['debexpo.upload.incoming'],
+ 'pub', 'testfile.dsc'))
diff --git a/debexpo/tests/test_utils.py b/debexpo/tests/test_utils.py
index 71d08b5f56c9036a9e99375948b778b7c33ce367..8e37067a2784afa783bdfb7d9b32a2025b061daf 100644
--- a/debexpo/tests/test_utils.py
+++ b/debexpo/tests/test_utils.py
@@ -39,6 +39,7 @@ from unittest import TestCase
from debexpo.lib.utils import *
from debexpo.lib.changes import Changes
+from debexpo.lib.filesystem import CheckFiles
class TestUtilsController(TestCase):
@@ -46,7 +47,7 @@ class TestUtilsController(TestCase):
"""
Tests debexpo.lib.utils.allowed_upload.
"""
- t = allowed_upload
+ t = CheckFiles().allowed_upload
self.assertTrue(t('foo_version.orig.tar.gz'))
self.assertTrue(t('foo_version.tar.gz'))
@@ -64,7 +65,7 @@ class TestUtilsController(TestCase):
t = parse_section
self.assertEqual(t('section'), ['main', 'section'])
- self.assertEqual(t('component/section'), ['component', 'section'])
+ self.assertEqual(t('contrib/section'), ['contrib', 'section'])
def testGetPackageDir(self):
"""
diff --git a/development.ini b/development.ini
index 1c9b69dec9c703a85f13dcdd6f3bd800222ce7f6..a43360dc88fb1d14b8dadfe3e642ee084909347e 100644
--- a/development.ini
+++ b/development.ini
@@ -109,6 +109,8 @@ debexpo.cronjob_delay = 60
# NNTP server to connect to fetch mailing list comments/changes
debexpo.nntp_server = news.gmane.org
+debexpo.enable_experimental_code = false
+
# Logging configuration
[loggers]
keys = root, debexpo
diff --git a/setup.py b/setup.py
index bab43e721cd7830cbb443deba39d3d6204e6d9e1..6a4d05bb05504e411eb1d88263029372e006cb77 100644
--- a/setup.py
+++ b/setup.py
@@ -38,5 +38,8 @@ setup(
debexpo-importer = debexpo.bin.debexpo_importer:main
debexpo-worker = debexpo.bin.debexpo_worker
debexpo-user-importer = debexpo.bin.user_importer:main
+
+ [nose.plugins]
+ pylons = pylons.test:PylonsPlugin
""",
)
diff --git a/test.ini b/test.ini
index 2a9a438e8a3a95947143f4c66384d2ed2f00c0c3..8170a9af81e2e90fad2697fb78ad44df0bc8036b 100644
--- a/test.ini
+++ b/test.ini
@@ -62,6 +62,12 @@ debexpo.gpg_path = /usr/bin/gpg
# Server debexpo is being run on including http:// and excluding trailing slash
debexpo.server = http://localhost:5000
+debexpo.sitetitle = Testing
+
+debexpo.gpg_keyring = /tmp/keyring
+
+debexpo.enable_experimental_code = False
+
[loggers]
keys = root, debexpo