• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zopefoundation / Zope / 6263629025

21 Sep 2023 03:12PM UTC coverage: 82.146% (-0.01%) from 82.159%
6263629025

Pull #1164

github

web-flow
[pre-commit.ci lite] apply automatic fixes
Pull Request #1164: Move all linters to pre-commit.

4353 of 6963 branches covered (0.0%)

Branch coverage included in aggregate %.

487 of 487 new or added lines in 186 files covered. (100.0%)

27394 of 31684 relevant lines covered (86.46%)

0.86 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.72
/src/ZPublisher/tests/testPostTraversal.py
1
from unittest import TestCase
1✔
2

3
import Zope2
1✔
4
from Acquisition import Implicit
1✔
5
from ZPublisher.BaseRequest import BaseRequest
1✔
6
from ZPublisher.HTTPResponse import HTTPResponse
1✔
7

8

9
class WSGILayer:
1✔
10
    @staticmethod
1✔
11
    def setUp():
1✔
12
        Zope2.startup_wsgi()
1✔
13

14

15
pt_simple_was_run = 0
1✔
16

17

18
def pt_simple():
1✔
19
    global pt_simple_was_run
20
    pt_simple_was_run = 1
1✔
21
    pass
1✔
22

23

24
def pt_static_arg(request, b):
1✔
25
    request.set('b', b)
1✔
26
    pass
1✔
27

28

29
def pt_simple_redirect(a):
1✔
30
    return a
1✔
31

32

33
def pt_chain_test(request, string):
1✔
34
    request.set('a', request.get('a', '') + string)
1✔
35

36

37
class DummyObjectBasic(Implicit):
1✔
38
    """Dummy class with docstring."""
39

40
    def _setObject(self, id, object):
1✔
41
        setattr(self, id, object)
1✔
42
        return getattr(self, id)
1✔
43

44
    def view(self):
1✔
45
        """Attribute with docstring."""
46
        return 'view content'
×
47

48

49
class DummyObjectWithPTHook(DummyObjectBasic):
1✔
50
    """Dummy class with docstring."""
51

52
    traversal = []
1✔
53

54
    def __before_publishing_traverse__(self, object, REQUEST):
1✔
55
        for x in self.traversal:
1✔
56
            REQUEST.post_traverse(*x)
1✔
57

58

59
class TestBaseRequestPT(TestCase):
1✔
60
    layer = WSGILayer
1✔
61

62
    def setUp(self):
1✔
63
        self.root = DummyObjectBasic()
1✔
64
        self.f1 = self.root._setObject('folder', DummyObjectBasic())
1✔
65
        self.f1._setObject('objBasic', DummyObjectWithPTHook())
1✔
66

67
    def makeBaseRequest(self):
1✔
68
        response = HTTPResponse()
1✔
69
        environment = {
1✔
70
            'URL': '',
71
            'PARENTS': [self.root],
72
            'steps': [],
73
            '_hacked_path': 0,
74
            '_test_counter': 0,
75
            'response': response,
76
        }
77
        return BaseRequest(environment)
1✔
78

79
    def test_post_basic(self):
1✔
80
        global pt_simple_was_run
81
        pt_simple_was_run = 0
1✔
82
        r = self.makeBaseRequest()
1✔
83

84
        # Set hook
85
        self.f1.objBasic.traversal = [(pt_simple,)]
1✔
86
        x = r.traverse('folder/objBasic')
1✔
87

88
        # Object should be self.f1.objBasic
89
        self.assertEqual(x, self.f1.objBasic)
1✔
90
        self.assertEqual(pt_simple_was_run, 1)
1✔
91

92
        self.f1.objBasic.traversal = []
1✔
93

94
    def test_post_arg(self):
1✔
95

96
        r = self.makeBaseRequest()
1✔
97
        b = 1
1✔
98

99
        self.f1.objBasic.traversal = [(pt_static_arg, (r, b))]
1✔
100
        x = r.traverse('folder/objBasic')
1✔
101

102
        # Object should have been traversed normally
103
        self.assertEqual(x, self.f1.objBasic)
1✔
104
        self.assertEqual(r.get('b', 0), b)
1✔
105

106
        self.f1.objBasic.traversal = []
1✔
107

108
    def test_hook_chain(self):
1✔
109

110
        r = self.makeBaseRequest()
1✔
111

112
        self.f1.objBasic.traversal = [
1✔
113
            (pt_chain_test, (r, 'a')),
114
            (pt_chain_test, (r, 'b')),
115
            (pt_chain_test, (r, 'c')),
116
            (pt_chain_test, (r, 'd')),
117
        ]
118

119
        r.traverse('folder/objBasic')
1✔
120
        self.assertEqual(r.get('a', ''), 'abcd')
1✔
121

122
        self.f1.objBasic.traversal = []
1✔
123

124
    def test_hook_redirect(self):
1✔
125
        r = self.makeBaseRequest()
1✔
126
        check = []
1✔
127
        self.f1.objBasic.traversal = [(pt_simple_redirect, (check,))]
1✔
128

129
        x = r.traverse('folder/objBasic')
1✔
130

131
        self.assertEqual(x, check)
1✔
132

133
    def test_hook_chain_redirect(self):
1✔
134
        r = self.makeBaseRequest()
1✔
135
        check = []
1✔
136
        self.f1.objBasic.traversal = [
1✔
137
            (pt_chain_test, (r, 'a')),
138
            (pt_chain_test, (r, 'b')),
139
            (pt_chain_test, (r, 'c')),
140
            (pt_simple_redirect, (check,)),
141
            (pt_simple_redirect, (1,)),
142
            (pt_chain_test, (r, 'd')),
143
        ]
144

145
        x = r.traverse('folder/objBasic')
1✔
146

147
        self.assertEqual(r.get('a', ''), 'abc')
1✔
148
        self.assertEqual(x, check)
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc