1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# Copyright 2009 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""
Run the doctests and pagetests.
"""
import os
from zope.security.management import setSecurityPolicy
from canonical.launchpad.ftests.test_system_documentation import (
branchscannerSetUp,
)
from canonical.launchpad.testing.systemdocs import (
LayeredDocFileSuite,
setGlobs,
setUp,
tearDown,
)
from canonical.launchpad.webapp.authorization import LaunchpadSecurityPolicy
from canonical.testing.layers import (
LaunchpadFunctionalLayer,
LaunchpadZopelessLayer,
)
from lp.services.testing import build_test_suite
here = os.path.dirname(os.path.realpath(__file__))
def zopelessLaunchpadSecuritySetUp(test):
"""Set up a LaunchpadZopelessLayer test to use LaunchpadSecurityPolicy.
To be able to use LaunchpadZopelessLayer.switchDbUser in a test, we need
to run in the Zopeless environment. The Zopeless environment normally runs
using the PermissiveSecurityPolicy. If we want the test to cover
functionality used in the webapp, it needs to use the
LaunchpadSecurityPolicy.
"""
setGlobs(test)
test.old_security_policy = setSecurityPolicy(LaunchpadSecurityPolicy)
def zopelessLaunchpadSecurityTearDown(test):
setSecurityPolicy(test.old_security_policy)
special = {
'codeimport-machine.txt': LayeredDocFileSuite(
'../doc/codeimport-machine.txt',
setUp=zopelessLaunchpadSecuritySetUp,
tearDown=zopelessLaunchpadSecurityTearDown,
layer=LaunchpadZopelessLayer,
),
'revision.txt': LayeredDocFileSuite(
'../doc/revision.txt',
setUp=branchscannerSetUp, tearDown=tearDown,
layer=LaunchpadZopelessLayer
),
'codeimport-result.txt': LayeredDocFileSuite(
'../doc/codeimport-result.txt',
setUp=setUp, tearDown=tearDown, layer=LaunchpadFunctionalLayer,
),
'branch-merge-proposal-notifications.txt': LayeredDocFileSuite(
'../doc/branch-merge-proposal-notifications.txt',
setUp=setUp, tearDown=tearDown, layer=LaunchpadFunctionalLayer,
),
}
def test_suite():
return build_test_suite(here, special)
|