Merge ~cjwatson/launchpad:doctest-remove-py2-exception-module into launchpad:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 8a0009dd616aec3499f79a29a31f0eb3480600fb
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad:doctest-remove-py2-exception-module
Merge into: launchpad:master
Diff against target: 7819 lines (+53/-851)
311 files modified
lib/lp/answers/doc/faq.txt (+0/-2)
lib/lp/answers/doc/faqtarget.txt (+0/-1)
lib/lp/answers/doc/questiontarget.txt (+0/-4)
lib/lp/answers/doc/workflow.txt (+0/-5)
lib/lp/answers/stories/distribution-package-answer-contact.txt (+0/-1)
lib/lp/answers/stories/faq-add.txt (+0/-2)
lib/lp/answers/stories/faq-browse-and-search.txt (+0/-2)
lib/lp/answers/stories/faq-edit.txt (+0/-4)
lib/lp/answers/stories/project-add-question.txt (+0/-1)
lib/lp/answers/stories/question-add.txt (+0/-1)
lib/lp/answers/stories/question-browse-and-search.txt (+0/-7)
lib/lp/answers/stories/question-edit.txt (+0/-1)
lib/lp/answers/stories/question-overview.txt (+0/-4)
lib/lp/answers/stories/question-reject-and-change-status.txt (+0/-3)
lib/lp/answers/stories/this-is-a-faq.txt (+0/-3)
lib/lp/app/doc/batch-navigation.txt (+0/-1)
lib/lp/app/doc/displaying-numbers.txt (+0/-1)
lib/lp/app/doc/launchpadform.txt (+0/-1)
lib/lp/app/doc/object-privacy.txt (+0/-1)
lib/lp/app/doc/tales.txt (+0/-3)
lib/lp/app/stories/basics/marketing.txt (+0/-1)
lib/lp/app/stories/basics/max-batch-size.txt (+0/-1)
lib/lp/app/stories/basics/xx-developerexceptions.txt (+0/-1)
lib/lp/app/stories/basics/xx-launchpad-statistics.txt (+0/-1)
lib/lp/app/stories/basics/xx-offsite-form-post.txt (+0/-11)
lib/lp/app/stories/basics/xx-opstats.txt (+0/-1)
lib/lp/app/stories/folder.txt (+7/-7)
lib/lp/app/stories/form/xx-form-layout.txt (+0/-2)
lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt (+0/-3)
lib/lp/app/validators/email.py (+2/-3)
lib/lp/app/validators/tests/validation.txt (+0/-5)
lib/lp/app/validators/url.py (+0/-1)
lib/lp/app/widgets/date.py (+4/-8)
lib/lp/app/widgets/doc/announcement-date-widget.txt (+0/-2)
lib/lp/app/widgets/doc/image-widget.txt (+6/-6)
lib/lp/app/widgets/doc/project-scope-widget.txt (+1/-4)
lib/lp/app/widgets/doc/stripped-text-widget.txt (+1/-1)
lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt (+0/-3)
lib/lp/archivepublisher/tests/archive-signing.txt (+0/-1)
lib/lp/archiveuploader/tests/nascentupload-announcements.txt (+1/-1)
lib/lp/archiveuploader/tests/nascentupload-epoch-handling.txt (+0/-2)
lib/lp/archiveuploader/tests/nascentupload.txt (+1/-1)
lib/lp/archiveuploader/tests/nascentuploadfile.txt (+0/-2)
lib/lp/archiveuploader/tests/upload-path-parsing.txt (+0/-16)
lib/lp/blueprints/doc/specgraph.txt (+0/-1)
lib/lp/blueprints/stories/blueprints/xx-creation.txt (+0/-2)
lib/lp/blueprints/stories/blueprints/xx-dependencies.txt (+0/-4)
lib/lp/blueprints/stories/blueprints/xx-editing.txt (+0/-3)
lib/lp/blueprints/stories/sprints/sprint-settopics.txt (+0/-3)
lib/lp/blueprints/stories/sprints/xx-sprints.txt (+0/-3)
lib/lp/blueprints/stories/standalone/subscribing.txt (+0/-1)
lib/lp/blueprints/stories/standalone/xx-branch-links.txt (+0/-1)
lib/lp/blueprints/stories/standalone/xx-views.txt (+0/-1)
lib/lp/bugs/doc/bug-change.txt (+0/-1)
lib/lp/bugs/doc/bug-reported-acknowledgement.txt (+0/-7)
lib/lp/bugs/doc/bug-reporting-guidelines.txt (+0/-7)
lib/lp/bugs/doc/bug-tags.txt (+0/-1)
lib/lp/bugs/doc/bug.txt (+1/-6)
lib/lp/bugs/doc/bugattachments.txt (+1/-6)
lib/lp/bugs/doc/bugmessage-visibility.txt (+0/-1)
lib/lp/bugs/doc/bugsubscription.txt (+0/-1)
lib/lp/bugs/doc/bugtask-assignee-widget.txt (+2/-2)
lib/lp/bugs/doc/bugtask-bugwatch-widget.txt (+0/-1)
lib/lp/bugs/doc/bugtask-package-widget.txt (+2/-5)
lib/lp/bugs/doc/bugtask-retrieval.txt (+1/-2)
lib/lp/bugs/doc/bugtask-search.txt (+0/-1)
lib/lp/bugs/doc/bugtask-status-changes.txt (+0/-1)
lib/lp/bugs/doc/bugtask-status-workflow.txt (+0/-2)
lib/lp/bugs/doc/bugtracker-person.txt (+0/-1)
lib/lp/bugs/doc/bugwatch.txt (+0/-2)
lib/lp/bugs/doc/bugwidget.txt (+0/-1)
lib/lp/bugs/doc/cve-update.txt (+0/-1)
lib/lp/bugs/doc/cve.txt (+0/-1)
lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt (+0/-8)
lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt (+0/-4)
lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt (+0/-1)
lib/lp/bugs/doc/externalbugtracker-bugzilla.txt (+0/-7)
lib/lp/bugs/doc/externalbugtracker-debbugs.txt (+0/-4)
lib/lp/bugs/doc/externalbugtracker-emailaddress.txt (+0/-1)
lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt (+0/-1)
lib/lp/bugs/doc/externalbugtracker-mantis-logging-in.txt (+0/-1)
lib/lp/bugs/doc/externalbugtracker-mantis.txt (+0/-1)
lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt (+0/-1)
lib/lp/bugs/doc/externalbugtracker-roundup.txt (+0/-2)
lib/lp/bugs/doc/externalbugtracker-rt.txt (+0/-4)
lib/lp/bugs/doc/externalbugtracker-sourceforge.txt (+0/-4)
lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt (+0/-5)
lib/lp/bugs/doc/externalbugtracker-trac.txt (+0/-5)
lib/lp/bugs/doc/externalbugtracker.txt (+0/-3)
lib/lp/bugs/doc/initial-bug-contacts.txt (+0/-2)
lib/lp/bugs/doc/malone-xmlrpc.txt (+0/-8)
lib/lp/bugs/doc/official-bug-tags.txt (+0/-6)
lib/lp/bugs/doc/vocabularies.txt (+0/-1)
lib/lp/bugs/stories/bug-privacy/xx-bug-privacy.txt (+0/-2)
lib/lp/bugs/stories/bug-privacy/xx-presenting-private-bugs.txt (+0/-2)
lib/lp/bugs/stories/bug-release-management/xx-anonymous-bug-nomination.txt (+0/-1)
lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt (+0/-6)
lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt (+0/-4)
lib/lp/bugs/stories/bugattachments/xx-bugattachments.txt (+0/-1)
lib/lp/bugs/stories/bugs/bug-add-subscriber.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-bug-comment-attach-file.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-bug-create-question.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-bug-edit.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-bugs-advanced-search-upstream-status.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-distribution-bugs-page.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-product-bugs-page.txt (+0/-1)
lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt (+0/-1)
lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt (+0/-2)
lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt (+0/-1)
lib/lp/bugs/stories/bugtask-management/xx-view-editable-bug-task.txt (+0/-2)
lib/lp/bugs/stories/bugtask-searches/xx-unexpected-form-data.txt (+0/-3)
lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt (+0/-1)
lib/lp/bugs/stories/bugtracker/xx-bugtracker-remote-bug.txt (+0/-2)
lib/lp/bugs/stories/cve/cve-linking.txt (+0/-1)
lib/lp/bugs/stories/feeds/xx-bug-atom.txt (+0/-1)
lib/lp/bugs/stories/feeds/xx-bug-html.txt (+1/-1)
lib/lp/bugs/stories/patches-view/patches-view.txt (+0/-1)
lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt (+0/-2)
lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt (+0/-3)
lib/lp/bugs/tests/buglinktarget.txt (+1/-4)
lib/lp/bugs/tests/bugs-emailinterface.txt (+0/-2)
lib/lp/bugs/tests/bugzilla-api-xmlrpc-transport.txt (+0/-4)
lib/lp/bugs/tests/bugzilla-xmlrpc-transport.txt (+0/-4)
lib/lp/bugs/tests/externalbugtracker-xmlrpc-transport.txt (+0/-1)
lib/lp/bugs/tests/trac-xmlrpc-transport.txt (+0/-3)
lib/lp/buildmaster/doc/builder.txt (+0/-1)
lib/lp/buildmaster/stories/xx-builder-page.txt (+0/-5)
lib/lp/buildmaster/stories/xx-buildfarm-index.txt (+0/-2)
lib/lp/code/doc/branch.txt (+0/-2)
lib/lp/code/doc/codeimport-machine.txt (+0/-1)
lib/lp/code/doc/codeimport.txt (+0/-3)
lib/lp/code/stories/branches/xx-branch-edit.txt (+0/-1)
lib/lp/code/stories/branches/xx-branch-reference.txt (+0/-2)
lib/lp/code/stories/branches/xx-branchmergeproposals.txt (+0/-3)
lib/lp/code/stories/branches/xx-bug-branch-links.txt (+0/-2)
lib/lp/code/stories/branches/xx-code-review-comments.txt (+0/-1)
lib/lp/code/stories/branches/xx-subscribing-branches.txt (+0/-2)
lib/lp/code/stories/branches/xx-upgrading-branches.txt (+0/-1)
lib/lp/code/stories/codeimport/xx-create-codeimport.txt (+0/-1)
lib/lp/code/stories/codeimport/xx-edit-codeimport.txt (+0/-3)
lib/lp/coop/answersbugs/stories/question-buglink.txt (+0/-1)
lib/lp/coop/answersbugs/stories/question-makebug.txt (+0/-1)
lib/lp/registry/browser/tests/gpg-views.txt (+0/-1)
lib/lp/registry/browser/tests/product-views.txt (+0/-1)
lib/lp/registry/browser/tests/team-views.txt (+0/-1)
lib/lp/registry/doc/announcement.txt (+0/-3)
lib/lp/registry/doc/commercialsubscription.txt (+0/-1)
lib/lp/registry/doc/distribution-mirror.txt (+0/-6)
lib/lp/registry/doc/distribution.txt (+0/-6)
lib/lp/registry/doc/distroseries.txt (+0/-1)
lib/lp/registry/doc/karmacache.txt (+0/-1)
lib/lp/registry/doc/launchpadlib/project-registry.txt.disabled (+2/-2)
lib/lp/registry/doc/milestone.txt (+1/-1)
lib/lp/registry/doc/person-account.txt (+0/-2)
lib/lp/registry/doc/person.txt (+0/-6)
lib/lp/registry/doc/pillar-aliases-field.txt (+0/-5)
lib/lp/registry/doc/pillar.txt (+0/-8)
lib/lp/registry/doc/private-team-roles.txt (+0/-1)
lib/lp/registry/doc/productrelease-file-download.txt (+0/-5)
lib/lp/registry/doc/productseries.txt (+0/-4)
lib/lp/registry/doc/projectgroup.txt (+0/-2)
lib/lp/registry/doc/teammembership-email-notification.txt (+0/-1)
lib/lp/registry/doc/teammembership.txt (+0/-5)
lib/lp/registry/doc/vocabularies.txt (+0/-2)
lib/lp/registry/model/projectgroup.py (+0/-1)
lib/lp/registry/stories/announcements/xx-announcements.txt (+0/-7)
lib/lp/registry/stories/distribution/xx-distribution-launchpad-usage.txt (+0/-3)
lib/lp/registry/stories/distribution/xx-distribution-overview.txt (+0/-3)
lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt (+0/-1)
lib/lp/registry/stories/distributionmirror/xx-distribution-mirrors.txt (+0/-3)
lib/lp/registry/stories/distributionmirror/xx-distributionmirror-prober-logs.txt (+0/-2)
lib/lp/registry/stories/distributionmirror/xx-reassign-distributionmirror.txt (+0/-2)
lib/lp/registry/stories/distroseries/distroseries-admin.txt (+0/-2)
lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt (+0/-2)
lib/lp/registry/stories/gpg-coc/xx-ubuntu-codeofconduct-signer.txt (+0/-1)
lib/lp/registry/stories/location/personlocation-edit.txt (+0/-1)
lib/lp/registry/stories/mailinglists/lifecycle.txt (+0/-3)
lib/lp/registry/stories/mailinglists/subscriptions.txt (+0/-2)
lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt (+0/-1)
lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt (+0/-5)
lib/lp/registry/stories/object/xx-object-branding.txt (+0/-5)
lib/lp/registry/stories/person/xx-add-sshkey.txt (+0/-3)
lib/lp/registry/stories/person/xx-admin-person-review.txt (+0/-1)
lib/lp/registry/stories/person/xx-adminpeoplemerge.txt (+0/-2)
lib/lp/registry/stories/person/xx-approve-members.txt (+0/-1)
lib/lp/registry/stories/person/xx-deactivate-account.txt (+0/-1)
lib/lp/registry/stories/person/xx-person-claim-merge.txt (+1/-1)
lib/lp/registry/stories/person/xx-person-home.txt (+0/-1)
lib/lp/registry/stories/pillar/xx-pillar-deactivation.txt (+0/-4)
lib/lp/registry/stories/pillar/xx-pillar-traversal.txt (+0/-1)
lib/lp/registry/stories/product/xx-product-files.txt (+0/-2)
lib/lp/registry/stories/product/xx-product-package-pages.txt (+0/-1)
lib/lp/registry/stories/product/xx-projects-index.txt (+0/-1)
lib/lp/registry/stories/productrelease/xx-productrelease-basics.txt (+0/-3)
lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt (+0/-2)
lib/lp/registry/stories/productseries/xx-productseries-add-and-edit.txt (+0/-2)
lib/lp/registry/stories/productseries/xx-productseries-delete.txt (+0/-1)
lib/lp/registry/stories/project/xx-project-add.txt (+0/-1)
lib/lp/registry/stories/project/xx-project-edit.txt (+0/-3)
lib/lp/registry/stories/project/xx-project-index.txt (+0/-10)
lib/lp/registry/stories/team-polls/create-polls.txt (+0/-1)
lib/lp/registry/stories/team-polls/edit-options.txt (+0/-1)
lib/lp/registry/stories/team/xx-team-add-my-teams.txt (+0/-2)
lib/lp/registry/stories/team/xx-team-home.txt (+0/-1)
lib/lp/registry/stories/teammembership/private-team.txt (+0/-2)
lib/lp/registry/stories/teammembership/xx-add-member.txt (+0/-1)
lib/lp/registry/stories/teammembership/xx-member-renewed-membership.txt (+0/-2)
lib/lp/registry/stories/teammembership/xx-team-leave.txt (+0/-2)
lib/lp/registry/stories/teammembership/xx-teammembership.txt (+0/-2)
lib/lp/registry/tests/person_from_principal.txt (+0/-1)
lib/lp/services/database/doc/db-policy.txt (+1/-3)
lib/lp/services/database/doc/multitablecopy.txt (+0/-1)
lib/lp/services/database/doc/storm.txt (+1/-3)
lib/lp/services/feeds/doc/feeds.txt (+0/-4)
lib/lp/services/feeds/stories/xx-navigation.txt (+0/-4)
lib/lp/services/fields/doc/uri-field.txt (+0/-8)
lib/lp/services/gpg/doc/gpg-signatures.txt (+0/-5)
lib/lp/services/gpg/doc/gpghandler.txt (+0/-8)
lib/lp/services/helpers.py (+2/-2)
lib/lp/services/identity/doc/emailaddress.txt (+0/-4)
lib/lp/services/librarian/doc/librarian.txt (+0/-7)
lib/lp/services/mail/doc/emailauthentication.txt (+0/-2)
lib/lp/services/mail/doc/mailbox.txt (+2/-2)
lib/lp/services/mail/doc/notification-recipient-set.txt (+0/-2)
lib/lp/services/mail/tests/incomingmail.txt (+2/-2)
lib/lp/services/messages/doc/message.txt (+0/-4)
lib/lp/services/oauth/doc/oauth-pages.txt (+0/-2)
lib/lp/services/oauth/stories/access-token.txt (+0/-1)
lib/lp/services/oauth/stories/authorize-token.txt (+0/-6)
lib/lp/services/oauth/stories/managing-tokens.txt (+0/-1)
lib/lp/services/temporaryblobstorage/doc/temporaryblobstorage.txt (+0/-1)
lib/lp/services/webapp/doc/canonical_url.txt (+2/-5)
lib/lp/services/webapp/doc/menus.txt (+0/-2)
lib/lp/services/webapp/doc/navigation.txt (+0/-5)
lib/lp/services/webapp/doc/renamed-view.txt (+0/-1)
lib/lp/services/webapp/doc/test_adapter.txt (+0/-7)
lib/lp/services/webapp/doc/test_adapter_permissions.txt (+2/-2)
lib/lp/services/webapp/doc/test_adapter_timeout.txt.disabled (+0/-1)
lib/lp/services/webapp/doc/timeout.txt (+2/-2)
lib/lp/services/webapp/doc/webapp-publication.txt (+0/-9)
lib/lp/services/webservice/doc/launchpadlib.txt (+0/-1)
lib/lp/services/webservice/stories/launchpadlib.txt (+0/-1)
lib/lp/soyuz/browser/tests/archive-views.txt (+0/-1)
lib/lp/soyuz/browser/tests/distroseriesqueue-views.txt (+0/-1)
lib/lp/soyuz/doc/archive.txt (+0/-23)
lib/lp/soyuz/doc/archiveauthtoken.txt (+0/-4)
lib/lp/soyuz/doc/archivepermission.txt (+0/-2)
lib/lp/soyuz/doc/archivesubscriber.txt (+0/-11)
lib/lp/soyuz/doc/build-files.txt (+0/-2)
lib/lp/soyuz/doc/distroseriesqueue.txt (+2/-6)
lib/lp/soyuz/doc/package-diff.txt (+0/-1)
lib/lp/soyuz/doc/publishing-security.txt (+0/-4)
lib/lp/soyuz/stories/distroseries/add-architecture.txt (+0/-2)
lib/lp/soyuz/stories/ppa/xx-copy-packages.txt (+0/-3)
lib/lp/soyuz/stories/ppa/xx-delete-packages.txt (+0/-5)
lib/lp/soyuz/stories/ppa/xx-edit-dependencies.txt (+0/-5)
lib/lp/soyuz/stories/ppa/xx-ppa-files.txt (+0/-3)
lib/lp/soyuz/stories/ppa/xx-ppa-navigation.txt (+0/-4)
lib/lp/soyuz/stories/ppa/xx-ppa-packages.txt (+0/-3)
lib/lp/soyuz/stories/ppa/xx-ppa-workflow.txt (+0/-9)
lib/lp/soyuz/stories/ppa/xx-private-ppa-subscriptions.txt (+0/-3)
lib/lp/soyuz/stories/ppa/xx-private-ppas.txt (+0/-3)
lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt (+0/-3)
lib/lp/soyuz/stories/soyuz/xx-build-record.txt (+0/-6)
lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt (+0/-2)
lib/lp/soyuz/stories/soyuz/xx-distribution-add.txt (+0/-2)
lib/lp/soyuz/stories/soyuz/xx-distribution-archives.txt (+0/-1)
lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt (+0/-1)
lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt (+0/-1)
lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt (+0/-1)
lib/lp/soyuz/stories/soyuz/xx-package-diff.txt (+0/-1)
lib/lp/soyuz/stories/soyuz/xx-person-packages.txt (+0/-1)
lib/lp/soyuz/stories/soyuz/xx-private-builds.txt (+0/-1)
lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt (+0/-1)
lib/lp/soyuz/stories/webservice/xx-builders.txt (+1/-1)
lib/lp/testing/doc/pagetest-helpers.txt (+0/-1)
lib/lp/translations/browser/tests/pofile-views.txt (+0/-3)
lib/lp/translations/doc/browser-helpers.txt (+0/-2)
lib/lp/translations/doc/potranslation.txt (+0/-1)
lib/lp/translations/doc/translationmessage-destroy.txt (+0/-1)
lib/lp/translations/stories/distribution/xx-distribution-change-language-pack-admins.txt (+0/-2)
lib/lp/translations/stories/distribution/xx-distribution-translations.txt (+0/-2)
lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt (+0/-9)
lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt (+0/-2)
lib/lp/translations/stories/productseries/xx-productseries-export-to-branch.txt (+0/-1)
lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt (+0/-2)
lib/lp/translations/stories/project/xx-project-translations.txt (+0/-2)
lib/lp/translations/stories/standalone/custom-language-codes.txt (+0/-4)
lib/lp/translations/stories/standalone/xx-language.txt (+0/-6)
lib/lp/translations/stories/standalone/xx-licensing.txt (+0/-2)
lib/lp/translations/stories/standalone/xx-person-editlanguages.txt (+0/-1)
lib/lp/translations/stories/standalone/xx-pofile-export.txt (+0/-1)
lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt (+0/-1)
lib/lp/translations/stories/standalone/xx-pofile-translate.txt (+0/-1)
lib/lp/translations/stories/standalone/xx-potemplate-admin.txt (+0/-1)
lib/lp/translations/stories/standalone/xx-potemplate-edit.txt (+0/-2)
lib/lp/translations/stories/standalone/xx-potemplate-export.txt (+0/-1)
lib/lp/translations/stories/standalone/xx-potemplate-index.txt (+0/-3)
lib/lp/translations/stories/standalone/xx-product-export.txt (+0/-3)
lib/lp/translations/stories/standalone/xx-product-translations.txt (+0/-3)
lib/lp/translations/stories/standalone/xx-series-templates.txt (+0/-2)
lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt (+0/-5)
lib/lp/translations/stories/translationgroups/xx-change-translation-policy.txt (+0/-2)
lib/lp/translations/stories/translationgroups/xx-translationgroups.txt (+0/-12)
lib/lp/translations/stories/translations/xx-translations.txt (+0/-3)
lib/lp/translations/utilities/doc/gettext_mo_exporter.txt (+0/-1)
lib/lp/translations/utilities/doc/gettext_po_parser.txt (+0/-7)
lib/lp/translations/utilities/gettext_po_parser.py (+0/-5)
Reviewer Review Type Date Requested Status
Cristian Gonzalez (community) Approve
Review via email: mp+407194@code.launchpad.net

Commit message

Remove all uses of IGNORE_EXCEPTION_MODULE_IN_PYTHON2

Description of the change

This is no longer needed now that we require Python 3.

To post a comment you must log in.
Revision history for this message
Cristian Gonzalez (cristiangsp) wrote :

Looks good!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/answers/doc/faq.txt b/lib/lp/answers/doc/faq.txt
2index 594242d..c4af905 100644
3--- a/lib/lp/answers/doc/faq.txt
4+++ b/lib/lp/answers/doc/faq.txt
5@@ -320,7 +320,6 @@ That change is also considered an answer:
6 It is not possible to modify the faq attribute directly:
7
8 >>> fnord_question.faq = None
9- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
10 Traceback (most recent call last):
11 ...
12 zope.security.interfaces.ForbiddenAttribute: ...
13@@ -329,7 +328,6 @@ And it is not allowed to call linkFAQ() when the FAQ is already linked:
14
15 >>> message = fnord_question.linkFAQ(
16 ... no_priv, firefox_faq, 'See the FAQ.')
17- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
18 Traceback (most recent call last):
19 ...
20 lp.answers.errors.FAQTargetError: Cannot call linkFAQ() with already linked FAQ.
21diff --git a/lib/lp/answers/doc/faqtarget.txt b/lib/lp/answers/doc/faqtarget.txt
22index 0518e70..d3302d1 100644
23--- a/lib/lp/answers/doc/faqtarget.txt
24+++ b/lib/lp/answers/doc/faqtarget.txt
25@@ -38,7 +38,6 @@ the target.
26
27 >>> no_priv = getUtility(ILaunchBag).user
28 >>> target.newFAQ(no_priv, 'Title', 'Summary', content='Content')
29- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
30 Traceback (most recent call last):
31 ...
32 zope.security.interfaces.Unauthorized: ...
33diff --git a/lib/lp/answers/doc/questiontarget.txt b/lib/lp/answers/doc/questiontarget.txt
34index 99731b0..252d463 100644
35--- a/lib/lp/answers/doc/questiontarget.txt
36+++ b/lib/lp/answers/doc/questiontarget.txt
37@@ -89,7 +89,6 @@ Anonymous users cannot use newQuestion().
38 >>> login(ANONYMOUS)
39 >>> question = target.newQuestion(
40 ... sample_person, 'This will fail', 'Failed?')
41- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
42 Traceback (most recent call last):
43 ...
44 zope.security.interfaces.Unauthorized: ...
45@@ -388,7 +387,6 @@ is only available to registered users.
46
47 >>> name18 = getUtility(IPersonSet).getByName('name18')
48 >>> target.addAnswerContact(name18, name18)
49- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
50 Traceback (most recent call last):
51 ...
52 zope.security.interfaces.Unauthorized: ...
53@@ -419,7 +417,6 @@ languages.
54 >>> len(sample_person.languages)
55 0
56 >>> target.addAnswerContact(sample_person, sample_person)
57- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
58 Traceback (most recent call last):
59 ...
60 lp.answers.errors.AddAnswerContactError: An answer contact must speak a language...
61@@ -441,7 +438,6 @@ Only registered users can remove an answer contact.
62
63 >>> login(ANONYMOUS)
64 >>> target.removeAnswerContact(name18, name18)
65- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
66 Traceback (most recent call last):
67 ...
68 zope.security.interfaces.Unauthorized: ...
69diff --git a/lib/lp/answers/doc/workflow.txt b/lib/lp/answers/doc/workflow.txt
70index c9d3c74..6f25e23 100644
71--- a/lib/lp/answers/doc/workflow.txt
72+++ b/lib/lp/answers/doc/workflow.txt
73@@ -426,7 +426,6 @@ As a Launchpad administrator, so can Stub.
74 >>> login(marilize.preferredemail.email)
75 >>> spam_question.reject(
76 ... marilize, "We don't send free CDs any more.")
77- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
78 Traceback (most recent call last):
79 ...
80 zope.security.interfaces.Unauthorized: ...
81@@ -485,7 +484,6 @@ It is not possible to change the status attribute directly.
82 >>> login('foo.bar@canonical.com')
83 >>> question = ubuntu.newQuestion(**new_question_args)
84 >>> question.status = QuestionStatus.INVALID
85- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
86 Traceback (most recent call last):
87 ...
88 zope.security.interfaces.ForbiddenAttribute: ...
89@@ -544,7 +542,6 @@ permission, an Unauthorized exception is thrown.
90
91 >>> login('test@canonical.com')
92 >>> question.setStatus(sample_person, QuestionStatus.EXPIRED, 'Expire.')
93- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
94 Traceback (most recent call last):
95 ...
96 zope.security.interfaces.Unauthorized: ...
97@@ -593,7 +590,6 @@ Users without launchpad.Moderator privileges cannot set the assignee.
98
99 >>> login('no-priv@canonical.com')
100 >>> question.assignee = sample_person
101- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
102 Traceback (most recent call last):
103 ...
104 zope.security.interfaces.Unauthorized: (<lp.answers.model.question.Question ...>, 'assignee', 'launchpad.Append')
105@@ -767,7 +763,6 @@ method.
106
107 >>> login(stub.preferredemail.email)
108 >>> question.setStatus(stub, QuestionStatus.OPEN, reject_message)
109- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
110 Traceback (most recent call last):
111 ...
112 lp.answers.errors.NotMessageOwnerError: ...
113diff --git a/lib/lp/answers/stories/distribution-package-answer-contact.txt b/lib/lp/answers/stories/distribution-package-answer-contact.txt
114index 2aa64a0..2d2ebd8 100644
115--- a/lib/lp/answers/stories/distribution-package-answer-contact.txt
116+++ b/lib/lp/answers/stories/distribution-package-answer-contact.txt
117@@ -38,7 +38,6 @@ To register themselves as answer contact, the user clicks on the
118 'Set answer contact' link. They need to login to access that function.
119
120 >>> anon_browser.getLink('Set answer contact').click()
121- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
122 Traceback (most recent call last):
123 ...
124 zope.security.interfaces.Unauthorized: ...
125diff --git a/lib/lp/answers/stories/faq-add.txt b/lib/lp/answers/stories/faq-add.txt
126index ac6023e..ae54966 100644
127--- a/lib/lp/answers/stories/faq-add.txt
128+++ b/lib/lp/answers/stories/faq-add.txt
129@@ -11,14 +11,12 @@ the project owner, therefore they cannot create a new FAQ.
130 >>> user_browser.getLink('All FAQs').click()
131
132 >>> user_browser.getLink('Create a new FAQ')
133- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
134 Traceback (most recent call last):
135 ...
136 zope.testbrowser.browser.LinkNotFoundError
137
138 >>> user_browser.open(
139 ... 'http://answers.launchpad.test/firefox/+createfaq')
140- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
141 Traceback (most recent call last):
142 ...
143 zope.security.interfaces.Unauthorized: ...
144diff --git a/lib/lp/answers/stories/faq-browse-and-search.txt b/lib/lp/answers/stories/faq-browse-and-search.txt
145index fab6403..b911c59 100644
146--- a/lib/lp/answers/stories/faq-browse-and-search.txt
147+++ b/lib/lp/answers/stories/faq-browse-and-search.txt
148@@ -185,13 +185,11 @@ Accessing an FAQ directly
149 Asking for a non-existent FAQ or an invalid ID will raise a 404 error.
150
151 >>> anon_browser.open('http://answers.launchpad.test/ubuntu/+faq/171717')
152- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
153 Traceback (most recent call last):
154 ...
155 zope.publisher.interfaces.NotFound: ...
156
157 >>> anon_browser.open('http://answers.launchpad.test/ubuntu/+faq/bad')
158- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
159 Traceback (most recent call last):
160 ...
161 zope.publisher.interfaces.NotFound: ...
162diff --git a/lib/lp/answers/stories/faq-edit.txt b/lib/lp/answers/stories/faq-edit.txt
163index 9a635d4..be6a95e 100644
164--- a/lib/lp/answers/stories/faq-edit.txt
165+++ b/lib/lp/answers/stories/faq-edit.txt
166@@ -14,14 +14,12 @@ appear for the anonymous user nor No Privileges Person:
167 FAQ #7 : Questions : Mozilla Firefox
168
169 >>> anon_browser.getLink('Edit FAQ')
170- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
171 Traceback (most recent call last):
172 ...
173 zope.testbrowser.browser.LinkNotFoundError
174
175 >>> user_browser.open('http://answers.launchpad.test/firefox/+faq/7')
176 >>> user_browser.getLink('Edit FAQ')
177- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
178 Traceback (most recent call last):
179 ...
180 zope.testbrowser.browser.LinkNotFoundError
181@@ -30,13 +28,11 @@ Even trying to access the link directly will fail:
182
183 >>> anon_browser.open(
184 ... 'http://answers.launchpad.test/firefox/+faq/7/+edit')
185- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
186 Traceback (most recent call last):
187 ...
188 zope.security.interfaces.Unauthorized: ...
189 >>> user_browser.open(
190 ... 'http://answers.launchpad.test/firefox/+faq/7/+edit')
191- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
192 Traceback (most recent call last):
193 ...
194 zope.security.interfaces.Unauthorized: ...
195diff --git a/lib/lp/answers/stories/project-add-question.txt b/lib/lp/answers/stories/project-add-question.txt
196index eb3703c..737952c 100644
197--- a/lib/lp/answers/stories/project-add-question.txt
198+++ b/lib/lp/answers/stories/project-add-question.txt
199@@ -26,7 +26,6 @@ Project in this case.
200
201 >>> anon_browser.open('http://answers.launchpad.test/mozilla')
202 >>> anon_browser.getLink('Ask a question').click()
203- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
204 Traceback (most recent call last):
205 ...
206 zope.security.interfaces.Unauthorized: ...
207diff --git a/lib/lp/answers/stories/question-add.txt b/lib/lp/answers/stories/question-add.txt
208index e7debb4..b24893c 100644
209--- a/lib/lp/answers/stories/question-add.txt
210+++ b/lib/lp/answers/stories/question-add.txt
211@@ -18,7 +18,6 @@ The user sees an involvement link to ask a question.
212 Asking a new question requires logging in:
213
214 >>> browser.getLink('Ask a question').click()
215- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
216 Traceback (most recent call last):
217 ...
218 zope.security.interfaces.Unauthorized: ...
219diff --git a/lib/lp/answers/stories/question-browse-and-search.txt b/lib/lp/answers/stories/question-browse-and-search.txt
220index cbbfaec..0af0cb3 100644
221--- a/lib/lp/answers/stories/question-browse-and-search.txt
222+++ b/lib/lp/answers/stories/question-browse-and-search.txt
223@@ -44,7 +44,6 @@ For projects that don't have products, the Answers facet is disabled.
224
225 >>> browser.open('http://launchpad.test/aaa')
226 >>> browser.getLink('Answers')
227- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
228 Traceback (most recent call last):
229 ...
230 zope.testbrowser.browser.LinkNotFoundError
231@@ -88,14 +87,12 @@ out.
232 >>> 'Next' in browser.contents
233 True
234 >>> browser.getLink('Next')
235- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
236 Traceback (most recent call last):
237 ..
238 zope.testbrowser.browser.LinkNotFoundError
239 >>> 'Last' in browser.contents
240 True
241 >>> browser.getLink('Last')
242- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
243 Traceback (most recent call last):
244 ..
245 zope.testbrowser.browser.LinkNotFoundError
246@@ -111,14 +108,12 @@ greyed out:
247 >>> 'Previous' in browser.contents
248 True
249 >>> browser.getLink('Previous')
250- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
251 Traceback (most recent call last):
252 ..
253 zope.testbrowser.browser.LinkNotFoundError
254 >>> 'First' in browser.contents
255 True
256 >>> browser.getLink('First')
257- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
258 Traceback (most recent call last):
259 ..
260 zope.testbrowser.browser.LinkNotFoundError
261@@ -386,7 +381,6 @@ They need to login to access that page:
262 ... 'http://launchpad.test/ubuntu/+source/mozilla-firefox/'
263 ... '+questions')
264 >>> anon_browser.getLink('My questions').click()
265- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
266 Traceback (most recent call last):
267 ...
268 zope.security.interfaces.Unauthorized: ...
269@@ -460,7 +454,6 @@ They need to login to access that page:
270
271 >>> anon_browser.open('http://launchpad.test/distros/ubuntu/+questions')
272 >>> anon_browser.getLink('Need attention').click()
273- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
274 Traceback (most recent call last):
275 ...
276 zope.security.interfaces.Unauthorized: ...
277diff --git a/lib/lp/answers/stories/question-edit.txt b/lib/lp/answers/stories/question-edit.txt
278index ef36a05..8aeed0d 100644
279--- a/lib/lp/answers/stories/question-edit.txt
280+++ b/lib/lp/answers/stories/question-edit.txt
281@@ -8,7 +8,6 @@ title and description.
282
283 >>> anon_browser.open('http://launchpad.test/firefox/+question/2')
284 >>> anon_browser.getLink('Edit question').click()
285- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
286 Traceback (most recent call last):
287 ...
288 zope.security.interfaces.Unauthorized: ...
289diff --git a/lib/lp/answers/stories/question-overview.txt b/lib/lp/answers/stories/question-overview.txt
290index 374dc16..54afeb6 100644
291--- a/lib/lp/answers/stories/question-overview.txt
292+++ b/lib/lp/answers/stories/question-overview.txt
293@@ -235,13 +235,11 @@ Asking for a non-existent question or an invalid ID will still raise a
294 404 though:
295
296 >>> browser.open('http://answers.launchpad.test/questions/255')
297- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
298 Traceback (most recent call last):
299 ...
300 zope.publisher.interfaces.NotFound: ...
301
302 >>> browser.open('http://answers.launchpad.test/questions/bad_id')
303- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
304 Traceback (most recent call last):
305 ...
306 zope.publisher.interfaces.NotFound: ...
307@@ -268,14 +266,12 @@ It also works with pages below that URL:
308 But again, an invalid ID still raises a 404:
309
310 >>> browser.open('http://answers.launchpad.test/ubuntu/+question/255')
311- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
312 Traceback (most recent call last):
313 ...
314 zope.publisher.interfaces.NotFound: ...
315
316 >>> browser.open(
317 ... 'http://answers.launchpad.test/ubuntu/+question/bad_id')
318- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
319 Traceback (most recent call last):
320 ...
321 zope.publisher.interfaces.NotFound: ...
322diff --git a/lib/lp/answers/stories/question-reject-and-change-status.txt b/lib/lp/answers/stories/question-reject-and-change-status.txt
323index c7466fd..bdbffe2 100644
324--- a/lib/lp/answers/stories/question-reject-and-change-status.txt
325+++ b/lib/lp/answers/stories/question-reject-and-change-status.txt
326@@ -10,7 +10,6 @@ don't have access to that feature.
327
328 >>> user_browser.open('http://launchpad.test/firefox/+question/2')
329 >>> user_browser.getLink('Reject question')
330- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
331 Traceback (most recent call last):
332 ...
333 zope.testbrowser.browser.LinkNotFoundError
334@@ -20,7 +19,6 @@ error.
335
336 >>> user_browser.open(
337 ... 'http://launchpad.test/firefox/+question/2/+reject')
338- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
339 Traceback (most recent call last):
340 ...
341 zope.security.interfaces.Unauthorized: ...
342@@ -104,7 +102,6 @@ That action isn't available to a non-privileged user:
343
344 >>> browser.open('http://launchpad.test/firefox/+question/2')
345 >>> browser.getLink('Change status')
346- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
347 Traceback (most recent call last):
348 ...
349 zope.testbrowser.browser.LinkNotFoundError
350diff --git a/lib/lp/answers/stories/this-is-a-faq.txt b/lib/lp/answers/stories/this-is-a-faq.txt
351index 3438e03..d382d3b 100644
352--- a/lib/lp/answers/stories/this-is-a-faq.txt
353+++ b/lib/lp/answers/stories/this-is-a-faq.txt
354@@ -209,21 +209,18 @@ Since No Privileges Person isn't an answer contact for the project nor
355 the project owner, they don't have the possibility to create a new FAQ.
356
357 >>> user_browser.getLink('Create a FAQ')
358- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
359 Traceback (most recent call last):
360 ...
361 zope.testbrowser.browser.LinkNotFoundError
362
363 >>> user_browser.getLink('Link to a FAQ').click()
364 >>> user_browser.getLink('create a new FAQ')
365- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
366 Traceback (most recent call last):
367 ...
368 zope.testbrowser.browser.LinkNotFoundError
369
370 >>> user_browser.open(
371 ... 'http://answers.launchpad.test/firefox/+question/2/+createfaq')
372- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
373 Traceback (most recent call last):
374 ...
375 zope.security.interfaces.Unauthorized: ...
376diff --git a/lib/lp/app/doc/batch-navigation.txt b/lib/lp/app/doc/batch-navigation.txt
377index eebef5d..7087dc2 100644
378--- a/lib/lp/app/doc/batch-navigation.txt
379+++ b/lib/lp/app/doc/batch-navigation.txt
380@@ -81,7 +81,6 @@ InvalidBatchSizeError is raised.
381 ... """))
382 >>> request = build_request({"start": "0", "batch": "20"})
383 >>> BatchNavigator(reindeer, request=request )
384- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
385 Traceback (most recent call last):
386 ...
387 lazr.batchnavigator.interfaces.InvalidBatchSizeError: Maximum for "batch" parameter is 5.
388diff --git a/lib/lp/app/doc/displaying-numbers.txt b/lib/lp/app/doc/displaying-numbers.txt
389index fcdd4e0..6da695d 100644
390--- a/lib/lp/app/doc/displaying-numbers.txt
391+++ b/lib/lp/app/doc/displaying-numbers.txt
392@@ -59,7 +59,6 @@ Is the same as:
393 Here's a set of exhaustive examples:
394
395 >>> test_tales('foo/fmt:float', foo=12345.67890)
396- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
397 Traceback (most recent call last):
398 ...
399 zope.location.interfaces.LocationError: 'fmt:float requires a single decimal argument'
400diff --git a/lib/lp/app/doc/launchpadform.txt b/lib/lp/app/doc/launchpadform.txt
401index a42833f..58239fb 100644
402--- a/lib/lp/app/doc/launchpadform.txt
403+++ b/lib/lp/app/doc/launchpadform.txt
404@@ -568,7 +568,6 @@ request:
405 ... 'field.actions.change': 'Change'})
406 >>> view = UnsafeActionTestView(context, request)
407 >>> view.initialize()
408- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
409 Traceback (most recent call last):
410 ...
411 lp.services.webapp.interfaces.UnsafeFormGetSubmissionError: field.actions.change
412diff --git a/lib/lp/app/doc/object-privacy.txt b/lib/lp/app/doc/object-privacy.txt
413index 18c14e5..7f2c46e 100644
414--- a/lib/lp/app/doc/object-privacy.txt
415+++ b/lib/lp/app/doc/object-privacy.txt
416@@ -30,7 +30,6 @@ private.
417
418 >>> question = getUtility(IQuestionSet).get(1)
419 >>> question.private
420- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
421 Traceback (most recent call last):
422 ...
423 zope.security.interfaces.ForbiddenAttribute: ...
424diff --git a/lib/lp/app/doc/tales.txt b/lib/lp/app/doc/tales.txt
425index 0d56ac6..e5d2284 100644
426--- a/lib/lp/app/doc/tales.txt
427+++ b/lib/lp/app/doc/tales.txt
428@@ -1314,7 +1314,6 @@ Everything you can do with 'something/fmt:foo', you should be able to do
429 with 'None/fmt:foo'.
430
431 >>> test_tales('foo/fmt:shorten', foo=None)
432- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
433 Traceback (most recent call last):
434 ...
435 zope.location.interfaces.LocationError: 'you need to traverse a number after fmt:shorten'
436@@ -1417,7 +1416,6 @@ We don't get a ValueError when we use a value that doesn't appear in the
437 DBSchema the item comes from.
438
439 >>> test_tales('deb/enumvalue:CHEESEFISH', deb=udeb)
440- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
441 Traceback (most recent call last):
442 ...
443 zope.location.interfaces.LocationError: 'The enumerated type BinaryPackageFormat does not have a value CHEESEFISH.'
444@@ -1439,7 +1437,6 @@ dbschema items too:
445 False
446
447 >>> test_tales('deb/enumvalue:CHEESEFISH', deb=wrapped_deb)
448- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
449 Traceback (most recent call last):
450 ...
451 zope.location.interfaces.LocationError: 'The enumerated type BinaryPackageFormat does not have a value CHEESEFISH.'
452diff --git a/lib/lp/app/stories/basics/marketing.txt b/lib/lp/app/stories/basics/marketing.txt
453index eeb08b6..4ccc41a 100644
454--- a/lib/lp/app/stories/basics/marketing.txt
455+++ b/lib/lp/app/stories/basics/marketing.txt
456@@ -45,7 +45,6 @@ But the source directory isn't available:
457
458 >>> browser.open(
459 ... 'http://launchpad.test/+tour/source/code-hosting_SVG.svg')
460- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
461 Traceback (most recent call last):
462 ...
463 zope.publisher.interfaces.NotFound: ...
464diff --git a/lib/lp/app/stories/basics/max-batch-size.txt b/lib/lp/app/stories/basics/max-batch-size.txt
465index ce3d44b..71c9635 100644
466--- a/lib/lp/app/stories/basics/max-batch-size.txt
467+++ b/lib/lp/app/stories/basics/max-batch-size.txt
468@@ -8,7 +8,6 @@ large and what is the current maximum.
469
470 >>> anon_browser.handleErrors = True
471 >>> anon_browser.open('http://launchpad.test/projects/+all?start=0&batch=1000')
472- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
473 Traceback (most recent call last):
474 ...
475 urllib.error.HTTPError: HTTP Error 400: Bad Request
476diff --git a/lib/lp/app/stories/basics/xx-developerexceptions.txt b/lib/lp/app/stories/basics/xx-developerexceptions.txt
477index b8373f8..42a794d 100644
478--- a/lib/lp/app/stories/basics/xx-developerexceptions.txt
479+++ b/lib/lp/app/stories/basics/xx-developerexceptions.txt
480@@ -106,7 +106,6 @@ want to see tracebacks instead of error pages.
481 >>> print(http(r"""
482 ... GET /whatever HTTP/1.1
483 ... """, handle_errors=False))
484- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
485 Traceback (most recent call last):
486 ...
487 zope.publisher.interfaces.NotFound: ...
488diff --git a/lib/lp/app/stories/basics/xx-launchpad-statistics.txt b/lib/lp/app/stories/basics/xx-launchpad-statistics.txt
489index f7185c7..c81ca7a 100644
490--- a/lib/lp/app/stories/basics/xx-launchpad-statistics.txt
491+++ b/lib/lp/app/stories/basics/xx-launchpad-statistics.txt
492@@ -3,7 +3,6 @@ We also have the special Launchpad Statistics summary page. This is only
493 acessible to launchpad Admins:
494
495 >>> user_browser.open('http://launchpad.test/+statistics')
496- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
497 Traceback (most recent call last):
498 ...
499 zope.security.interfaces.Unauthorized: ...
500diff --git a/lib/lp/app/stories/basics/xx-offsite-form-post.txt b/lib/lp/app/stories/basics/xx-offsite-form-post.txt
501index f00a78e..12d4127 100644
502--- a/lib/lp/app/stories/basics/xx-offsite-form-post.txt
503+++ b/lib/lp/app/stories/basics/xx-offsite-form-post.txt
504@@ -44,7 +44,6 @@ If we try to create a new team with with the referrer set to
505 >>> browser.getControl('Name', index=0).value = 'team1'
506 >>> browser.getControl('Display Name').value = 'Team 1'
507 >>> browser.getControl('Create').click()
508- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
509 Traceback (most recent call last):
510 ...
511 lp.services.webapp.interfaces.OffsiteFormPostError: http://evil.people.com/
512@@ -57,7 +56,6 @@ Similarly, posting with a garbage referer fails:
513 >>> browser.getControl('Name', index=0).value = 'team2'
514 >>> browser.getControl('Display Name').value = 'Team 2'
515 >>> browser.getControl('Create').click()
516- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
517 Traceback (most recent call last):
518 ...
519 lp.services.webapp.interfaces.OffsiteFormPostError: not a url
520@@ -70,7 +68,6 @@ It also fails if there is no referrer.
521 >>> browser.getControl('Name', index=0).value = 'team3'
522 >>> browser.getControl('Display Name').value = 'Team 3'
523 >>> browser.getControl('Create').click()
524- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
525 Traceback (most recent call last):
526 ...
527 lp.services.webapp.interfaces.NoReferrerError: No value for REFERER header
528@@ -84,7 +81,6 @@ present a hopefully helpful error message.
529 >>> browser.getControl('Name', index=0).value = 'team3'
530 >>> browser.getControl('Display Name').value = 'Team 3'
531 >>> browser.getControl('Create').click()
532- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
533 Traceback (most recent call last):
534 ...
535 urllib.error.HTTPError: ...
536@@ -117,7 +113,6 @@ exception for +access-token, it would result in an
537 OffsiteFormPostError.
538
539 >>> browser.post('http://launchpad.test/+access-token', 'x=1')
540- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
541 Traceback (most recent call last):
542 ...
543 urllib.error.HTTPError: HTTP Error 401: Unauthorized
544@@ -154,14 +149,12 @@ a referrerless POST request to the browser-accessible API.
545
546 >>> browser.post(
547 ... 'http://launchpad.test/api/devel/people', 'ws.op=foo&x=1')
548- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
549 Traceback (most recent call last):
550 ...
551 lp.services.webapp.interfaces.OffsiteFormPostError: http://evil.people.com/
552
553 >>> no_referrer_browser.post(
554 ... 'http://launchpad.test/api/devel/people', 'ws.op=foo&x=1')
555- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
556 Traceback (most recent call last):
557 ...
558 lp.services.webapp.interfaces.NoReferrerError: No value for REFERER header
559@@ -172,7 +165,6 @@ though it were signed with OAuth.
560 >>> browser.post(
561 ... 'http://launchpad.test/',
562 ... 'oauth_consumer_key=foo&oauth_token=bar')
563- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
564 Traceback (most recent call last):
565 ...
566 lp.services.webapp.interfaces.OffsiteFormPostError: http://evil.people.com/
567@@ -180,7 +172,6 @@ though it were signed with OAuth.
568 >>> no_referrer_browser.post(
569 ... 'http://launchpad.test/',
570 ... 'oauth_consumer_key=foo&oauth_token=bar')
571- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
572 Traceback (most recent call last):
573 ...
574 lp.services.webapp.interfaces.NoReferrerError: No value for REFERER header
575@@ -200,7 +191,6 @@ But the browser-accessible API ignores OAuth credentials altogether.
576
577 >>> browser.post(
578 ... 'http://launchpad.test/api/devel/projects', sig)
579- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
580 Traceback (most recent call last):
581 ...
582 lp.services.webapp.interfaces.OffsiteFormPostError: http://evil.people.com/
583@@ -209,7 +199,6 @@ If you go through the 'api' vhost, the signed request will be
584 processed despite the bogus referrer, but...
585
586 >>> browser.post('http://api.launchpad.test/devel/projects', sig)
587- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
588 Traceback (most recent call last):
589 ...
590 storm.exceptions.NoneError: None isn't acceptable as a value for Product...
591diff --git a/lib/lp/app/stories/basics/xx-opstats.txt b/lib/lp/app/stories/basics/xx-opstats.txt
592index 32002b3..de80e59 100644
593--- a/lib/lp/app/stories/basics/xx-opstats.txt
594+++ b/lib/lp/app/stories/basics/xx-opstats.txt
595@@ -352,7 +352,6 @@ But our database connections are broken.
596 >>> from lp.services.database.interfaces import IStore
597 >>> from lp.registry.model.person import Person
598 >>> IStore(Person).find(Person, name='janitor')
599- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
600 Traceback (most recent call last):
601 ...
602 storm.exceptions.DisconnectionError: FATAL: database "nonexistant" does not exist
603diff --git a/lib/lp/app/stories/folder.txt b/lib/lp/app/stories/folder.txt
604index 8124932..8bde596 100644
605--- a/lib/lp/app/stories/folder.txt
606+++ b/lib/lp/app/stories/folder.txt
607@@ -67,7 +67,7 @@ Requesting a directory raises a NotFound.
608
609 >>> view = MyFolder(object(), FakeRequest(version="devel"))
610 >>> view = view.publishTraverse(view.request, 'a_dir')
611- >>> view() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
612+ >>> view()
613 Traceback (most recent call last):
614 ...
615 zope.publisher.interfaces.NotFound: ...
616@@ -78,7 +78,7 @@ this)
617 >>> view = MyFolder(object(), FakeRequest(version="devel"))
618 >>> view = view.publishTraverse(view.request, 'a_dir')
619 >>> view = view.publishTraverse(view.request, 'other.txt')
620- >>> view() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
621+ >>> view()
622 Traceback (most recent call last):
623 ...
624 zope.publisher.interfaces.NotFound: ...
625@@ -86,7 +86,7 @@ this)
626 Not requesting any file, also raises NotFound.
627
628 >>> view = MyFolder(object(), FakeRequest(version="devel"))
629- >>> view() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
630+ >>> view()
631 Traceback (most recent call last):
632 ...
633 zope.publisher.interfaces.NotFound: ...
634@@ -95,7 +95,7 @@ As requesting a non-existent file.
635
636 >>> view = MyFolder(object(), FakeRequest(version="devel"))
637 >>> view = view.publishTraverse(view.request, 'image2')
638- >>> view() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
639+ >>> view()
640 Traceback (most recent call last):
641 ...
642 zope.publisher.interfaces.NotFound: ...
643@@ -176,7 +176,7 @@ But traversing to the subdirectory itself will raise a NotFound.
644
645 >>> view = MyTree(object(), FakeRequest(version="devel"))
646 >>> view = view.publishTraverse(view.request, 'public')
647- >>> view() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
648+ >>> view()
649 Traceback (most recent call last):
650 ...
651 zope.publisher.interfaces.NotFound: ...
652@@ -186,7 +186,7 @@ Trying to request a non-existent file, will also raise a NotFound.
653 >>> view = MyTree(object(), FakeRequest(version="devel"))
654 >>> view = view.publishTraverse(view.request, 'public')
655 >>> view = view.publishTraverse(view.request, 'nosuchfile.txt')
656- >>> view() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
657+ >>> view()
658 Traceback (most recent call last):
659 ...
660 zope.publisher.interfaces.NotFound: ...
661@@ -199,7 +199,7 @@ NotFound.
662 >>> view = view.publishTraverse(view.request, 'subdir1')
663 >>> view = view.publishTraverse(view.request, 'test1.txt')
664 >>> view = view.publishTraverse(view.request, 'nosuchpath')
665- >>> view() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
666+ >>> view()
667 Traceback (most recent call last):
668 ...
669 zope.publisher.interfaces.NotFound: ...
670diff --git a/lib/lp/app/stories/form/xx-form-layout.txt b/lib/lp/app/stories/form/xx-form-layout.txt
671index c9b09ea..478c97e 100644
672--- a/lib/lp/app/stories/form/xx-form-layout.txt
673+++ b/lib/lp/app/stories/form/xx-form-layout.txt
674@@ -98,7 +98,6 @@ display forms.
675
676 >>> cprov_browser.open(
677 ... 'http://launchpad.test/~cprov/+editsshkeys/++form++')
678- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
679 Traceback (most recent call last):
680 ...
681 zope.publisher.interfaces.NotFound: ...
682@@ -107,7 +106,6 @@ Nor will it allow unauthorized access to data that it should not present.
683
684 >>> browser.open(
685 ... 'http://launchpad.test/~cprov/+archive/ppa/+edit/++form++')
686- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
687 Traceback (most recent call last):
688 ...
689 zope.security.interfaces.Unauthorized: ...
690diff --git a/lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt b/lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt
691index 060a023..8e54d4c 100644
692--- a/lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt
693+++ b/lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt
694@@ -52,7 +52,6 @@ Adding a featured project
695 Anonymous users cannot see the link to administer featured projects:
696
697 >>> anon_browser.getLink(MANAGE_LINK)
698- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
699 Traceback (most recent call last):
700 ...
701 zope.testbrowser.browser.LinkNotFoundError
702@@ -61,7 +60,6 @@ A user without privileges cannot see the administration link, either:
703
704 >>> user_browser.open('http://launchpad.test/')
705 >>> user_browser.getLink(MANAGE_LINK)
706- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
707 Traceback (most recent call last):
708 ...
709 zope.testbrowser.browser.LinkNotFoundError
710@@ -76,7 +74,6 @@ But Foo Bar, who is an administrator, can see the management link:
711 No Privilege persons is denied access to this page:
712
713 >>> user_browser.open('http://launchpad.test/+featuredprojects')
714- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
715 Traceback (most recent call last):
716 ...
717 zope.security.interfaces.Unauthorized: ...
718diff --git a/lib/lp/app/validators/email.py b/lib/lp/app/validators/email.py
719index 04599f8..8f57276 100644
720--- a/lib/lp/app/validators/email.py
721+++ b/lib/lp/app/validators/email.py
722@@ -77,11 +77,10 @@ def email_validator(emailaddr):
723 >>> email_validator('bugs@example.com')
724 True
725 >>> email_validator('not-valid')
726- ... # noqa
727- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
728 Traceback (most recent call last):
729 ...
730- lp.app.validators.LaunchpadValidationError: Invalid email &#x27;not-valid&#x27;.
731+ lp.app.validators.LaunchpadValidationError: Invalid email
732+ &#x27;not-valid&#x27;.
733 """
734 if not valid_email(emailaddr):
735 raise LaunchpadValidationError(_(
736diff --git a/lib/lp/app/validators/tests/validation.txt b/lib/lp/app/validators/tests/validation.txt
737index a8d4a8e..b66c031 100644
738--- a/lib/lp/app/validators/tests/validation.txt
739+++ b/lib/lp/app/validators/tests/validation.txt
740@@ -38,13 +38,11 @@ fail for that specific series.
741
742 >>> nomination = bug.addNomination(no_priv, firefox.series[0])
743 >>> can_be_nominated_for_series(firefox.series)
744- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
745 Traceback (most recent call last):
746 ...
747 lp.app.validators.LaunchpadValidationError: ...
748
749 >>> can_be_nominated_for_series([firefox.series[0]])
750- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
751 Traceback (most recent call last):
752 ...
753 lp.app.validators.LaunchpadValidationError: ...
754@@ -62,7 +60,6 @@ fail:
755 ... 'foo.bar@canonical.com')
756 >>> nomination.approve(foo_bar)
757 >>> can_be_nominated_for_series([firefox.series[0]])
758- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
759 Traceback (most recent call last):
760 ...
761 lp.app.validators.LaunchpadValidationError: ...
762@@ -73,7 +70,6 @@ nominated.
763 >>> trunk_nomination = bug.addNomination(
764 ... no_priv, firefox.series[1])
765 >>> can_be_nominated_for_series(firefox.series)
766- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
767 Traceback (most recent call last):
768 ...
769 lp.app.validators.LaunchpadValidationError: This bug has already been nominated for these series: 1.0, Trunk
770@@ -115,7 +111,6 @@ Or a name that is not already in use.
771 But you can't use Mark's name, of course. ;)
772
773 >>> field.validate(u'mark')
774- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
775 Traceback (most recent call last):
776 ...
777 lp.app.validators.LaunchpadValidationError: ...mark is already in use by another person or team...
778diff --git a/lib/lp/app/validators/url.py b/lib/lp/app/validators/url.py
779index 8df0a18..8dcc05b 100644
780--- a/lib/lp/app/validators/url.py
781+++ b/lib/lp/app/validators/url.py
782@@ -152,7 +152,6 @@ def valid_webref(web_ref):
783 >>> valid_webref('sftp://example.com//absolute/path/maybe')
784 True
785 >>> valid_webref('other://example.com/moo')
786- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
787 Traceback (most recent call last):
788 ...
789 lp.app.validators.LaunchpadValidationError: ...
790diff --git a/lib/lp/app/widgets/date.py b/lib/lp/app/widgets/date.py
791index c24da8f..4d58907 100644
792--- a/lib/lp/app/widgets/date.py
793+++ b/lib/lp/app/widgets/date.py
794@@ -85,12 +85,11 @@ class DateTimeWidget(TextWidget):
795 >>> widget.from_date = datetime(2006, 5, 23,
796 ... tzinfo=pytz.timezone('UTC'))
797 >>> print(widget.getInputValue())
798- ... # noqa
799 ... # doctest: +NORMALIZE_WHITESPACE,+ELLIPSIS
800- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
801 Traceback (most recent call last):
802 ...
803- zope.formlib.interfaces.WidgetInputError: (...Please pick a date after 2006-05-22 17:00:00...)
804+ zope.formlib.interfaces.WidgetInputError:
805+ (...Please pick a date after 2006-05-22 17:00:00...)
806
807 If the date provided is greater than from_date then the widget works as
808 expected.
809@@ -104,12 +103,11 @@ class DateTimeWidget(TextWidget):
810 >>> widget.to_date = datetime(2008, 1, 26,
811 ... tzinfo=pytz.timezone('UTC'))
812 >>> print(widget.getInputValue())
813- ... # noqa
814 ... # doctest: +NORMALIZE_WHITESPACE,+ELLIPSIS
815- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
816 Traceback (most recent call last):
817 ...
818- zope.formlib.interfaces.WidgetInputError: (...Please pick a date before 2008-01-25 16:00:00...)
819+ zope.formlib.interfaces.WidgetInputError:
820+ (...Please pick a date before 2008-01-25 16:00:00...)
821
822 A datetime picker can be disabled initially:
823
824@@ -392,7 +390,6 @@ class DateTimeWidget(TextWidget):
825
826 >>> print(widget._parseInput('not a date'))
827 ... # doctest: +NORMALIZE_WHITESPACE,+ELLIPSIS
828- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
829 Traceback (most recent call last):
830 ...
831 zope.formlib.interfaces.ConversionError: ('Invalid date value', ...)
832@@ -555,7 +552,6 @@ class DateWidget(DateTimeWidget):
833
834 >>> print(widget._toFieldValue('not a date'))
835 ... # doctest: +NORMALIZE_WHITESPACE,+ELLIPSIS
836- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
837 Traceback (most recent call last):
838 ...
839 zope.formlib.interfaces.ConversionError: ('Invalid date value', ...)
840diff --git a/lib/lp/app/widgets/doc/announcement-date-widget.txt b/lib/lp/app/widgets/doc/announcement-date-widget.txt
841index b33fcaa..a50a431 100644
842--- a/lib/lp/app/widgets/doc/announcement-date-widget.txt
843+++ b/lib/lp/app/widgets/doc/announcement-date-widget.txt
844@@ -57,7 +57,6 @@ If you choose to publish immediately, the date field must be empty.
845 >>> action_widget.request.form[action_widget.name] = 'immediately'
846 >>> date_widget.request.form[date_widget.name] = '2005-07-23'
847 >>> print(widget.getInputValue())
848- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
849 Traceback (most recent call last):
850 ...
851 zope.formlib.interfaces.WidgetInputError: ('field.foo', ...'Foo', LaunchpadValidationError(...'Please do not provide a date if you want to publish immediately.'))
852@@ -68,7 +67,6 @@ must be filled.
853 >>> action_widget.request.form[action_widget.name] = 'specific'
854 >>> date_widget.request.form[date_widget.name] = ''
855 >>> print(widget.getInputValue())
856- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
857 Traceback (most recent call last):
858 ...
859 zope.formlib.interfaces.WidgetInputError: ('field.foo', ...'Foo', LaunchpadValidationError(...'Please provide a publication date.'))
860diff --git a/lib/lp/app/widgets/doc/image-widget.txt b/lib/lp/app/widgets/doc/image-widget.txt
861index 0d68f3b..35bc4ab 100644
862--- a/lib/lp/app/widgets/doc/image-widget.txt
863+++ b/lib/lp/app/widgets/doc/image-widget.txt
864@@ -266,7 +266,7 @@ dimensions smaller than person_mugshot.dimensions, it must be rejected.
865 >>> form = {'field.mugshot.action': 'change', 'field.mugshot.image': logo}
866 >>> widget = ImageChangeWidget(
867 ... person_mugshot, LaunchpadTestRequest(form=form), edit_style)
868- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
869+ >>> widget.getInputValue()
870 Traceback (most recent call last):
871 ...
872 zope.formlib.interfaces.WidgetInputError: ('field.mugshot', ...'Mugshot', LaunchpadValidationError(...'\nThis image is not exactly 192x192\npixels in size.'))
873@@ -310,7 +310,7 @@ image, we'll get a validation error.
874 >>> _ = mugshot.seek(0)
875 >>> widget = ImageChangeWidget(
876 ... person_mugshot, LaunchpadTestRequest(form=form), edit_style)
877- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
878+ >>> widget.getInputValue()
879 Traceback (most recent call last):
880 ...
881 zope.formlib.interfaces.WidgetInputError: ('field.mugshot', ...'Mugshot', LaunchpadValidationError(...'\nThis image exceeds the maximum allowed size in bytes.'))
882@@ -323,7 +323,7 @@ the maximum we allow.
883 >>> _ = mugshot.seek(0)
884 >>> widget = ImageChangeWidget(
885 ... person_mugshot, LaunchpadTestRequest(form=form), edit_style)
886- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
887+ >>> widget.getInputValue()
888 Traceback (most recent call last):
889 ...
890 zope.formlib.interfaces.WidgetInputError: ('field.mugshot', ...'Mugshot', LaunchpadValidationError(...'\nThis image is not exactly 191x193\npixels in size.'))
891@@ -332,7 +332,7 @@ the maximum we allow.
892 >>> _ = mugshot.seek(0)
893 >>> widget = ImageChangeWidget(
894 ... person_mugshot, LaunchpadTestRequest(form=form), edit_style)
895- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
896+ >>> widget.getInputValue()
897 Traceback (most recent call last):
898 ...
899 zope.formlib.interfaces.WidgetInputError: ('field.mugshot', ...'Mugshot', LaunchpadValidationError(...'\nThis image is not exactly 193x191\npixels in size.'))
900@@ -343,7 +343,7 @@ a file to be uploaded.
901 >>> form = {'field.mugshot.action': 'change', 'field.mugshot.image': ''}
902 >>> widget = ImageChangeWidget(
903 ... person_mugshot, LaunchpadTestRequest(form=form), edit_style)
904- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
905+ >>> widget.getInputValue()
906 Traceback (most recent call last):
907 ...
908 zope.formlib.interfaces.WidgetInputError: ('field.mugshot', ...'Mugshot', LaunchpadValidationError(...'Please specify the image you want to use.'))
909@@ -365,7 +365,7 @@ by setting the exact_dimensions attribute of the field to False:
910 ... 'field.mugshot.image': mugshot}
911 >>> widget = ImageChangeWidget(
912 ... person_mugshot, LaunchpadTestRequest(form=form), edit_style)
913- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
914+ >>> widget.getInputValue()
915 Traceback (most recent call last):
916 ...
917 zope.formlib.interfaces.WidgetInputError: ('field.mugshot', ...'Mugshot', LaunchpadValidationError(...'\nThis image is larger than 64x64\npixels in size.'))
918diff --git a/lib/lp/app/widgets/doc/project-scope-widget.txt b/lib/lp/app/widgets/doc/project-scope-widget.txt
919index e0bf442..1f11593 100644
920--- a/lib/lp/app/widgets/doc/project-scope-widget.txt
921+++ b/lib/lp/app/widgets/doc/project-scope-widget.txt
922@@ -52,7 +52,7 @@ If the widget is required, getInputValue() raises UnexpectedFormData if
923 there is no input.
924
925 >>> widget.required = True
926- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
927+ >>> widget.getInputValue()
928 Traceback (most recent call last):
929 ...
930 lp.app.errors.UnexpectedFormData: No valid option was selected.
931@@ -120,7 +120,6 @@ raised:
932 >>> widget.hasInput()
933 True
934 >>> selected_scope = widget.getInputValue()
935- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
936 Traceback (most recent call last):
937 ...
938 zope.formlib.interfaces.WidgetInputError: ('field.scope', ...'', LaunchpadValidationError(...'There is no project named &#x27;invalid&#x27; registered in Launchpad'))
939@@ -139,7 +138,6 @@ If no project name is given at all, a widget error is also raised:
940 >>> widget.hasInput()
941 True
942 >>> selected_scope = widget.getInputValue()
943- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
944 Traceback (most recent call last):
945 ...
946 zope.formlib.interfaces.WidgetInputError: ('field.scope', ...'', LaunchpadValidationError(...'Please enter a project name'))
947@@ -154,7 +152,6 @@ If no project name is given at all, a widget error is also raised:
948 >>> widget.hasInput()
949 True
950 >>> selected_scope = widget.getInputValue()
951- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
952 Traceback (most recent call last):
953 ...
954 zope.formlib.interfaces.WidgetInputError: ('field.scope', ...'', LaunchpadValidationError(...'Please enter a project name'))
955diff --git a/lib/lp/app/widgets/doc/stripped-text-widget.txt b/lib/lp/app/widgets/doc/stripped-text-widget.txt
956index 7648db0..7c393da 100644
957--- a/lib/lp/app/widgets/doc/stripped-text-widget.txt
958+++ b/lib/lp/app/widgets/doc/stripped-text-widget.txt
959@@ -60,7 +60,7 @@ provided.
960 ... __name__=six.ensure_str('field'), title=u'Title', required=True)
961 >>> request = LaunchpadTestRequest(form={'field.field':' \n '})
962 >>> widget = StrippedTextWidget(required_field, request)
963- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
964+ >>> widget.getInputValue()
965 Traceback (most recent call last):
966 ...
967 zope.formlib.interfaces.WidgetInputError: ('field', ...'Title', RequiredMissing('field'))
968diff --git a/lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt b/lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt
969index 5888dee..dea969a 100644
970--- a/lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt
971+++ b/lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt
972@@ -41,7 +41,6 @@ contains more than one argument.
973 >>> Zope3WidgetsUseIBrowserFormNGMonkeyPatch.install()
974
975 >>> int_widget.getInputValue()
976- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
977 Traceback (most recent call last):
978 ...
979 lp.app.errors.UnexpectedFormData: ...
980@@ -51,7 +50,6 @@ contains more than one argument.
981 ... form={'field.text': ['two', 'strings']})
982 >>> text_widget = TextWidget(text_field, request)
983 >>> text_widget.getInputValue()
984- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
985 Traceback (most recent call last):
986 ...
987 lp.app.errors.UnexpectedFormData: ...
988@@ -63,7 +61,6 @@ with the Launchpad widgets extending it:
989
990 >>> stripped_text_widget = StrippedTextWidget(text_field, request)
991 >>> stripped_text_widget.getInputValue()
992- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
993 Traceback (most recent call last):
994 ...
995 lp.app.errors.UnexpectedFormData: ...
996diff --git a/lib/lp/archivepublisher/tests/archive-signing.txt b/lib/lp/archivepublisher/tests/archive-signing.txt
997index d2efc4f..266b42b 100644
998--- a/lib/lp/archivepublisher/tests/archive-signing.txt
999+++ b/lib/lp/archivepublisher/tests/archive-signing.txt
1000@@ -457,7 +457,6 @@ have a 'signing_key' set, it raises an error.
1001 >>> del get_property_cache(cprov.archive).signing_key
1002
1003 >>> archive_signing_key.signRepository(test_suite)
1004- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1005 Traceback (most recent call last):
1006 ...
1007 lp.archivepublisher.interfaces.archivegpgsigningkey.CannotSignArchive: No signing key available for PPA for Celso Providelo
1008diff --git a/lib/lp/archiveuploader/tests/nascentupload-announcements.txt b/lib/lp/archiveuploader/tests/nascentupload-announcements.txt
1009index 9f7c2f9..fc12cfd 100644
1010--- a/lib/lp/archiveuploader/tests/nascentupload-announcements.txt
1011+++ b/lib/lp/archiveuploader/tests/nascentupload-announcements.txt
1012@@ -754,7 +754,7 @@ And then try to upload using the changes file with the malformed name.
1013
1014 >>> bar_src = NascentUpload.from_changesfile_path(
1015 ... copyp, sync_policy, DevNullLogger())
1016- >>> bar_src.process() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1017+ >>> bar_src.process()
1018 Traceback (most recent call last):
1019 ...
1020 lp.archiveuploader.nascentupload.EarlyReturnUploadError: An error occurred that prevented further processing.
1021diff --git a/lib/lp/archiveuploader/tests/nascentupload-epoch-handling.txt b/lib/lp/archiveuploader/tests/nascentupload-epoch-handling.txt
1022index 45190aa..cb4c2ef 100644
1023--- a/lib/lp/archiveuploader/tests/nascentupload-epoch-handling.txt
1024+++ b/lib/lp/archiveuploader/tests/nascentupload-epoch-handling.txt
1025@@ -151,7 +151,6 @@ Published the 'non-epoched' bar source version as the base package:
1026 When publishing the 'epoched' bar source the collision is detected:
1027
1028 >>> bar_src_queue_epoch.realiseUpload()
1029- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1030 Traceback (most recent call last):
1031 ...
1032 lp.soyuz.interfaces.queue.QueueInconsistentStateError: bar_1.0-1.diff.gz is already published in archive for hoary
1033@@ -170,7 +169,6 @@ containing a orig file with diferent contents than the one already
1034 published in 'non-epoched' version:
1035
1036 >>> bar_src_queue_epoch2.realiseUpload()
1037- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1038 Traceback (most recent call last):
1039 ...
1040 lp.soyuz.interfaces.queue.QueueInconsistentStateError: bar_1.0.orig.tar.gz is already published in archive for hoary with a different SHA1 hash (e918d6f5ec2184ae1d795a130da36c9a82c4beaf != 73a04163fee97fd2257ab266bd48f1d3d528e012)
1041diff --git a/lib/lp/archiveuploader/tests/nascentupload.txt b/lib/lp/archiveuploader/tests/nascentupload.txt
1042index 20fb5f1..30272a4 100644
1043--- a/lib/lp/archiveuploader/tests/nascentupload.txt
1044+++ b/lib/lp/archiveuploader/tests/nascentupload.txt
1045@@ -54,7 +54,7 @@ on that.
1046
1047 >>> nonexistent = NascentUpload.from_changesfile_path(
1048 ... datadir("DOES-NOT-EXIST"), buildd_policy, FakeLogger())
1049- >>> nonexistent.process() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1050+ >>> nonexistent.process()
1051 Traceback (most recent call last):
1052 ...
1053 lp.archiveuploader.nascentupload.EarlyReturnUploadError: An error occurred that prevented further processing.
1054diff --git a/lib/lp/archiveuploader/tests/nascentuploadfile.txt b/lib/lp/archiveuploader/tests/nascentuploadfile.txt
1055index 60ea018..0747315 100644
1056--- a/lib/lp/archiveuploader/tests/nascentuploadfile.txt
1057+++ b/lib/lp/archiveuploader/tests/nascentuploadfile.txt
1058@@ -44,7 +44,6 @@ Construct the base object with just enough data to do the check:
1059 The filename tries to use an epoch in an invalid way:
1060
1061 >>> upload_file.checkNameIsTaintFree()
1062- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1063 Traceback (most recent call last):
1064 ...
1065 lp.archiveuploader.utils.UploadError: Invalid character(s) in filename: 'package-1.1.2-3:0ubuntu4'.
1066@@ -263,7 +262,6 @@ Launchpad:
1067 If the address is unparsable, we get an error.
1068
1069 >>> sig_file.parseAddress("Cannot Parse Me <FOOO>")
1070- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1071 Traceback (most recent call last):
1072 ...
1073 lp.archiveuploader.utils.UploadError: Cannot Parse Me <FOOO>: no @ found in email address part.
1074diff --git a/lib/lp/archiveuploader/tests/upload-path-parsing.txt b/lib/lp/archiveuploader/tests/upload-path-parsing.txt
1075index c4c998d..41a834e 100644
1076--- a/lib/lp/archiveuploader/tests/upload-path-parsing.txt
1077+++ b/lib/lp/archiveuploader/tests/upload-path-parsing.txt
1078@@ -48,7 +48,6 @@ If such distribution doesn't exist, parse_upload_path() raises
1079 `UploadPathError`.
1080
1081 >>> check_upload('does-not-exist')
1082- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1083 Traceback (most recent call last):
1084 ...
1085 lp.archiveuploader.uploadprocessor.UploadPathError: Could not find distribution 'does-not-exist'.
1086@@ -70,7 +69,6 @@ Again, if the given suite name can not be found an `UploadPathError`
1087 is raised.
1088
1089 >>> check_upload('debian/imaginary')
1090- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1091 Traceback (most recent call last):
1092 ...
1093 lp.archiveuploader.uploadprocessor.UploadPathError: Could not find suite 'imaginary'.
1094@@ -104,13 +102,11 @@ up as a Person in Launchpad.
1095 Suite: None
1096
1097 >>> check_upload('~does-not-exist/ubuntu/ppa')
1098- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1099 Traceback (most recent call last):
1100 ...
1101 lp.archiveuploader.uploadprocessor.PPAUploadPathError: Could not find person or team named 'does-not-exist'.
1102
1103 >>> check_upload('~cprov/notbuntu/ppa')
1104- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1105 Traceback (most recent call last):
1106 ...
1107 lp.archiveuploader.uploadprocessor.PPAUploadPathError: Could not find distribution 'notbuntu'.
1108@@ -148,7 +144,6 @@ valid. It's also supported for uploads to the deprecated paths.
1109 Suite: warty-backports
1110
1111 >>> check_upload('~cprov/ppa/ubuntu/boing')
1112- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1113 Traceback (most recent call last):
1114 ...
1115 lp.archiveuploader.uploadprocessor.PPAUploadPathError: Could not find suite 'boing'.
1116@@ -164,13 +159,11 @@ an error.
1117 >>> transaction.commit()
1118
1119 >>> check_upload('~cprov/ubuntu/ppa')
1120- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1121 Traceback (most recent call last):
1122 ...
1123 lp.archiveuploader.uploadprocessor.PPAUploadPathError: PPA for Celso Providelo is disabled.
1124
1125 >>> check_upload('~cprov/ppa/ubuntu')
1126- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1127 Traceback (most recent call last):
1128 ...
1129 lp.archiveuploader.uploadprocessor.PPAUploadPathError: PPA for Celso Providelo is disabled.
1130@@ -178,13 +171,11 @@ an error.
1131 Uploading to named PPA that does not exist fails.
1132
1133 >>> check_upload('~cprov/ubuntu/beta')
1134- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1135 Traceback (most recent call last):
1136 ...
1137 lp.archiveuploader.uploadprocessor.PPAUploadPathError: Could not find a PPA owned by 'cprov' for 'ubuntu' named 'beta'.
1138
1139 >>> check_upload('~cprov/beta/ubuntu')
1140- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1141 Traceback (most recent call last):
1142 ...
1143 lp.archiveuploader.uploadprocessor.PPAUploadPathError: Could not find a PPA owned by 'cprov' for 'ubuntu' named 'beta'.
1144@@ -216,7 +207,6 @@ identifies and warns users accordingly.
1145 An extra path part that cannot be processed for distribution uploads.
1146
1147 >>> check_upload('ubuntu/warty/ding-dong')
1148- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1149 Traceback (most recent call last):
1150 ...
1151 lp.archiveuploader.uploadprocessor.UploadPathError: Path format mismatch.
1152@@ -225,7 +215,6 @@ A distribution specific uploads starting with '~' as if it was a
1153 person name. Note that users can't be named like distribution anyways.
1154
1155 >>> check_upload('~ubuntu')
1156- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1157 Traceback (most recent call last):
1158 ...
1159 lp.archiveuploader.uploadprocessor.UploadPathError: Path format mismatch.
1160@@ -233,7 +222,6 @@ person name. Note that users can't be named like distribution anyways.
1161 An extra path part that cannot be processed for PPA uploads.
1162
1163 >>> check_upload('~cprov/ubuntu/ppa/warty/ding-dong')
1164- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1165 Traceback (most recent call last):
1166 ...
1167 lp.archiveuploader.uploadprocessor.UploadPathError: Path format mismatch.
1168@@ -241,7 +229,6 @@ An extra path part that cannot be processed for PPA uploads.
1169 A PPA upload missing '~':
1170
1171 >>> check_upload('cprov/ubuntu/ppa')
1172- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1173 Traceback (most recent call last):
1174 ...
1175 lp.archiveuploader.uploadprocessor.UploadPathError: Path format mismatch.
1176@@ -249,7 +236,6 @@ A PPA upload missing '~':
1177 A old-style PPA upload missing '~':
1178
1179 >>> check_upload('cprov/ubuntu')
1180- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1181 Traceback (most recent call last):
1182 ...
1183 lp.archiveuploader.uploadprocessor.UploadPathError: Could not find distribution 'cprov'.
1184@@ -257,7 +243,6 @@ A old-style PPA upload missing '~':
1185 An old-style named PPA upload missing '~'.
1186
1187 >>> check_upload('cprov/ppa/ubuntu')
1188- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1189 Traceback (most recent call last):
1190 ...
1191 lp.archiveuploader.uploadprocessor.UploadPathError: Path format mismatch.
1192@@ -301,7 +286,6 @@ In the case where an archive cannot be found an 'UploadPathError' exception
1193 is raised.
1194
1195 >>> check_upload('1234567890/ubuntu')
1196- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1197 Traceback (most recent call last):
1198 ...
1199 lp.archiveuploader.uploadprocessor.UploadPathError: Could not find archive with id=1234567890.
1200diff --git a/lib/lp/blueprints/doc/specgraph.txt b/lib/lp/blueprints/doc/specgraph.txt
1201index ad3114e..4e2f985 100644
1202--- a/lib/lp/blueprints/doc/specgraph.txt
1203+++ b/lib/lp/blueprints/doc/specgraph.txt
1204@@ -306,7 +306,6 @@ to the command is bad:
1205 ... (svg_support, request), name="+deptreeimgtag")
1206 >>> graph_view.initialize()
1207 >>> graph_view.renderGraphvizGraph('cmapx')
1208- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1209 Traceback (most recent call last):
1210 ...
1211 lp.blueprints.browser.specification.ProblemRenderingGraph: (... syntax error in line 1 near 'bad'...)
1212diff --git a/lib/lp/blueprints/stories/blueprints/xx-creation.txt b/lib/lp/blueprints/stories/blueprints/xx-creation.txt
1213index 265dbff..c95ab67 100644
1214--- a/lib/lp/blueprints/stories/blueprints/xx-creation.txt
1215+++ b/lib/lp/blueprints/stories/blueprints/xx-creation.txt
1216@@ -723,7 +723,6 @@ individual user's blueprint listing page:
1217
1218 >>> user_browser.open('http://blueprints.launchpad.test/~mark')
1219 >>> print(user_browser.getLink('Register a blueprint'))
1220- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1221 Traceback (most recent call last):
1222 ...
1223 zope.testbrowser.browser.LinkNotFoundError
1224@@ -733,7 +732,6 @@ listing page:
1225
1226 >>> user_browser.open('http://blueprints.launchpad.test/~admins')
1227 >>> print(user_browser.getLink('Register a blueprint'))
1228- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1229 Traceback (most recent call last):
1230 ...
1231 zope.testbrowser.browser.LinkNotFoundError
1232diff --git a/lib/lp/blueprints/stories/blueprints/xx-dependencies.txt b/lib/lp/blueprints/stories/blueprints/xx-dependencies.txt
1233index 39b6a01..0164163 100644
1234--- a/lib/lp/blueprints/stories/blueprints/xx-dependencies.txt
1235+++ b/lib/lp/blueprints/stories/blueprints/xx-dependencies.txt
1236@@ -41,14 +41,12 @@ users with launchpad.Edit permission for the blueprint.
1237 >>> user_browser.open(
1238 ... 'http://blueprints.launchpad.test/firefox/+spec/canvas')
1239 >>> user_browser.getLink('Add dependency')
1240- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1241 Traceback (most recent call last):
1242 ...
1243 zope.testbrowser.browser.LinkNotFoundError
1244 >>> user_browser.open(
1245 ... 'http://blueprints.launchpad.test/firefox/+spec/canvas/'
1246 ... '+linkdependency')
1247- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1248 Traceback (most recent call last):
1249 ...
1250 zope.security.interfaces.Unauthorized: ...
1251@@ -114,14 +112,12 @@ users with launchpad.Edit permission for the blueprint.
1252 >>> user_browser.open(
1253 ... 'http://blueprints.launchpad.test/firefox/+spec/canvas')
1254 >>> user_browser.getLink('Remove dependency')
1255- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1256 Traceback (most recent call last):
1257 ...
1258 zope.testbrowser.browser.LinkNotFoundError
1259 >>> user_browser.open(
1260 ... 'http://blueprints.launchpad.test/firefox/+spec/canvas/'
1261 ... '+removedependency')
1262- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1263 Traceback (most recent call last):
1264 ...
1265 zope.security.interfaces.Unauthorized: ...
1266diff --git a/lib/lp/blueprints/stories/blueprints/xx-editing.txt b/lib/lp/blueprints/stories/blueprints/xx-editing.txt
1267index cf0a920..8c9009b 100644
1268--- a/lib/lp/blueprints/stories/blueprints/xx-editing.txt
1269+++ b/lib/lp/blueprints/stories/blueprints/xx-editing.txt
1270@@ -116,7 +116,6 @@ Any logged in user can edit a specification whiteboard.
1271 Regular users can't access the change status page.
1272
1273 >>> user_browser.getLink(url='+status')
1274- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1275 Traceback (most recent call last):
1276 ...
1277 zope.testbrowser.browser.LinkNotFoundError
1278@@ -124,7 +123,6 @@ Regular users can't access the change status page.
1279 >>> user_browser.open(
1280 ... 'http://blueprints.launchpad.test/kubuntu/'
1281 ... '+spec/krunch-desktop-plan/+status')
1282- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1283 Traceback (most recent call last):
1284 ...
1285 zope.security.interfaces.Unauthorized: ...
1286@@ -135,7 +133,6 @@ Nor can they change a blueprint's priority.
1287 ... 'http://blueprints.launchpad.test/kubuntu/'
1288 ... '+spec/krunch-desktop-plan')
1289 >>> user_browser.getLink(url='+priority')
1290- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1291 Traceback (most recent call last):
1292 ...
1293 zope.testbrowser.browser.LinkNotFoundError
1294diff --git a/lib/lp/blueprints/stories/sprints/sprint-settopics.txt b/lib/lp/blueprints/stories/sprints/sprint-settopics.txt
1295index d0185b9..a0a0775 100644
1296--- a/lib/lp/blueprints/stories/sprints/sprint-settopics.txt
1297+++ b/lib/lp/blueprints/stories/sprints/sprint-settopics.txt
1298@@ -23,21 +23,18 @@ Regular users can't approve items to be discussed in a sprint.
1299
1300 >>> user_browser.open('http://launchpad.test/sprints/uds-guacamole')
1301 >>> user_browser.getLink('proposed')
1302- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1303 Traceback (most recent call last):
1304 ...
1305 zope.testbrowser.browser.LinkNotFoundError
1306
1307 >>> user_browser.getLink('Blueprints').click()
1308 >>> user_browser.getLink('Set agenda').click()
1309- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1310 Traceback (most recent call last):
1311 ...
1312 zope.testbrowser.browser.LinkNotFoundError
1313
1314 >>> user_browser.open(
1315 ... 'http://launchpad.test/sprints/uds-guacamole/+settopics')
1316- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1317 Traceback (most recent call last):
1318 ...
1319 zope.security.interfaces.Unauthorized: ...
1320diff --git a/lib/lp/blueprints/stories/sprints/xx-sprints.txt b/lib/lp/blueprints/stories/sprints/xx-sprints.txt
1321index 0068d91..ea2e537 100644
1322--- a/lib/lp/blueprints/stories/sprints/xx-sprints.txt
1323+++ b/lib/lp/blueprints/stories/sprints/xx-sprints.txt
1324@@ -174,7 +174,6 @@ available to those who have permissions to edit that sprint.
1325 Ubuntu Below Zero : Meetings
1326
1327 >>> anon_browser.getLink('Change details')
1328- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1329 Traceback (most recent call last):
1330 ...
1331 zope.testbrowser.browser.LinkNotFoundError
1332@@ -498,13 +497,11 @@ Unregistered and anonymous users cannot access the CSV report.
1333
1334 >>> user_browser.open('http://launchpad.test/sprints/ubz')
1335 >>> user_browser.getLink('Export attendees to CSV').click()
1336- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1337 Traceback (most recent call last):
1338 ...
1339 zope.testbrowser.browser.LinkNotFoundError
1340
1341 >>> anon_browser.open('http://launchpad.test/sprints/ubz/+attendees-csv')
1342- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1343 Traceback (most recent call last):
1344 ...
1345 zope.security.interfaces.Unauthorized: ...
1346diff --git a/lib/lp/blueprints/stories/standalone/subscribing.txt b/lib/lp/blueprints/stories/standalone/subscribing.txt
1347index f3feaef..beab847 100644
1348--- a/lib/lp/blueprints/stories/standalone/subscribing.txt
1349+++ b/lib/lp/blueprints/stories/standalone/subscribing.txt
1350@@ -18,7 +18,6 @@ First, let's make sure we can see the link called "Subscribe..."
1351 If I try to go to the subscription page I will be told to login.
1352
1353 >>> subscribe_link.click()
1354- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1355 Traceback (most recent call last):
1356 ...
1357 zope.security.interfaces.Unauthorized: ...AnyP...
1358diff --git a/lib/lp/blueprints/stories/standalone/xx-branch-links.txt b/lib/lp/blueprints/stories/standalone/xx-branch-links.txt
1359index f95f051..9af766c 100644
1360--- a/lib/lp/blueprints/stories/standalone/xx-branch-links.txt
1361+++ b/lib/lp/blueprints/stories/standalone/xx-branch-links.txt
1362@@ -19,7 +19,6 @@ If the user is not logged in, they will be asked to log in.
1363 >>> anon_browser.open(
1364 ... 'http://code.launchpad.test/~name12/firefox/main')
1365 >>> anon_browser.getLink('Link to a blueprint').click()
1366- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1367 Traceback (most recent call last):
1368 ...
1369 zope.security.interfaces.Unauthorized: (...launchpad.AnyPerson')
1370diff --git a/lib/lp/blueprints/stories/standalone/xx-views.txt b/lib/lp/blueprints/stories/standalone/xx-views.txt
1371index 570fa1d..05bec72 100644
1372--- a/lib/lp/blueprints/stories/standalone/xx-views.txt
1373+++ b/lib/lp/blueprints/stories/standalone/xx-views.txt
1374@@ -223,7 +223,6 @@ second blueprint is no longer visible:
1375 >>> browser.getLink('blueprint-1')
1376 <Link...
1377 >>> browser.getLink('blueprint-2')
1378- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1379 Traceback (most recent call last):
1380 ...
1381 zope.testbrowser.browser.LinkNotFoundError
1382diff --git a/lib/lp/bugs/doc/bug-change.txt b/lib/lp/bugs/doc/bug-change.txt
1383index f51c352..3e6acb7 100644
1384--- a/lib/lp/bugs/doc/bug-change.txt
1385+++ b/lib/lp/bugs/doc/bug-change.txt
1386@@ -208,7 +208,6 @@ If get_bug_change_class() is asked for a BugChange for an object or
1387 field that it doesn't know about, it will raise a NoBugChangeFoundError.
1388
1389 >>> get_bug_change_class(object(), 'fooix')
1390- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1391 Traceback (most recent call last):
1392 ...
1393 lp.bugs.adapters.bugchange.NoBugChangeFoundError: Unable to find a suitable BugChange for field 'fooix' on object <object object at ...>
1394diff --git a/lib/lp/bugs/doc/bug-reported-acknowledgement.txt b/lib/lp/bugs/doc/bug-reported-acknowledgement.txt
1395index 393b23b..cdb4ebd 100644
1396--- a/lib/lp/bugs/doc/bug-reported-acknowledgement.txt
1397+++ b/lib/lp/bugs/doc/bug-reported-acknowledgement.txt
1398@@ -54,19 +54,16 @@ read-only property, and the security proxies also only allow read
1399 access.
1400
1401 >>> distro_series.bug_reported_acknowledgement = 'Foobar'
1402- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1403 Traceback (most recent call last):
1404 ...
1405 zope.security.interfaces.ForbiddenAttribute: ...
1406
1407 >>> source_package.bug_reported_acknowledgement = 'Foobar'
1408- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1409 Traceback (most recent call last):
1410 ...
1411 zope.security.interfaces.ForbiddenAttribute: ...
1412
1413 >>> product_series.bug_reported_acknowledgement = 'Foobar'
1414- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1415 Traceback (most recent call last):
1416 ...
1417 zope.security.interfaces.ForbiddenAttribute: ...
1418@@ -88,25 +85,21 @@ message.
1419 ... print(context.bug_reported_acknowledgement)
1420
1421 >>> check_access("no-priv@canonical.com", distribution)
1422- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1423 Traceback (most recent call last):
1424 ...
1425 zope.security.interfaces.Unauthorized: ...
1426
1427 >>> check_access("no-priv@canonical.com", distribution_source_package)
1428- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1429 Traceback (most recent call last):
1430 ...
1431 zope.security.interfaces.Unauthorized: ...
1432
1433 >>> check_access("no-priv@canonical.com", project)
1434- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1435 Traceback (most recent call last):
1436 ...
1437 zope.security.interfaces.Unauthorized: ...
1438
1439 >>> check_access("no-priv@canonical.com", product)
1440- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1441 Traceback (most recent call last):
1442 ...
1443 zope.security.interfaces.Unauthorized: ...
1444diff --git a/lib/lp/bugs/doc/bug-reporting-guidelines.txt b/lib/lp/bugs/doc/bug-reporting-guidelines.txt
1445index 44cb6c4..a89f692 100644
1446--- a/lib/lp/bugs/doc/bug-reporting-guidelines.txt
1447+++ b/lib/lp/bugs/doc/bug-reporting-guidelines.txt
1448@@ -53,19 +53,16 @@ read-only property, and the security proxies also only allow read
1449 access.
1450
1451 >>> distro_series.bug_reporting_guidelines = 'Foobar'
1452- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1453 Traceback (most recent call last):
1454 ...
1455 zope.security.interfaces.ForbiddenAttribute: ...
1456
1457 >>> source_package.bug_reporting_guidelines = 'Foobar'
1458- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1459 Traceback (most recent call last):
1460 ...
1461 zope.security.interfaces.ForbiddenAttribute: ...
1462
1463 >>> product_series.bug_reporting_guidelines = 'Foobar'
1464- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1465 Traceback (most recent call last):
1466 ...
1467 zope.security.interfaces.ForbiddenAttribute: ...
1468@@ -87,25 +84,21 @@ guidelines.
1469 ... print(context.bug_reporting_guidelines)
1470
1471 >>> check_access("no-priv@canonical.com", distribution)
1472- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1473 Traceback (most recent call last):
1474 ...
1475 zope.security.interfaces.Unauthorized: ...
1476
1477 >>> check_access("no-priv@canonical.com", distribution_source_package)
1478- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1479 Traceback (most recent call last):
1480 ...
1481 zope.security.interfaces.Unauthorized: ...
1482
1483 >>> check_access("no-priv@canonical.com", project)
1484- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1485 Traceback (most recent call last):
1486 ...
1487 zope.security.interfaces.Unauthorized: ...
1488
1489 >>> check_access("no-priv@canonical.com", product)
1490- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1491 Traceback (most recent call last):
1492 ...
1493 zope.security.interfaces.Unauthorized: ...
1494diff --git a/lib/lp/bugs/doc/bug-tags.txt b/lib/lp/bugs/doc/bug-tags.txt
1495index b6aee57..ab49131 100644
1496--- a/lib/lp/bugs/doc/bug-tags.txt
1497+++ b/lib/lp/bugs/doc/bug-tags.txt
1498@@ -138,7 +138,6 @@ wrong.
1499 >>> request = LaunchpadTestRequest(form={'field.tags': u'!!!! foo $$$$'})
1500 >>> tags_widget = BugTagsWidget(bug_tags_field, tag_field, request)
1501 >>> tags_widget.getInputValue()
1502- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1503 Traceback (most recent call last):
1504 ...
1505 zope.formlib.interfaces.WidgetInputError: ...
1506diff --git a/lib/lp/bugs/doc/bug.txt b/lib/lp/bugs/doc/bug.txt
1507index 41d48d0..7ca7d2b 100644
1508--- a/lib/lp/bugs/doc/bug.txt
1509+++ b/lib/lp/bugs/doc/bug.txt
1510@@ -29,13 +29,12 @@ Or you can use IBugSet.getByNameOrID to get it by its nickname:
1511 If the bug can't be found, a zope.exceptions.NotFoundError will be
1512 raised:
1513
1514- >>> bugset.get(123456) # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1515+ >>> bugset.get(123456)
1516 Traceback (most recent call last):
1517 ...
1518 lp.app.errors.NotFoundError: 'Unable to locate bug with ID 123456.'
1519
1520 >>> bugset.getByNameOrID('+bugs')
1521- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1522 Traceback (most recent call last):
1523 ...
1524 lp.app.errors.NotFoundError: ...'Unable to locate bug with nickname +bugs.'
1525@@ -176,13 +175,11 @@ private. A bug cannot be made private by an anonymous user.
1526 ... return getUtility(ILaunchBag).user
1527
1528 >>> firefox_crashes.private = True
1529- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1530 Traceback (most recent call last):
1531 ...
1532 zope.security.interfaces.ForbiddenAttribute: ('private', ...)
1533
1534 >>> firefox_crashes.setPrivate(True, current_user())
1535- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1536 Traceback (most recent call last):
1537 ...
1538 zope.security.interfaces.Unauthorized: (..., 'setPrivate', 'launchpad.Append')
1539@@ -208,7 +205,6 @@ Even though we are logged in and subscribed to the bug, we are
1540 prevented from using the private attribute to mark bug #6 private:
1541
1542 >>> firefox_crashes.private = True
1543- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1544 Traceback (most recent call last):
1545 ...
1546 zope.security.interfaces.ForbiddenAttribute: ('private', ...)
1547@@ -337,7 +333,6 @@ Trying to access a property of this bug will again raise an
1548 Unauthorized:
1549
1550 >>> reflow_problems_bug.title
1551- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1552 Traceback (most recent call last):
1553 ...
1554 zope.security.interfaces.Unauthorized: (..., 'title', 'launchpad.View')
1555diff --git a/lib/lp/bugs/doc/bugattachments.txt b/lib/lp/bugs/doc/bugattachments.txt
1556index 3e58d5f..5a96419 100644
1557--- a/lib/lp/bugs/doc/bugattachments.txt
1558+++ b/lib/lp/bugs/doc/bugattachments.txt
1559@@ -313,7 +313,6 @@ anonymous can read the attachment's attributes, but they can't set them:
1560 >>> print(attachment.title)
1561 this fixes the bug
1562 >>> attachment.title = 'Better Title'
1563- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1564 Traceback (most recent call last):
1565 ...
1566 zope.security.interfaces.Unauthorized: (..., 'title',...
1567@@ -347,12 +346,10 @@ attachments attributes:
1568 >>> login("no-priv@canonical.com")
1569
1570 >>> attachment.title
1571- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1572 Traceback (most recent call last):
1573 ...
1574 zope.security.interfaces.Unauthorized: (..., 'title',...
1575 >>> attachment.title = 'Better Title'
1576- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1577 Traceback (most recent call last):
1578 ...
1579 zope.security.interfaces.Unauthorized: (..., 'title',...
1580@@ -360,12 +357,11 @@ attachments attributes:
1581 Of course, anonymous is also not allowed to access or set them:
1582
1583 >>> login(ANONYMOUS)
1584- >>> attachment.title # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1585+ >>> attachment.title
1586 Traceback (most recent call last):
1587 ...
1588 zope.security.interfaces.Unauthorized: (..., 'title',...
1589 >>> attachment.title = 'Some info.'
1590- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1591 Traceback (most recent call last):
1592 ...
1593 zope.security.interfaces.Unauthorized: (..., 'title',...
1594@@ -666,7 +662,6 @@ A NotFoundError is raised if the file name passed to getFileByName()
1595 does not match the file name of the Librarian file.
1596
1597 >>> attachment.getFileByName('nonsense')
1598- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1599 Traceback (most recent call last):
1600 ...
1601 lp.app.errors.NotFoundError: ...'nonsense'
1602diff --git a/lib/lp/bugs/doc/bugmessage-visibility.txt b/lib/lp/bugs/doc/bugmessage-visibility.txt
1603index 43c683e..44f65e0 100644
1604--- a/lib/lp/bugs/doc/bugmessage-visibility.txt
1605+++ b/lib/lp/bugs/doc/bugmessage-visibility.txt
1606@@ -43,7 +43,6 @@ field.
1607 >>> abugmessage.message.visible
1608 False
1609 >>> abugmessage.message.visible = True
1610- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1611 Traceback (most recent call last):
1612 ...
1613 zope.security.interfaces.Unauthorized: (<Message at ...>, 'visible', 'launchpad.Admin')
1614diff --git a/lib/lp/bugs/doc/bugsubscription.txt b/lib/lp/bugs/doc/bugsubscription.txt
1615index bf6b69b..4b175ab 100644
1616--- a/lib/lp/bugs/doc/bugsubscription.txt
1617+++ b/lib/lp/bugs/doc/bugsubscription.txt
1618@@ -560,7 +560,6 @@ that the unsubscribing user has the appropriate permissions. unsubscribe
1619 will raise an exception if the user does not have permission.
1620
1621 >>> bug.unsubscribe(team, non_member)
1622- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1623 Traceback (most recent call last):
1624 ...
1625 lp.app.errors.UserCannotUnsubscribePerson: ...
1626diff --git a/lib/lp/bugs/doc/bugtask-assignee-widget.txt b/lib/lp/bugs/doc/bugtask-assignee-widget.txt
1627index 5bc18d6..cb4a0d2 100644
1628--- a/lib/lp/bugs/doc/bugtask-assignee-widget.txt
1629+++ b/lib/lp/bugs/doc/bugtask-assignee-widget.txt
1630@@ -129,7 +129,7 @@ The chooser widget got its name updated as well.
1631 If this option is selected, but no value is entered in
1632 "field.assignee", validation will fail:
1633
1634- >>> widget.validate() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1635+ >>> widget.validate()
1636 Traceback (most recent call last):
1637 ...
1638 zope.formlib.interfaces.WidgetInputError: ...
1639@@ -138,7 +138,7 @@ Likewise, if a non-existent field.assignee is provided, the validation
1640 will fail:
1641
1642 >>> request.form['foo.assignee'] = 'name'
1643- >>> widget.validate() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1644+ >>> widget.validate()
1645 Traceback (most recent call last):
1646 ...
1647 zope.formlib.interfaces.WidgetInputError: ...
1648diff --git a/lib/lp/bugs/doc/bugtask-bugwatch-widget.txt b/lib/lp/bugs/doc/bugtask-bugwatch-widget.txt
1649index 2fd1524..d247fd1 100644
1650--- a/lib/lp/bugs/doc/bugtask-bugwatch-widget.txt
1651+++ b/lib/lp/bugs/doc/bugtask-bugwatch-widget.txt
1652@@ -159,7 +159,6 @@ a WidgetInputError is being raised.
1653 ... bugwatch_field, bugwatch_field.vocabulary, request)
1654
1655 >>> bugwatch = bugwatch_widget.getInputValue()
1656- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1657 Traceback (most recent call last):
1658 ...
1659 zope.formlib.interfaces.WidgetInputError: ...
1660diff --git a/lib/lp/bugs/doc/bugtask-package-widget.txt b/lib/lp/bugs/doc/bugtask-package-widget.txt
1661index 81722bb..266e62c 100644
1662--- a/lib/lp/bugs/doc/bugtask-package-widget.txt
1663+++ b/lib/lp/bugs/doc/bugtask-package-widget.txt
1664@@ -71,7 +71,6 @@ NotFoundError.
1665
1666 >>> gentoo = getUtility(IDistributionSet)['gentoo']
1667 >>> gentoo.guessPublishedSourcePackageName('evolution')
1668- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1669 Traceback (most recent call last):
1670 ...
1671 lp.app.errors.NotFoundError: ...
1672@@ -100,7 +99,7 @@ ConversionError saying that the package name doesn't exist.
1673 ... form={'field.sourcepackagename': 'no-package'})
1674 >>> widget = BugTaskSourcePackageNameWidget(
1675 ... package_field, package_field.vocabulary, request)
1676- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1677+ >>> widget.getInputValue()
1678 Traceback (most recent call last):
1679 ...
1680 zope.formlib.interfaces.ConversionError: ...
1681@@ -133,7 +132,6 @@ name isn't the name of a distro, UnexpectedFormData is raised.
1682 >>> BugTaskAlsoAffectsSourcePackageNameWidget(
1683 ... package_field, package_field.vocabulary,
1684 ... request).getDistribution().name
1685- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1686 Traceback (most recent call last):
1687 ...
1688 lp.app.errors.UnexpectedFormData: ...
1689@@ -200,7 +198,6 @@ contain, so IDistribution.guessPublishedSourcePackageName will raise a
1690 NotFoundError.
1691
1692 >>> gentoo_task.distribution.guessPublishedSourcePackageName('evolution')
1693- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1694 Traceback (most recent call last):
1695 ...
1696 lp.app.errors.NotFoundError: ...
1697@@ -227,7 +224,7 @@ ConversionError saying that the package name doesn't exist.
1698 ... form={'field.packagename': 'no-package'})
1699 >>> widget = FileBugSourcePackageNameWidget(
1700 ... package_field, package_field.vocabulary, request)
1701- >>> widget.getInputValue() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1702+ >>> widget.getInputValue()
1703 Traceback (most recent call last):
1704 ...
1705 zope.formlib.interfaces.ConversionError: ...
1706diff --git a/lib/lp/bugs/doc/bugtask-retrieval.txt b/lib/lp/bugs/doc/bugtask-retrieval.txt
1707index 52cc894..287b8cc 100644
1708--- a/lib/lp/bugs/doc/bugtask-retrieval.txt
1709+++ b/lib/lp/bugs/doc/bugtask-retrieval.txt
1710@@ -35,7 +35,6 @@ When given a bug task ID that doesn't exist in the database, the method
1711 raises a NotFoundError:
1712
1713 >>> no_such_task = task_set.get(0)
1714- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1715 Traceback (most recent call last):
1716 ...
1717 lp.app.errors.NotFoundError: ...
1718@@ -82,7 +81,7 @@ those bug task IDs that are present in the database:
1719 >>> task_set.getMultiple([1, 2])
1720 {2: <BugTask ...>}
1721
1722- >>> task_set.get(1) # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1723+ >>> task_set.get(1)
1724 Traceback (most recent call last):
1725 ...
1726 lp.app.errors.NotFoundError: ...
1727diff --git a/lib/lp/bugs/doc/bugtask-search.txt b/lib/lp/bugs/doc/bugtask-search.txt
1728index f00d145..fcbd161 100644
1729--- a/lib/lp/bugs/doc/bugtask-search.txt
1730+++ b/lib/lp/bugs/doc/bugtask-search.txt
1731@@ -107,7 +107,6 @@ Passing invalid tsquery expressions as fast_searchtext raises an exception.
1732 >>> bad_search = BugTaskSearchParams(
1733 ... user=None, fast_searchtext=u'happens pretty often')
1734 >>> list(firefox.searchTasks(bad_search))
1735- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1736 Traceback (most recent call last):
1737 ...
1738 storm.database.ProgrammingError: syntax error in tsquery: "happens pretty often" ...
1739diff --git a/lib/lp/bugs/doc/bugtask-status-changes.txt b/lib/lp/bugs/doc/bugtask-status-changes.txt
1740index f7b63f8..c0b3949 100644
1741--- a/lib/lp/bugs/doc/bugtask-status-changes.txt
1742+++ b/lib/lp/bugs/doc/bugtask-status-changes.txt
1743@@ -32,7 +32,6 @@ other status.
1744
1745 >>> ignored = login_person(user)
1746 >>> bugtask.transitionToStatus(BugTaskStatus.CONFIRMED, user)
1747- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1748 Traceback (most recent call last):
1749 ...
1750 lp.bugs.interfaces.bugtask.UserCannotEditBugTaskStatus: ...
1751diff --git a/lib/lp/bugs/doc/bugtask-status-workflow.txt b/lib/lp/bugs/doc/bugtask-status-workflow.txt
1752index 2ffd3be..3ee347f 100644
1753--- a/lib/lp/bugs/doc/bugtask-status-workflow.txt
1754+++ b/lib/lp/bugs/doc/bugtask-status-workflow.txt
1755@@ -56,7 +56,6 @@ directly.
1756 >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
1757
1758 >>> ubuntu_firefox_task.status = BugTaskStatus.CONFIRMED
1759- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1760 Traceback (most recent call last):
1761 ...
1762 zope.security.interfaces.ForbiddenAttribute: ...
1763@@ -282,7 +281,6 @@ setting an assignee has "side effects".
1764 >>> sample_person = getUtility(IPersonSet).get(12)
1765
1766 >>> ubuntu_firefox_task.assignee = foobar
1767- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1768 Traceback (most recent call last):
1769 ...
1770 zope.security.interfaces.ForbiddenAttribute: ...
1771diff --git a/lib/lp/bugs/doc/bugtracker-person.txt b/lib/lp/bugs/doc/bugtracker-person.txt
1772index a36932c..d5599f0 100644
1773--- a/lib/lp/bugs/doc/bugtracker-person.txt
1774+++ b/lib/lp/bugs/doc/bugtracker-person.txt
1775@@ -42,7 +42,6 @@ new person to a bugtracker using an existing name will cause an error.
1776 >>> foo_bar = getUtility(IPersonSet).getByName('name16')
1777 >>> bugtracker_person = bugtracker.linkPersonToSelf(
1778 ... 'some-name-i-made-up', foo_bar)
1779- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1780 Traceback (most recent call last):
1781 ...
1782 lp.bugs.interfaces.bugtrackerperson.BugTrackerPersonAlreadyExists: Name 'some-name-i-made-up' is already in use for bugtracker 'bugzilla-checkwatches'.
1783diff --git a/lib/lp/bugs/doc/bugwatch.txt b/lib/lp/bugs/doc/bugwatch.txt
1784index f69fdc8..415be41 100644
1785--- a/lib/lp/bugs/doc/bugwatch.txt
1786+++ b/lib/lp/bugs/doc/bugwatch.txt
1787@@ -22,7 +22,6 @@ Bug watches are accessed via a utility that provides IBugWatchSet.
1788 >>> from zope.component import getUtility
1789 >>> from lp.bugs.interfaces.bugwatch import IBugWatchSet
1790 >>> getUtility(IBugWatchSet).get(98765)
1791- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1792 Traceback (most recent call last):
1793 ...
1794 lp.app.errors.NotFoundError: 98765
1795@@ -627,7 +626,6 @@ Calling setNextCheck() on this watch will cause an Exception,
1796 BugWatchCannotBeRescheduled, to be raised.
1797
1798 >>> schedulable_watch.setNextCheck(datetime.now(utc))
1799- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1800 Traceback (most recent call last):
1801 ...
1802 lp.bugs.interfaces.bugwatch.BugWatchCannotBeRescheduled
1803diff --git a/lib/lp/bugs/doc/bugwidget.txt b/lib/lp/bugs/doc/bugwidget.txt
1804index f20d44a..c3f0012 100644
1805--- a/lib/lp/bugs/doc/bugwidget.txt
1806+++ b/lib/lp/bugs/doc/bugwidget.txt
1807@@ -22,7 +22,6 @@ If non-existant bug number is entered, an error is raised.
1808 >>> request = LaunchpadTestRequest(form={'field.bug': '1234567'})
1809 >>> bug_widget = BugWidget(bug_field, request)
1810 >>> bug_widget.getInputValue()
1811- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1812 Traceback (most recent call last):
1813 ...
1814 zope.formlib.interfaces.ConversionError: ('Not a valid bug number or nickname.', None)
1815diff --git a/lib/lp/bugs/doc/cve-update.txt b/lib/lp/bugs/doc/cve-update.txt
1816index 417728a..ad7d8fd 100644
1817--- a/lib/lp/bugs/doc/cve-update.txt
1818+++ b/lib/lp/bugs/doc/cve-update.txt
1819@@ -168,7 +168,6 @@ schema is changed.
1820
1821 >>> cve_updater = CVEUpdater('cve-updater', test_args=[])
1822 >>> cve_updater.processCVEXML('<some-xml />')
1823- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1824 Traceback (most recent call last):
1825 ...
1826 lp.services.scripts.base.LaunchpadScriptFailure: No CVEs found in XML file.
1827diff --git a/lib/lp/bugs/doc/cve.txt b/lib/lp/bugs/doc/cve.txt
1828index 3322f40..98e3480 100644
1829--- a/lib/lp/bugs/doc/cve.txt
1830+++ b/lib/lp/bugs/doc/cve.txt
1831@@ -111,7 +111,6 @@ linkCVE are bypassed.
1832 >>> private_bug = factory.makeBug(
1833 ... information_type=InformationType.USERDATA)
1834 >>> private_bug.linkCVE(cve, user=no_priv)
1835- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1836 Traceback (most recent call last):
1837 ...
1838 zope.security.interfaces.Unauthorized: ...
1839diff --git a/lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt b/lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt
1840index e6120cd..c7fb1fa 100644
1841--- a/lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt
1842+++ b/lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt
1843@@ -65,7 +65,6 @@ will raise an error:
1844 ... xmlrpc_transport=transport)
1845
1846 >>> non_auth_bugzilla._authenticate()
1847- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1848 Traceback (most recent call last):
1849 ...
1850 lp.bugs.externalbugtracker.base.BugTrackerAuthenticationError: http://thiswillfail.example.com: No credentials found.
1851@@ -82,7 +81,6 @@ raise an error.
1852 ... xmlrpc_transport=transport)
1853
1854 >>> non_auth_bugzilla._authenticate()
1855- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1856 Traceback (most recent call last):
1857 ...
1858 lp.bugs.externalbugtracker.base.BugTrackerAuthenticationError: http://thiswillfail.example.com: Fault 300: The username or password you entered is not valid.
1859@@ -305,7 +303,6 @@ severity as a string.
1860 If a bug can't be found a BugNotFound error will be raised.
1861
1862 >>> bugzilla.getRemoteStatus('no-such-bug')
1863- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1864 Traceback (most recent call last):
1865 ...
1866 lp.bugs.externalbugtracker.base.BugNotFound: no-such-bug
1867@@ -316,7 +313,6 @@ error will be raised. We can add a sample bug to demonstrate this.
1868
1869 >>> bugzilla._bugs[999] = {}
1870 >>> bugzilla.getRemoteStatus(999)
1871- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1872 Traceback (most recent call last):
1873 ...
1874 lp.bugs.externalbugtracker.base.UnparsableBugData: No status or resolution defined for bug 999
1875@@ -406,7 +402,6 @@ If the product is requested for a bug that can't be found, BugNotFound
1876 is raised.
1877
1878 >>> bugzilla.getRemoteProduct(12345)
1879- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1880 Traceback (most recent call last):
1881 ...
1882 lp.bugs.externalbugtracker.base.BugNotFound: 12345
1883@@ -469,7 +464,6 @@ getCommentIds() can only be called if initializeRemoteBugDB() has been
1884 called and the bug exists locally.
1885
1886 >>> bugzilla.getCommentIds(bug_watch_broken.remotebug)
1887- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1888 Traceback (most recent call last):
1889 ...
1890 lp.bugs.externalbugtracker.base.BugNotFound: 42
1891@@ -619,7 +613,6 @@ then that instance does not provide ISupportsCommentPushing.
1892
1893 >>> verifyObject(ISupportsCommentPushing, BugzillaAPI(
1894 ... 'http://unknown.example.com/', xmlrpc_transport=test_transport))
1895- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1896 Traceback (most recent call last):
1897 ...
1898 zope.interface.exceptions.DoesNotImplement: ...
1899@@ -681,7 +674,6 @@ then that instance does not provide ISupportsBackLinking.
1900
1901 >>> verifyObject(ISupportsBackLinking, BugzillaAPI(
1902 ... 'http://unknown.example.com/', xmlrpc_transport=test_transport))
1903- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1904 Traceback (most recent call last):
1905 ...
1906 zope.interface.exceptions.DoesNotImplement: ...
1907diff --git a/lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt b/lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt
1908index b13e159..d2dbd78 100644
1909--- a/lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt
1910+++ b/lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt
1911@@ -108,7 +108,6 @@ login_required() raises a fault.
1912
1913 >>> test_transport.expireCookie(test_transport.auth_cookie)
1914 >>> test_bugzilla.xmlrpc_proxy.Test.login_required()
1915- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1916 Traceback (most recent call last):
1917 ...
1918 xmlrpc.client.Fault: <Fault 410: 'Login Required'>
1919@@ -148,7 +147,6 @@ If authentication fails, a BugTrackerAuthenticationError will be raised.
1920 ... )
1921
1922 >>> test_bugzilla._authenticate()
1923- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1924 Traceback (most recent call last):
1925 ...
1926 lp.bugs.externalbugtracker.base.BugTrackerAuthenticationError: http://example.com: XML-RPC Fault: 100 "Sorry, you can't log in."
1927@@ -158,7 +156,6 @@ This is also true if an error occurs at the protocol level:
1928 >>> fail_transport.error = ProtocolError(
1929 ... 'http://example.com', 500, 'Internal server error', {})
1930 >>> test_bugzilla._authenticate()
1931- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1932 Traceback (most recent call last):
1933 ...
1934 lp.bugs.externalbugtracker.base.BugTrackerAuthenticationError: http://example.com: Protocol error: 500 "Internal server error"
1935@@ -385,7 +382,6 @@ called and the bug exists locally.
1936 >>> transaction.commit()
1937
1938 >>> bugzilla.getCommentIds(remote_bug)
1939- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1940 Traceback (most recent call last):
1941 ...
1942 lp.bugs.externalbugtracker.base.BugNotFound: 42
1943diff --git a/lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt b/lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt
1944index b6d2f3a..52b1cc7 100644
1945--- a/lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt
1946+++ b/lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt
1947@@ -147,7 +147,6 @@ invalid XML:
1948 >>> remote_bugs = ['42', '2000']
1949 >>> with broken_bugzilla.responses():
1950 ... broken_bugzilla.initializeRemoteBugDB(remote_bugs)
1951- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1952 Traceback (most recent call last):
1953 ...
1954 lp.bugs.externalbugtracker.base.UnparsableBugData: Failed to parse XML description...
1955diff --git a/lib/lp/bugs/doc/externalbugtracker-bugzilla.txt b/lib/lp/bugs/doc/externalbugtracker-bugzilla.txt
1956index b8a9226..94cc309 100644
1957--- a/lib/lp/bugs/doc/externalbugtracker-bugzilla.txt
1958+++ b/lib/lp/bugs/doc/externalbugtracker-bugzilla.txt
1959@@ -27,7 +27,6 @@ UnparsableBugTrackerVersion is raised:
1960 >>> from lp.testing.layers import LaunchpadZopelessLayer
1961 >>> txn = LaunchpadZopelessLayer.txn
1962 >>> external_bugzilla = Bugzilla('http://example.com/', version='A.B')
1963- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1964 Traceback (most recent call last):
1965 ...
1966 lp.bugs.externalbugtracker.base.UnparsableBugTrackerVersion: Failed to parse version 'A.B' for http://...
1967@@ -345,12 +344,10 @@ If the status can't be converted an UnknownRemoteStatusError will be
1968 returned.
1969
1970 >>> external_bugzilla.convertRemoteStatus('FOO').title
1971- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1972 Traceback (most recent call last):
1973 ...
1974 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: FOO
1975 >>> external_bugzilla.convertRemoteStatus('CLOSED BAR').title
1976- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1977 Traceback (most recent call last):
1978 ...
1979 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: CLOSED BAR
1980@@ -464,12 +461,10 @@ However, we still treat as an error if the priority or severity are set
1981 to some other unexpected string.
1982
1983 >>> external_bugzilla.convertRemoteImportance('foo bar')
1984- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1985 Traceback (most recent call last):
1986 ...
1987 lp.bugs.externalbugtracker.base.UnknownRemoteImportanceError: foo bar
1988 >>> external_bugzilla.convertRemoteImportance('%&*@*#&$%!')
1989- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1990 Traceback (most recent call last):
1991 ...
1992 lp.bugs.externalbugtracker.base.UnknownRemoteImportanceError: %&*@*#&$%!
1993@@ -742,7 +737,6 @@ bug tracker, an error is logged.
1994 ... requests_mock.add('POST', re.compile(r'.*'), body='<invalid xml>')
1995 ... bug_watch_updater.updateBugWatches(
1996 ... external_bugzilla, [bug_watch1, bug_watch2])
1997- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
1998 Traceback (most recent call last):
1999 ...
2000 lp.bugs.externalbugtracker.base.UnparsableBugData: Failed to parse XML description for https://bugzilla.mozilla.org...
2001@@ -801,7 +795,6 @@ Requesting the product for a bug that doesn't exist raises BugNotFound.
2002 >>> with external_bugzilla.responses():
2003 ... external_bugzilla.initializeRemoteBugDB(['84'])
2004 >>> external_bugzilla.getRemoteProduct('42')
2005- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2006 Traceback (most recent call last):
2007 ...
2008 lp.bugs.externalbugtracker.base.BugNotFound: 42
2009diff --git a/lib/lp/bugs/doc/externalbugtracker-debbugs.txt b/lib/lp/bugs/doc/externalbugtracker-debbugs.txt
2010index 3ed2b15..5dc2fe8 100644
2011--- a/lib/lp/bugs/doc/externalbugtracker-debbugs.txt
2012+++ b/lib/lp/bugs/doc/externalbugtracker-debbugs.txt
2013@@ -56,7 +56,6 @@ getRemoteStatus() method. If we pass a bug number that doesn't exist in
2014 the debbugs db, BugNotFound is raised.
2015
2016 >>> external_debbugs.getRemoteStatus('42')
2017- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2018 Traceback (most recent call last):
2019 ...
2020 lp.bugs.externalbugtracker.base.BugNotFound: 42
2021@@ -64,7 +63,6 @@ the debbugs db, BugNotFound is raised.
2022 If we pass a non-integer bug id, InvalidBugId is raised.
2023
2024 >>> external_debbugs.getRemoteStatus('foo')
2025- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2026 Traceback (most recent call last):
2027 ...
2028 lp.bugs.externalbugtracker.base.InvalidBugId: Debbugs bug number not an integer: foo
2029@@ -281,7 +279,6 @@ If we pass in a malformed status string an UnknownRemoteStatusError will
2030 be raised.
2031
2032 >>> print(external_debbugs.convertRemoteStatus('open'))
2033- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2034 Traceback (most recent call last):
2035 ...
2036 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: open
2037@@ -719,7 +716,6 @@ Trying to call getRemoteProduct() on a bug that doesn't exist will raise
2038 a BugNotFound error.
2039
2040 >>> print(external_debbugs.getRemoteProduct('42'))
2041- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2042 Traceback (most recent call last):
2043 ...
2044 lp.bugs.externalbugtracker.base.BugNotFound: 42
2045diff --git a/lib/lp/bugs/doc/externalbugtracker-emailaddress.txt b/lib/lp/bugs/doc/externalbugtracker-emailaddress.txt
2046index 9e6adf8..b0b5c8c 100644
2047--- a/lib/lp/bugs/doc/externalbugtracker-emailaddress.txt
2048+++ b/lib/lp/bugs/doc/externalbugtracker-emailaddress.txt
2049@@ -25,7 +25,6 @@ create a new ExternalBugTracker for an email address will fail.
2050 ... new_bugtracker)
2051 >>> bug_tracker = get_external_bugtracker(
2052 ... new_bugtracker(BugTrackerType.EMAILADDRESS))
2053- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2054 Traceback (most recent call last):
2055 ...
2056 lp.bugs.externalbugtracker.base.UnknownBugTrackerTypeError: EMAILADDRESS
2057diff --git a/lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt b/lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt
2058index d9fb120..05bbcb5 100644
2059--- a/lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt
2060+++ b/lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt
2061@@ -38,7 +38,6 @@ in the form "status: resolution" as follows:
2062 If the status can't be converted an UnknownRemoteStatusError is raised.
2063
2064 >>> alsa_mantis.convertRemoteStatus(('foo: bar')).title
2065- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2066 Traceback (most recent call last):
2067 ...
2068 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: foo: bar
2069diff --git a/lib/lp/bugs/doc/externalbugtracker-mantis-logging-in.txt b/lib/lp/bugs/doc/externalbugtracker-mantis-logging-in.txt
2070index 259726c..8b87b9f 100644
2071--- a/lib/lp/bugs/doc/externalbugtracker-mantis-logging-in.txt
2072+++ b/lib/lp/bugs/doc/externalbugtracker-mantis-logging-in.txt
2073@@ -56,7 +56,6 @@ when Mantis redirects back to the login page with an error it forgets
2074 the "return" parameter.
2075
2076 >>> run_hook('http://mantis.example.com/login_page.php')
2077- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2078 Traceback (most recent call last):
2079 ...
2080 lp.bugs.externalbugtracker.base.BugTrackerConnectError: http://mantis.example.com/login_page.php: Mantis redirected us to the login page but did not set a return path.
2081diff --git a/lib/lp/bugs/doc/externalbugtracker-mantis.txt b/lib/lp/bugs/doc/externalbugtracker-mantis.txt
2082index bf2768b..0a15a0e 100644
2083--- a/lib/lp/bugs/doc/externalbugtracker-mantis.txt
2084+++ b/lib/lp/bugs/doc/externalbugtracker-mantis.txt
2085@@ -41,7 +41,6 @@ in the form "status: resolution" as follows:
2086 If the status can't be converted an UnknownRemoteStatusError is raised.
2087
2088 >>> alsa_mantis.convertRemoteStatus(('foo: bar')).title
2089- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2090 Traceback (most recent call last):
2091 ...
2092 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: foo: bar
2093diff --git a/lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt b/lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt
2094index 4c2916a..7225c7f 100644
2095--- a/lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt
2096+++ b/lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt
2097@@ -77,7 +77,6 @@ If the status isn't something that our Python_Bugs ExternalBugTracker can
2098 understand an UnknownRemoteStatusError will be raised.
2099
2100 >>> python_bugs.convertRemoteStatus('7:13').title
2101- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2102 Traceback (most recent call last):
2103 ...
2104 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: 7:13
2105diff --git a/lib/lp/bugs/doc/externalbugtracker-roundup.txt b/lib/lp/bugs/doc/externalbugtracker-roundup.txt
2106index 1d369a2..44c577b 100644
2107--- a/lib/lp/bugs/doc/externalbugtracker-roundup.txt
2108+++ b/lib/lp/bugs/doc/externalbugtracker-roundup.txt
2109@@ -58,7 +58,6 @@ support), and will generate an error when we have more or less field
2110 values compared to the expected number of fields.
2111
2112 >>> roundup.convertRemoteStatus('1:2')
2113- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2114 Traceback (most recent call last):
2115 ...
2116 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: 1 field(s) expected, got 2: 1:2
2117@@ -67,7 +66,6 @@ If the status isn't something that our Roundup ExternalBugTracker can
2118 understand an UnknownRemoteStatusError will be raised.
2119
2120 >>> roundup.convertRemoteStatus('eggs').title
2121- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2122 Traceback (most recent call last):
2123 ...
2124 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: Unrecognized value for field 1 (status): eggs
2125diff --git a/lib/lp/bugs/doc/externalbugtracker-rt.txt b/lib/lp/bugs/doc/externalbugtracker-rt.txt
2126index d25c1ed..7a1b9bd 100644
2127--- a/lib/lp/bugs/doc/externalbugtracker-rt.txt
2128+++ b/lib/lp/bugs/doc/externalbugtracker-rt.txt
2129@@ -70,7 +70,6 @@ Passing a status which the RequestTracker instance can't understand will
2130 result in an UnknownRemoteStatusError being raised.
2131
2132 >>> rt.convertRemoteStatus('spam').title
2133- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2134 Traceback (most recent call last):
2135 ...
2136 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: spam
2137@@ -159,7 +158,6 @@ our test RT instance simulate such a situation.
2138
2139 >>> with rt.responses(bad=True):
2140 ... rt.initializeRemoteBugDB([1585])
2141- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2142 Traceback (most recent call last):
2143 ...
2144 lp.bugs.externalbugtracker.base.BugTrackerConnectError: ...
2145@@ -168,7 +166,6 @@ This can also be demonstrated for importing bugs as a batch:
2146
2147 >>> with rt.responses(bad=True):
2148 ... rt.initializeRemoteBugDB([1585, 1586, 1587, 1588, 1589])
2149- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2150 Traceback (most recent call last):
2151 ...
2152 lp.bugs.externalbugtracker.base.BugTrackerConnectError: ...
2153@@ -276,7 +273,6 @@ If you try to get the remote product of a bug that doesn't exist you'll
2154 get a BugNotFound error.
2155
2156 >>> print(rt.getRemoteProduct('this-doesnt-exist'))
2157- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2158 Traceback (most recent call last):
2159 ...
2160 lp.bugs.externalbugtracker.base.BugNotFound: this-doesnt-exist
2161diff --git a/lib/lp/bugs/doc/externalbugtracker-sourceforge.txt b/lib/lp/bugs/doc/externalbugtracker-sourceforge.txt
2162index 707bbb4..ddaf8b0 100644
2163--- a/lib/lp/bugs/doc/externalbugtracker-sourceforge.txt
2164+++ b/lib/lp/bugs/doc/externalbugtracker-sourceforge.txt
2165@@ -70,7 +70,6 @@ If the status isn't something that our SourceForge ExternalBugTracker can
2166 understand an UnknownRemoteStatusError will be raised.
2167
2168 >>> sourceforge.convertRemoteStatus('eggs').title
2169- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2170 Traceback (most recent call last):
2171 ...
2172 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: eggs
2173@@ -100,7 +99,6 @@ resolution, to demonstrate this:
2174
2175 >>> with sourceforge.responses():
2176 ... sourceforge.initializeRemoteBugDB([0])
2177- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2178 Traceback (most recent call last):
2179 ...
2180 lp.bugs.externalbugtracker.base.UnparsableBugData: Remote bug 0 does not define a status.
2181@@ -134,7 +132,6 @@ Trying to access the remote status of a private bug, however, will raise
2182 a PrivateRemoteBug error.
2183
2184 >>> sourceforge.getRemoteStatus(99)
2185- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2186 Traceback (most recent call last):
2187 ...
2188 lp.bugs.externalbugtracker.base.PrivateRemoteBug: Bug 99 on http://example.com is private.
2189@@ -284,7 +281,6 @@ If you try to get the remote product of a bug that doesn't exist you'll
2190 get a BugNotFound error.
2191
2192 >>> print(sourceforge.getRemoteProduct(999999999))
2193- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2194 Traceback (most recent call last):
2195 ...
2196 lp.bugs.externalbugtracker.base.BugNotFound: 999999999
2197diff --git a/lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt b/lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt
2198index 4fdb9f7..e15b181 100644
2199--- a/lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt
2200+++ b/lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt
2201@@ -132,7 +132,6 @@ If authentication fails, a BugTrackerAuthenticationError will be raised.
2202 ... requests_mock.add(
2203 ... 'GET', re.compile(r'.*/launchpad-auth/.*'), status=401)
2204 ... trac._authenticate()
2205- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2206 Traceback (most recent call last):
2207 ...
2208 lp.bugs.externalbugtracker.base.BugTrackerAuthenticationError: http://example.com: 401 Client Error: Unauthorized
2209@@ -303,7 +302,6 @@ since that bug wasn't in the list of bugs that were modified since our
2210 last_checked time.
2211
2212 >>> trac.getRemoteStatus('2')
2213- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2214 Traceback (most recent call last):
2215 ...
2216 lp.bugs.externalbugtracker.base.BugNotFound: 2
2217@@ -398,7 +396,6 @@ Trying to call getCommentIds() on a bug that doesn't exist will raise a
2218 BugNotFound error.
2219
2220 >>> trac.getCommentIds(bug_watch_broken.remotebug)
2221- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2222 Traceback (most recent call last):
2223 ...
2224 lp.bugs.externalbugtracker.base.BugNotFound: 123
2225@@ -606,14 +603,12 @@ If we try to call getLaunchpadBugId() or setLaunchpadBugId() for a
2226 remote bug that doesn't exist, a BugNotFound error will be raised.
2227
2228 >>> trac.getLaunchpadBugId('12345')
2229- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2230 Traceback (most recent call last):
2231 ...
2232 lp.bugs.externalbugtracker.base.BugNotFound: 12345
2233
2234 >>> trac.setLaunchpadBugId(
2235 ... '12345', 1, 'http://bugs.launchpad.test/bugs/xxx')
2236- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2237 Traceback (most recent call last):
2238 ...
2239 lp.bugs.externalbugtracker.base.BugNotFound: 12345
2240diff --git a/lib/lp/bugs/doc/externalbugtracker-trac.txt b/lib/lp/bugs/doc/externalbugtracker-trac.txt
2241index 53df563..b3daf94 100644
2242--- a/lib/lp/bugs/doc/externalbugtracker-trac.txt
2243+++ b/lib/lp/bugs/doc/externalbugtracker-trac.txt
2244@@ -138,7 +138,6 @@ If the status isn't one that our Trac ExternalBugTracker can understand
2245 an UnknownRemoteStatusError will be raised.
2246
2247 >>> trac.convertRemoteStatus('eggs').title
2248- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2249 Traceback (most recent call last):
2250 ...
2251 lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: eggs
2252@@ -215,7 +214,6 @@ test.
2253
2254 >>> with trac.responses(broken=True):
2255 ... trac.initializeRemoteBugDB([6, 7, 8, 9, 10])
2256- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2257 Traceback (most recent call last):
2258 ...
2259 lp.bugs.externalbugtracker.base.UnparsableBugData: External bugtracker http://test.trac does not define all the necessary fields for bug status imports (Defined field names: ['<html>']).
2260@@ -224,7 +222,6 @@ This is also true of the single bug export mode.
2261
2262 >>> with trac.responses(broken=True):
2263 ... trac.initializeRemoteBugDB([6])
2264- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2265 Traceback (most recent call last):
2266 ...
2267 lp.bugs.externalbugtracker.base.UnparsableBugData: External bugtracker http://test.trac does not define all the necessary fields for bug status imports (Defined field names: ['<html>']).
2268@@ -233,7 +230,6 @@ Trying to get the remote status of the bug will raise a BugNotFound
2269 error since the bug was never imported.
2270
2271 >>> trac.getRemoteStatus(6)
2272- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2273 Traceback (most recent call last):
2274 ...
2275 lp.bugs.externalbugtracker.base.BugNotFound: 6
2276@@ -263,7 +259,6 @@ export, it will raise an UnparsableBugData error.
2277
2278 >>> with trac.responses(broken=True):
2279 ... trac._fetchBugData(query_url)
2280- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2281 Traceback (most recent call last):
2282 ...
2283 lp.bugs.externalbugtracker.base.UnparsableBugData: External bugtracker http://test.trac does not define all the necessary fields for bug status imports (Defined field names: ['<html>']).
2284diff --git a/lib/lp/bugs/doc/externalbugtracker.txt b/lib/lp/bugs/doc/externalbugtracker.txt
2285index 815d9db..9d22920 100644
2286--- a/lib/lp/bugs/doc/externalbugtracker.txt
2287+++ b/lib/lp/bugs/doc/externalbugtracker.txt
2288@@ -345,7 +345,6 @@ is, an error is raised.
2289
2290 >>> bug_watch_updater.updateBugWatches(
2291 ... PositiveTimeSkewExternalBugTracker(), [], now=utc_now)
2292- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2293 Traceback (most recent call last):
2294 ...
2295 lp.bugs.scripts.checkwatches.core.TooMuchTimeSkew: ...
2296@@ -357,7 +356,6 @@ is, an error is raised.
2297
2298 >>> bug_watch_updater.updateBugWatches(
2299 ... NegativeTimeSkewExternalBugTracker(), [], now=utc_now)
2300- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2301 Traceback (most recent call last):
2302 ...
2303 lp.bugs.scripts.checkwatches.core.TooMuchTimeSkew: ...
2304@@ -371,7 +369,6 @@ before re-raising the error.
2305 >>> server_time = utc_now - timedelta(minutes=25)
2306 >>> bug_watch_updater._getRemoteIdsToCheck(
2307 ... NegativeTimeSkewExternalBugTracker(), [], server_time, utc_now)
2308- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2309 Traceback (most recent call last):
2310 ...
2311 lp.bugs.scripts.checkwatches.core.TooMuchTimeSkew: ...
2312diff --git a/lib/lp/bugs/doc/initial-bug-contacts.txt b/lib/lp/bugs/doc/initial-bug-contacts.txt
2313index 68e66c0..46e8ed2 100644
2314--- a/lib/lp/bugs/doc/initial-bug-contacts.txt
2315+++ b/lib/lp/bugs/doc/initial-bug-contacts.txt
2316@@ -29,7 +29,6 @@ logged in to call this method:
2317 >>> sample_person = personset.getByName("name12")
2318
2319 >>> debian_firefox.addBugSubscription(sample_person, sample_person)
2320- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2321 Traceback (most recent call last):
2322 ...
2323 zope.security.interfaces.Unauthorized: ...
2324@@ -80,7 +79,6 @@ raises a DeleteSubscriptionError.
2325
2326 >>> foobar = personset.getByName("name16")
2327 >>> debian_firefox.removeBugSubscription(foobar, foobar)
2328- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2329 Traceback (most recent call last):
2330 ...
2331 lp.registry.errors.DeleteSubscriptionError: ...
2332diff --git a/lib/lp/bugs/doc/malone-xmlrpc.txt b/lib/lp/bugs/doc/malone-xmlrpc.txt
2333index 4e6d68d..5df5db6 100644
2334--- a/lib/lp/bugs/doc/malone-xmlrpc.txt
2335+++ b/lib/lp/bugs/doc/malone-xmlrpc.txt
2336@@ -165,7 +165,6 @@ Failing to specify a product or distribution.
2337
2338 >>> params = dict()
2339 >>> filebug_api.filebug(params)
2340- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2341 Traceback (most recent call last):
2342 ...
2343 xmlrpc.client.Fault: <Fault 60: 'Required arguments missing. You must specify either a product or distribution in which the bug exists.'>
2344@@ -174,7 +173,6 @@ Specifying *both* a product and distribution.
2345
2346 >>> params = dict(product='firefox', distro='ubuntu')
2347 >>> filebug_api.filebug(params)
2348- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2349 Traceback (most recent call last):
2350 ...
2351 xmlrpc.client.Fault: <Fault 70: 'Too many arguments. You may specify either a product or a distribution, but not both.'>
2352@@ -183,7 +181,6 @@ Specifying a non-existent product.
2353
2354 >>> params = dict(product='nosuchproduct')
2355 >>> filebug_api.filebug(params)
2356- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2357 Traceback (most recent call last):
2358 ...
2359 xmlrpc.client.Fault: <Fault 10: 'No such project: nosuchproduct'>
2360@@ -192,7 +189,6 @@ Specifying a non-existent distribution.
2361
2362 >>> params = dict(distro='nosuchdistro')
2363 >>> filebug_api.filebug(params)
2364- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2365 Traceback (most recent call last):
2366 ...
2367 xmlrpc.client.Fault: <Fault 80: 'No such distribution: nosuchdistro'>
2368@@ -201,7 +197,6 @@ Specifying a non-existent package.
2369
2370 >>> params = dict(distro='ubuntu', package='nosuchpackage')
2371 >>> filebug_api.filebug(params)
2372- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2373 Traceback (most recent call last):
2374 ...
2375 xmlrpc.client.Fault: <Fault 90: 'No such package: nosuchpackage'>
2376@@ -210,7 +205,6 @@ Missing summary.
2377
2378 >>> params = dict(product='firefox')
2379 >>> filebug_api.filebug(params)
2380- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2381 Traceback (most recent call last):
2382 ...
2383 xmlrpc.client.Fault: <Fault 100: 'Required parameter missing: summary'>
2384@@ -219,7 +213,6 @@ Missing comment.
2385
2386 >>> params = dict(product='firefox', summary='the summary')
2387 >>> filebug_api.filebug(params)
2388- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2389 Traceback (most recent call last):
2390 ...
2391 xmlrpc.client.Fault: <Fault 100: 'Required parameter missing: comment'>
2392@@ -230,7 +223,6 @@ Invalid subscriber.
2393 ... product='firefox', summary='summary', comment='comment',
2394 ... subscribers=["foo.bar@canonical.com", "nosuch@subscriber.com"])
2395 >>> filebug_api.filebug(params)
2396- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2397 Traceback (most recent call last):
2398 ...
2399 xmlrpc.client.Fault: <Fault 20: 'Invalid subscriber: No user with the email address "nosuch@subscriber.com" was found'>
2400diff --git a/lib/lp/bugs/doc/official-bug-tags.txt b/lib/lp/bugs/doc/official-bug-tags.txt
2401index 5d939be..44f7d93 100644
2402--- a/lib/lp/bugs/doc/official-bug-tags.txt
2403+++ b/lib/lp/bugs/doc/official-bug-tags.txt
2404@@ -41,7 +41,6 @@ But bug tags must be unique for each product and distribution.
2405 >>> store.add(distro_tag3)
2406 <lp.bugs.model.bugtarget.OfficialBugTag object at...
2407 >>> store.flush()
2408- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2409 Traceback (most recent call last):
2410 storm.database.IntegrityError: ...
2411
2412@@ -116,25 +115,21 @@ Ordinary users cannot add and remove official bug tags.
2413
2414 >>> login('no-priv@canonical.com')
2415 >>> ubuntu.addOfficialBugTag(u'foo')
2416- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2417 Traceback (most recent call last):
2418 ...
2419 zope.security.interfaces.Unauthorized: (<Distribution 'Ubuntu' (ubuntu)>, 'addOfficialBugTag', 'launchpad.Edit')
2420
2421 >>> ubuntu.removeOfficialBugTag(u'foo')
2422- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2423 Traceback (most recent call last):
2424 ...
2425 zope.security.interfaces.Unauthorized: (<Distribution 'Ubuntu' (ubuntu)>, 'removeOfficialBugTag', 'launchpad.Edit')
2426
2427 >>> firefox.addOfficialBugTag(u'foo')
2428- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2429 Traceback (most recent call last):
2430 ...
2431 zope.security.interfaces.Unauthorized: (<Product at ...>, 'addOfficialBugTag', 'launchpad.Edit')
2432
2433 >>> firefox.removeOfficialBugTag(u'foo')
2434- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2435 Traceback (most recent call last):
2436 ...
2437 zope.security.interfaces.Unauthorized: (<Product at ...>, 'removeOfficialBugTag', 'launchpad.Edit')
2438@@ -175,7 +170,6 @@ But only writable for users with edit permissions.
2439
2440 >>> login('no-priv@canonical.com')
2441 >>> ubuntu.official_bug_tags = [u'foo', u'bar']
2442- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2443 Traceback (most recent call last):
2444 ...
2445 zope.security.interfaces.Unauthorized: (<Distribution 'Ubuntu' (ubuntu)>, 'official_bug_tags', 'launchpad.BugSupervisor')
2446diff --git a/lib/lp/bugs/doc/vocabularies.txt b/lib/lp/bugs/doc/vocabularies.txt
2447index bfd449b..a7916bc 100644
2448--- a/lib/lp/bugs/doc/vocabularies.txt
2449+++ b/lib/lp/bugs/doc/vocabularies.txt
2450@@ -244,7 +244,6 @@ Trying to get a non-existent release will result in a
2451 NoSuchDistroSeries error.
2452
2453 >>> series_vocabulary.getTermByToken('non-such-release')
2454- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2455 Traceback (most recent call last):
2456 ...
2457 lp.registry.errors.NoSuchDistroSeries: ...
2458diff --git a/lib/lp/bugs/stories/bug-privacy/xx-bug-privacy.txt b/lib/lp/bugs/stories/bug-privacy/xx-bug-privacy.txt
2459index a0b911d..f6c5c45 100644
2460--- a/lib/lp/bugs/stories/bug-privacy/xx-bug-privacy.txt
2461+++ b/lib/lp/bugs/stories/bug-privacy/xx-bug-privacy.txt
2462@@ -80,7 +80,6 @@ Anonymous users cannot see private bugs filed on distros, of course!
2463 Not directly.
2464
2465 >>> anon_browser.open("http://launchpad.test/bugs/14")
2466- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2467 Traceback (most recent call last):
2468 ...
2469 zope.publisher.interfaces.NotFound: ...
2470@@ -97,7 +96,6 @@ Neither directly.
2471
2472 >>> browser = setupBrowser("Basic no-privs@canonical.com:test")
2473 >>> browser.open("http://launchpad.test/bugs/14")
2474- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2475 Traceback (most recent call last):
2476 ...
2477 zope.publisher.interfaces.NotFound: ...
2478diff --git a/lib/lp/bugs/stories/bug-privacy/xx-presenting-private-bugs.txt b/lib/lp/bugs/stories/bug-privacy/xx-presenting-private-bugs.txt
2479index 81778ee..f56deb7 100644
2480--- a/lib/lp/bugs/stories/bug-privacy/xx-presenting-private-bugs.txt
2481+++ b/lib/lp/bugs/stories/bug-privacy/xx-presenting-private-bugs.txt
2482@@ -61,13 +61,11 @@ But poor old no privs does not, and neither do anonymous users:
2483
2484 >>> browser = setupBrowser(auth="Basic no-priv@canonical.com:test")
2485 >>> browser.open('http://bugs.launchpad.test/bugs/4')
2486- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2487 Traceback (most recent call last):
2488 ...
2489 zope.publisher.interfaces.NotFound: ...
2490
2491 >>> anon_browser.open('http://bugs.launchpad.test/bugs/4')
2492- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2493 Traceback (most recent call last):
2494 ...
2495 zope.publisher.interfaces.NotFound: ...
2496diff --git a/lib/lp/bugs/stories/bug-release-management/xx-anonymous-bug-nomination.txt b/lib/lp/bugs/stories/bug-release-management/xx-anonymous-bug-nomination.txt
2497index 947bbb4..52c7c53 100644
2498--- a/lib/lp/bugs/stories/bug-release-management/xx-anonymous-bug-nomination.txt
2499+++ b/lib/lp/bugs/stories/bug-release-management/xx-anonymous-bug-nomination.txt
2500@@ -7,7 +7,6 @@ launchpad.Edit permission is required to do so.:
2501 >>> anon_browser.open('http://bugs.launchpad.test/jokosher/+bug/12')
2502
2503 >>> anon_browser.getLink('Nominate for series').click()
2504- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2505 Traceback (most recent call last):
2506 ...
2507 zope.security.interfaces.Unauthorized: ...'launchpad.Edit'...
2508diff --git a/lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt b/lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt
2509index 7da1064..9dff651 100644
2510--- a/lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt
2511+++ b/lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt
2512@@ -203,7 +203,6 @@ in the release task.
2513 >>> ubuntu_edit_url = (
2514 ... 'http://bugs.launchpad.test/ubuntu/+bug/2/+editstatus')
2515 >>> user_browser.getLink(url=ubuntu_edit_url)
2516- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2517 Traceback (most recent call last):
2518 ...
2519 zope.testbrowser.browser.LinkNotFoundError
2520@@ -255,7 +254,6 @@ the distribution task won't be editable.
2521 >>> user_browser.getControl('Save Changes').click()
2522
2523 >>> user_browser.getLink(url=ubuntu_edit_url)
2524- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2525 Traceback (most recent call last):
2526 ...
2527 zope.testbrowser.browser.LinkNotFoundError
2528@@ -272,7 +270,6 @@ general distribution task will remain uneditable.
2529 >>> user_browser.getControl('Save Changes').click()
2530
2531 >>> user_browser.getLink(url=ubuntu_edit_url)
2532- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2533 Traceback (most recent call last):
2534 ...
2535 zope.testbrowser.browser.LinkNotFoundError
2536@@ -293,7 +290,6 @@ in the series task.
2537 >>> firefox_edit_url = (
2538 ... 'http://bugs.launchpad.test/firefox/+bug/4/+editstatus')
2539 >>> user_browser.getLink(url=firefox_edit_url)
2540- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2541 Traceback (most recent call last):
2542 ...
2543 zope.testbrowser.browser.LinkNotFoundError
2544@@ -347,7 +343,6 @@ the distribution task won't be editable.
2545 >>> user_browser.getControl('Save Changes').click()
2546
2547 >>> user_browser.getLink(url=firefox_edit_url)
2548- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2549 Traceback (most recent call last):
2550 ...
2551 zope.testbrowser.browser.LinkNotFoundError
2552@@ -364,7 +359,6 @@ general distribution task will remain uneditable.
2553 >>> user_browser.getControl('Save Changes').click()
2554
2555 >>> user_browser.getLink(url=firefox_edit_url)
2556- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2557 Traceback (most recent call last):
2558 ...
2559 zope.testbrowser.browser.LinkNotFoundError
2560diff --git a/lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt b/lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt
2561index 9b3596f..4fa1eb4 100644
2562--- a/lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt
2563+++ b/lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt
2564@@ -28,14 +28,12 @@ distributions but not for other bug targets.
2565 >>> admin_browser.open(
2566 ... 'http://bugs.launchpad.test/firefox/1.0')
2567 >>> print(admin_browser.getLink('Edit official tags'))
2568- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2569 Traceback (most recent call last):
2570 ...
2571 zope.testbrowser.browser.LinkNotFoundError
2572
2573 >>> admin_browser.open(
2574 ... 'http://bugs.launchpad.test/firefox/1.0/+manage-official-tags')
2575- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2576 Traceback (most recent call last):
2577 ...
2578 zope.publisher.interfaces.NotFound: ...
2579@@ -45,14 +43,12 @@ administrators but not for ordinary users.
2580
2581 >>> browser.open('http://bugs.launchpad.test/firefox')
2582 >>> print(browser.getLink('Edit official tags'))
2583- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2584 Traceback (most recent call last):
2585 ...
2586 zope.testbrowser.browser.LinkNotFoundError
2587
2588 >>> browser.open(
2589 ... 'http://bugs.launchpad.test/firefox/+manage-official-tags')
2590- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2591 Traceback (most recent call last):
2592 ...
2593 zope.security.interfaces.Unauthorized: ...
2594diff --git a/lib/lp/bugs/stories/bugattachments/xx-bugattachments.txt b/lib/lp/bugs/stories/bugattachments/xx-bugattachments.txt
2595index caa26a7..01f6659 100644
2596--- a/lib/lp/bugs/stories/bugattachments/xx-bugattachments.txt
2597+++ b/lib/lp/bugs/stories/bugattachments/xx-bugattachments.txt
2598@@ -2,7 +2,6 @@ We need to login in order to add attachments.
2599
2600 >>> anon_browser.open(
2601 ... 'http://bugs.launchpad.test/firefox/+bug/1/+addcomment')
2602- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2603 Traceback (most recent call last):
2604 ...
2605 zope.security.interfaces.Unauthorized: ...
2606diff --git a/lib/lp/bugs/stories/bugs/bug-add-subscriber.txt b/lib/lp/bugs/stories/bugs/bug-add-subscriber.txt
2607index 0e82fc5..e0bbfc9 100644
2608--- a/lib/lp/bugs/stories/bugs/bug-add-subscriber.txt
2609+++ b/lib/lp/bugs/stories/bugs/bug-add-subscriber.txt
2610@@ -9,7 +9,6 @@ Anonymous users should not be able to subscribe someone else to a bug.
2611
2612 >>> anon_browser.open('http://bugs.launchpad.test/firefox/+bug/1')
2613 >>> anon_browser.getLink('Subscribe someone else').click()
2614- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2615 Traceback (most recent call last):
2616 ...
2617 zope.security.interfaces.Unauthorized: ...
2618diff --git a/lib/lp/bugs/stories/bugs/xx-bug-comment-attach-file.txt b/lib/lp/bugs/stories/bugs/xx-bug-comment-attach-file.txt
2619index 7d38b84..a870168 100644
2620--- a/lib/lp/bugs/stories/bugs/xx-bug-comment-attach-file.txt
2621+++ b/lib/lp/bugs/stories/bugs/xx-bug-comment-attach-file.txt
2622@@ -6,7 +6,6 @@ case, it means being logged in.
2623
2624 >>> anon_browser.open(
2625 ... "http://bugs.launchpad.test/firefox/+bug/1/+addcomment-form")
2626- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2627 Traceback (most recent call last):
2628 ..
2629 zope.security.interfaces.Unauthorized: ...launchpad.Edit...
2630diff --git a/lib/lp/bugs/stories/bugs/xx-bug-create-question.txt b/lib/lp/bugs/stories/bugs/xx-bug-create-question.txt
2631index f9ebcda..b2d2ee3 100644
2632--- a/lib/lp/bugs/stories/bugs/xx-bug-create-question.txt
2633+++ b/lib/lp/bugs/stories/bugs/xx-bug-create-question.txt
2634@@ -17,7 +17,6 @@ An anonymous user cannot create a question.
2635 'Bug #10 ... : Bugs : linux-source-2.6.15 package : Ubuntu'
2636
2637 >>> anon_browser.getLink('Convert to a question').click()
2638- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2639 Traceback (most recent call last):
2640 ...
2641 zope.security.interfaces.Unauthorized: ...
2642diff --git a/lib/lp/bugs/stories/bugs/xx-bug-edit.txt b/lib/lp/bugs/stories/bugs/xx-bug-edit.txt
2643index 9e9af89..7e888cd 100644
2644--- a/lib/lp/bugs/stories/bugs/xx-bug-edit.txt
2645+++ b/lib/lp/bugs/stories/bugs/xx-bug-edit.txt
2646@@ -40,7 +40,6 @@ there is no link to the original description.
2647
2648 >>> user_browser.open('http://bugs.launchpad.test/firefox/+bug/4')
2649 >>> user_browser.getLink('original description')
2650- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2651 Traceback (most recent call last):
2652 ...
2653 zope.testbrowser.browser.LinkNotFoundError
2654diff --git a/lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt b/lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt
2655index 31fb476..1a8c9cc 100644
2656--- a/lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt
2657+++ b/lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt
2658@@ -59,7 +59,6 @@ Ordinary users also cannot reach the message via direct link.
2659 >>> test_browser.open(
2660 ... 'http://bugs.launchpad.test'
2661 ... '/jokosher/+bug/11/comments/%d' % (int(latest_index[1:]) + 1))
2662- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2663 Traceback (most recent call last):
2664 ...
2665 zope.publisher.interfaces.NotFound: ...
2666diff --git a/lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt b/lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt
2667index f5b0609..747f331 100644
2668--- a/lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt
2669+++ b/lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt
2670@@ -56,7 +56,6 @@ buttons) directly either.
2671 >>> user_browser.open(
2672 ... "http://launchpad.test/distros/ubuntu/+source/mozilla-firefox/"
2673 ... "+bug/1/nominations/2/+edit-form")
2674- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2675 Traceback (most recent call last):
2676 ...
2677 zope.security.interfaces.Unauthorized: ...
2678diff --git a/lib/lp/bugs/stories/bugs/xx-bugs-advanced-search-upstream-status.txt b/lib/lp/bugs/stories/bugs/xx-bugs-advanced-search-upstream-status.txt
2679index cdbc150..b405996 100644
2680--- a/lib/lp/bugs/stories/bugs/xx-bugs-advanced-search-upstream-status.txt
2681+++ b/lib/lp/bugs/stories/bugs/xx-bugs-advanced-search-upstream-status.txt
2682@@ -211,7 +211,6 @@ Other values for status_upstream lead to an error.
2683 >>> anon_browser.open(
2684 ... 'http://bugs.launchpad.test/ubuntu/+bugs?' + urlencode(
2685 ... bookmark_params, True))
2686- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2687 Traceback (most recent call last):
2688 ...
2689 lp.app.errors.UnexpectedFormData: Unexpected value for field 'status_upstream'. Perhaps your bookmarks are out of date or you changed the URL by hand?
2690diff --git a/lib/lp/bugs/stories/bugs/xx-distribution-bugs-page.txt b/lib/lp/bugs/stories/bugs/xx-distribution-bugs-page.txt
2691index 0a114d2..ef5e0be 100644
2692--- a/lib/lp/bugs/stories/bugs/xx-distribution-bugs-page.txt
2693+++ b/lib/lp/bugs/stories/bugs/xx-distribution-bugs-page.txt
2694@@ -86,7 +86,6 @@ see any link reporting that bugs can expire.
2695
2696 >>> anon_browser.open('http://bugs.launchpad.test/debian/+bugs')
2697 >>> expirable_bugs_link = anon_browser.getLink('Incomplete bugs')
2698- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2699 Traceback (most recent call last):
2700 ...
2701 zope.testbrowser.browser.LinkNotFoundError
2702diff --git a/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt b/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt
2703index b54b9f1..8bbe996 100644
2704--- a/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt
2705+++ b/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt
2706@@ -180,7 +180,6 @@ This specialized list does not include the search form. So there is no
2707 The 'Report a bug' link is also not present.
2708
2709 >>> user_browser.getLink('Report a bug')
2710- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2711 Traceback (most recent call last):
2712 ...
2713 zope.testbrowser.browser.LinkNotFoundError
2714diff --git a/lib/lp/bugs/stories/bugs/xx-product-bugs-page.txt b/lib/lp/bugs/stories/bugs/xx-product-bugs-page.txt
2715index 5d17888..fdc8858 100644
2716--- a/lib/lp/bugs/stories/bugs/xx-product-bugs-page.txt
2717+++ b/lib/lp/bugs/stories/bugs/xx-product-bugs-page.txt
2718@@ -98,7 +98,6 @@ cannot see any link reporting that bugs can expire.
2719
2720 >>> anon_browser.open('http://bugs.launchpad.test/thunderbird')
2721 >>> expirable_bugs_link = anon_browser.getLink('Incomplete bugs')
2722- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2723 Traceback (most recent call last):
2724 ...
2725 zope.testbrowser.browser.LinkNotFoundError
2726diff --git a/lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt b/lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt
2727index b183d8f..39d7cb4 100644
2728--- a/lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt
2729+++ b/lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt
2730@@ -11,7 +11,6 @@ For example, bug one has more than one Package field.
2731
2732 >>> user_browser.open('http://launchpad.test/bugs/1')
2733 >>> user_browser.getControl('Package')
2734- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2735 Traceback (most recent call last):
2736 ...
2737 zope.testbrowser.browser.AmbiguityError: label ...'Package' matches: ...
2738diff --git a/lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt b/lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt
2739index ff2d0cd..e8b4111 100644
2740--- a/lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt
2741+++ b/lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt
2742@@ -41,13 +41,11 @@ those statuses are not shown in the UI:
2743 ['Confirmed']
2744
2745 >>> status_control.displayValue = ["Won't Fix"]
2746- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2747 Traceback (most recent call last):
2748 ...
2749 zope.testbrowser.browser.ItemNotFoundError: Won't Fix
2750
2751 >>> status_control.displayValue = ["Triaged"]
2752- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2753 Traceback (most recent call last):
2754 ...
2755 zope.testbrowser.browser.ItemNotFoundError: Triaged
2756diff --git a/lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt b/lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt
2757index d60ed21..dc57806 100644
2758--- a/lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt
2759+++ b/lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt
2760@@ -26,7 +26,6 @@ respective bug task.
2761 http://bugs.launchpad.test/firefox/+bug/1/+editstatus
2762
2763 >>> print(admin_browser.getLink('Confirmed').url)
2764- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2765 Traceback (most recent call last):
2766 ...
2767 zope.testbrowser.browser.LinkNotFoundError
2768diff --git a/lib/lp/bugs/stories/bugtask-management/xx-view-editable-bug-task.txt b/lib/lp/bugs/stories/bugtask-management/xx-view-editable-bug-task.txt
2769index 5159513..c906387 100644
2770--- a/lib/lp/bugs/stories/bugtask-management/xx-view-editable-bug-task.txt
2771+++ b/lib/lp/bugs/stories/bugtask-management/xx-view-editable-bug-task.txt
2772@@ -2,7 +2,6 @@ An anonymous user who tries to access the bugtask edit page will be
2773 redirected to the login page.
2774
2775 >>> browser.open("http://launchpad.test/thunderbird/+bug/9/+editstatus")
2776- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2777 Traceback (most recent call last):
2778 ...
2779 zope.security.interfaces.Unauthorized: ...
2780@@ -23,7 +22,6 @@ Even when the product has a bug supervisor, see bug #49891.
2781 >>> logout()
2782
2783 >>> browser.open("http://launchpad.test/firefox/+bug/1/+editstatus")
2784- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2785 Traceback (most recent call last):
2786 ...
2787 zope.security.interfaces.Unauthorized: ...
2788diff --git a/lib/lp/bugs/stories/bugtask-searches/xx-unexpected-form-data.txt b/lib/lp/bugs/stories/bugtask-searches/xx-unexpected-form-data.txt
2789index aefde8b..07c8a85 100644
2790--- a/lib/lp/bugs/stories/bugtask-searches/xx-unexpected-form-data.txt
2791+++ b/lib/lp/bugs/stories/bugtask-searches/xx-unexpected-form-data.txt
2792@@ -4,14 +4,12 @@ is raised.
2793
2794 >>> browser.open(
2795 ... "http://localhost/ubuntu/+bugs?search=Search&field.status=Fred")
2796- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2797 Traceback (most recent call last):
2798 ...
2799 lp.app.errors.UnexpectedFormData: Unexpected value for field 'status'...
2800
2801 >>> browser.open(
2802 ... "http://localhost/ubuntu/+bugs?search=Search&orderby=foobar")
2803- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2804 Traceback (most recent call last):
2805 ...
2806 lp.app.errors.UnexpectedFormData: Unknown sort column 'foobar'
2807@@ -19,7 +17,6 @@ is raised.
2808 >>> browser.open(
2809 ... "http://launchpad.test/firefox/+bugs?"
2810 ... "field.status_upstream=hide_open")
2811- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2812 Traceback (most recent call last):
2813 ...
2814 lp.app.errors.UnexpectedFormData: Unexpected value for field 'status_upstream'...
2815diff --git a/lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt b/lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt
2816index 7857961..7d7561c 100644
2817--- a/lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt
2818+++ b/lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt
2819@@ -21,7 +21,6 @@ error if we attempt it as a GET request.
2820 ... token_string)
2821
2822 >>> anon_browser.open(token_url)
2823- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2824 Traceback (most recent call last):
2825 ...
2826 urllib.error.HTTPError: HTTP Error 405: Method Not Allowed
2827diff --git a/lib/lp/bugs/stories/bugtracker/xx-bugtracker-remote-bug.txt b/lib/lp/bugs/stories/bugtracker/xx-bugtracker-remote-bug.txt
2828index 0e9753f..81fdee9 100644
2829--- a/lib/lp/bugs/stories/bugtracker/xx-bugtracker-remote-bug.txt
2830+++ b/lib/lp/bugs/stories/bugtracker/xx-bugtracker-remote-bug.txt
2831@@ -40,7 +40,6 @@ Found page is generated:
2832
2833 >>> browser.handleErrors = True
2834 >>> browser.open('http://launchpad.test/bugs/bugtrackers/mozilla.org/99999')
2835- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2836 Traceback (most recent call last):
2837 ...
2838 urllib.error.HTTPError: HTTP Error 404: Not Found
2839@@ -96,7 +95,6 @@ user logs in):
2840
2841 >>> anon_browser.open(
2842 ... 'http://bugs.launchpad.test/bugs/bugtrackers/mozilla.org/2000')
2843- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2844 Traceback (most recent call last):
2845 ...
2846 zope.publisher.interfaces.NotFound: ...
2847diff --git a/lib/lp/bugs/stories/cve/cve-linking.txt b/lib/lp/bugs/stories/cve/cve-linking.txt
2848index bdd98f7..2967f58 100644
2849--- a/lib/lp/bugs/stories/cve/cve-linking.txt
2850+++ b/lib/lp/bugs/stories/cve/cve-linking.txt
2851@@ -16,7 +16,6 @@ This link is only available to registered user:
2852
2853 >>> anon_browser.open('http://launchpad.test/bugs/cve/2005-2737')
2854 >>> anon_browser.getLink(url='+linkbug').click()
2855- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2856 Traceback (most recent call last):
2857 ...
2858 zope.security.interfaces.Unauthorized: ...
2859diff --git a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt
2860index 86f2876..2d615ed 100644
2861--- a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt
2862+++ b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt
2863@@ -509,7 +509,6 @@ performance problem in production.
2864 ... """
2865 >>> config.push('bug_search_feed_data', bug_search_feed_data)
2866 >>> browser.open(url)
2867- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2868 Traceback (most recent call last):
2869 ...
2870 zope.security.interfaces.Unauthorized: Bug search feed deactivated
2871diff --git a/lib/lp/bugs/stories/feeds/xx-bug-html.txt b/lib/lp/bugs/stories/feeds/xx-bug-html.txt
2872index ccf57cb..510e91a 100644
2873--- a/lib/lp/bugs/stories/feeds/xx-bug-html.txt
2874+++ b/lib/lp/bugs/stories/feeds/xx-bug-html.txt
2875@@ -201,7 +201,7 @@ performance problem in production.
2876 ... is_bug_search_feed_active: False
2877 ... """
2878 >>> config.push('bug_search_feed_data', bug_search_feed_data)
2879- >>> browser.open(url) # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2880+ >>> browser.open(url)
2881 Traceback (most recent call last):
2882 ...
2883 zope.security.interfaces.Unauthorized: Bug search feed deactivated
2884diff --git a/lib/lp/bugs/stories/patches-view/patches-view.txt b/lib/lp/bugs/stories/patches-view/patches-view.txt
2885index d8fd8f6..6644208 100644
2886--- a/lib/lp/bugs/stories/patches-view/patches-view.txt
2887+++ b/lib/lp/bugs/stories/patches-view/patches-view.txt
2888@@ -201,7 +201,6 @@ importance and status.
2889 But we can't sort by things that aren't validated by the view.
2890
2891 >>> anon_browser.open('http://bugs.launchpad.test/patchy-product-1/+patches?orderby=star-sign')
2892- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2893 Traceback (most recent call last):
2894 ...
2895 lp.app.errors.UnexpectedFormData: Unexpected value for field 'orderby': 'star-sign'
2896diff --git a/lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt b/lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt
2897index 6160429..adfcedf 100644
2898--- a/lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt
2899+++ b/lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt
2900@@ -71,7 +71,6 @@ fails, because we pretend that inaccessible private bugs do not exist.
2901 >>> browser = setupBrowser()
2902 >>> browser.open(
2903 ... "http://launchpad.test/firefox/+bug/%s/+editstatus" % bug_id)
2904- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2905 Traceback (most recent call last):
2906 ...
2907 zope.publisher.interfaces.NotFound: ...
2908@@ -82,7 +81,6 @@ on which the no-privs is not an explicit subscriber.
2909 >>> browser = setupBrowser(auth="Basic no-priv@canonical.com:test")
2910 >>> browser.open(
2911 ... "http://launchpad.test/firefox/+bug/%s/+editstatus" % bug_id)
2912- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2913 Traceback (most recent call last):
2914 ...
2915 zope.publisher.interfaces.NotFound: ...
2916diff --git a/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt b/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt
2917index 52f4fb7..3ebcac5 100644
2918--- a/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt
2919+++ b/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt
2920@@ -216,7 +216,6 @@ Note that the "CVE reports" link is not shown above; distribution
2921 source packages do not have a CVE reports page.
2922
2923 >>> print(user_browser.getLink('CVE report').url)
2924- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2925 Traceback (most recent call last):
2926 ...
2927 zope.testbrowser.browser.LinkNotFoundError
2928@@ -289,7 +288,6 @@ Note that the "CVE reports" link is not shown above; source packages
2929 do not have a CVE reports page.
2930
2931 >>> print(user_browser.getLink('CVE report').url)
2932- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2933 Traceback (most recent call last):
2934 ...
2935 zope.testbrowser.browser.LinkNotFoundError
2936@@ -362,7 +360,6 @@ Note that the "CVE reports" link is not shown above; project groups do
2937 not have a CVE reports page.
2938
2939 >>> print(user_browser.getLink('CVE report').url)
2940- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2941 Traceback (most recent call last):
2942 ...
2943 zope.testbrowser.browser.LinkNotFoundError
2944diff --git a/lib/lp/bugs/tests/buglinktarget.txt b/lib/lp/bugs/tests/buglinktarget.txt
2945index 119c94e..305fa6a 100644
2946--- a/lib/lp/bugs/tests/buglinktarget.txt
2947+++ b/lib/lp/bugs/tests/buglinktarget.txt
2948@@ -78,7 +78,7 @@ Of course, if no new link is created, no events should be fired:
2949 Anonymous users cannot use linkBug():
2950
2951 >>> login(ANONYMOUS)
2952- >>> target.linkBug(bug2) # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2953+ >>> target.linkBug(bug2)
2954 Traceback (most recent call last):
2955 ...
2956 zope.security.interfaces.Unauthorized: ...
2957@@ -91,7 +91,6 @@ if they are an administrator:
2958 >>> private_bug.setPrivate(True, factory.makePerson())
2959 True
2960 >>> target.linkBug(private_bug, factory.makePerson())
2961- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2962 Traceback (most recent call last):
2963 ...
2964 zope.security.interfaces.Unauthorized: ...
2965@@ -121,7 +120,6 @@ This method is only available to registered users:
2966
2967 >>> login(ANONYMOUS)
2968 >>> target.unlinkBug(bug2, None)
2969- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2970 Traceback (most recent call last):
2971 ...
2972 zope.security.interfaces.Unauthorized: ...
2973@@ -164,7 +162,6 @@ A user can only remove a link to a private bug if they are subscribed to
2974 the bug or if they are an administrator.
2975
2976 >>> target.unlinkBug(private_bug)
2977- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2978 Traceback (most recent call last):
2979 ...
2980 zope.security.interfaces.Unauthorized: ...
2981diff --git a/lib/lp/bugs/tests/bugs-emailinterface.txt b/lib/lp/bugs/tests/bugs-emailinterface.txt
2982index b3e2402..452b6bf 100644
2983--- a/lib/lp/bugs/tests/bugs-emailinterface.txt
2984+++ b/lib/lp/bugs/tests/bugs-emailinterface.txt
2985@@ -430,7 +430,6 @@ IWeaklyAuthenticatedPrincipal was provided by the current principal, no
2986 changes was made to the bug, and the comment wasn't added.
2987
2988 >>> added_message = getUtility(IMessageSet).get('<yada-yada-test2>')[0]
2989- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2990 Traceback (most recent call last):
2991 ...
2992 lp.app.errors.NotFoundError: ...
2993@@ -465,7 +464,6 @@ The same will happen if we send the same email without signing it:
2994 >>> transaction.commit()
2995
2996 >>> added_message = getUtility(IMessageSet).get('<yada-yada-test2>')[0]
2997- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
2998 Traceback (most recent call last):
2999 ...
3000 lp.app.errors.NotFoundError: ...
3001diff --git a/lib/lp/bugs/tests/bugzilla-api-xmlrpc-transport.txt b/lib/lp/bugs/tests/bugzilla-api-xmlrpc-transport.txt
3002index 2d3cad2..ce0f317 100644
3003--- a/lib/lp/bugs/tests/bugzilla-api-xmlrpc-transport.txt
3004+++ b/lib/lp/bugs/tests/bugzilla-api-xmlrpc-transport.txt
3005@@ -52,7 +52,6 @@ an error being raised.
3006
3007 >>> server.User.login(
3008 ... {'login': 'test@canonical.com', 'password': 'test'})
3009- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3010 Traceback (most recent call last):
3011 ...
3012 xmlrpc.client.Fault: <Fault 300: 'The username or password you entered is not valid.'>
3013@@ -455,7 +454,6 @@ add_comment() requires authentication.
3014
3015 >>> bugzilla_transport.expireCookie(bugzilla_transport.auth_cookie)
3016 >>> server.Bug.add_comment({'id': 1, 'comment': "This won't work"})
3017- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3018 Traceback (most recent call last):
3019 ...
3020 xmlrpc.client.Fault: <Fault 410: 'Login Required'>
3021@@ -492,7 +490,6 @@ If add_comment is called on a bug that doesn't exist a fault will be
3022 raised.
3023
3024 >>> server.Bug.add_comment({'id': 42, 'comment': "This breaks"})
3025- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3026 Traceback (most recent call last):
3027 ...
3028 xmlrpc.client.Fault: <Fault 101: 'Bug #42 does not exist.'>
3029@@ -545,7 +542,6 @@ Trying to add a non Bugzilla or Launchpad URL will raise a Fault.
3030
3031 >>> server.Bug.update_see_also({
3032 ... 'ids': [1], 'add': ['http://example.com/fail']});
3033- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3034 Traceback (most recent call last):
3035 ...
3036 xmlrpc.client.Fault: <Fault 112: 'Bug URL http://example.com/fail is invalid.'>
3037diff --git a/lib/lp/bugs/tests/bugzilla-xmlrpc-transport.txt b/lib/lp/bugs/tests/bugzilla-xmlrpc-transport.txt
3038index f7f7027..445dbc6 100644
3039--- a/lib/lp/bugs/tests/bugzilla-xmlrpc-transport.txt
3040+++ b/lib/lp/bugs/tests/bugzilla-xmlrpc-transport.txt
3041@@ -51,7 +51,6 @@ Authentication
3042 Some methods require authentication.
3043
3044 >>> server.Test.login_required()
3045- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3046 Traceback (most recent call last):
3047 ...
3048 xmlrpc.client.Fault: <Fault 410: 'Login Required'>
3049@@ -439,7 +438,6 @@ add_comment() requires authentication.
3050
3051 >>> bugzilla_transport.expireCookie(bugzilla_transport.auth_cookie)
3052 >>> server.Launchpad.add_comment({'id': 1, 'comment': "This won't work"})
3053- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3054 Traceback (most recent call last):
3055 ...
3056 xmlrpc.client.Fault: <Fault 410: 'Login Required'>
3057@@ -471,7 +469,6 @@ If add_comment is called on a bug that doesn't exist a fault will be
3058 raised.
3059
3060 >>> server.Launchpad.add_comment({'id': 42, 'comment': "This won't work"})
3061- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3062 Traceback (most recent call last):
3063 ...
3064 xmlrpc.client.Fault: <Fault 101: 'Bug #42 does not exist.'>
3065@@ -489,7 +486,6 @@ Launchpad.set_link() requires authentication.
3066
3067 >>> bugzilla_transport.expireCookie(bugzilla_transport.auth_cookie)
3068 >>> server.Launchpad.set_link({'id': 1, 'launchpad_id': 1})
3069- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3070 Traceback (most recent call last):
3071 ...
3072 xmlrpc.client.Fault: <Fault 410: 'Login Required'>
3073diff --git a/lib/lp/bugs/tests/externalbugtracker-xmlrpc-transport.txt b/lib/lp/bugs/tests/externalbugtracker-xmlrpc-transport.txt
3074index a18a9fd..53305fb 100644
3075--- a/lib/lp/bugs/tests/externalbugtracker-xmlrpc-transport.txt
3076+++ b/lib/lp/bugs/tests/externalbugtracker-xmlrpc-transport.txt
3077@@ -89,7 +89,6 @@ If an error occurs trying to make the request, an
3078 ... requests_mock.add(
3079 ... 'POST', 'http://www.example.com/xmlrpc', status=500)
3080 ... transport.request('www.example.com', 'xmlrpc', request_body)
3081- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3082 Traceback (most recent call last):
3083 ...
3084 xmlrpc.client.ProtocolError: <ProtocolError for http://www.example.com/xmlrpc: 500 Internal Server Error>
3085diff --git a/lib/lp/bugs/tests/trac-xmlrpc-transport.txt b/lib/lp/bugs/tests/trac-xmlrpc-transport.txt
3086index 7f52f95..8703cb3 100644
3087--- a/lib/lp/bugs/tests/trac-xmlrpc-transport.txt
3088+++ b/lib/lp/bugs/tests/trac-xmlrpc-transport.txt
3089@@ -16,7 +16,6 @@ installed implement.
3090 All the methods need an authentication cookie to be sent.
3091
3092 >>> server.launchpad.bugtracker_version()
3093- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3094 Traceback (most recent call last):
3095 ...
3096 xmlrpc.client.ProtocolError: <... 403 Forbidden>
3097@@ -315,7 +314,6 @@ Calling `launchpad.get_launchpad_bug()` on a remote bug that doesn't
3098 exist will result in a Fault being raised.
3099
3100 >>> trac_transport.get_launchpad_bug('12345')
3101- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3102 Traceback (most recent call last):
3103 ...
3104 xmlrpc.client.Fault: <Fault 1001: 'Ticket does not exist'>
3105@@ -341,7 +339,6 @@ Trying to call `launchpad.set_launchpad_bug()` on a remote bug that
3106 doesn't exist will result in a Fault.
3107
3108 >>> trac_transport.set_launchpad_bug('12345', 1)
3109- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3110 Traceback (most recent call last):
3111 ...
3112 xmlrpc.client.Fault: <Fault 1001: 'Ticket does not exist'>
3113diff --git a/lib/lp/buildmaster/doc/builder.txt b/lib/lp/buildmaster/doc/builder.txt
3114index e3620e9..af1c423 100644
3115--- a/lib/lp/buildmaster/doc/builder.txt
3116+++ b/lib/lp/buildmaster/doc/builder.txt
3117@@ -64,7 +64,6 @@ And also by ID.
3118 >>> print(builderset.get(2).name)
3119 frog
3120 >>> print(builderset.get(100).name)
3121- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3122 Traceback (most recent call last):
3123 ...
3124 lp.app.errors.NotFoundError: 100
3125diff --git a/lib/lp/buildmaster/stories/xx-builder-page.txt b/lib/lp/buildmaster/stories/xx-builder-page.txt
3126index 65ded43..3082ddb 100644
3127--- a/lib/lp/buildmaster/stories/xx-builder-page.txt
3128+++ b/lib/lp/buildmaster/stories/xx-builder-page.txt
3129@@ -266,7 +266,6 @@ Farm list. Celso cannot see the link to it.
3130 386 1 empty
3131
3132 >>> cprov_browser.getLink('bob').click()
3133- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3134 Traceback (most recent call last):
3135 ...
3136 zope.testbrowser.browser.LinkNotFoundError
3137@@ -286,7 +285,6 @@ Change details link.
3138
3139 >>> user_browser.open("http://localhost/+builds/bob")
3140 >>> user_browser.getLink('Change details')
3141- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3142 Traceback (most recent call last):
3143 zope.testbrowser.browser.LinkNotFoundError
3144
3145@@ -299,7 +297,6 @@ Nor is the toggle mode control included on the index page.
3146 Nor can they access the edit page directly via URL.
3147
3148 >>> user_browser.open("http://localhost/+builds/bob/+edit")
3149- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3150 Traceback (most recent call last):
3151 ...
3152 zope.security.interfaces.Unauthorized: ...
3153@@ -308,7 +305,6 @@ The same is true for the anonymous user:
3154
3155 >>> anon_browser.open("http://localhost/+builds/bob")
3156 >>> anon_browser.getLink('Change details')
3157- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3158 Traceback (most recent call last):
3159 zope.testbrowser.browser.LinkNotFoundError
3160
3161@@ -318,7 +314,6 @@ The same is true for the anonymous user:
3162 ...
3163
3164 >>> anon_browser.open("http://localhost/+builds/bob/+edit")
3165- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3166 Traceback (most recent call last):
3167 ...
3168 zope.security.interfaces.Unauthorized: ...
3169diff --git a/lib/lp/buildmaster/stories/xx-buildfarm-index.txt b/lib/lp/buildmaster/stories/xx-buildfarm-index.txt
3170index 16932a5..9b77408 100644
3171--- a/lib/lp/buildmaster/stories/xx-buildfarm-index.txt
3172+++ b/lib/lp/buildmaster/stories/xx-buildfarm-index.txt
3173@@ -110,13 +110,11 @@ and are not permitted if they go directly to the URL.
3174
3175 >>> anon_browser.open("http://launchpad.test/+builds/+index")
3176 >>> anon_browser.getLink("Register a new build machine")
3177- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3178 Traceback (most recent call last):
3179 ...
3180 zope.testbrowser.browser.LinkNotFoundError
3181
3182 >>> anon_browser.open("http://launchpad.test/+builds/+new")
3183- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3184 Traceback (most recent call last):
3185 ...
3186 zope.security.interfaces.Unauthorized: ..., 'launchpad.Admin')
3187diff --git a/lib/lp/code/doc/branch.txt b/lib/lp/code/doc/branch.txt
3188index 9f8e8aa..0334752 100644
3189--- a/lib/lp/code/doc/branch.txt
3190+++ b/lib/lp/code/doc/branch.txt
3191@@ -120,7 +120,6 @@ are writable, but the owner can be set using the `setOwner` method.
3192
3193 >>> login('admin@canonical.com')
3194 >>> new_branch.registrant = factory.makePerson()
3195- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3196 Traceback (most recent call last):
3197 ...
3198 zope.security.interfaces.ForbiddenAttribute: ('registrant', <Branch ...>)
3199@@ -140,7 +139,6 @@ and -, +, _ and @ are allowed after that.
3200 >>> namespace.createBranch(
3201 ... branch_type=BranchType.HOSTED, name='invalid name!',
3202 ... registrant=registrant)
3203- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3204 Traceback (most recent call last):
3205 ...
3206 lp.app.validators.LaunchpadValidationError: Invalid branch name &#x27;invalid name!&#x27;. Branch ...
3207diff --git a/lib/lp/code/doc/codeimport-machine.txt b/lib/lp/code/doc/codeimport-machine.txt
3208index e24d9b6..6a963e6 100644
3209--- a/lib/lp/code/doc/codeimport-machine.txt
3210+++ b/lib/lp/code/doc/codeimport-machine.txt
3211@@ -107,7 +107,6 @@ permitted.
3212 OFFLINE
3213
3214 >>> new_machine.state = CodeImportMachineState.ONLINE
3215- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3216 Traceback (most recent call last):
3217 ...
3218 zope.security.interfaces.ForbiddenAttribute: ...
3219diff --git a/lib/lp/code/doc/codeimport.txt b/lib/lp/code/doc/codeimport.txt
3220index c12d96b..f6770f0 100644
3221--- a/lib/lp/code/doc/codeimport.txt
3222+++ b/lib/lp/code/doc/codeimport.txt
3223@@ -430,7 +430,6 @@ When you ask for an id that is not present ICodeImportSet.get() raises
3224 lp.app.errors.NotFoundError, rather than some internal database exception.
3225
3226 >>> code_import_set.get(-10)
3227- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3228 Traceback (most recent call last):
3229 ...
3230 lp.app.errors.NotFoundError: -10
3231@@ -471,7 +470,6 @@ on those objects.
3232 >>> print(svn_import.url)
3233 svn://svn.example.com/trunk
3234 >>> svn_import.url = 'svn://svn.example.com/branch/1.0'
3235- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3236 Traceback (most recent call last):
3237 ...
3238 zope.security.interfaces.ForbiddenAttribute: ('url', <CodeImport ...>)
3239@@ -497,7 +495,6 @@ The launchpad.Edit privilege is required to use CodeImport.updateFromData.
3240
3241 >>> login(ANONYMOUS)
3242 >>> svn_import.updateFromData({}, nopriv)
3243- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3244 Traceback (most recent call last):
3245 ...
3246 zope.security.interfaces.Unauthorized: (<CodeImport ...>, 'updateFromData', 'launchpad.Moderate')
3247diff --git a/lib/lp/code/stories/branches/xx-branch-edit.txt b/lib/lp/code/stories/branches/xx-branch-edit.txt
3248index f493201..7498979 100644
3249--- a/lib/lp/code/stories/branches/xx-branch-edit.txt
3250+++ b/lib/lp/code/stories/branches/xx-branch-edit.txt
3251@@ -32,7 +32,6 @@ owner, Launchpad administrators or members of the Bazaar Experts team.
3252 >>> nopriv_browser.open(
3253 ... 'http://code.launchpad.test/~name12/gnome-terminal/klingon')
3254 >>> link = nopriv_browser.getLink('Change branch details')
3255- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3256 Traceback (most recent call last):
3257 zope.testbrowser.browser.LinkNotFoundError
3258
3259diff --git a/lib/lp/code/stories/branches/xx-branch-reference.txt b/lib/lp/code/stories/branches/xx-branch-reference.txt
3260index 31fba80..a308c33 100644
3261--- a/lib/lp/code/stories/branches/xx-branch-reference.txt
3262+++ b/lib/lp/code/stories/branches/xx-branch-reference.txt
3263@@ -56,7 +56,6 @@ a 404 error:
3264
3265 >>> anon_browser.open('http://launchpad.test/'
3266 ... 'firefox/1.0/.bzr/branch/location')
3267- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3268 Traceback (most recent call last):
3269 ...
3270 zope.publisher.interfaces.NotFound: ... '.bzr'
3271@@ -80,7 +79,6 @@ associated with it, we get a 404 error:
3272
3273 >>> anon_browser.open('http://launchpad.test/'
3274 ... 'firefox/.bzr/branch/location')
3275- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3276 Traceback (most recent call last):
3277 ...
3278 zope.publisher.interfaces.NotFound: ... '.bzr'
3279diff --git a/lib/lp/code/stories/branches/xx-branchmergeproposals.txt b/lib/lp/code/stories/branches/xx-branchmergeproposals.txt
3280index 798c6d0..882a87e 100644
3281--- a/lib/lp/code/stories/branches/xx-branchmergeproposals.txt
3282+++ b/lib/lp/code/stories/branches/xx-branchmergeproposals.txt
3283@@ -196,7 +196,6 @@ People not logged in cannot perform reviews.
3284
3285 >>> anon_browser.open(klingon_proposal)
3286 >>> link = anon_browser.getLink('[Review]')
3287- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3288 Traceback (most recent call last):
3289 zope.testbrowser.browser.LinkNotFoundError
3290
3291@@ -529,7 +528,6 @@ shown for junk branches.
3292 >>> nopriv_browser.open(
3293 ... 'http://code.launchpad.test/~mark/+junk/testdoc')
3294 >>> nopriv_browser.getLink('Propose for merging').click()
3295- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3296 Traceback (most recent call last):
3297 ...
3298 zope.testbrowser.browser.LinkNotFoundError
3299@@ -539,7 +537,6 @@ they'll get a 404.
3300
3301 >>> nopriv_browser.open(
3302 ... 'http://code.launchpad.test/~mark/+junk/testdoc/+register-merge')
3303- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3304 Traceback (most recent call last):
3305 ...
3306 zope.publisher.interfaces.NotFound: ...
3307diff --git a/lib/lp/code/stories/branches/xx-bug-branch-links.txt b/lib/lp/code/stories/branches/xx-bug-branch-links.txt
3308index f7462e8..3661261 100644
3309--- a/lib/lp/code/stories/branches/xx-bug-branch-links.txt
3310+++ b/lib/lp/code/stories/branches/xx-bug-branch-links.txt
3311@@ -19,7 +19,6 @@ if the user is not logged in, they will be asked to log in.
3312 >>> anon_browser.open(
3313 ... 'http://code.launchpad.test/~name12/gnome-terminal/klingon')
3314 >>> anon_browser.getLink('Link a bug report').click()
3315- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3316 Traceback (most recent call last):
3317 ...
3318 zope.security.interfaces.Unauthorized: (...launchpad.AnyPerson')
3319@@ -106,7 +105,6 @@ links to a page restricted with the launchpad.AnyPerson permission.
3320 >>> anon_browser.open(
3321 ... 'http://launchpad.test/bugs/11')
3322 >>> anon_browser.getLink('Link a related branch').click()
3323- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3324 Traceback (most recent call last):
3325 ...
3326 zope.security.interfaces.Unauthorized: (...launchpad.AnyPerson')
3327diff --git a/lib/lp/code/stories/branches/xx-code-review-comments.txt b/lib/lp/code/stories/branches/xx-code-review-comments.txt
3328index 9cc4178..0d075f6 100644
3329--- a/lib/lp/code/stories/branches/xx-code-review-comments.txt
3330+++ b/lib/lp/code/stories/branches/xx-code-review-comments.txt
3331@@ -55,7 +55,6 @@ The person's name links back to the main site for that person.
3332 Reply link is displayed even if the user isn't logged in.
3333
3334 >>> anon_browser.getLink('Reply').click()
3335- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3336 Traceback (most recent call last):
3337 zope.security.interfaces.Unauthorized: ...
3338
3339diff --git a/lib/lp/code/stories/branches/xx-subscribing-branches.txt b/lib/lp/code/stories/branches/xx-subscribing-branches.txt
3340index f240f47..1974c42 100644
3341--- a/lib/lp/code/stories/branches/xx-subscribing-branches.txt
3342+++ b/lib/lp/code/stories/branches/xx-subscribing-branches.txt
3343@@ -28,7 +28,6 @@ In order to subscribe to a branch, the user must be logged in.
3344 >>> anon_browser.open(
3345 ... 'http://code.launchpad.test/~name12/gnome-terminal/main')
3346 >>> anon_browser.getLink('Subscribe')
3347- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3348 Traceback (most recent call last):
3349 ...
3350 zope.testbrowser.browser.LinkNotFoundError
3351@@ -148,7 +147,6 @@ You need to be logged in to see the link.
3352 >>> anon_browser.open(
3353 ... 'http://code.launchpad.test/~name12/gnome-terminal/main')
3354 >>> anon_browser.getLink('Subscribe someone else')
3355- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3356 Traceback (most recent call last):
3357 ...
3358 zope.testbrowser.browser.LinkNotFoundError
3359diff --git a/lib/lp/code/stories/branches/xx-upgrading-branches.txt b/lib/lp/code/stories/branches/xx-upgrading-branches.txt
3360index a824a94..042804c 100644
3361--- a/lib/lp/code/stories/branches/xx-upgrading-branches.txt
3362+++ b/lib/lp/code/stories/branches/xx-upgrading-branches.txt
3363@@ -32,7 +32,6 @@ Only those with edit permissions on a branch can request an upgrade.
3364 ... auth='Basic nopriv@canonical.com:test')
3365 >>> nopriv_browser.open(branch_url)
3366 >>> link = nopriv_browser.getLink('Upgrade this branch')
3367- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3368 Traceback (most recent call last):
3369 zope.testbrowser.browser.LinkNotFoundError
3370
3371diff --git a/lib/lp/code/stories/codeimport/xx-create-codeimport.txt b/lib/lp/code/stories/codeimport/xx-create-codeimport.txt
3372index 93de21b..9f338f0 100644
3373--- a/lib/lp/code/stories/codeimport/xx-create-codeimport.txt
3374+++ b/lib/lp/code/stories/codeimport/xx-create-codeimport.txt
3375@@ -32,7 +32,6 @@ link on the main branch listing page for the product.
3376
3377 >>> browser.open('http://code.launchpad.test/firefox')
3378 >>> browser.getLink('Import a branch').click()
3379- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3380 Traceback (most recent call last):
3381 ...
3382 zope.testbrowser.browser.LinkNotFoundError
3383diff --git a/lib/lp/code/stories/codeimport/xx-edit-codeimport.txt b/lib/lp/code/stories/codeimport/xx-edit-codeimport.txt
3384index 622a63f..f11fc01 100644
3385--- a/lib/lp/code/stories/codeimport/xx-edit-codeimport.txt
3386+++ b/lib/lp/code/stories/codeimport/xx-edit-codeimport.txt
3387@@ -54,7 +54,6 @@ do not get an Edit link.
3388 Because it's an svn:// URL, it doesn't get linkified:
3389
3390 >>> anon_browser.getLink("svn://svn.example.com/fooix/trunk")
3391- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3392 Traceback (most recent call last):
3393 ...
3394 zope.testbrowser.browser.LinkNotFoundError
3395@@ -68,12 +67,10 @@ they will get a not authorised page if the branch has a code import,
3396 and a 404 if the branch doesn't have an import.
3397
3398 >>> anon_browser.open(svn_import_location + '/+edit-import')
3399- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3400 Traceback (most recent call last):
3401 zope.security.interfaces.Unauthorized: (... 'launchpad.Edit')
3402
3403 >>> admin_browser.open(hosted_branch_location + '/+edit-import')
3404- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3405 Traceback (most recent call last):
3406 lp.app.errors.NotFoundError
3407
3408diff --git a/lib/lp/coop/answersbugs/stories/question-buglink.txt b/lib/lp/coop/answersbugs/stories/question-buglink.txt
3409index c5c71f8..764bbd2 100644
3410--- a/lib/lp/coop/answersbugs/stories/question-buglink.txt
3411+++ b/lib/lp/coop/answersbugs/stories/question-buglink.txt
3412@@ -17,7 +17,6 @@ This link is only available to registered user:
3413 >>> anon_browser.open(
3414 ... 'http://launchpad.test/firefox/+question/2')
3415 >>> anon_browser.getLink(url='+linkbug').click()
3416- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3417 Traceback (most recent call last):
3418 ...
3419 zope.security.interfaces.Unauthorized: ...
3420diff --git a/lib/lp/coop/answersbugs/stories/question-makebug.txt b/lib/lp/coop/answersbugs/stories/question-makebug.txt
3421index 34bf516..0399135 100644
3422--- a/lib/lp/coop/answersbugs/stories/question-makebug.txt
3423+++ b/lib/lp/coop/answersbugs/stories/question-makebug.txt
3424@@ -66,7 +66,6 @@ to it.
3425 >>> browser.contents
3426 '...<h3>Related bugs</h3>...'
3427 >>> browser.getLink('Create bug report')
3428- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3429 Traceback (most recent call last):
3430 ..
3431 zope.testbrowser.browser.LinkNotFoundError
3432diff --git a/lib/lp/registry/browser/tests/gpg-views.txt b/lib/lp/registry/browser/tests/gpg-views.txt
3433index 7682722..dcb4257 100644
3434--- a/lib/lp/registry/browser/tests/gpg-views.txt
3435+++ b/lib/lp/registry/browser/tests/gpg-views.txt
3436@@ -133,7 +133,6 @@ validation.
3437 In some unknown way, the action sent to the form can be None (see bug 520476).
3438
3439 >>> view = post_fingerprint(good_fingerprint, action=None)
3440- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3441 Traceback (most recent call last):
3442 ...
3443 lp.app.errors.UnexpectedFormData: Action not permitted: None
3444diff --git a/lib/lp/registry/browser/tests/product-views.txt b/lib/lp/registry/browser/tests/product-views.txt
3445index 0f567b4..fca5d24 100644
3446--- a/lib/lp/registry/browser/tests/product-views.txt
3447+++ b/lib/lp/registry/browser/tests/product-views.txt
3448@@ -126,7 +126,6 @@ cannot access the page.
3449 >>> view = create_initialized_view(firefox, name='+index')
3450
3451 >>> view = create_initialized_view(firefox, name='+review-license')
3452- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3453 Traceback (most recent call last):
3454 ...
3455 zope.security.interfaces.Unauthorized: (<Product..., 'project_reviewed', 'launchpad.Moderate')
3456diff --git a/lib/lp/registry/browser/tests/team-views.txt b/lib/lp/registry/browser/tests/team-views.txt
3457index 07232ef..9af0adb 100644
3458--- a/lib/lp/registry/browser/tests/team-views.txt
3459+++ b/lib/lp/registry/browser/tests/team-views.txt
3460@@ -61,7 +61,6 @@ Posting malformed data to the team home page raises an error.
3461 >>> team_home = getMultiAdapter(
3462 ... (ubuntu_team, broken_request), name='+index')
3463 >>> team_home.initialize()
3464- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3465 Traceback (most recent call last):
3466 ...
3467 lp.app.errors.UnexpectedFormData: The mailing list form did not receive the expected form fields.
3468diff --git a/lib/lp/registry/doc/announcement.txt b/lib/lp/registry/doc/announcement.txt
3469index 0287d58..e916ec3 100644
3470--- a/lib/lp/registry/doc/announcement.txt
3471+++ b/lib/lp/registry/doc/announcement.txt
3472@@ -187,17 +187,14 @@ modify() method.
3473
3474 >>> login('mark@example.com')
3475 >>> kubuntu_release.title = 'Foo'
3476- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3477 Traceback (most recent call last):
3478 ...
3479 zope.security.interfaces.ForbiddenAttribute: ...
3480 >>> kubuntu_release.summary = 'Foo'
3481- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3482 Traceback (most recent call last):
3483 ...
3484 zope.security.interfaces.ForbiddenAttribute: ...
3485 >>> kubuntu_release.url = 'http://Foo.com/foo'
3486- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3487 Traceback (most recent call last):
3488 ...
3489 zope.security.interfaces.ForbiddenAttribute: ...
3490diff --git a/lib/lp/registry/doc/commercialsubscription.txt b/lib/lp/registry/doc/commercialsubscription.txt
3491index 3a60b44..851b264 100644
3492--- a/lib/lp/registry/doc/commercialsubscription.txt
3493+++ b/lib/lp/registry/doc/commercialsubscription.txt
3494@@ -357,7 +357,6 @@ No Privileges Person cannot access 'forReview'.
3495 >>> check_permission('launchpad.Moderate', product_set)
3496 False
3497 >>> gnome = product_set.forReview(commercial_member, search_text='gnome')
3498- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3499 Traceback (most recent call last):
3500 ...
3501 zope.security.interfaces.Unauthorized: ... 'forReview', 'launchpad.Moderate'...
3502diff --git a/lib/lp/registry/doc/distribution-mirror.txt b/lib/lp/registry/doc/distribution-mirror.txt
3503index c9f1a6c..0b39afc 100644
3504--- a/lib/lp/registry/doc/distribution-mirror.txt
3505+++ b/lib/lp/registry/doc/distribution-mirror.txt
3506@@ -912,7 +912,6 @@ Only mirrors which have never been probed can be deleted this way.
3507
3508 >>> ignored = login_person(cdimage_mirror.owner)
3509 >>> cdimage_mirror.destroySelf()
3510- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3511 Traceback (most recent call last):
3512 ...
3513 zope.security.interfaces.Unauthorized: ...
3514@@ -960,7 +959,6 @@ for the status, however, they may not change it:
3515 >>> de_archive_mirror.canTransitionToCountryMirror()
3516 True
3517 >>> de_archive_mirror.transitionToCountryMirror(True)
3518- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3519 Traceback (most recent call last):
3520 ...
3521 zope.security.interfaces.Unauthorized: (<DistributionMirror at ...>, 'transitionToCountryMirror', 'launchpad.Admin')
3522@@ -1002,7 +1000,6 @@ There cannot be multiple country mirrors of one type for one country:
3523
3524 >>> davis_station_archive.transitionToCountryMirror(True)
3525 >>> archive_mirror2.transitionToCountryMirror(True)
3526- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3527 Traceback (most recent call last):
3528 ...
3529 lp.registry.errors.CountryMirrorAlreadySet: Antarctica already has a country Archive mirror set.
3530@@ -1015,7 +1012,6 @@ Mirrors which have not been probed may not be marked as country mirrors:
3531 ... official_candidate=True)
3532 >>> linux_au_mirror.status = MirrorStatus.OFFICIAL
3533 >>> linux_au_mirror.transitionToCountryMirror(True)
3534- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3535 Traceback (most recent call last):
3536 ...
3537 lp.registry.errors.MirrorNotProbed: This mirror may not be set as a country mirror as it has not been probed.
3538@@ -1036,13 +1032,11 @@ country mirrors:
3539 False
3540
3541 >>> osuosl_mirror.transitionToCountryMirror(None)
3542- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3543 Traceback (most recent call last):
3544 ...
3545 storm.exceptions.NoneError: None isn't acceptable as a value for DistributionMirror.country_dns_mirror
3546
3547 >>> osuosl_mirror.transitionToCountryMirror(True)
3548- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3549 Traceback (most recent call last):
3550 ...
3551 lp.registry.errors.MirrorHasNoHTTPURL: This mirror may not be set as a country mirror as it does not have an HTTP URL set.
3552diff --git a/lib/lp/registry/doc/distribution.txt b/lib/lp/registry/doc/distribution.txt
3553index d9dcd94..dc2941b 100644
3554--- a/lib/lp/registry/doc/distribution.txt
3555+++ b/lib/lp/registry/doc/distribution.txt
3556@@ -308,7 +308,6 @@ Distribution can do that for us.
3557
3558 If we ask for a totally unknown distroseries, we raise NotFoundError
3559 >>> ubuntu.getDistroSeriesAndPocket('unknown')
3560- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3561 Traceback (most recent call last):
3562 ...
3563 lp.app.errors.NotFoundError: ...'unknown'
3564@@ -339,7 +338,6 @@ Find the backports pocket, too:
3565 If we ask for a valid distroseries which doesn't have a given pocket it should
3566 raise NotFoundError for us
3567 >>> ubuntu.getDistroSeriesAndPocket('hoary-bullshit')
3568- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3569 Traceback (most recent call last):
3570 ...
3571 lp.app.errors.NotFoundError: ...'hoary-bullshit'
3572@@ -469,15 +467,12 @@ But others can't.
3573
3574 >>> login('no-priv@canonical.com')
3575 >>> debian.blueprints_usage = ServiceUsage.LAUNCHPAD
3576- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3577 Traceback (most recent call last):
3578 zope.security.interfaces.Unauthorized: (..., 'blueprints_usage', 'launchpad.Edit')
3579 >>> debian.official_malone = True
3580- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3581 Traceback (most recent call last):
3582 zope.security.interfaces.Unauthorized: (..., 'official_malone', 'launchpad.Edit')
3583 >>> debian.translations_usage = ServiceUsage.LAUNCHPAD
3584- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3585 Traceback (most recent call last):
3586 zope.security.interfaces.Unauthorized: (..., 'translations_usage', 'launchpad.TranslationsAdmin')
3587
3588@@ -595,7 +590,6 @@ Milestones for distros can only be created by distro owners or admins.
3589 >>> login('no-priv@canonical.com')
3590 >>> woody.newMilestone(
3591 ... name='impossible', dateexpected=datetime(2028, 10, 1))
3592- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3593 Traceback (most recent call last):
3594 ...
3595 zope.security.interfaces.Unauthorized: (<DistroSeries ...'woody'>, 'newMilestone', 'launchpad.Edit')
3596diff --git a/lib/lp/registry/doc/distroseries.txt b/lib/lp/registry/doc/distroseries.txt
3597index b69d655..225c66d 100644
3598--- a/lib/lp/registry/doc/distroseries.txt
3599+++ b/lib/lp/registry/doc/distroseries.txt
3600@@ -680,7 +680,6 @@ Ubuntu driver can not create series.
3601 ... name='finch', display_name='Finch', title='Ubuntu Finch',
3602 ... summary='summary', description='description', version='9.06',
3603 ... previous_series=warty, owner=ubuntu.driver)
3604- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3605 Traceback (most recent call last):
3606 ...
3607 zope.security.interfaces.Unauthorized: ...
3608diff --git a/lib/lp/registry/doc/karmacache.txt b/lib/lp/registry/doc/karmacache.txt
3609index 13c7d9f..6f367f0 100644
3610--- a/lib/lp/registry/doc/karmacache.txt
3611+++ b/lib/lp/registry/doc/karmacache.txt
3612@@ -55,7 +55,6 @@ NotFoundError.
3613
3614 >>> karmacachemanager.updateKarmaValue(
3615 ... new_value, person.id, bugs.id, product_id=9999)
3616- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3617 Traceback (most recent call last):
3618 ...
3619 lp.app.errors.NotFoundError: ...
3620diff --git a/lib/lp/registry/doc/launchpadlib/project-registry.txt.disabled b/lib/lp/registry/doc/launchpadlib/project-registry.txt.disabled
3621index 08aefe1..7cb5aa3 100644
3622--- a/lib/lp/registry/doc/launchpadlib/project-registry.txt.disabled
3623+++ b/lib/lp/registry/doc/launchpadlib/project-registry.txt.disabled
3624@@ -276,7 +276,7 @@ Attributes can be edited, but not by the anonymous user.
3625
3626 >>> mark = lp_anon.people['mark']
3627 >>> firefox.driver = mark
3628- >>> firefox.lp_save() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3629+ >>> firefox.lp_save()
3630 Traceback (most recent call last):
3631 ...
3632 urllib.error.HTTPError: HTTP Error 401: Unauthorized...
3633@@ -328,7 +328,7 @@ Changing the owner of a project can change other attributes as well.
3634 Read-only attributes cannot be changed.
3635
3636 >>> firefox.registrant = nopriv
3637- >>> firefox.lp_save() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3638+ >>> firefox.lp_save()
3639 Traceback (most recent call last):
3640 ...
3641 urllib.error.HTTPError: HTTP Error 400: Bad Request ... registrant_link: You tried to modify a read-only attribute...
3642diff --git a/lib/lp/registry/doc/milestone.txt b/lib/lp/registry/doc/milestone.txt
3643index 8cc820e..cd5c253 100644
3644--- a/lib/lp/registry/doc/milestone.txt
3645+++ b/lib/lp/registry/doc/milestone.txt
3646@@ -127,7 +127,7 @@ Now, lets test all of that for DistroSeriess too!
3647 Trying to retrieve a milestone that doesn't exist will raise a
3648 zope.exceptions.NotFoundError:
3649
3650- >>> milestoneset.get(-1) # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3651+ >>> milestoneset.get(-1)
3652 Traceback (most recent call last):
3653 ...
3654 lp.app.errors.NotFoundError: 'Milestone with ID -1 does not exist'
3655diff --git a/lib/lp/registry/doc/person-account.txt b/lib/lp/registry/doc/person-account.txt
3656index 3e62d40..576ab7d 100644
3657--- a/lib/lp/registry/doc/person-account.txt
3658+++ b/lib/lp/registry/doc/person-account.txt
3659@@ -33,7 +33,6 @@ the profile. Sample Person cannot claim it.
3660
3661 >>> login('test@canonical.com')
3662 >>> matsubara.account.reactivate(comment="test")
3663- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3664 Traceback (most recent call last):
3665 ...
3666 zope.security.interfaces.Unauthorized: ...'launchpad.View')
3667@@ -138,7 +137,6 @@ even launchpad admins can use it.
3668
3669 >>> login('mark@example.com')
3670 >>> foobar.deactivate(comment=comment)
3671- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3672 Traceback (most recent call last):
3673 ...
3674 zope.security.interfaces.Unauthorized: ...'launchpad.Special')
3675diff --git a/lib/lp/registry/doc/person.txt b/lib/lp/registry/doc/person.txt
3676index 686ef2b..21312ce 100644
3677--- a/lib/lp/registry/doc/person.txt
3678+++ b/lib/lp/registry/doc/person.txt
3679@@ -352,13 +352,11 @@ Non-administrators may not change a person's standing.
3680
3681 >>> login('test@canonical.com')
3682 >>> lifeless.personal_standing = PersonalStanding.POOR
3683- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3684 Traceback (most recent call last):
3685 ...
3686 zope.security.interfaces.Unauthorized: ...
3687
3688 >>> lifeless.personal_standing_reason = 'Such a cool guy!'
3689- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3690 Traceback (most recent call last):
3691 ...
3692 zope.security.interfaces.Unauthorized: ...
3693@@ -437,7 +435,6 @@ If the given name is already in use by another team/person, an exception
3694 is raised.
3695
3696 >>> personset.newTeam(ddaa, 'ddaa', 'Just a new team')
3697- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3698 Traceback (most recent call last):
3699 ...
3700 lp.registry.errors.NameAlreadyTaken: ...
3701@@ -531,7 +528,6 @@ account_status is NOACCOUNT, though.
3702 AssertionError: Only Person entries whose account_status is NOACCOUNT...
3703
3704 >>> not_a_person.convertToTeam(team_owner=landscape_devs)
3705- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3706 Traceback (most recent call last):
3707 ...
3708 lp.registry.interfaces.person.AlreadyConvertedException: foo-... has already been converted to a team.
3709@@ -1443,7 +1439,6 @@ error will be raised.
3710 >>> person_set._newPerson(
3711 ... 'new-name', 'New Person', True,
3712 ... PersonCreationRationale.BUGIMPORT)
3713- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3714 Traceback (most recent call last):
3715 ...
3716 lp.registry.errors.NameAlreadyTaken: The name 'new-name' is already taken.
3717@@ -1454,7 +1449,6 @@ be raised.
3718 >>> person_set._newPerson(
3719 ... "ThisIsn'tValid", 'New Person', True,
3720 ... PersonCreationRationale.BUGIMPORT)
3721- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3722 Traceback (most recent call last):
3723 ...
3724 lp.registry.errors.InvalidName: ThisIsn'tValid is not a valid name for a person.
3725diff --git a/lib/lp/registry/doc/pillar-aliases-field.txt b/lib/lp/registry/doc/pillar-aliases-field.txt
3726index 9ccf329..f26605e 100644
3727--- a/lib/lp/registry/doc/pillar-aliases-field.txt
3728+++ b/lib/lp/registry/doc/pillar-aliases-field.txt
3729@@ -29,7 +29,6 @@ to be a valid alias for that pillar, but only for that pillar.
3730 >>> bound_field.validate(u'iceweasel')
3731
3732 >>> field.bind(getUtility(IProductSet)['bzr']).validate(u'iceweasel')
3733- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3734 Traceback (most recent call last):
3735 ...
3736 lp.app.validators.LaunchpadValidationError: iceweasel is already used by another project
3737@@ -54,13 +53,11 @@ If an empty string (or None) is given, all aliases will be removed.
3738 Each of these aliases must be valid names and must be unique.
3739
3740 >>> bound_field.validate(u'names_cannot_have_underscores')
3741- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3742 Traceback (most recent call last):
3743 ...
3744 lp.app.validators.LaunchpadValidationError: Invalid name...
3745
3746 >>> bound_field.validate(u'ubuntu')
3747- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3748 Traceback (most recent call last):
3749 ...
3750 lp.app.validators.LaunchpadValidationError: ubuntu is already used by another project
3751@@ -68,7 +65,6 @@ Each of these aliases must be valid names and must be unique.
3752 Also, they must not be identical to the pillar's own name.
3753
3754 >>> bound_field.validate(firefox.name)
3755- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3756 Traceback (most recent call last):
3757 ...
3758 lp.app.validators.LaunchpadValidationError: This is your name: firefox
3759@@ -76,7 +72,6 @@ Also, they must not be identical to the pillar's own name.
3760 Black-listed names are not accepted as aliases either.
3761
3762 >>> bound_field.validate(u'blacklisted')
3763- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3764 Traceback (most recent call last):
3765 ...
3766 lp.app.validators.LaunchpadValidationError: The name &#x27;blacklisted&#x27; has been blocked...
3767diff --git a/lib/lp/registry/doc/pillar.txt b/lib/lp/registry/doc/pillar.txt
3768index f27c34f..a471c21 100644
3769--- a/lib/lp/registry/doc/pillar.txt
3770+++ b/lib/lp/registry/doc/pillar.txt
3771@@ -36,7 +36,6 @@ share their name namespace are Product, ProjectGroup and Distribution.
3772 >>> 'fnord' in pillar_set
3773 False
3774 >>> pillar_set['fnord']
3775- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3776 Traceback (most recent call last):
3777 ...
3778 lp.app.errors.NotFoundError: ...'fnord'
3779@@ -54,7 +53,6 @@ pillars.
3780 >>> 'gimp' in pillar_set
3781 False
3782 >>> pillar_set['gimp']
3783- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3784 Traceback (most recent call last):
3785 ...
3786 lp.app.errors.NotFoundError: ...'gimp'
3787@@ -71,7 +69,6 @@ It also works if you use Unicode strings.
3788 >>> u'launchpad' in pillar_set
3789 False
3790 >>> pillar_set[u'launchpad']
3791- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3792 Traceback (most recent call last):
3793 ...
3794 lp.app.errors.NotFoundError: ...'launchpad'
3795@@ -134,12 +131,10 @@ Also, if the pillar is inactive, it can't be retrieved through any of its
3796 aliases, in the same way that it can't be retrieved through its name.
3797
3798 >>> pillar_set['iceweasel']
3799- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3800 Traceback (most recent call last):
3801 ...
3802 lp.app.errors.NotFoundError: ...
3803 >>> pillar_set['firefox']
3804- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3805 Traceback (most recent call last):
3806 ...
3807 lp.app.errors.NotFoundError: ...
3808@@ -158,7 +153,6 @@ to be able to set its aliases.
3809 >>> check_permission('launchpad.Edit', firefox)
3810 True
3811 >>> firefox.setAliases(['iceweasel'])
3812- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3813 Traceback (most recent call last):
3814 ...
3815 zope.security.interfaces.Unauthorized: ...
3816@@ -169,7 +163,6 @@ Ditto for the Mozilla project.
3817 >>> check_permission('launchpad.Edit', mozilla)
3818 True
3819 >>> mozilla.setAliases(['moz'])
3820- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3821 Traceback (most recent call last):
3822 ...
3823 zope.security.interfaces.Unauthorized: ...
3824@@ -181,7 +174,6 @@ And the same is true for Colin Watson on the Guadalinex distribution.
3825 >>> check_permission('launchpad.Edit', guadalinex)
3826 True
3827 >>> guadalinex.setAliases(['guada'])
3828- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3829 Traceback (most recent call last):
3830 ...
3831 zope.security.interfaces.Unauthorized: ...
3832diff --git a/lib/lp/registry/doc/private-team-roles.txt b/lib/lp/registry/doc/private-team-roles.txt
3833index 0595e4c..c764699 100644
3834--- a/lib/lp/registry/doc/private-team-roles.txt
3835+++ b/lib/lp/registry/doc/private-team-roles.txt
3836@@ -197,7 +197,6 @@ or private, can be the project registrant.
3837 >>> product = factory.makeProduct(registrant=team_owner)
3838 >>> product = factory.makeProduct(registrant=public_team)
3839 >>> product = factory.makeProduct(registrant=priv_team)
3840- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3841 Traceback (most recent call last):
3842 ...
3843 lp.registry.errors.PrivatePersonLinkageError: Cannot link person (name=private-team, visibility=PRIVATE) to <Product at...
3844diff --git a/lib/lp/registry/doc/productrelease-file-download.txt b/lib/lp/registry/doc/productrelease-file-download.txt
3845index 034c8ef..c1323ff 100644
3846--- a/lib/lp/registry/doc/productrelease-file-download.txt
3847+++ b/lib/lp/registry/doc/productrelease-file-download.txt
3848@@ -90,7 +90,6 @@ The alias can be retrieved by name.
3849 Attempting to retrieve an alias that does not exist is an error.
3850
3851 >>> file_alias = rel.getFileAliasByName('bar.txt')
3852- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3853 Traceback (most recent call last):
3854 ...
3855 lp.app.errors.NotFoundError: ...'bar.txt'
3856@@ -105,7 +104,6 @@ Attempting to retrieve a ProductReleaseFile that does not exist is an
3857 error.
3858
3859 >>> prf = rel.getProductReleaseFileByName('bar.txt')
3860- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3861 Traceback (most recent call last):
3862 ...
3863 lp.app.errors.NotFoundError: ...'bar.txt'
3864@@ -116,7 +114,6 @@ delete a product file.
3865
3866 >>> login(ANONYMOUS)
3867 >>> rel.files[0].destroySelf()
3868- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3869 Traceback (most recent call last):
3870 ...
3871 zope.security.interfaces.Unauthorized: (<ProductReleaseFile...>, 'destroySelf', 'launchpad.Edit')
3872@@ -143,7 +140,6 @@ Deleting files via a GET method is not allowed.
3873 >>> firefox = getUtility(IProductSet).getByName('firefox')
3874 >>> view = getMultiAdapter((firefox,request), name='+download')
3875 >>> view.initialize()
3876- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3877 Traceback (most recent call last):
3878 ...
3879 lp.services.webapp.interfaces.UnsafeFormGetSubmissionError: Delete Files
3880@@ -196,7 +192,6 @@ Only the product owner can create a new release.
3881 >>> owner_email = firefox.owner.preferredemail.email
3882 >>> login(ANONYMOUS)
3883 >>> trunk.milestones[0].createProductRelease(firefox.owner, now)
3884- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3885 Traceback (most recent call last):
3886 ...
3887 zope.security.interfaces.Unauthorized: (<Milestone ...>, 'createProductRelease', 'launchpad.Edit')
3888diff --git a/lib/lp/registry/doc/productseries.txt b/lib/lp/registry/doc/productseries.txt
3889index dad7d3e..1ffd422 100644
3890--- a/lib/lp/registry/doc/productseries.txt
3891+++ b/lib/lp/registry/doc/productseries.txt
3892@@ -70,7 +70,6 @@ owner or driver can call Product.newSeries().
3893 >>> series_driver = factory.makePerson(name="driver")
3894 >>> summary = "Port of Firefox to the Emacs operating system."
3895 >>> emacs = firefox.newSeries(series_driver , 'emacs', summary)
3896- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3897 Traceback (most recent call last):
3898 ...
3899 zope.security.interfaces.Unauthorized: (..., 'newSeries', 'launchpad.Driver')
3900@@ -166,13 +165,11 @@ that the url uses one of the supported schemes (ftp, http, http).
3901 Invalid URLs and unsupported schemes raise a LaunchpadValidationError.
3902
3903 >>> validate_release_glob('ftp.gnu.org/gnu/emacs/emacs-21.*.gz')
3904- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3905 Traceback (most recent call last):
3906 ...
3907 lp.app.validators.LaunchpadValidationError: ...
3908
3909 >>> validate_release_glob('wais://ftp.gnu.org/gnu/emacs/emacs-21.*.gz')
3910- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3911 Traceback (most recent call last):
3912 ...
3913 lp.app.validators.LaunchpadValidationError: ...
3914@@ -180,7 +177,6 @@ Invalid URLs and unsupported schemes raise a LaunchpadValidationError.
3915 The URL must contain a glob (*) or , and may contain more than one.
3916
3917 >>> validate_release_glob('http://ftp.gnu.org/gnu/emacs/emacs-21.10.1.gz')
3918- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3919 Traceback (most recent call last):
3920 ...
3921 lp.app.validators.LaunchpadValidationError: ...
3922diff --git a/lib/lp/registry/doc/projectgroup.txt b/lib/lp/registry/doc/projectgroup.txt
3923index e880792..1eb00f9 100644
3924--- a/lib/lp/registry/doc/projectgroup.txt
3925+++ b/lib/lp/registry/doc/projectgroup.txt
3926@@ -79,7 +79,6 @@ If there is no project with the specified name, a NotFoundError will be
3927 raised.
3928
3929 >>> projectset['non-existant']
3930- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3931 Traceback (most recent call last):
3932 ...
3933 lp.app.errors.NotFoundError: ...
3934@@ -96,7 +95,6 @@ the project.
3935
3936
3937 >>> gnome = getUtility(IProjectGroupSet)['gnome']
3938- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3939 Traceback (most recent call last):
3940 ...
3941 lp.app.errors.NotFoundError: ...
3942diff --git a/lib/lp/registry/doc/teammembership-email-notification.txt b/lib/lp/registry/doc/teammembership-email-notification.txt
3943index 218334c..3a60458 100644
3944--- a/lib/lp/registry/doc/teammembership-email-notification.txt
3945+++ b/lib/lp/registry/doc/teammembership-email-notification.txt
3946@@ -1008,7 +1008,6 @@ membership statues silently.
3947
3948 >>> setStatus(stevea_ubuntu_team_membership,
3949 ... TeamMembershipStatus.DEACTIVATED, reviewer=kamion, silent=True)
3950- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3951 Traceback (most recent call last):
3952 lp.registry.errors.UserCannotChangeMembershipSilently: ...
3953
3954diff --git a/lib/lp/registry/doc/teammembership.txt b/lib/lp/registry/doc/teammembership.txt
3955index 58cffd2..e55a1d6 100644
3956--- a/lib/lp/registry/doc/teammembership.txt
3957+++ b/lib/lp/registry/doc/teammembership.txt
3958@@ -99,7 +99,6 @@ given team.
3959 True
3960 >>> ignored = login_person(salgado)
3961 >>> salgado.join(launchpad)
3962- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3963 Traceback (most recent call last):
3964 ...
3965 lp.registry.errors.JoinNotAllowed: This is a restricted team
3966@@ -153,7 +152,6 @@ to a team.
3967 >>> mark = personset.getByName('mark')
3968 >>> t3.addMember(salgado, reviewer=mark,
3969 ... status=TeamMembershipStatus.ADMIN)
3970- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3971 Traceback (most recent call last):
3972 ...
3973 zope.security.interfaces.Unauthorized: ...
3974@@ -512,13 +510,11 @@ an extra check to ensure that doesn't happen.
3975 >>> ignored = login_person(foobar)
3976 >>> membership = foobar.team_memberships[0]
3977 >>> membership.status = None
3978- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3979 Traceback (most recent call last):
3980 ...
3981 zope.security.interfaces.ForbiddenAttribute: ...
3982
3983 >>> membership.dateexpires = None
3984- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3985 Traceback (most recent call last):
3986 ...
3987 zope.security.interfaces.ForbiddenAttribute: ...
3988@@ -726,7 +722,6 @@ The member themselves can't change the expiration date of their membership.
3989
3990 >>> ignored = login_person(karl)
3991 >>> karl_on_mirroradmins.setExpirationDate(tomorrow, karl)
3992- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
3993 Traceback (most recent call last):
3994 ...
3995 zope.security.interfaces.Unauthorized: ...
3996diff --git a/lib/lp/registry/doc/vocabularies.txt b/lib/lp/registry/doc/vocabularies.txt
3997index 127ad1a..9bc4dc0 100644
3998--- a/lib/lp/registry/doc/vocabularies.txt
3999+++ b/lib/lp/registry/doc/vocabularies.txt
4000@@ -150,7 +150,6 @@ display name.
4001 You cannot get a term by an other object, such as a team.
4002
4003 >>> list_vocabulary.getTerm(team_one)
4004- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4005 Traceback (most recent call last):
4006 ...
4007 zope.security.interfaces.ForbiddenAttribute: ...
4008@@ -183,7 +182,6 @@ You are not allowed to ask whether a non-mailing list object is
4009 contained in this vocabulary.
4010
4011 >>> team_three in list_vocabulary
4012- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4013 Traceback (most recent call last):
4014 ...
4015 zope.security.interfaces.ForbiddenAttribute: ...
4016diff --git a/lib/lp/registry/model/projectgroup.py b/lib/lp/registry/model/projectgroup.py
4017index b56499a..433851f 100644
4018--- a/lib/lp/registry/model/projectgroup.py
4019+++ b/lib/lp/registry/model/projectgroup.py
4020@@ -543,7 +543,6 @@ class ProjectGroupSet:
4021 apache
4022 >>> getUtility(IProjectGroupSet).get(-1)
4023 ... # doctest: +NORMALIZE_WHITESPACE
4024- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4025 Traceback (most recent call last):
4026 ...
4027 lp.app.errors.NotFoundError: -1
4028diff --git a/lib/lp/registry/stories/announcements/xx-announcements.txt b/lib/lp/registry/stories/announcements/xx-announcements.txt
4029index 9296fb6..c683ffe 100644
4030--- a/lib/lp/registry/stories/announcements/xx-announcements.txt
4031+++ b/lib/lp/registry/stories/announcements/xx-announcements.txt
4032@@ -42,28 +42,24 @@ page.
4033
4034 >>> anon_browser.open('http://launchpad.test/firefox')
4035 >>> anon_browser.getLink('Make announcement')
4036- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4037 Traceback (most recent call last):
4038 ...
4039 zope.testbrowser.browser.LinkNotFoundError
4040
4041 >>> anon_browser.getLink('Read all announcements').click()
4042 >>> anon_browser.getLink('Make announcement')
4043- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4044 Traceback (most recent call last):
4045 ...
4046 zope.testbrowser.browser.LinkNotFoundError
4047
4048 >>> anon_browser.open('http://launchpad.test/ubuntu')
4049 >>> anon_browser.getLink('Make announcement')
4050- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4051 Traceback (most recent call last):
4052 ...
4053 zope.testbrowser.browser.LinkNotFoundError
4054
4055 >>> anon_browser.getLink('Read all announcements').click()
4056 >>> anon_browser.getLink('Make announcement')
4057- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4058 Traceback (most recent call last):
4059 ...
4060 zope.testbrowser.browser.LinkNotFoundError
4061@@ -75,14 +71,12 @@ pillar.
4062 >>> nopriv_browser = setupBrowser(auth="Basic no-priv@canonical.com:test")
4063 >>> nopriv_browser.open('http://launchpad.test/firefox')
4064 >>> nopriv_browser.getLink('Make announcement')
4065- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4066 Traceback (most recent call last):
4067 ...
4068 zope.testbrowser.browser.LinkNotFoundError
4069
4070 >>> nopriv_browser.getLink('Read all announcements').click()
4071 >>> nopriv_browser.getLink('Make announcement')
4072- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4073 Traceback (most recent call last):
4074 ...
4075 zope.testbrowser.browser.LinkNotFoundError
4076@@ -260,7 +254,6 @@ anon_browser.
4077 >>> priv_browser.getLink('Kubuntu announcement headline').click()
4078 >>> link_url = priv_browser.url
4079 >>> anon_browser.open(link_url)
4080- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4081 Traceback (most recent call last):
4082 ...
4083 zope.security.interfaces.Unauthorized: ...
4084diff --git a/lib/lp/registry/stories/distribution/xx-distribution-launchpad-usage.txt b/lib/lp/registry/stories/distribution/xx-distribution-launchpad-usage.txt
4085index d3b4045..5a06d50 100644
4086--- a/lib/lp/registry/stories/distribution/xx-distribution-launchpad-usage.txt
4087+++ b/lib/lp/registry/stories/distribution/xx-distribution-launchpad-usage.txt
4088@@ -9,17 +9,14 @@ details.
4089
4090 >>> user_browser.open('http://launchpad.test/ubuntu')
4091 >>> user_browser.getLink('Change details')
4092- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4093 Traceback (most recent call last):
4094 ...
4095 zope.testbrowser.browser.LinkNotFoundError
4096 >>> user_browser.getLink('Configure publisher')
4097- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4098 Traceback (most recent call last):
4099 ...
4100 zope.testbrowser.browser.LinkNotFoundError
4101 >>> user_browser.open('http://launchpad.test/ubuntu/+edit')
4102- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4103 Traceback (most recent call last):
4104 ...
4105 zope.security.interfaces.Unauthorized: ...
4106diff --git a/lib/lp/registry/stories/distribution/xx-distribution-overview.txt b/lib/lp/registry/stories/distribution/xx-distribution-overview.txt
4107index 2734a8c..26d217a 100644
4108--- a/lib/lp/registry/stories/distribution/xx-distribution-overview.txt
4109+++ b/lib/lp/registry/stories/distribution/xx-distribution-overview.txt
4110@@ -124,7 +124,6 @@ If there is a development series alias, it becomes a redirect.
4111 >>> from zope.component import getUtility
4112
4113 >>> anon_browser.open("http://launchpad.test/ubuntu/devel")
4114- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4115 Traceback (most recent call last):
4116 ...
4117 zope.publisher.interfaces.NotFound: Object: <Distribution ...>, name: 'devel'
4118@@ -177,13 +176,11 @@ term) or an unavailable name (only 'primary' and 'partner' exist)
4119 results in a NotFound error.
4120
4121 >>> anon_browser.open("http://launchpad.test/ubuntu/+archive")
4122- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4123 Traceback (most recent call last):
4124 ...
4125 zope.publisher.interfaces.NotFound: Object: <Distribution ...>, name: '+archive'
4126
4127 >>> anon_browser.open("http://launchpad.test/ubuntu/+archive/boing")
4128- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4129 Traceback (most recent call last):
4130 ...
4131 zope.publisher.interfaces.NotFound: Object: <Distribution ...>, name: 'boing'
4132diff --git a/lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt b/lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt
4133index 9ddcf14..b6bcddd 100644
4134--- a/lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt
4135+++ b/lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt
4136@@ -61,7 +61,6 @@ Also, the +countrymirrors-archive page is only available for the Ubuntu
4137 distribution.
4138
4139 >>> browser.open('http://launchpad.test/debian/+countrymirrors-archive')
4140- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4141 Traceback (most recent call last):
4142 ...
4143 urllib.error.HTTPError: HTTP Error 404: Not Found
4144diff --git a/lib/lp/registry/stories/distributionmirror/xx-distribution-mirrors.txt b/lib/lp/registry/stories/distributionmirror/xx-distribution-mirrors.txt
4145index bdeeb63..48068d4 100644
4146--- a/lib/lp/registry/stories/distributionmirror/xx-distribution-mirrors.txt
4147+++ b/lib/lp/registry/stories/distributionmirror/xx-distribution-mirrors.txt
4148@@ -80,7 +80,6 @@ they were out of date, missing some content, etc). This list can only be
4149 seen by distro owners, mirror admins of the distro or launchpad admins.
4150
4151 >>> user_browser.open('http://launchpad.test/ubuntu/+disabledmirrors')
4152- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4153 Traceback (most recent call last):
4154 ...
4155 zope.security.interfaces.Unauthorized: ...
4156@@ -103,7 +102,6 @@ It's only visible to distro owners, mirror admins of the distro or
4157 launchpad admins.
4158
4159 >>> user_browser.open('http://launchpad.test/ubuntu/+unofficialmirrors')
4160- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4161 Traceback (most recent call last):
4162 ...
4163 zope.security.interfaces.Unauthorized: ...
4164@@ -126,7 +124,6 @@ type of mirror is shown. Also the freshness is not visible since
4165 pending mirrors have never been probed.
4166
4167 >>> user_browser.open('http://launchpad.test/ubuntu/+pendingreviewmirrors')
4168- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4169 Traceback (most recent call last):
4170 ...
4171 zope.security.interfaces.Unauthorized: ...
4172diff --git a/lib/lp/registry/stories/distributionmirror/xx-distributionmirror-prober-logs.txt b/lib/lp/registry/stories/distributionmirror/xx-distributionmirror-prober-logs.txt
4173index c48105d..157fb8f 100644
4174--- a/lib/lp/registry/stories/distributionmirror/xx-distributionmirror-prober-logs.txt
4175+++ b/lib/lp/registry/stories/distributionmirror/xx-distributionmirror-prober-logs.txt
4176@@ -23,7 +23,6 @@ A random logged in user won't have the rights to see that page.
4177 >>> user_browser.open(
4178 ... 'http://launchpad.test/ubuntu/+mirror/archive-mirror2/')
4179 >>> user_browser.getLink('Content check logs')
4180- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4181 Traceback (most recent call last):
4182 ...
4183 zope.testbrowser.browser.LinkNotFoundError
4184@@ -31,7 +30,6 @@ A random logged in user won't have the rights to see that page.
4185 >>> user_browser.open(
4186 ... 'http://launchpad.test/ubuntu/+mirror/archive-mirror2/'
4187 ... '+prober-logs')
4188- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4189 Traceback (most recent call last):
4190 ...
4191 zope.security.interfaces.Unauthorized: ...
4192diff --git a/lib/lp/registry/stories/distributionmirror/xx-reassign-distributionmirror.txt b/lib/lp/registry/stories/distributionmirror/xx-reassign-distributionmirror.txt
4193index 75a5cd3..bef3699 100644
4194--- a/lib/lp/registry/stories/distributionmirror/xx-reassign-distributionmirror.txt
4195+++ b/lib/lp/registry/stories/distributionmirror/xx-reassign-distributionmirror.txt
4196@@ -15,12 +15,10 @@ permission on them. Mark is the owner of the archive-mirror.
4197
4198 >>> user_browser.open(context_url)
4199 >>> user_browser.getLink('Change')
4200- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4201 Traceback (most recent call last):
4202 ...
4203 zope.testbrowser.browser.LinkNotFoundError
4204 >>> user_browser.open(context_url + "/+reassign")
4205- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4206 Traceback (most recent call last):
4207 ...
4208 zope.security.interfaces.Unauthorized: ...
4209diff --git a/lib/lp/registry/stories/distroseries/distroseries-admin.txt b/lib/lp/registry/stories/distroseries/distroseries-admin.txt
4210index 051256d..8b7ce57 100644
4211--- a/lib/lp/registry/stories/distroseries/distroseries-admin.txt
4212+++ b/lib/lp/registry/stories/distroseries/distroseries-admin.txt
4213@@ -56,7 +56,6 @@ Registry experts do not have access to the 'Change details' link.
4214 ... auth='Basic %s:test' % email)
4215 >>> registry_browser.open('http://launchpad.test/ubuntu/happy')
4216 >>> registry_browser.getLink('Change details').click()
4217- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4218 Traceback (most recent call last):
4219 ...
4220 zope.testbrowser.browser.LinkNotFoundError
4221@@ -64,7 +63,6 @@ Registry experts do not have access to the 'Change details' link.
4222 And navigating directly to +edit is thwarted.
4223
4224 >>> registry_browser.open('http://launchpad.test/ubuntu/happy/+edit')
4225- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4226 Traceback (most recent call last):
4227 ...
4228 zope.security.interfaces.Unauthorized: ...
4229diff --git a/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt b/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt
4230index d491f5c..a8d9558 100644
4231--- a/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt
4232+++ b/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt
4233@@ -38,7 +38,6 @@ is linked, but the link to this page is not enabled.
4234 url='http://launchpad.test/ubuntu/hoary/+needs-packaging'>
4235
4236 >>> anon_browser.getLink('All upstream links')
4237- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4238 Traceback (most recent call last):
4239 ...
4240 zope.testbrowser.browser.LinkNotFoundError
4241@@ -118,7 +117,6 @@ linked, but the link to this page is not enabled.
4242 url='http://launchpad.test/ubuntu/hoary/+packaging'>
4243
4244 >>> anon_browser.getLink('Needs upstream links')
4245- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4246 Traceback (most recent call last):
4247 ...
4248 zope.testbrowser.browser.LinkNotFoundError
4249diff --git a/lib/lp/registry/stories/gpg-coc/xx-ubuntu-codeofconduct-signer.txt b/lib/lp/registry/stories/gpg-coc/xx-ubuntu-codeofconduct-signer.txt
4250index 13cda85..a2e403d 100644
4251--- a/lib/lp/registry/stories/gpg-coc/xx-ubuntu-codeofconduct-signer.txt
4252+++ b/lib/lp/registry/stories/gpg-coc/xx-ubuntu-codeofconduct-signer.txt
4253@@ -25,7 +25,6 @@ A regular user can't see the link to Foo Bar's signed codes of conduct.
4254 Signed Ubuntu Code of Conduct: Yes
4255
4256 >>> browser.getLink(url='+codesofconduct')
4257- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4258 Traceback (most recent call last):
4259 ...
4260 zope.testbrowser.browser.LinkNotFoundError
4261diff --git a/lib/lp/registry/stories/location/personlocation-edit.txt b/lib/lp/registry/stories/location/personlocation-edit.txt
4262index 14f336b..89385a5 100644
4263--- a/lib/lp/registry/stories/location/personlocation-edit.txt
4264+++ b/lib/lp/registry/stories/location/personlocation-edit.txt
4265@@ -13,7 +13,6 @@ A user cannot set another user's +editlocation page.
4266
4267 >>> nopriv_browser = setupBrowser(auth="Basic no-priv@canonical.com:test")
4268 >>> nopriv_browser.open('http://launchpad.test/~zzz/+editlocation')
4269- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4270 Traceback (most recent call last):
4271 ...
4272 zope.security.interfaces.Unauthorized: ...
4273diff --git a/lib/lp/registry/stories/mailinglists/lifecycle.txt b/lib/lp/registry/stories/mailinglists/lifecycle.txt
4274index 203f3c2..63d2ff6 100644
4275--- a/lib/lp/registry/stories/mailinglists/lifecycle.txt
4276+++ b/lib/lp/registry/stories/mailinglists/lifecycle.txt
4277@@ -230,7 +230,6 @@ Anonymous users cannot see the link, because they cannot even see the
4278 private team.
4279
4280 >>> anon_browser.open('http://launchpad.test/~bassists')
4281- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4282 Traceback (most recent call last):
4283 ...
4284 zope.publisher.interfaces.NotFound: Object: <...>, name: '~bassists'
4285@@ -238,7 +237,6 @@ private team.
4286 The same is true for normal users who are not team members.
4287
4288 >>> browser.open('http://launchpad.test/~bassists')
4289- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4290 Traceback (most recent call last):
4291 ...
4292 zope.publisher.interfaces.NotFound: Object: <...>, name: '~bassists'
4293@@ -248,7 +246,6 @@ Members who are not owners can see the link.
4294 >>> cprov_browser = setupBrowser(
4295 ... auth='Basic celso.providelo@canonical.com:test')
4296 >>> cprov_browser.open('http://launchpad.test/~bassists')
4297- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4298 Traceback (most recent call last):
4299 ...
4300 zope.publisher.interfaces.NotFound: Object: <...>, name: '~bassists'
4301diff --git a/lib/lp/registry/stories/mailinglists/subscriptions.txt b/lib/lp/registry/stories/mailinglists/subscriptions.txt
4302index 5ab421c..525698e 100644
4303--- a/lib/lp/registry/stories/mailinglists/subscriptions.txt
4304+++ b/lib/lp/registry/stories/mailinglists/subscriptions.txt
4305@@ -377,13 +377,11 @@ does not show either link.
4306 Create a mailing list
4307
4308 >>> carlos_browser.getLink('Subscribe')
4309- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4310 Traceback (most recent call last):
4311 ...
4312 zope.testbrowser.browser.LinkNotFoundError
4313
4314 >>> carlos_browser.getLink('Unsubscribe')
4315- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4316 Traceback (most recent call last):
4317 ...
4318 zope.testbrowser.browser.LinkNotFoundError
4319diff --git a/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt b/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt
4320index a5f6829..cbf71cc 100644
4321--- a/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt
4322+++ b/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt
4323@@ -5,7 +5,6 @@ Team (ubuntu-team).
4324 >>> name12_browser = setupBrowser(auth='Basic test@canonical.com:test')
4325 >>> name12_browser.open(
4326 ... 'http://launchpad.test/ubuntu/hoary/+addmilestone')
4327- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4328 Traceback (most recent call last):
4329 ...
4330 zope.security.interfaces.Unauthorized: ...
4331diff --git a/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt b/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt
4332index d7cb196..a167369 100644
4333--- a/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt
4334+++ b/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt
4335@@ -31,25 +31,21 @@ see the link to add a milestone nor access the page directly.
4336
4337 >>> user_browser.open('http://launchpad.test/alsa-utils/trunk')
4338 >>> user_browser.getLink('Create milestone').click()
4339- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4340 Traceback (most recent call last):
4341 ...
4342 zope.testbrowser.browser.LinkNotFoundError
4343 >>> user_browser.open(
4344 ... 'http://launchpad.test/alsa-utils/trunk/+addmilestone')
4345- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4346 Traceback (most recent call last):
4347 ...
4348 zope.security.interfaces.Unauthorized: ...
4349
4350 >>> user_browser.open('http://launchpad.test/ubuntu/hoary')
4351 >>> user_browser.getLink('Create milestone').click()
4352- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4353 Traceback (most recent call last):
4354 ...
4355 zope.testbrowser.browser.LinkNotFoundError
4356 >>> user_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone')
4357- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4358 Traceback (most recent call last):
4359 ...
4360 zope.security.interfaces.Unauthorized: ...
4361@@ -86,7 +82,6 @@ But we can't subscribe to project milestones, since they are not real objects.
4362
4363 >>> user_browser.open('http://launchpad.test/mozilla/+milestone/1.0')
4364 >>> user_browser.getLink('Subscribe to bug mail')
4365- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4366 Traceback (most recent call last):
4367 ...
4368 zope.testbrowser.browser.LinkNotFoundError
4369diff --git a/lib/lp/registry/stories/object/xx-object-branding.txt b/lib/lp/registry/stories/object/xx-object-branding.txt
4370index e8ee21c..79c75f1 100644
4371--- a/lib/lp/registry/stories/object/xx-object-branding.txt
4372+++ b/lib/lp/registry/stories/object/xx-object-branding.txt
4373@@ -17,7 +17,6 @@ Team branding
4374
4375 >>> browser = setupBrowser(auth='Basic no-priv@canonical.com:test')
4376 >>> browser.open('http://launchpad.test/~ubuntu-team/+branding')
4377- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4378 Traceback (most recent call last):
4379 ...
4380 zope.security.interfaces.Unauthorized: ...
4381@@ -80,7 +79,6 @@ Distribution branding
4382
4383 >>> browser = setupBrowser(auth='Basic no-priv@canonical.com:test')
4384 >>> browser.open('http://launchpad.test/kubuntu/+edit')
4385- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4386 Traceback (most recent call last):
4387 ...
4388 zope.security.interfaces.Unauthorized: ...
4389@@ -141,7 +139,6 @@ ProjectGroup branding
4390
4391 >>> browser = setupBrowser(auth='Basic no-priv@canonical.com:test')
4392 >>> browser.open('http://launchpad.test/mozilla/+branding')
4393- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4394 Traceback (most recent call last):
4395 ...
4396 zope.security.interfaces.Unauthorized: ...
4397@@ -204,7 +201,6 @@ Product branding
4398
4399 >>> browser = setupBrowser(auth='Basic no-priv@canonical.com:test')
4400 >>> browser.open('http://launchpad.test/jokosher/+branding')
4401- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4402 Traceback (most recent call last):
4403 ...
4404 zope.security.interfaces.Unauthorized: ...
4405@@ -271,7 +267,6 @@ Again, for Sprints, we have not exposed icon editing through the UI.
4406
4407 >>> browser = setupBrowser(auth='Basic no-priv@canonical.com:test')
4408 >>> browser.open('http://launchpad.test/sprints/futurista/+branding')
4409- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4410 Traceback (most recent call last):
4411 ...
4412 zope.security.interfaces.Unauthorized: ...
4413diff --git a/lib/lp/registry/stories/person/xx-add-sshkey.txt b/lib/lp/registry/stories/person/xx-add-sshkey.txt
4414index 3771907..8283d4f 100644
4415--- a/lib/lp/registry/stories/person/xx-add-sshkey.txt
4416+++ b/lib/lp/registry/stories/person/xx-add-sshkey.txt
4417@@ -133,7 +133,6 @@ Launchpad administrators are not allowed to poke at other user's ssh keys.
4418 >>> logout()
4419 >>> admin_browser = setupBrowserFreshLogin(foo_bar)
4420 >>> admin_browser.open('http://launchpad.test/~salgado/+editsshkeys')
4421- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4422 Traceback (most recent call last):
4423 ...
4424 zope.security.interfaces.Unauthorized: ...
4425@@ -173,7 +172,6 @@ belong to him, it will fail with an error message.
4426
4427 >>> browser.getControl(name='key', index=0).value = '1'
4428 >>> browser.getControl('Remove', index=0).click()
4429- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4430 Traceback (most recent call last):
4431 lp.app.errors.UnexpectedFormData: ...
4432
4433@@ -183,7 +181,6 @@ this case we'll raise an UnexpectedFormData.
4434 >>> browser.open('http://launchpad.test/~salgado/+editsshkeys')
4435 >>> browser.getControl(name='key', index=0).value = ''
4436 >>> browser.getControl('Remove', index=0).click()
4437- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4438 Traceback (most recent call last):
4439 ...
4440 lp.app.errors.UnexpectedFormData: ...
4441diff --git a/lib/lp/registry/stories/person/xx-admin-person-review.txt b/lib/lp/registry/stories/person/xx-admin-person-review.txt
4442index e191f41..0f38bee 100644
4443--- a/lib/lp/registry/stories/person/xx-admin-person-review.txt
4444+++ b/lib/lp/registry/stories/person/xx-admin-person-review.txt
4445@@ -30,7 +30,6 @@ Registry experts can't change the displayname.
4446 >>> expert_browser.getControl(
4447 ... 'Display Name', index=0).value = 'The one and only Salgado'
4448 >>> expert_browser.getControl('Change').click()
4449- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4450 Traceback (most recent call last):
4451 ...
4452 zope.security.interfaces.Unauthorized: ...
4453diff --git a/lib/lp/registry/stories/person/xx-adminpeoplemerge.txt b/lib/lp/registry/stories/person/xx-adminpeoplemerge.txt
4454index cf0b6b8..cc9928a 100644
4455--- a/lib/lp/registry/stories/person/xx-adminpeoplemerge.txt
4456+++ b/lib/lp/registry/stories/person/xx-adminpeoplemerge.txt
4457@@ -7,12 +7,10 @@ for merging people and another one for merging teams, which obviously
4458 are only accessible to LP admins.
4459
4460 >>> user_browser.open('http://launchpad.test/people/+adminpeoplemerge')
4461- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4462 Traceback (most recent call last):
4463 ...
4464 zope.security.interfaces.Unauthorized: ...
4465 >>> user_browser.open('http://launchpad.test/people/+adminteammerge')
4466- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4467 Traceback (most recent call last):
4468 ...
4469 zope.security.interfaces.Unauthorized: ...
4470diff --git a/lib/lp/registry/stories/person/xx-approve-members.txt b/lib/lp/registry/stories/person/xx-approve-members.txt
4471index bd55eba..34486c2 100644
4472--- a/lib/lp/registry/stories/person/xx-approve-members.txt
4473+++ b/lib/lp/registry/stories/person/xx-approve-members.txt
4474@@ -73,7 +73,6 @@ as an inactive one.
4475 And now we see that there are no pending members left.
4476
4477 >>> browser.getLink('Approve or decline members')
4478- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4479 Traceback (most recent call last):
4480 ...
4481 zope.testbrowser.browser.LinkNotFoundError
4482diff --git a/lib/lp/registry/stories/person/xx-deactivate-account.txt b/lib/lp/registry/stories/person/xx-deactivate-account.txt
4483index dfef5de..43d2c59 100644
4484--- a/lib/lp/registry/stories/person/xx-deactivate-account.txt
4485+++ b/lib/lp/registry/stories/person/xx-deactivate-account.txt
4486@@ -84,7 +84,6 @@ the user themselves --not even Launchpad admins can do that on behalf of other
4487 people.
4488
4489 >>> admin_browser.open('http://launchpad.test/~cprov/+deactivate-account')
4490- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4491 Traceback (most recent call last):
4492 ...
4493 zope.security.interfaces.Unauthorized: ...
4494diff --git a/lib/lp/registry/stories/person/xx-person-claim-merge.txt b/lib/lp/registry/stories/person/xx-person-claim-merge.txt
4495index 1c8462f..f7cfaa3 100644
4496--- a/lib/lp/registry/stories/person/xx-person-claim-merge.txt
4497+++ b/lib/lp/registry/stories/person/xx-person-claim-merge.txt
4498@@ -9,7 +9,7 @@ exception that will redirect the user to the login page.
4499 >>> link = anon_browser.getLink("Are you Diogo Matsubara?")
4500 >>> print(link.url)
4501 http://launchpad.test/people/+requestmerge?field.dupe_person=matsubara
4502- >>> link.click() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4503+ >>> link.click()
4504 Traceback (most recent call last):
4505 ...
4506 zope.security.interfaces.Unauthorized: ...
4507diff --git a/lib/lp/registry/stories/person/xx-person-home.txt b/lib/lp/registry/stories/person/xx-person-home.txt
4508index 28a99ab..99fe5cb 100644
4509--- a/lib/lp/registry/stories/person/xx-person-home.txt
4510+++ b/lib/lp/registry/stories/person/xx-person-home.txt
4511@@ -80,7 +80,6 @@ However, when the user visits someone else's page, they see no such URL.
4512 And there is no helpful link.
4513
4514 >>> print(user_browser.getLink('openid help').url)
4515- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4516 Traceback (most recent call last):
4517 ...
4518 zope.testbrowser.browser.LinkNotFoundError
4519diff --git a/lib/lp/registry/stories/pillar/xx-pillar-deactivation.txt b/lib/lp/registry/stories/pillar/xx-pillar-deactivation.txt
4520index 7e9127f..f55c567 100644
4521--- a/lib/lp/registry/stories/pillar/xx-pillar-deactivation.txt
4522+++ b/lib/lp/registry/stories/pillar/xx-pillar-deactivation.txt
4523@@ -44,24 +44,20 @@ The projects are now no longer publicly visible:
4524
4525 >>> anon_browser.open('http://launchpad.test/projects/+index?text=mozilla')
4526 >>> anon_browser.getLink(url='/firefox')
4527- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4528 Traceback (most recent call last):
4529 ...
4530 zope.testbrowser.browser.LinkNotFoundError
4531 >>> anon_browser.getLink(url='/mozilla')
4532- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4533 Traceback (most recent call last):
4534 ...
4535 zope.testbrowser.browser.LinkNotFoundError
4536
4537 >>> anon_browser.open('http://launchpad.test/firefox')
4538- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4539 Traceback (most recent call last):
4540 ...
4541 zope.publisher.interfaces.NotFound: ...
4542
4543 >>> anon_browser.open('http://launchpad.test/mozilla')
4544- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4545 Traceback (most recent call last):
4546 ...
4547 zope.publisher.interfaces.NotFound: ...
4548diff --git a/lib/lp/registry/stories/pillar/xx-pillar-traversal.txt b/lib/lp/registry/stories/pillar/xx-pillar-traversal.txt
4549index e4b57ec..392b75b 100644
4550--- a/lib/lp/registry/stories/pillar/xx-pillar-traversal.txt
4551+++ b/lib/lp/registry/stories/pillar/xx-pillar-traversal.txt
4552@@ -16,7 +16,6 @@ canonical URL.
4553 >>> browser.open('http://launchpad.test/firefox')
4554
4555 >>> browser.open('http://launchpad.test/iceweasel')
4556- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4557 Traceback (most recent call last):
4558 ...
4559 zope.publisher.interfaces.NotFound: ...
4560diff --git a/lib/lp/registry/stories/product/xx-product-files.txt b/lib/lp/registry/stories/product/xx-product-files.txt
4561index 04f7fc8..0d99ad7 100644
4562--- a/lib/lp/registry/stories/product/xx-product-files.txt
4563+++ b/lib/lp/registry/stories/product/xx-product-files.txt
4564@@ -191,7 +191,6 @@ Ensure a non-owner doesn't see the 'Add download file' link.
4565
4566 >>> non_owner.open('http://launchpad.test/firefox/+download')
4567 >>> non_owner.getLink('1.0.0')
4568- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4569 Traceback (most recent call last):
4570 ...
4571 zope.testbrowser.browser.LinkNotFoundError
4572@@ -208,7 +207,6 @@ navigating to the product release page.
4573
4574 >>> non_owner.open('http://launchpad.test/firefox/1.0/1.0.0')
4575 >>> non_owner.getLink('Add download file')
4576- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4577 Traceback (most recent call last):
4578 ...
4579 zope.testbrowser.browser.LinkNotFoundError
4580diff --git a/lib/lp/registry/stories/product/xx-product-package-pages.txt b/lib/lp/registry/stories/product/xx-product-package-pages.txt
4581index 15b7576..4659d66 100644
4582--- a/lib/lp/registry/stories/product/xx-product-package-pages.txt
4583+++ b/lib/lp/registry/stories/product/xx-product-package-pages.txt
4584@@ -44,7 +44,6 @@ Any logged in users can still see the links to create a packaging link.
4585
4586 >>> anon_browser.open('http://launchpad.test/evolution/+packages')
4587 >>> anon_browser.getLink(url='/evolution/trunk/+ubuntupkg')
4588- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4589 Traceback (most recent call last):
4590 ...
4591 zope.testbrowser.browser.LinkNotFoundError
4592diff --git a/lib/lp/registry/stories/product/xx-projects-index.txt b/lib/lp/registry/stories/product/xx-projects-index.txt
4593index 2ccbef5..4ca2e43 100644
4594--- a/lib/lp/registry/stories/product/xx-projects-index.txt
4595+++ b/lib/lp/registry/stories/product/xx-projects-index.txt
4596@@ -5,7 +5,6 @@ Just make sure this page contains the right links:
4597 This link was removed.
4598
4599 >>> user_browser.getLink("Show all teams").url
4600- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4601 Traceback (most recent call last):
4602 ...
4603 zope.testbrowser.browser.LinkNotFoundError
4604diff --git a/lib/lp/registry/stories/productrelease/xx-productrelease-basics.txt b/lib/lp/registry/stories/productrelease/xx-productrelease-basics.txt
4605index 4c2e840..4ece9de 100644
4606--- a/lib/lp/registry/stories/productrelease/xx-productrelease-basics.txt
4607+++ b/lib/lp/registry/stories/productrelease/xx-productrelease-basics.txt
4608@@ -8,13 +8,11 @@ release nor can access the page directly.
4609
4610 >>> user_browser.open('http://launchpad.test/firefox/+milestone/1.0')
4611 >>> user_browser.getLink('Create release').click()
4612- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4613 Traceback (most recent call last):
4614 ...
4615 zope.testbrowser.browser.LinkNotFoundError
4616 >>> user_browser.open(
4617 ... 'http://launchpad.test/firefox/+milestone/1.0/+addrelease')
4618- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4619 Traceback (most recent call last):
4620 ...
4621 zope.security.interfaces.Unauthorized: ...
4622@@ -92,7 +90,6 @@ has a productrelease.
4623
4624 >>> browser.open('http://launchpad.test/firefox/+milestone/1.0')
4625 >>> browser.getLink('Create release').click()
4626- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4627 Traceback (most recent call last):
4628 ...
4629 zope.testbrowser.browser.LinkNotFoundError
4630diff --git a/lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt b/lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt
4631index 9bd1066..f33a780 100644
4632--- a/lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt
4633+++ b/lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt
4634@@ -22,12 +22,10 @@ link and cannot access the +delete page.
4635 0.9.2 "One (secure) Tree Hill" : Mozilla Firefox
4636
4637 >>> user_browser.getLink(url='/firefox/trunk/0.9.2/+delete')
4638- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4639 Traceback (most recent call last):
4640 ...
4641 zope.testbrowser.browser.LinkNotFoundError
4642 >>> user_browser.open('http://launchpad.test/firefox/trunk/0.9.2/+delete')
4643- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4644 Traceback (most recent call last):
4645 ...
4646 zope.security.interfaces.Unauthorized: ...
4647diff --git a/lib/lp/registry/stories/productseries/xx-productseries-add-and-edit.txt b/lib/lp/registry/stories/productseries/xx-productseries-add-and-edit.txt
4648index d8a665b..8ac9740 100644
4649--- a/lib/lp/registry/stories/productseries/xx-productseries-add-and-edit.txt
4650+++ b/lib/lp/registry/stories/productseries/xx-productseries-add-and-edit.txt
4651@@ -10,12 +10,10 @@ Person won't even see the link nor can access the page directly.
4652
4653 >>> user_browser.open('http://launchpad.test/firefox')
4654 >>> user_browser.getLink('Register a series').click()
4655- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4656 Traceback (most recent call last):
4657 ...
4658 zope.testbrowser.browser.LinkNotFoundError
4659 >>> user_browser.open('http://launchpad.test/firefox/+addseries')
4660- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4661 Traceback (most recent call last):
4662 ...
4663 zope.security.interfaces.Unauthorized: ...
4664diff --git a/lib/lp/registry/stories/productseries/xx-productseries-delete.txt b/lib/lp/registry/stories/productseries/xx-productseries-delete.txt
4665index 92bfa76..179e316 100644
4666--- a/lib/lp/registry/stories/productseries/xx-productseries-delete.txt
4667+++ b/lib/lp/registry/stories/productseries/xx-productseries-delete.txt
4668@@ -92,7 +92,6 @@ that the series was deleted, and can not see a link to it anymore.
4669 Series trunk deleted.
4670
4671 >>> owner_browser.getLink('trunk')
4672- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4673 Traceback (most recent call last):
4674 ...
4675 zope.testbrowser.browser.LinkNotFoundError
4676diff --git a/lib/lp/registry/stories/project/xx-project-add.txt b/lib/lp/registry/stories/project/xx-project-add.txt
4677index 4e6a32a..6f4903e 100644
4678--- a/lib/lp/registry/stories/project/xx-project-add.txt
4679+++ b/lib/lp/registry/stories/project/xx-project-add.txt
4680@@ -4,7 +4,6 @@ Adding new projects
4681 Normal users should not be able to do this:
4682
4683 >>> user_browser.open("http://launchpad.test/projectgroups/+new")
4684- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4685 Traceback (most recent call last):
4686 ...
4687 zope.security.interfaces.Unauthorized: ...
4688diff --git a/lib/lp/registry/stories/project/xx-project-edit.txt b/lib/lp/registry/stories/project/xx-project-edit.txt
4689index 840697c..e6c0e97 100644
4690--- a/lib/lp/registry/stories/project/xx-project-edit.txt
4691+++ b/lib/lp/registry/stories/project/xx-project-edit.txt
4692@@ -23,7 +23,6 @@ The maintainer of a project can edit its details.
4693 Regular users can't access the +review page.
4694
4695 >>> browser.getLink('Administer')
4696- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4697 Traceback (most recent call last):
4698 ...
4699 zope.testbrowser.browser.LinkNotFoundError
4700@@ -123,7 +122,6 @@ Registry experts are not allowed access to the +edit page.
4701
4702 >>> expert_browser.open('http://launchpad.test/new-name')
4703 >>> expert_browser.getLink('Change details').click()
4704- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4705 Traceback (most recent call last):
4706 ...
4707 zope.testbrowser.browser.LinkNotFoundError
4708@@ -131,7 +129,6 @@ Registry experts are not allowed access to the +edit page.
4709 And going directly to the URL is not allowed.
4710
4711 >>> expert_browser.open('http://launchpad.test/new-name/+edit')
4712- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4713 Traceback (most recent call last):
4714 ...
4715 zope.security.interfaces.Unauthorized: ...
4716diff --git a/lib/lp/registry/stories/project/xx-project-index.txt b/lib/lp/registry/stories/project/xx-project-index.txt
4717index 086ce39..b84ce00 100644
4718--- a/lib/lp/registry/stories/project/xx-project-index.txt
4719+++ b/lib/lp/registry/stories/project/xx-project-index.txt
4720@@ -46,14 +46,12 @@ project.
4721
4722 >>> browser.open('http://launchpad.test/mozilla')
4723 >>> browser.getLink('Register a project in The Mozilla Project')
4724- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4725 Traceback (most recent call last):
4726 ...
4727 zope.testbrowser.browser.LinkNotFoundError
4728
4729 >>> browser.addHeader('Authorization', 'Basic no-priv@canonical.com:test')
4730 >>> browser.getLink('Register a project in The Mozilla Project')
4731- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4732 Traceback (most recent call last):
4733 ...
4734 zope.testbrowser.browser.LinkNotFoundError
4735@@ -83,17 +81,14 @@ question' or 'Help translate' buttons.
4736
4737 >>> user_browser.open('http://launchpad.test/a-test-group')
4738 >>> user_browser.getLink('Report a bug')
4739- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4740 Traceback (most recent call last):
4741 ..
4742 zope.testbrowser.browser.LinkNotFoundError
4743 >>> user_browser.getLink('Ask a question')
4744- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4745 Traceback (most recent call last):
4746 ..
4747 zope.testbrowser.browser.LinkNotFoundError
4748 >>> user_browser.getLink('Help translate')
4749- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4750 Traceback (most recent call last):
4751 ..
4752 zope.testbrowser.browser.LinkNotFoundError
4753@@ -102,27 +97,22 @@ Also, the bugs, blueprints, translations and answers facets will be disabled:
4754
4755 >>> user_browser.open('http://launchpad.test/a-test-group')
4756 >>> user_browser.getLink('Bugs')
4757- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4758 Traceback (most recent call last):
4759 ..
4760 zope.testbrowser.browser.LinkNotFoundError
4761 >>> user_browser.getLink('Blueprints')
4762- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4763 Traceback (most recent call last):
4764 ..
4765 zope.testbrowser.browser.LinkNotFoundError
4766 >>> user_browser.getLink('Answers')
4767- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4768 Traceback (most recent call last):
4769 ..
4770 zope.testbrowser.browser.LinkNotFoundError
4771 >>> user_browser.getLink('Answers')
4772- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4773 Traceback (most recent call last):
4774 ..
4775 zope.testbrowser.browser.LinkNotFoundError
4776 >>> user_browser.getLink('Translations')
4777- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4778 Traceback (most recent call last):
4779 ..
4780 zope.testbrowser.browser.LinkNotFoundError
4781diff --git a/lib/lp/registry/stories/team-polls/create-polls.txt b/lib/lp/registry/stories/team-polls/create-polls.txt
4782index ed0e1bd..9f8e833 100644
4783--- a/lib/lp/registry/stories/team-polls/create-polls.txt
4784+++ b/lib/lp/registry/stories/team-polls/create-polls.txt
4785@@ -20,7 +20,6 @@ administrator. There's no link leading to the +newpoll page, but the user can
4786 easily guess it.
4787
4788 >>> no_priv_browser.open('http://launchpad.test/~ubuntu-team/+newpoll')
4789- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4790 Traceback (most recent call last):
4791 ...
4792 zope.security.interfaces.Unauthorized: ...
4793diff --git a/lib/lp/registry/stories/team-polls/edit-options.txt b/lib/lp/registry/stories/team-polls/edit-options.txt
4794index 1cbf715..8610451 100644
4795--- a/lib/lp/registry/stories/team-polls/edit-options.txt
4796+++ b/lib/lp/registry/stories/team-polls/edit-options.txt
4797@@ -13,7 +13,6 @@ team's administrators:
4798 OptionA OptionA Yes
4799 ...
4800 >>> user_browser.getLink('[Edit]')
4801- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4802 Traceback (most recent call last):
4803 ...
4804 zope.testbrowser.browser.LinkNotFoundError
4805diff --git a/lib/lp/registry/stories/team/xx-team-add-my-teams.txt b/lib/lp/registry/stories/team/xx-team-add-my-teams.txt
4806index 4fb0e3a..caadf07 100644
4807--- a/lib/lp/registry/stories/team/xx-team-add-my-teams.txt
4808+++ b/lib/lp/registry/stories/team/xx-team-add-my-teams.txt
4809@@ -103,7 +103,6 @@ your teams as members.
4810
4811 >>> browser.open('http://launchpad.test/~ubuntu-team')
4812 >>> browser.getLink('Add one of my teams')
4813- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4814 Traceback (most recent call last):
4815 ...
4816 zope.testbrowser.browser.LinkNotFoundError
4817@@ -118,7 +117,6 @@ your teams as members.
4818 The page is restricted to logged in users.
4819
4820 >>> anon_browser.open('http://launchpad.test/~ubuntu-team/+add-my-teams')
4821- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4822 Traceback (most recent call last):
4823 zope.security.interfaces.Unauthorized: ...
4824
4825diff --git a/lib/lp/registry/stories/team/xx-team-home.txt b/lib/lp/registry/stories/team/xx-team-home.txt
4826index b6f36e0..6ec6b77 100644
4827--- a/lib/lp/registry/stories/team/xx-team-home.txt
4828+++ b/lib/lp/registry/stories/team/xx-team-home.txt
4829@@ -159,7 +159,6 @@ As teams do not have OpenID Logins, there is no link in the Contact
4830 details section for help.
4831
4832 >>> sample_browser.getLink('OpenID help')
4833- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4834 Traceback (most recent call last):
4835 ...
4836 zope.testbrowser.browser.LinkNotFoundError
4837diff --git a/lib/lp/registry/stories/teammembership/private-team.txt b/lib/lp/registry/stories/teammembership/private-team.txt
4838index c334281..36b2812 100644
4839--- a/lib/lp/registry/stories/teammembership/private-team.txt
4840+++ b/lib/lp/registry/stories/teammembership/private-team.txt
4841@@ -41,7 +41,6 @@ The page indicates that the team is private.
4842 A normal user cannot see the team.
4843
4844 >>> user_browser.open('http://launchpad.test/~private-team')
4845- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4846 Traceback (most recent call last):
4847 ...
4848 zope.publisher.interfaces.NotFound: ...
4849@@ -49,7 +48,6 @@ A normal user cannot see the team.
4850 An anonymous user cannot see the team.
4851
4852 >>> anon_browser.open('http://launchpad.test/~private-team')
4853- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4854 Traceback (most recent call last):
4855 ...
4856 zope.publisher.interfaces.NotFound: ...
4857diff --git a/lib/lp/registry/stories/teammembership/xx-add-member.txt b/lib/lp/registry/stories/teammembership/xx-add-member.txt
4858index bdf48f2..f5a2733 100644
4859--- a/lib/lp/registry/stories/teammembership/xx-add-member.txt
4860+++ b/lib/lp/registry/stories/teammembership/xx-add-member.txt
4861@@ -91,7 +91,6 @@ rights to edit the membership in question) can do it.
4862
4863 >>> landscape_admin_browser.open(
4864 ... 'http://launchpad.test/~launchpad/+invitation/landscape-developers')
4865- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4866 Traceback (most recent call last):
4867 ...
4868 zope.security.interfaces.Unauthorized: ...
4869diff --git a/lib/lp/registry/stories/teammembership/xx-member-renewed-membership.txt b/lib/lp/registry/stories/teammembership/xx-member-renewed-membership.txt
4870index c3b457c..5388662 100644
4871--- a/lib/lp/registry/stories/teammembership/xx-member-renewed-membership.txt
4872+++ b/lib/lp/registry/stories/teammembership/xx-member-renewed-membership.txt
4873@@ -53,7 +53,6 @@ Other users (apart from Karl) can't see that page.
4874
4875 >>> user_browser.open('http://launchpad.test/~karl/+expiringmembership/'
4876 ... 'ubuntu-mirror-admins')
4877- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4878 Traceback (most recent call last):
4879 ...
4880 zope.security.interfaces.Unauthorized: ...
4881@@ -203,7 +202,6 @@ Any user who's not an admin of landscape-developers can't even see that page.
4882
4883 >>> user_browser.open('http://launchpad.test/~landscape-developers'
4884 ... '/+expiringmembership/ubuntu-mirror-admins')
4885- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4886 Traceback (most recent call last):
4887 ...
4888 zope.security.interfaces.Unauthorized: ...
4889diff --git a/lib/lp/registry/stories/teammembership/xx-team-leave.txt b/lib/lp/registry/stories/teammembership/xx-team-leave.txt
4890index b2ee0a6..b2d66d3 100644
4891--- a/lib/lp/registry/stories/teammembership/xx-team-leave.txt
4892+++ b/lib/lp/registry/stories/teammembership/xx-team-leave.txt
4893@@ -71,7 +71,6 @@ team's overview page.
4894
4895 # The 'Leave' link should be gone.
4896 >>> browser.getLink('Leave the Team')
4897- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4898 Traceback (most recent call last):
4899 ...
4900 zope.testbrowser.browser.LinkNotFoundError
4901@@ -87,7 +86,6 @@ Team owners do not have the option to leave.
4902 ... find_tag_by_id(browser.contents, 'your-involvement')))
4903 You own this team...
4904 >>> browser.getLink('Leave the Team')
4905- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4906 Traceback (most recent call last):
4907 ...
4908 zope.testbrowser.browser.LinkNotFoundError
4909diff --git a/lib/lp/registry/stories/teammembership/xx-teammembership.txt b/lib/lp/registry/stories/teammembership/xx-teammembership.txt
4910index ff6f13d..4cca381 100644
4911--- a/lib/lp/registry/stories/teammembership/xx-teammembership.txt
4912+++ b/lib/lp/registry/stories/teammembership/xx-teammembership.txt
4913@@ -64,7 +64,6 @@ say that there's no need to join since the user is already a member of that
4914 team.
4915
4916 >>> browser.getLink('Join the team')
4917- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4918 Traceback (most recent call last):
4919 ...
4920 zope.testbrowser.browser.LinkNotFoundError
4921@@ -177,7 +176,6 @@ If it was a restricted team, users wouldn't even see a link to join the team.
4922 Restricted Team
4923
4924 >>> browser.getLink('Join the team')
4925- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4926 Traceback (most recent call last):
4927 ...
4928 zope.testbrowser.browser.LinkNotFoundError
4929diff --git a/lib/lp/registry/tests/person_from_principal.txt b/lib/lp/registry/tests/person_from_principal.txt
4930index d414705..04ff03d 100644
4931--- a/lib/lp/registry/tests/person_from_principal.txt
4932+++ b/lib/lp/registry/tests/person_from_principal.txt
4933@@ -10,7 +10,6 @@ raised.
4934 ... id = 42
4935 ... person = None
4936 >>> person_from_principal(NoLaunchpadPrincipal())
4937- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4938 Traceback (most recent call last):
4939 ...
4940 zope.interface.interfaces.ComponentLookupError
4941diff --git a/lib/lp/services/database/doc/db-policy.txt b/lib/lp/services/database/doc/db-policy.txt
4942index aa90ed7..48255e9 100644
4943--- a/lib/lp/services/database/doc/db-policy.txt
4944+++ b/lib/lp/services/database/doc/db-policy.txt
4945@@ -38,7 +38,7 @@ a single master.
4946 False
4947
4948 >>> ro_janitor.display_name = 'Janice the Janitor'
4949- >>> transaction.commit() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4950+ >>> transaction.commit()
4951 Traceback (most recent call last):
4952 ...
4953 storm.database.InternalError: ...
4954@@ -81,7 +81,6 @@ resources.
4955 >>> with SlaveOnlyDatabasePolicy():
4956 ... whoops = IMasterStore(Person).find(
4957 ... Person, Person.name == 'janitor').one()
4958- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4959 Traceback (most recent call last):
4960 ...
4961 lp.services.database.interfaces.DisallowedStore: master
4962@@ -95,7 +94,6 @@ database transaction.
4963 >>> with DatabaseBlockedPolicy():
4964 ... whoops = IStore(Person).find(
4965 ... Person, Person.name == 'janitor').one()
4966- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4967 Traceback (most recent call last):
4968 ...
4969 lp.services.database.interfaces.DisallowedStore: ('main', 'default')
4970diff --git a/lib/lp/services/database/doc/multitablecopy.txt b/lib/lp/services/database/doc/multitablecopy.txt
4971index 618ebd7..f6ffd41 100644
4972--- a/lib/lp/services/database/doc/multitablecopy.txt
4973+++ b/lib/lp/services/database/doc/multitablecopy.txt
4974@@ -327,7 +327,6 @@ which means that the attempt to insert it will violate a unique constraint.
4975 ... % numeric_holding_table)
4976
4977 >>> copier.pour(transaction)
4978- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4979 Traceback (most recent call last):
4980 ...
4981 storm.database.IntegrityError: duplicate ... violates unique constraint ...
4982diff --git a/lib/lp/services/database/doc/storm.txt b/lib/lp/services/database/doc/storm.txt
4983index abe5dc3..82823a5 100644
4984--- a/lib/lp/services/database/doc/storm.txt
4985+++ b/lib/lp/services/database/doc/storm.txt
4986@@ -72,7 +72,7 @@ from a store other than the correct Master.
4987 >>> t = transaction.begin()
4988 >>> person = main_slave.find(Person, name='mark').one()
4989 >>> person.display_name = 'Cannot change'
4990- >>> transaction.commit() # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
4991+ >>> transaction.commit()
4992 Traceback (most recent call last):
4993 ...
4994 storm.database.InternalError: ...
4995@@ -94,7 +94,6 @@ similarly wrapped.
4996 >>> print(person.displayname)
4997 No Privileges Person
4998 >>> person.name = 'foo'
4999- ... # doctest: +IGNORE_EXCEPTION_MODULE_IN_PYTHON2
5000 Traceback (most recent call last):
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to status/vote changes: