diff -Nru sloecode-1.1-0~151/debian/bzr-builder.manifest sloecode-1.1-0~153/debian/bzr-builder.manifest --- sloecode-1.1-0~151/debian/bzr-builder.manifest 2012-04-08 03:48:55.000000000 +0000 +++ sloecode-1.1-0~153/debian/bzr-builder.manifest 2012-04-09 03:49:39.000000000 +0000 @@ -1,3 +1,3 @@ -# bzr-builder format 0.3 deb-version {debupstream}-0~151-125 -lp:sloecode revid:thomi.richards@canonical.com-20120408034137-4798nfxi3xga29u6 +# bzr-builder format 0.3 deb-version {debupstream}-0~153-125 +lp:sloecode revid:thomi.richards@canonical.com-20120408220953-q34cg4dfk419bs4e nest packaging lp:~sloecode/sloecode/debian debian revid:thomi.richards@canonical.com-20120326051114-d6dhhzetk7iafh6o diff -Nru sloecode-1.1-0~151/debian/changelog sloecode-1.1-0~153/debian/changelog --- sloecode-1.1-0~151/debian/changelog 2012-04-08 03:48:55.000000000 +0000 +++ sloecode-1.1-0~153/debian/changelog 2012-04-09 03:49:39.000000000 +0000 @@ -1,8 +1,8 @@ -sloecode (1.1-0~151-125~maverick1) maverick; urgency=low +sloecode (1.1-0~153-125~maverick1) maverick; urgency=low * Auto build. - -- Launchpad Package Builder Sun, 08 Apr 2012 03:48:55 +0000 + -- Launchpad Package Builder Mon, 09 Apr 2012 03:49:39 +0000 sloecode (1.1) precise; urgency=low diff -Nru sloecode-1.1-0~151/sloecode/bzr/factory.py sloecode-1.1-0~153/sloecode/bzr/factory.py --- sloecode-1.1-0~151/sloecode/bzr/factory.py 2012-04-08 03:48:52.000000000 +0000 +++ sloecode-1.1-0~153/sloecode/bzr/factory.py 2012-04-09 03:49:36.000000000 +0000 @@ -1,14 +1,18 @@ """Functions relating to the handling of bazaar repositories and branches.""" from datetime import datetime +import logging import os from shutil import copytree, rmtree -from bzrlib import bzrdir, transport, version_info +from bzrlib import bzrdir, transport from bzrlib.repository import Repository from sloecode.bzr.display import BazaarRepositoryAdaptor +logger = logging.getLogger(__name__) + + def ensure_directory_exists(dir_name): """Make a directory if it doesn't already exist. @@ -65,26 +69,31 @@ """Create an empty shared repo for person.""" dir_name = self.get_user_repo_dir(person_name) if os.path.exists(dir_name): - print "Warning: path '%s' already exists, not creating repository for user '%s'" % (dir_name, person_name) + logger.warning("Path '%s' already exists, not creating repository for user '%s'", + dir_name, person_name) else: create_shared_repo(dir_name) def create_shared_repository_for_project(self, project_name): """Create a repository for the project with a trunk branch.""" dir_name = self.get_project_repo_dir(project_name) - repo = create_shared_repo(dir_name) - # Now to create the trunk. - try: - to_transport = repo.user_transport.clone('trunk') - except AttributeError: - # Fixes lp:948483 bzrlib version 2.1 (which is current in debian - # squeeze) uses a different name for this: - to_transport = repo._transport.clone('trunk') - format = bzrdir.format_registry.make_bzrdir('default') - branch = bzrdir.BzrDir.create_branch_convenience( - to_transport.base, format=format, - possible_transports=[to_transport]) - branch.set_append_revisions_only(True) + if os.path.exists(dir_name): + logger.warning("Path '%s' already exists, not creating a new repository for project '%s'", + dir_name, project_name) + else: + repo = create_shared_repo(dir_name) + # Now to create the trunk. + try: + to_transport = repo.user_transport.clone('trunk') + except AttributeError: + # Fixes lp:948483 bzrlib version 2.1 (which is current in debian + # squeeze) uses a different name for this: + to_transport = repo._transport.clone('trunk') + format = bzrdir.format_registry.make_bzrdir('default') + branch = bzrdir.BzrDir.create_branch_convenience( + to_transport.base, format=format, + possible_transports=[to_transport]) + branch.set_append_revisions_only(True) def get_repository_for_project(self, project_name): """Get a bzrlib.repository.Repository object for a given project diff -Nru sloecode-1.1-0~151/sloecode/tests/__init__.py sloecode-1.1-0~153/sloecode/tests/__init__.py --- sloecode-1.1-0~151/sloecode/tests/__init__.py 2012-04-08 03:48:52.000000000 +0000 +++ sloecode-1.1-0~153/sloecode/tests/__init__.py 2012-04-09 03:49:36.000000000 +0000 @@ -12,6 +12,7 @@ from paste.script.appinstall import SetupCommand from pylons import url from routes.util import URLGenerator +from sloecode.model.meta import Session, Base, engine from webtest import TestApp import pylons.test @@ -32,3 +33,16 @@ self.app = TestApp(wsgiapp) url._push_object(URLGenerator(config['routes.map'], environ)) TestCase.__init__(self, *args, **kwargs) + + +class SloecodeTestCase(TestCase): + + def setUp(self): + # create all DB tables: + Base.metadata.create_all(engine) + + def tearDown(self): + # remove all DB tables. + Base.metadata.drop_all(engine) + # remove session - avoids a memory leak, apparently. + Session.remove() diff -Nru sloecode-1.1-0~151/sloecode/tests/test_authkeys.py sloecode-1.1-0~153/sloecode/tests/test_authkeys.py --- sloecode-1.1-0~151/sloecode/tests/test_authkeys.py 2012-04-08 03:48:52.000000000 +0000 +++ sloecode-1.1-0~153/sloecode/tests/test_authkeys.py 2012-04-09 03:49:36.000000000 +0000 @@ -1,21 +1,9 @@ -#!/usr/bin/env python - -from sqlalchemy.exc import IntegrityError -from unittest import TestCase - -from sloecode.model.meta import Session, Base, engine +from sloecode.model.meta import Session from sloecode.model import Person, AuthKey +from sloecode.tests import SloecodeTestCase + -class TestAuthKeys(TestCase): - def setUp(self): - # create all DB tables: - Base.metadata.create_all(engine) - - def tearDown(self): - # remove all DB tables. - Base.metadata.drop_all(engine) - # remove session - avoids a memory leak, apparently. - Session.remove() +class TestAuthKeys(SloecodeTestCase): def test_keys(self): "Basic AuthKey model insert & Retrieve test." diff -Nru sloecode-1.1-0~151/sloecode/tests/test_hacking.py sloecode-1.1-0~153/sloecode/tests/test_hacking.py --- sloecode-1.1-0~151/sloecode/tests/test_hacking.py 2012-04-08 03:48:52.000000000 +0000 +++ sloecode-1.1-0~153/sloecode/tests/test_hacking.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -from unittest import TestCase - - -class TestTest(TestCase): - """ - A test to make sure our tests work. - """ - - def test_will_pass(self): - "This test will always pass." - self.assertTrue(True, 'all is good.') - - diff -Nru sloecode-1.1-0~151/sloecode/tests/test_membership.py sloecode-1.1-0~153/sloecode/tests/test_membership.py --- sloecode-1.1-0~151/sloecode/tests/test_membership.py 2012-04-08 03:48:52.000000000 +0000 +++ sloecode-1.1-0~153/sloecode/tests/test_membership.py 2012-04-09 03:49:36.000000000 +0000 @@ -1,22 +1,11 @@ -#!/usr/bin/env python - -from unittest import TestCase - -from sloecode.model.meta import Session, Base, engine +from sloecode.model.membership import Membership +from sloecode.model.meta import Session from sloecode.model.person import Person from sloecode.model.project import Project -from sloecode.model.membership import Membership +from sloecode.tests import SloecodeTestCase + -class TestMembership(TestCase): - def setUp(self): - # create all DB tables: - Base.metadata.create_all(engine) - - def tearDown(self): - # remove all DB tables. - Base.metadata.drop_all(engine) - # remove session - avoids a memory leak, apparently. - Session.remove() +class TestMembership(SloecodeTestCase): def test_simple_membership(self): "Simple insert & retrieve test for the many-to-many membership table." @@ -56,4 +45,4 @@ self.assertTrue(len(tim.projects) == 2) for user_membership in tim.projects: - self.assertTrue(user_membership.project == sloecode or user_membership.project == wikkid) \ No newline at end of file + self.assertTrue(user_membership.project == sloecode or user_membership.project == wikkid) diff -Nru sloecode-1.1-0~151/sloecode/tests/test_person.py sloecode-1.1-0~153/sloecode/tests/test_person.py --- sloecode-1.1-0~151/sloecode/tests/test_person.py 2012-04-08 03:48:52.000000000 +0000 +++ sloecode-1.1-0~153/sloecode/tests/test_person.py 2012-04-09 03:49:36.000000000 +0000 @@ -1,21 +1,10 @@ -#!/usr/bin/env python - from sqlalchemy.exc import IntegrityError -from unittest import TestCase -from sloecode.model.meta import Session, Base, engine +from sloecode.model.meta import Session from sloecode.model import Person, Project, Membership +from sloecode.tests import SloecodeTestCase -class TestPerson(TestCase): - def setUp(self): - # create all DB tables: - Base.metadata.create_all(engine) - - def tearDown(self): - # remove all DB tables. - Base.metadata.drop_all(engine) - # remove session - avoids a memory leak, apparently. - Session.remove() +class TestPerson(SloecodeTestCase): def test_create(self): "Create a person." diff -Nru sloecode-1.1-0~151/sloecode/tests/test_project.py sloecode-1.1-0~153/sloecode/tests/test_project.py --- sloecode-1.1-0~151/sloecode/tests/test_project.py 2012-04-08 03:48:52.000000000 +0000 +++ sloecode-1.1-0~153/sloecode/tests/test_project.py 2012-04-09 03:49:36.000000000 +0000 @@ -1,21 +1,10 @@ -#!/usr/bin/env python - from sqlalchemy.exc import IntegrityError -from unittest import TestCase -from sloecode.model.meta import Session, Base, engine +from sloecode.model.meta import Session from sloecode.model import Project, Person, Membership +from sloecode.tests import SloecodeTestCase -class TestProject(TestCase): - def setUp(self): - # create all DB tables: - Base.metadata.create_all(engine) - - def tearDown(self): - # remove all DB tables. - Base.metadata.drop_all(engine) - # remove session - avoids a memory leak, apparently. - Session.remove() +class TestProject(SloecodeTestCase): def test_create(self): "can we create a project?" diff -Nru sloecode-1.1-0~151/sloecode/tests/test_roles.py sloecode-1.1-0~153/sloecode/tests/test_roles.py --- sloecode-1.1-0~151/sloecode/tests/test_roles.py 2012-04-08 03:48:52.000000000 +0000 +++ sloecode-1.1-0~153/sloecode/tests/test_roles.py 2012-04-09 03:49:36.000000000 +0000 @@ -1,26 +1,12 @@ -#!/usr/bin/env python - -from unittest import TestCase from sqlalchemy.exc import IntegrityError -from sloecode.model.meta import Session, Base, engine +from sloecode.model.meta import Session from sloecode.model import Person, Project, Membership, SiteRole +from sloecode.tests import SloecodeTestCase - -class TestRoles(TestCase): - """Test membership roles model. - """ - - def setUp(self): - # create all DB tables: - Base.metadata.create_all(engine) - - def tearDown(self): - # remove all DB tables. - Base.metadata.drop_all(engine) - # remove session - avoids a memory leak, apparently. - Session.remove() +class TestRoles(SloecodeTestCase): + """Test membership roles model.""" def test_simpleRole(self): """Ensure we can give a users all three different roles.""" @@ -42,7 +28,7 @@ # make me an observer: Session.add(Membership(person=me, project=p, role='Observer')) - # make tim a developer: + # make tim a developer: Session.add(Membership(person=tim, project=p, role='Developer')) # make rachel a manager: Session.add(Membership(person=rachel, project=p, role='Manager')) @@ -81,21 +67,21 @@ "Make sure site-wide roles work as expected." me = Person(login='thomi', name='Thomi', email='thomir@gmail.com') Session.add(me) - + tim = Person(login='tim', name='Tim', email='tim@somewhere.com') Session.add(tim) - + Session.commit() - + self.assertTrue(len(me.site_roles) == 0) self.assertTrue(len(tim.site_roles) == 0) - + # make me a user admin: Session.add(SiteRole(person=me, role='User Admin')) # make tim a project admin: Session.add(SiteRole(person=tim, role='Project Admin')) Session.commit() - + self.assertTrue(len(me.site_roles) == 1) self.assertTrue(len(tim.site_roles) == 1) @@ -103,7 +89,7 @@ Session.add(SiteRole(person=me, role='Project Admin')) Session.commit() self.assertTrue(len(me.site_roles) == 2) - + # get all user admins: ppl_roles = SiteRole.get(role='User Admin') self.assertTrue(len(ppl_roles) == 1) diff -Nru sloecode-1.1-0~151/sloecode/tests/test_security.py sloecode-1.1-0~153/sloecode/tests/test_security.py --- sloecode-1.1-0~151/sloecode/tests/test_security.py 2012-04-08 03:48:52.000000000 +0000 +++ sloecode-1.1-0~153/sloecode/tests/test_security.py 2012-04-09 03:49:36.000000000 +0000 @@ -1,30 +1,15 @@ - -from unittest import TestCase -from pylons import request - -from sloecode.model.meta import Base, Session, engine +from sloecode.model.meta import Session from sloecode.model import Person, Project, Membership, SiteRole from sloecode.lib.security import has_site_role, has_project_role +from sloecode.tests import SloecodeTestCase - -class TestSecurity(TestCase): - """Test security functions. - """ - - def setUp(self): - # create all DB tables: - Base.metadata.create_all(engine) - - def tearDown(self): - # remove all DB tables. - Base.metadata.drop_all(engine) - # remove session - avoids a memory leak, apparently. - Session.remove() +class TestSecurity(SloecodeTestCase): + """Test security functions. """ def test_has_site_role(self): - """Test the has_site_role method works as expected. - """ + """Test the has_site_role method works as expected.""" + user_a = Person(login='user_a', site_roles = [SiteRole(role='User Admin'), SiteRole(role='Project Admin')]) user_b = Person(login='user_b', site_roles = @@ -39,15 +24,15 @@ self.assertTrue(has_site_role('Project Admin', user_a)) self.assertTrue(has_site_role('User Admin', user_a)) - self.assertTrue(has_site_role('made up', user_a) == False) - self.assertTrue(has_site_role('Project Admin', user_b) == False) + self.assertFalse(has_site_role('made up', user_a)) + self.assertFalse(has_site_role('Project Admin', user_b)) self.assertTrue(has_site_role('User Admin', user_b)) self.assertTrue(has_site_role('Project Admin', user_c)) - self.assertTrue(has_site_role('User Admin', user_c) == False) + self.assertFalse(has_site_role('User Admin', user_c)) def test_has_project_role(self): - """Test the has_project_role function works as expected. - """ + """Test the has_project_role function works as expected.""" + # create a project: sc = Project(name='sloecode') Session.add(sc) @@ -75,23 +60,19 @@ # first - ensure that user_a has no roles: # we specify the project in three separate ways: - self.assertTrue(has_project_role(sc, 'Observer', user_a) == False) - self.assertTrue(has_project_role('sloecode', 'Developer', user_a) - == False) - self.assertTrue(has_project_role(sc.id, 'Manager', user_a) == False) + self.assertFalse(has_project_role(sc, 'Observer', user_a)) + self.assertFalse(has_project_role('sloecode', 'Developer', user_a)) + self.assertFalse(has_project_role(sc.id, 'Manager', user_a)) # now repeat those tests, but with users with more rights: - self.assertTrue(has_project_role(sc, 'Observer', user_b) == True) - self.assertTrue(has_project_role('sloecode', 'Developer', user_b) - == False) - self.assertTrue(has_project_role(sc.id, 'Manager', user_b) == False) - - self.assertTrue(has_project_role(sc, 'Observer', user_c) == False) - self.assertTrue(has_project_role('sloecode', 'Developer', user_c) - == True) - self.assertTrue(has_project_role(sc.id, 'Manager', user_c) == False) - - self.assertTrue(has_project_role(sc, 'Observer', user_d) == False) - self.assertTrue(has_project_role('sloecode', 'Developer', user_d) - == False) - self.assertTrue(has_project_role(sc.id, 'Manager', user_d) == True) + self.assertTrue(has_project_role(sc, 'Observer', user_b)) + self.assertFalse(has_project_role('sloecode', 'Developer', user_b)) + self.assertFalse(has_project_role(sc.id, 'Manager', user_b)) + + self.assertFalse(has_project_role(sc, 'Observer', user_c)) + self.assertTrue(has_project_role('sloecode', 'Developer', user_c)) + self.assertFalse(has_project_role(sc.id, 'Manager', user_c)) + + self.assertFalse(has_project_role(sc, 'Observer', user_d)) + self.assertFalse(has_project_role('sloecode', 'Developer', user_d)) + self.assertTrue(has_project_role(sc.id, 'Manager', user_d))