|
26 | 26 | import os
|
27 | 27 | import unittest
|
28 | 28 | from collections import deque
|
| 29 | +from functools import partial |
29 | 30 |
|
30 | 31 | import psycopg2
|
31 | 32 | from psycopg2 import extensions
|
@@ -129,69 +130,51 @@ def test_notifies_received_on_execute(self):
|
129 | 130 | self.assertEqual(pid, self.conn.notifies[0][0])
|
130 | 131 | self.assertEqual('foo', self.conn.notifies[0][1])
|
131 | 132 |
|
132 |
| - @slow |
133 |
| - @skip_if_windows |
134 |
| - def test_notifies_received_on_commit(self): |
| 133 | + def _test_notifies_received_on_operation(self, operation, execute_query=True): |
135 | 134 | self.listen('foo')
|
136 | 135 | self.conn.commit()
|
137 |
| - self.conn.cursor().execute('select 1;') |
| 136 | + if execute_query: |
| 137 | + self.conn.cursor().execute('select 1;') |
138 | 138 | pid = int(self.notify('foo').communicate()[0])
|
139 | 139 | self.assertEqual(0, len(self.conn.notifies))
|
140 |
| - self.conn.commit() |
| 140 | + operation() |
141 | 141 | self.assertEqual(1, len(self.conn.notifies))
|
142 | 142 | self.assertEqual(pid, self.conn.notifies[0][0])
|
143 | 143 | self.assertEqual('foo', self.conn.notifies[0][1])
|
144 | 144 |
|
| 145 | + @slow |
| 146 | + @skip_if_windows |
| 147 | + def test_notifies_received_on_commit(self): |
| 148 | + self._test_notifies_received_on_operation(self.conn.commit) |
| 149 | + |
145 | 150 | @slow
|
146 | 151 | @skip_if_windows
|
147 | 152 | def test_notifies_received_on_rollback(self):
|
148 |
| - self.listen('foo') |
149 |
| - self.conn.commit() |
150 |
| - self.conn.cursor().execute('select 1;') |
151 |
| - pid = int(self.notify('foo').communicate()[0]) |
152 |
| - self.assertEqual(0, len(self.conn.notifies)) |
153 |
| - self.conn.rollback() |
154 |
| - self.assertEqual(1, len(self.conn.notifies)) |
155 |
| - self.assertEqual(pid, self.conn.notifies[0][0]) |
156 |
| - self.assertEqual('foo', self.conn.notifies[0][1]) |
| 153 | + self._test_notifies_received_on_operation(self.conn.rollback) |
157 | 154 |
|
158 | 155 | @slow
|
159 | 156 | @skip_if_windows
|
160 | 157 | def test_notifies_received_on_reset(self):
|
161 |
| - self.listen('foo') |
162 |
| - self.conn.commit() |
163 |
| - pid = int(self.notify('foo').communicate()[0]) |
164 |
| - self.assertEqual(0, len(self.conn.notifies)) |
165 |
| - self.conn.reset() |
166 |
| - self.assertEqual(1, len(self.conn.notifies)) |
167 |
| - self.assertEqual(pid, self.conn.notifies[0][0]) |
168 |
| - self.assertEqual('foo', self.conn.notifies[0][1]) |
| 158 | + self._test_notifies_received_on_operation(self.conn.reset, execute_query=False) |
169 | 159 |
|
170 | 160 | @slow
|
171 | 161 | @skip_if_windows
|
172 | 162 | def test_notifies_received_on_set_session(self):
|
173 |
| - self.listen('foo') |
174 |
| - self.conn.commit() |
175 |
| - pid = int(self.notify('foo').communicate()[0]) |
176 |
| - self.assertEqual(0, len(self.conn.notifies)) |
177 |
| - self.conn.set_session(autocommit=True, readonly=True) |
178 |
| - self.assertEqual(1, len(self.conn.notifies)) |
179 |
| - self.assertEqual(pid, self.conn.notifies[0][0]) |
180 |
| - self.assertEqual('foo', self.conn.notifies[0][1]) |
| 163 | + self._test_notifies_received_on_operation( |
| 164 | + partial(self.conn.set_session, autocommit=True, readonly=True), |
| 165 | + execute_query=False, |
| 166 | + ) |
181 | 167 |
|
182 | 168 | @slow
|
183 | 169 | @skip_if_windows
|
184 | 170 | def test_notifies_received_on_set_client_encoding(self):
|
185 |
| - self.listen('foo') |
186 |
| - self.conn.commit() |
187 |
| - pid = int(self.notify('foo').communicate()[0]) |
188 |
| - self.assertEqual(0, len(self.conn.notifies)) |
189 |
| - self.conn.set_client_encoding( |
190 |
| - 'LATIN1' if self.conn.encoding != 'LATIN1' else 'UTF8' |
| 171 | + self._test_notifies_received_on_operation( |
| 172 | + partial( |
| 173 | + self.conn.set_client_encoding, |
| 174 | + 'LATIN1' if self.conn.encoding != 'LATIN1' else 'UTF8' |
| 175 | + ), |
| 176 | + execute_query=False, |
191 | 177 | )
|
192 |
| - self.assertEqual(1, len(self.conn.notifies)) |
193 |
| - self.assertEqual(pid, self.conn.notifies[0][0]) |
194 |
| - self.assertEqual('foo', self.conn.notifies[0][1]) |
195 | 178 |
|
196 | 179 | @slow
|
197 | 180 | def test_notify_object(self):
|
|
0 commit comments